Agilní metodiky

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Agilní metodiky jsou skupiny metod původně určených pro vyvíjení softwaru založené na iterativním a inkrementálním vývoji. Umožňují rychlý vývoj softwaru a zároveň dokáží reagovat na změnu požadavků v průběhu vývojového cyklu. Podle těchto metodik se správnost systému ověří jedině pomocí rychlého vývoje, předložení zákazníkovi a následných úprav dle zpětné vazby.

Techniky užívané agilními metodikami se často používaly už dříve, ale pojem se začal používat až v únoru 2001. V Utahu se tehdy sešli odborníci z oblasti softwarového inženýrství a vývoje softwaru, aby diskutovali o odlehčených metodách vývoje. Sepsali Manifest agilního programování, kde definují přístup k vývoji nyní známý jako agilní programování.

Historie[editovat | editovat zdroj]

Předchůdci[editovat | editovat zdroj]

Až do nástupu odlehčených metodik se používaly těžké, rigorózní metodiky. Ty jsou někdy kritizovány pro svůj vodopádový model vývoje a pro to, že vedoucí projektu svým blízkým dohledem omezuje vývojáře v práci. Kromě toho obtížně reagují na změny. V polovině devadesátých let se proto začaly objevovat odlehčené metodiky. Ty se podle jejich tvůrců navrací k vývojovým praktikám ze samotných počátků softwarového vývoje. Mezi tyto odlehčené metodiky patřil Scrum, Crystal Clear, Extrémní programování či Vývoj řízený vlastnostmi. Od publikování Manifestu agilního programování se tyto metodiky nazývají agilními.

Manifest agilního programování[editovat | editovat zdroj]

Autoři[editovat | editovat zdroj]

Autory tohoto manifestu jsou Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Ken Schwaber, Jeff Sutherland a Dave Thomas.[1]

Priority agilního programování[editovat | editovat zdroj]

  • Lidé a jejich spolupráce před procesy a nástroji
  • Fungující software před obsáhlou dokumentací
  • Spolupráce se zákazníkem před sjednáváním smluv
  • Reakce na změnu před dodržováním plánu

V manifestu je také definováno 12 principů agilního programování.

Principy agilního programování[editovat | editovat zdroj]

  1. Nejvyšší prioritou je uspokojit zákazníka skrz rychlé a průběžné dodávání kvalitního software.
  2. Změnové požadavky jsou vítány, dokonce i v průběhu vývoje. Agilní procesy je zpracují tak, aby zákazníkovi přinášely konkurenční výhody.
  3. Dodávejte fungující software často, v intervalech týdnů až měsíců. Upřednostňujte kratší intervaly dodání.
  4. Lidé z businessu a vývojáři musí spolupracovat každý den během celého projektu.
  5. Pro práci na projektu vybírejte motivované jedince. Dejte jim prostředí a podporu, kterou potřebují, a důvěřujte jim, že práci dokončí.
  6. Nejúčinnější metoda sdílení informací vývojářskému týmu (i uvnitř tohoto týmu) je osobní setkání.
  7. Fungující software je hlavním měřítkem postupu vývoje.
  8. Agilní procesy podporují udržitelný vývoj. Sponzoři, vývojáři i uživatelé by měli být schopní dodržovat stálý výkon dokud je třeba.
  9. Průběžná pozornost věnovaná technické dokonalosti a dobrému návrhu posiluje agilní přístup.
  10. Základem je jednoduchost – umění co nejvíce práce vůbec nedělat.
  11. Nejlepší architektury, požadavky a návrhy vznikají v týmech, které se samy organizují.
  12. Tým v pravidelných intervalech vyhodnocuje svou práci a upravuje své postupy tak, aby byl co nejefektivnější.

Příklady agilních metodik[editovat | editovat zdroj]

Extrémní programování (XP)[editovat | editovat zdroj]

Podrobnější informace naleznete v článku Extrémní programování.

XP je pravděpodobně nejznámější agilní metodikou. Propaguje časté dodávky software v krátkých vývojových cyklech. Kromě toho navrhuje párové programování, jednotkové testování celého kódu (nejdříve se vytvoří test, až pak samotný kód), programovat jen to, co je v danou chvíli nezbytné, jednoduchý a jasný kód. Mezi další praktiky patří společné vlastnictví kódu a neustálý refaktoring. Vývojáři by měli počítat se změnami požadavků v průběhu času. Důležitá je častá komunikace se zákazníkem i mezi programátory.

Scrum[editovat | editovat zdroj]

Klíčovou částí metodiky jsou každodenní setkání týmu. Každý člen zde referuje o své činnosti z minulého dne, o tom, co bude dělat dnes, a na jaké problémy narazil. Metodika prosazuje iterativní vývoj, období iterace se nazývá Sprint a trvá 2-4 týdny. Výsledkem Sprintu je demo vzniklých úprav, které je předvedeno zákazníkovi. Ten poskytne zpětnou vazbu, což umožňuje rychle reagovat na změny v požadavcích. Jsou zde rozeznávány tři role – Product Owner má za úkol komunikovat se zákazníkem. Správné fungování vývojového týmu zajišťuje Scrum Master. Člen vývojového týmu se nazývá Scrum Team Member.

Vývoj řízený vlastnostmi (FDD – Feature Driven Development)[editovat | editovat zdroj]

Podrobnější informace naleznete v článku Feature Driven Development.

FDD začíná vytvořením doménového modelu popisujícího celý systém. Ten se převede do seznamu vlastností (elementární funkcionality, které přináší hodnotu uživateli). Vývoj má celkem pět fází (první tři sekvenční, další dvě iterativní). Iterace trvá většinou dva týdny. Během každé iterace se implementují konkrétní užitné vlastnosti systému. Zákazník průběžně dostává mezivýsledky a nové verze produktu. Na rozdíl od XP nebo SCRUM je jednotlivým programátorům práce přidělena – nevybírají si ji sami.

Lean development[editovat | editovat zdroj]

Lean development je spíš než metodikou souhrnem pravidel, jejichž používání by mělo zefektivnit a zrychlit vývojový proces. Tato pravidla zní: eliminovat zbytečné (to, co nepřináší zákazníkovi žádnou hodnotu), zdůraznit proces učení, rozhodovat se tak rychle a pozdě, jak je možné, posílit odpovědnost týmu, zabudovat integritu a vidět systém jako celek.

Součástí metodiky jsou také principy a nástroje, které tyto pravidla umožní realizovat.

Vývoj řízený testy (TDD – Test Driven Development)[editovat | editovat zdroj]

Podrobnější informace naleznete v článku Test Driven Development.

TDD navrhuje psaní testů před samotným kódem a následně naprogramovat samotný kód. Implementuje se přesně takové množství kódu, jaké dokáže projít testem.

Crystal metodiky[editovat | editovat zdroj]

Nejde jen o jednu metodiku. Hlavní myšlenkou je to, že je lepší metodiku přizpůsobit danému projektu, žádná metodika nebude vyhovovat každému projektu. Vytvoření individuální a účelové metodiky pro konkrétní projekt je první fází vývoje. Pro vytvořenou metodiku je rozhodující například velikost projektu a vývojového týmu.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Agile software development na anglické Wikipedii.

  1. http://agilemanifesto.org