Vývojový cyklus software: Dominují agilní metodiky trhu?

Metodiky vývoje softwaru se v rámci projektového řízení začaly prosazovat převážně až 80. letech minulého století. Jejich cílem je snížení výskytů problémů při vývoji systémů stanovením pravidel kompetencí. Jaké metodiky jsou v současné době nejpoužívanější a kam jejich neustálý vývoj směřuje? Na ty a mnohé další otázky nám odpoví následující článek.

Oblast projektového řízení v IT byla během 20. století charakterizována velkou dynamikou, resp. hledáním "správné" cesty. Více než metodiky byl kladen důraz na samotné metodické přístupy, nebo-li paradigma. Do dnešních dnů se prosadily dva hlavní směry - rigorózní a agilní.

Rigorózní metodiky

Jedná se historicky o největší skupinu metodik, které se zabývají podrobným popisem procesu vývoje software. Kladou také velký důraz na objemnou dokumentaci. Celý proces je charakterizován tzv. Vodopádovým modelem - definice posloupnosti jednotlivých činností během vývojového cyklu. Vývoj software je jasně definovaný proces, od kterého se nemůžeme odchýlit.

V každém projektu je nutné uvažovat na třemi základními konstantami - čas, náklady a rozsah projektu (zadání). Některé z nich jsou fixní (neměnné), jiné se naopak mění během projektu. V případě rigorózních metodik je neměnnou veličinou rozsah projektu - resp. to, co je zadáním od zákazníka.

Tento přístup umožňuje velmi dobré řízení projektu. Role a jednotlivé fáze během vývojového cyklu jsou jasně definované. Bohužel z výše popsaného vyplývají i zřejmé nevýhody.

Rigorózní metodiky jsou považovány za tzv. "těžké" - jsou velmi podrobné, obsahují hodně formalit a jsou specifické direktivním řízením. Procesy jsou opakovatelné a předpokládají definování všech požadavků na řešení předem.

Díky tomu se může ztrácet cíl vývoje - hlavním smyslem by mělo být vytvořit fungující software na základě zákaznických potřeb a ne před nimi upřednostňovat procesy. Dále se také tyto metodiky neumí příliš dobře vypořádat s náhlými změnami. Je nutné všechny požadavky specifikovat předem a během vývoje je již neměnit.

Do rigorózních metodik můžeme zařadit kromě Vodopádu také ještě Spirální model, Unified Process, Rational Unified Process a Enterprise Unified Process.

V důsledku zmíněných nedostatků rigorózních metodik se hledaly nové možnosti a přístupy, jak vyvíjet software. Zákazníci jsou stále častěji tlačení k neustálým změnám v jejich obchodních modelech. Globalizace znamená více příležitostí, ale také větší nároky na obou stranách obchodního styku. Z těchto důvodů se na přelomu 20. a 21. století začalo mluvit o agilních metodikách.

Agilní metodiky

Agilní metodiky kladou (narozdíl od rigorózních) velký důraz na zákazníka. Software musí dodávat hodnotu pro zákazníka, a nikdo jiný, než zákazník sám nemůže tuto hodnotu určit. Agilní metodiky představují velkou změnu paradigmatu - nejedná se o proces, ale spíše o přístup k vývoji software.

Rigorózní metodiky totiž předpokládají, že zákazník vlastně neví co chce. Proto je na programátorech, aby vytvořili takový produkt, který by zákazník mohl v budoucnu potřebovat. Hlavní myšlenkou tohoto přístupu je vytvoření systému tolerantního ke změnám a případné změny akceptovat v budoucnu.

Agilní metodiky také upřednostňují neustálou interakci a kooperaci v rámci týmu, před "standardizací" lidí v organizaci a jejich neustálou kontrolou. Jsou více flexibilnější ke změnám a nesledují tolik plán.

Zde je ovšem nutné zmínit, že i v případě agilních metodik platí výše zmíněné tři základní proměnné (čas, náklady a rozsah). Rozsah je v tomto případě flexibilní složkou. Co se naopak nemění během celého projektu, jsou čas a náklady.

Na začátku projektu (během plánování) se samozřejmě v hrubých obrysech specifikuje, co se má vyrobit, ale není to požadováno na 100 %. Díky úzké spolupráci se zákazníkem, se rozsah zadání během projektu neustále mění.

Mezi agilní metodiky patří například:

  • Adaptive Software Development (ASD)
  • Feature-Driven Development (FDD)
  • Extrémní programování (XP)
  • Lean development
  • SCRUM
  • a další...

Výčet není úplný, což ale není nutné. Metodiky se navzájem doplňují a každá z nich obsahuje mnoho společných prvků.

Jaké metodiky jsou v dnešní době nejpoužívanější?

Až doposud jsme si charakterizovali dvě největší skupiny metodik pro softwarový vývoj. Jednalo se především o teorii. V následujících dostavcích se proto zaměříme na praktické uplatnění těchto přístupů. Jaké konkrétní metodiky jsou v současnosti používány v IT firmách?

Ačkoliv firmy nejsou příliš ochotné sdělovat informace o svých interních procesech, i přesto je ale současný trh do určité míry zmapován. V následujících odstavcích budeme vycházet z oficiálního reportu "State of Agile", který každý rok na základě dotazníkového šetření zpracovává společnost Version One Ltd. http://www.versionone.com/pdf/2013-state-of-agile-survey.pdf

Poslední State of Agile je z roku 2013. Průzkumu se zúčastnilo přes 3 500 respondentů z řad projektových manažerů, scrum masterů, atd. především z velkých společností (od 100 do 4000 zaměstnanců). Většinu (66%) tvořili firmy z USA a z Evropy (20%).

Ačkoliv téměř 90% všech dotázaných má určitou zkušenost a agilním přístupem, jen polovina používá Agile k řízení svých projektů. Zajímavé je ale zjištění, že v případě dobré zkušenosti s s tímto přístupem, je agilní vývoj prosazován na velkém množství projektů.

Z konkrétních agilních metodik žebříčku jednoznačně dominuje Scrum (55%), následovaný kombinací Scrumu a XP (11%) a první příčky uzavírá Kanban (5%). Na opačném konci je DSDM, Agile Modeling či AgileUp (1%).

Díky hlasitým zastáncům agilního přístupu, by se mohlo zdát, že tyto metodiky budou v dnešní době dominovat celému sw vývoji, resp. trhu. Jak je ale patrné na základě výsledků "State of Agile", mají zatím vyrovnané postavení s ostatními přístupy. Ačkoliv to nevypadá na velký úspěch, opak je pravdou. Toto 50% zastoupení si agilní metodiky vybudovaly jen za poslední necelé dvě desetiletí. V roce 2001 spatřil světlo světa Agilní manifest, který znamenal de facto změnu paradigmatu vývoje software.

NATOAgilní přístup je v dnešní době na vzestupu. Svědčí o tom nakonec i prohlášení vysokých činitelů v rámci NATO na konferenci ITEC 2014, kde zmínili nutnost prosazení agilní cesty v rámci vojenských IT projektů.

Není těžké také nalézt spoustu publikací o prosazení agilních metodik v rámci jednotlivých armád - např. "Adapting SCRUM to the Italian Army: Methods and (Open) Tools" od Angelo Messina, či prohlášení ministerstva obrany USA o přechodu agilní vývoj.

Je ovšem nutné si uvědomit, že kdo prosazuje jednu jedinou metodiku ve své základní podobě a nepřipouští jakoukoliv změnu, tak nepochopil smysl metodického přístupu jako celek. Jak už bylo ostatně zmíněno výše v tomto článku, žádný přístup nevznikl sám o sobě ve vakuu. Vždycky bude obsahovat určité prvky z jiných oblastí a vhodně je kombinovat a doplňovat. Proto je nutné uvažovat nad adopcí určité metodiky jako nad neustálým vývojovým procesem a přizpůsobit tomu své očekávání.

Agilní vývoj (nebo jakýkoliv jiný) nikdy nebude považován za jeden jediný, či univerzální přístup. Každý projekt je závislý na mnoha vstupních faktorech. Může to být velikost firmy, týmu, typ projektu, ale také kulturní prostředí, mezilidské vztahy, typologie osobností, apod. Vždy je nutné počítat s tím, že vedle sebe bude existovat spoustu přístupů, které budou v určitém prostředí vhodné.

Další odkazy:

http://www.cmsstrategic.com/news/1659/senior-military-experts-promote-interoperable-and-agile-approach-to-future-training/

http://www.infoq.com/news/2014/05/DoD_agile

Share

Počítač ENIAC z roku 1946
IBM PC z roku 1981
Datacentrum - "skladiště" cloudových služeb