Extrémní programování vs SCRUM | XP vs SCRUM
V softwarovém průmyslu se v průběhu let používala řada různých metodik vývoje softwaru, například metoda vývoje Waterfall, V-Model, RUP a několik dalších lineárních, iterativních a kombinovaných lineárně-iterativních metod. Agilní model (nebo přesněji skupina metodik) je novější model vývoje softwaru zavedený v agilním manifestu k ř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řístup zaměřený na lidi než tradiční metody. Agilní model přináší pracovní verzi produktu velmi brzy tím, že systém rozbije na velmi malé a zvládnutelné dílčí části, aby si zákazník mohl včas uvědomit některé z výhod. Doba testování 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 v současné době upřednostňovány agilní metody před tradičními metodikami. Scrum a Extreme programování jsou dvě z nejpopulárnějších variací agilních metod.
Co je SCRUM?
Jak již bylo zmíněno výše, SCRUM je postupný a iterativní proces řízení projektů, který patří do rodiny agilních metod. SCRUM je založeno na dávání vysoké priority účasti zákazníků na začátku vývojového cyklu. Doporučuje začlenit testování zákazníkem co nejdříve a nejčastěji. 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 odpovědností týmu“, která zdůrazňuje, že za kvalitu softwaru odpovídá celý tým (nejen testovací tým). Jedním z dalších důležitých aspektů SCRUM je rozbití softwaru na menší spravovatelné části a jeho rychlé dodání zákazníkovi. Dodání funkčního produktu je nanejvýš důležité. Poté tým pokračuje ve zdokonalování softwaru a průběžném dodávání v každém důležitém kroku. Toho je dosaženo díky velmi krátkým uvolňovacím cyklům (tzv. Sprinty) a získávání 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 nevyřízené položky produktu), mistr Scrumu (který působí jako organizátor a koordinátor týmu vedením schůzek skrumáže, udržováním nevyřízených sprintů a vypalování 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 samosprávné týmy. Hlavními artefakty Scrumu jsou Nevyřízené položky / nevyřízené položky vydání (seznam přání), nevyřízené položky Sprint / nevyřízené nevyřízené položky (úkoly v každé iteraci), Vypálit grafy (zbývající práce vs. datum). Hlavními ceremoniály SCRUM jsou setkání o nevyřízených produktech, setkání Sprint a setkání Retrospect.
Co je extrémní programování?
Extreme Programming (zkráceně XP) je metodika vývoje softwaru, která patří do modelu Agile. Extrémní programování provádí fáze ve velmi malých kontinuálních krocích (ve srovnání s tradičními metodami). První průchod, který trvá jen den nebo týden, je záměrně neúplný. Za účelem poskytnutí konkrétních cílů pro vývoj softwaru jsou na začátku psány automatizované testy. Potom vývojáři provedou kódování. Důraz je kladen na provádění programování ve dvojicích. Jakmile všechny testy projdou, je kódování považováno za dokončené. Další fází je design a architektura, která se zabývá refaktorováním kódu stejnou sadou programátorů. Na konci této fáze se zúčastněným stranám představí neúplný (ale funkční) produkt. Hned poté začíná další fáze (která se zaměřuje na další sadu nejdůležitějších funkcí).
Jaký je rozdíl mezi Extreme Programming a SCRUM?
Extreme Programming 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 ve sprintech, ale týmy XP jsou o něco flexibilnější vůči změnám v iteracích. Například po plánování sprintu zůstane sada položek tohoto sprintu nezměněna, ale vlastnost, na které nezačal pracovat, lze kdykoli vyměnit za nějakou 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 přísně upřednostňováno, zatímco tým SCRUM rozhoduje o pořadí položek (poté, co je produktový nevyřízený produkt upřednostněn vlastníkem produktu SCRUM).
Na rozdíl od XP nestanovuje SCRUM žádné technické postupy. Například XP je poháněno praktikami, jako je testovaný vývoj (TDD), párové programování, refaktorování atd. Někteří se však domnívají, že nařizování sady postupů pro samoorganizující se týmy by mohlo mít negativní dopad, což lze považovat za nedostatek XP. Dalším nedostatkem programování Extreme je, že nezkušené týmy mohou mít tendenci refaktorovat bez automatizovaných testů nebo TDD (nebo jednoduše hackování). Někteří proto naznačují, že SCRUM je lepší na první pohled (protože přináší velké vylepšení jednoduše prostřednictvím cílených iterací časově omezeného času) a XP je vhodný pro mírně zralé týmy, které objevily hodnotu výše zmíněných postupů (místo aby je používaly, protože byly požádány udělat to tak).