Extrémní programování vs SCRUM | XP vs SCRUM
V průběhu let se v softwarovém průmyslu používalo mnoho různých metodik vývoje softwaru, jako je metoda vývoje vodopádu, model V, model RUP a několik dalších lineárních, iteračních a kombinovaných lineárně-iteračních metod. Agilní model (nebo přesněji skupina metodik) je novější model vývoje softwaru zavedený agilním manifestem za účelem řešení nedostatků zjištěných v těchto tradičních metodikách vývoje softwaru.
Agilní metody jsou založeny na iterativním vývoji a používají zpětnou vazbu od uživatelů jako hlavní kontrolní mechanismus. Agilní lze nazvat přístupem zaměřeným na lidi, než tradiční metody. Agilní model přináší funkční verzi produktu velmi brzy rozdělením systému na velmi malé a spravovatelné dílčí části, aby si zákazník mohl včas uvědomit některé výhody. Doba testovacího cyklu Agile je ve srovnání s tradičními metodami relativně krátká, protože testování probíhá paralelně s vývojem. Kvůli všem těmto výhodám jsou agilní metody preferovány před tradičními metodologiemi v současnosti. Programování Scrum a Extreme jsou dvě z nejpopulárnějších variant agilních metod.
Co je SCRUM?
Jak je uvedeno výše, SCRUM je postupný a opakovaný proces řízení projektů, který patří do rodiny agilních metod. SCRUM je založeno na tom, aby účast zákazníků byla na začátku vývojového cyklu dána vysokou prioritou. Doporučuje zahrnout testování zákazníkem včas a často, jak je to možné. Testování se provádí v každém okamžiku, kdy bude k dispozici stabilní verze. Základ SCRUM je založen na zahájení testování od začátku projektu a pokračování až do konce projektu.
Klíčovou hodnotou SCRUM je „kvalita je zodpovědností týmu“, což zdůrazňuje, že za kvalitu softwaru odpovídá celý tým (nejen zkušební tým). Jedním z dalších důležitých aspektů SCRUM je rozčlenění softwaru na menší spravovatelné části a jejich rychlé dodání zákazníkům. Dodání funkčního produktu je nanejvýš důležité. Poté tým pokračuje v zdokonalování softwaru a neustále ho dodává v každém důležitém kroku. Toho je dosaženo prostřednictvím velmi krátkých uvolňovacích cyklů (nazývaných sprinty) a získáním zpětné vazby pro zlepšení na konci každého cyklu.
SCRUM definuje několik klíčových rolí pro hladký chod vývojového týmu. Jsou to vlastník produktu (který zastupuje zákazníka a udržuje produktový backlog), Scrum master (který slouží jako organizátor a koordinátor týmu prováděním schůzek scrum, udržováním backlogu sprintu a vyhořelých grafů) a dalšími členy týmu. Tým se může skládat z tradičních rolí, ale většinou jde o týmy s vlastním řízením. Hlavními artefakty Scrum jsou backlogy produktů / backlogy uvolnění (seznam přání), Sprint backlogy / backlogy defektů (úkoly v každé iteraci), vypálené grafy (zbývající práce vs. datum). Hlavní ceremonie SCRUM jsou setkání s nevyřízenými produkty, setkání s Sprintem a setkání s retrospektivy.
Co je extrémní programování?
Extreme Programming (zkráceně XP) je metodika vývoje softwaru, která patří do agilního modelu. Extrémní programování provádí fáze ve velmi malých souvislých krocích (ve srovnání s tradičními metodami). První průchod, který trvá pouze den nebo týden, je úmyslně neúplný. Za účelem stanovení konkrétních cílů pro vývoj softwaru jsou na začátku psány automatické testy. Pak vývojáři provedou kódování. Důraz je kladen na programování jako páry. Jakmile všechny testy projdou, kódování se považuje za úplné. Další fází je návrh a architektura, která se zabývá refaktoringem kódu stejnou sadou programátorů. Na konci této fáze je zúčastněným stranám představen neúplný (ale funkční) produkt. Hned poté začne další fáze (která se zaměřuje na další sadu nejdůležitějších funkcí).
Jaký je rozdíl mezi extrémním programováním a SCRUM?
Extrémní programování a SCRUM jsou pochopitelně velmi podobné a sladěné metodiky. Mezi těmito dvěma metodami však existují jemné, ale důležité rozdíly. Sprinty SCRUM trvají 2–4 týdny, zatímco typické iterace XP jsou kratší (poslední 1–2 týdny). Týmy SCRUM obvykle neumožňují změny v sprintech, ale týmy XP jsou o něco flexibilnější při změnách v iteracích. Například po plánování sprintu zůstane sada položek tohoto sprintu nezměněna, ale prvek, který nezačal pracovat, lze kdykoli zaměnit za jinou funkci v XP. Další rozdíl mezi XP a SCRUM spočívá v tom, že pořadí funkcí vyvinutých v XP je zákazníkem s přísnou prioritou, zatímco tým SCRUM rozhoduje o pořadí položek (po upřednostnění nevyřízeného produktu u vlastníka produktu SCRUM).
Na rozdíl od XP SCRUM nestanoví žádné technické postupy. Například XP je poháněn praktikami, jako je vývoj řízený testem (TDD), párové programování, refaktoring atd. Někteří se však domnívají, že pověření souboru praktik na týmy, které se samy organizují, by mohlo mít negativní dopad, a to lze považovat za nedostatek XP. Dalším nedostatkem programování Extreme je, že nezkušené týmy mohou mít tendenci refaktorovat bez jakýchkoli automatických testů nebo TDD (nebo jednoduše hackování). Někteří proto naznačují, že SCRUM je lepší na začátek (protože přináší velká vylepšení jednoduše prostřednictvím soustředěných iterací s časovým rámečkem) a XP je vhodný pro mírně zralé týmy, které objevily hodnotu výše uvedených postupů (spíše než jejich použití, protože byly požádány) udělat to tak).