Nahoru
 

Pryč s byrokracií, je čas vyvíjet agilně

Agilní vývoj je pravděpodobně nejčastější metodika vývoje softwaru. Dalo by se říci, že reaguje na pomalý a rigidní tradiční metodiky plné formální dokumentace a přílišné byrokracie. Slovo agilní lze česky říci jako horlivý nebo aktivní, což odpovídá rozdílu mezi agilním a tradičním vývojem aplikací. V podstatě to znamená, že využitím agilního vývoje zrychlíme a zpříjemníme proces vývoje softwaru s tím, že výsledný produkt bude stejně kvalitní, ne-li kvalitnější.

Agilně se začalo pracovat hlavně kvůli nedostatkům tradičního vývoje softwaru, který se snaží o vyčerpávající dokumentaci skoro každé aktivity a výrobu programu přesně podle předepsané smlouvy, kde je každá změna extrémně nevítanou záležitostí. Jelikož ne každý projekt potřebuje striktně dodržovat předepsaná úskalí, ale naopak se více vyplatí přirozená lidská domluva, získal agilní vývoj své uplatnění. V podstatě se snaží o eliminaci nadbytečné a příliš formalizované dokumentace, odstranění nechtěné byrokracie a sázení více na lidský přirozený rozum než na perfektně sepsanou smlouvu.

Žádný zákon nezajistí úspěšný projekt, spolupráce ano.

Josef Myslín

V tomto bodě je na místě upozornit na fakt, že jak dělání dokumentace, tak sepisování smlouvy je pořád nedílnou součástí vývoje. Těchto činností se nelze nijak zbavit, agilní vývoj se snaží pouze o to, aby zmíněné činnosti „překáželi“ při vývoji co nejméně. Agilně však nelze vyvíjet každou aplikaci. U některých potřebujeme dodržovat tradiční přístup.

Základem pro agilní vývoj je tzv. Agilní manifest (Agile Manifesto), což je prohlášení vydané programátory, kteří chtěli co nejvíce zkvalitnit a zrychlit vývoj svých projektů. Jeho znění vypadá následovně:

 

Objevujeme lepší způsoby vývoje softwaru tím, že jej tvoříme a pomáháme při jeho tvorbě ostatním. Při této práci jsme dospěli k těmto hodnotám:

Jednotlivci a interakce před procesy a nástroji

Fungující software před vyčerpávající dokumentací

Spolupráce se zákazníkem před vyjednáváním o smlouvě

Reagování na změny před dodržováním plánu

Vedle agilního manifestu existují ještě agilní principy, které doplňují základní myšlenky o praktické rady. Sám tyto principy považuji za tak důležité, že vám je zde vypíši.

Principy agilního vývoje

  1. Nejvyšší prioritou je uspokojit zákazníka rychlým a průběžným dodáváním kvalitního softwaru.
  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 schopni 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ší.

Tyto principy se používají například při Extrémním programování, při kterém se rychlost vývoje a dodávání softwaru dovádí do extrému (řádově se délka iterace dodání softwaru pohybuje ve dnech). Dalšími metodikami, které využívají agilních principů je Vývoj řízený vlastnostmi (FDD – Feature Driven Development), Vývoj řízený testy (TDD – Test Driven Development), SCRUM a další.


Agilní vývoj softwaru tedy můžeme považovat jako reakci na příliš byrokratické a tuhé tradiční programování. Jeho principy přidávají na důležitosti spolupráci a lidskému rozumu před smlouvami a přílišnou formalizací. Tento nástroj nelze využít pokaždé, ale u některých projektů velice zpříjemní i zlepší celkový proces vývoje.