Extrémne programovanie vs SCRUM XP vs SCRUM
V softvérovom priemysle sa v priebehu rokov používalo množstvo rôznych metodológií vývoja softvéru, napríklad vývojová metóda Waterfall, V-Model, RUP a niekoľko ďalších lineárnych, iteratívnych a kombinovaných lineárnych-iteratívnych metód. Agilný model (alebo presnejšie skupina metodík) je novší model vývoja softvéru zavedený programom Agile na riešenie nedostatkov zistených v týchto tradičných metodikách vývoja softvéru.
Agilné metódy sú založené na iteračnom vývoji a využívajú spätnú väzbu od používateľov ako hlavný kontrolný mechanizmus. Agilný sa dá nazvať prístup zameraný na ľudí ako tradičné metódy. Agilný model dodáva pracovnú verziu produktu veľmi skoro tým, že systém rozdelí na veľmi malé a zvládnuteľné dielce, aby si zákazník mohol uvedomiť niektoré výhody už na začiatku. Čas testovacieho cyklu Agile je v porovnaní s tradičnými metódami relatívne krátky, pretože testovanie sa vykonáva paralelne s vývojom. Kvôli všetkým týmto výhodám sú v súčasnosti uprednostňované agilné metódy pred tradičnými. Scrum a Extreme programovanie sú dve z najpopulárnejších variácií agilných metód.
Čo je SCRUM?
Ako už bolo spomenuté vyššie, SCRUM je postupný a iteračný proces riadenia projektu, ktorý patrí do rodiny agilných metód. SCRUM je založené na dávaní vysokej priority účasti zákazníkov na začiatku vývojového cyklu. Odporúča začleniť testovanie zákazníkom včas a čo najčastejšie. Testovanie sa vykonáva v každom okamihu, keď bude k dispozícii stabilná verzia. Základ SCRUM je založený na začatí testovania od začiatku projektu a pokračovaní až do konca projektu.
Kľúčovou hodnotou SCRUM je „kvalita je zodpovednosť tímu“, ktorá zdôrazňuje, že za kvalitu softvéru zodpovedá celý tím (nielen testovací). Ďalším dôležitým aspektom SCRUM je rozbitie softvéru na menšie zvládnuteľné časti a ich rýchle dodanie zákazníkovi. Dodanie funkčného produktu je nanajvýš dôležité. Potom tím pokračuje v zdokonaľovaní softvéru a neustále dodáva v každom významnom kroku. To sa dosiahne tým, že máte veľmi krátke cykly uvoľňovania (nazývané šprinty) a na konci každého cyklu získate spätnú väzbu na zlepšenie.
SCRUM definuje niekoľko kľúčových rolí pre hladký chod vývojového tímu. Sú to produktový vlastník (ktorý zastupuje zákazníka a udržiava nevybavené produkty), majster Scrumu (ktorý vystupuje ako organizátor a koordinátor tímu vedením stretnutí v skrumáži, udržiavaním nevybavených sprintov a vypaľovaním grafov) a ďalšími členmi tímu. Tím môže pozostávať z tradičných rolí, ale väčšinou sú to samosprávne tímy. Hlavné artefakty Scrumu sú Nevybavené položky / nevybavené položky (zoznam želaní), nevybavené položky Sprint / nevyhovujúce nevybavené položky (úlohy v každej iterácii), vypaľovacie tabuľky (zostávajúca práca vs. dátum). Hlavnými ceremoniálmi SCRUM sú Stretnutia o nevybavených produktoch, Sprintové stretnutie a Retrospectové stretnutie.
Čo je extrémne programovanie?
Extreme Programming (v skratke XP) je metodika vývoja softvéru, ktorá patrí do modelu Agile. Extrémne programovanie vykonáva fázy vo veľmi malých nepretržitých krokoch (v porovnaní s tradičnými metódami). Prvý prechod, ktorý trvá iba deň alebo týždeň, je zámerne neúplný. Za účelom poskytnutia konkrétnych cieľov pre vývoj softvéru sú na začiatku písané automatizované testy. Potom vývojári urobia kódovanie. Dôraz sa kladie na programovanie vo dvojiciach. Po úspešnom vykonaní všetkých testov sa kódovanie považuje za úplné. Ďalšou fázou je dizajn a architektúra, ktorá sa zaoberá refaktoringom kódu rovnakou skupinou programátorov. Na konci tejto fázy sa zúčastneným stranám predstaví neúplný (ale funkčný) produkt. Hneď potom sa začne ďalšia fáza (ktorá sa zameriava na ďalšiu skupinu najdôležitejších funkcií).
Aký je rozdiel medzi programovaním Extreme a programom SCRUM?
Extrémne programovanie a SCRUM sú pochopiteľne veľmi podobné a zosúladené metodiky. Medzi týmito dvoma metódami však existujú jemné, ale dôležité rozdiely. Šprinty SCRUM trvajú 2 - 4 týždne, zatiaľ čo typické iterácie XP sú kratšie (2 - 2 týždne). Tímy SCRUM zvyčajne neumožňujú zmeny v šprintoch, ale tímy XP sú o niečo flexibilnejšie voči zmenám v rámci iterácií. Napríklad po naplánovaní sprintu zostane množina položiek tohto sprintu nezmenená, ale funkcia, na ktorej nezačala pracovať, je možné kedykoľvek vymeniť za inú funkciu v XP. Ďalším rozdielom medzi XP a SCRUM je, že poradie funkcií vyvinutých v XP je zákazníkom prísne uprednostňované, zatiaľ čo tím SCRUM rozhoduje o poradí položiek (po tom, čo produktový nevybavený produkt bude uprednostnený vlastníkom produktu SCRUM).
Na rozdiel od XP SCRUM nestanovuje žiadne inžinierske postupy. Napríklad XP sa riadi postupmi, ako je testom riadený vývoj (TDD), programovanie párov, refaktoring atď. Niektorí sa však domnievajú, že ustanovenie súboru postupov pre samoorganizujúce sa tímy by mohlo mať negatívny dopad, čo je možné považovať za nedostatok XP. Ďalším nedostatkom programovania Extreme je, že neskúsené tímy môžu mať tendenciu refaktorovať bez akýchkoľvek automatizovaných testov alebo TDD (alebo jednoducho hackovania). Niektorí preto naznačujú, že SCRUM je lepšie na začiatok (pretože prináša veľké vylepšenia jednoducho prostredníctvom zameraných iterácií s časovým rozvrhnutím) a XP je vhodný pre mierne vyspelé tímy, ktoré objavili hodnotu vyššie spomenutých postupov (namiesto toho, aby ich používali, pretože im boli urobiť tak).