O agilných metodikách sa dnes píše a diskutuje dosť často. Veľa firiem, a nielen softvérových, prechádza zo zastaraných metodík, waterfall metodiky a jej variácií,  práve na agilné metodiky. Poďme sa pozrieť, čo im táto zmena prináša a ako prebiehala ich adaptácia vo WebSupporte.

Agilný softvérový vývoj je skupina vývojových metodík popísaných v manifeste z roku 2001. Vychádzajú z názoru, že najlepší spôsob ako preveriť funkcionalitu systému, je čo najrýchlejšie ho vyvinúť, odprezentovať ho zákazníkovi a na základe spätnej väzby ho upravovať. Na realizáciu každého projektu potrebujeme čas, zdroje vyhradené na tento čas a funkcionalitu, ktorú musíme implementovať. Pri tradičných metodikách je funkcionalita fixná a čas a zdroje sú variabilné. Agilná metodika má, naopak, fixné čas a zdroje, zatiaľ čo variabilná je funkcionalita.

Všetko je ohraničené časom (timeboxed), do ktorého sa treba zmestiť. V praxi to vyzerá tak, že celý vývoj je rozdelený do časových rámcov (iterácií). Tím programátorov odhadne jednotlivé požiadavky na funkcionalitu a vyberie tie, ktorým sa bude venovať v danej iterácii. Pri výbere sa riadi hlavne kapacitou tímu a časovou náročnosťou tak, aby sa úlohy zmestili do časového rámca. Nezabúda sa ani na biznis a prioritu. V každej iterácii musia vývojári doručiť nejakú biznis funkcionalitu.

Počas vývoja sa vždy vyskytnú komplikácie a tím zistí, že nestihne implementovať všetko. Namiesto predlžovania iterácie alebo priberania ďalších developerov vyberie funkcionalitu, ktorú presunie do ďalšej iterácie, alebo ju nahradí jednoduchšou funkcionalitou. Môže nastať aj opačná situácia, že vývoj napreduje rýchlejšie, ako bolo plánované. Vtedy tím jednoducho vyberie ďalšiu požiadavku na funkcionalitu, aby bol čas využitý čo najefektívnejšie. Pravdaže všetko priebežne konzultuje s klientom.

Základné hodnoty

  • Interakcia a individualita prevláda nad procesmi a nástrojmi
  • Fungujúci software prevláda nad rozsiahlou dokumentáciou
  • Spolupráca zákazníka prevláda nad rokovaniami o kontrakte
  • Reakcia na zmeny prevláda nad nasledovaním plánu

12 agilných princípov

  1. Najväčšou prioritou je uspokojiť zákazníka skorým a priebežným dodávaním hodnotného softvéru
  2. Úpravy požiadaviek sú vítané aj neskôr počas vývoja. Agilné procesy podnecujú zmenu stať sa konkurenčnou výhodou zákazníka
  3. Dodávať  funkčný softvér často, každý týždeň až mesiac, s preferovaním kratšieho času
  4. Spolupráca obchodníkov a vývojárov denno-denne, počas celého projektu
  5. Tvorba projektov okolo motivovaných ľudí. Zabezpečiť im všetko potrebné, podpora ich potrieb a dôvera, že svoju prácu dokončia
  6. Najúčinnejšou a najefektívnejšou metódou šírenia informácií v tíme je osobný rozhovor
  7. Funkčný softvér je hlavným kritériom napredovania
  8. Agilné procesy propagujú udržateľný vývoj. Sponzori, vývojári a užívatelia by mali byť schopní udržať tempo donekonečna
  9. Neustála pozornosť k technickej excelentnosti a dobrému dizajnu zlepšuje agilitu
  10. Základom je jednoduchosť  – umenie maximalizovať množstvo práce, ktorú nie je potrebné urobiť
  11. Najlepšia architektúra, požiadavky a dizajn sa vynárajú zo samoorganizovaného tímu
  12. Tím v pravidelných intervaloch reflektuje, ako byť efektívnejší. Potom adekvátne prispôsobí svoje chovanie

Výhody agilnej metodiky

  • Zákazník vidí, v akom stave je vývoj,  je jeho súčasťou
  • Predchádza sa nedostatočnému porozumeniu špecifikácie
  • Zákazník počas vývoja upresňuje svoje požiadavky, čím si produkt priebežne dotvára podľa svojich predstáv
  • Intenzívna komunikácia zabezpečuje skoršie odstraňovanie chýb a znižovanie rizika nedodržana dodávky hotového produktu
  • Zníženie byrokracie
  • Celkové zvýšenie efektivity a produktivity

Najznámejšie agilné metodiky a frameworky

V ďalšej časti si rozoberieme podrobnejšie niektoré z agilných metodík a frameworkov, ich typické vlastnosti, výhody a aj nevýhody.

Zdroje

Matúš Kosa (@fetket)

Komentáre