Logo

Obhajoba vodopádového vývoje

Vložil Pavel Klobasa, 2. Duben 2008 - 21:45

Nové moderní metodiky vývoje se často vymezují vůči vodopádovému vývoji. Člověk snadno nabyde dojmu, že nic horšího než vodopádový model vývoje být snad ani nemůže. Bohužel žádná z nových, ale ani starých metodik není dokonalá, vždy a na vše použitelná. Rád bych ve svém článku ukázal, že vodopádový přístup je přinejmenší dobrou inspirací.

Je zvláštní, že při hledání vhodného obrázku „s vodopádem“ jsem našel obrázků spousty, ale každému něco chybělo. Rozhodl jsem se tedy nakreslit svoji variantu. Právě jí se týkají moje úvahy.

Proč oceňuji vodopádový vývoj

Snad nejkrásnější na výše uvedeném obrázku je to, že pojmům na něm uvedeným rozumí většina lidí, která se kdy zajímala o vývoj software. Lidé, kteří ve vývoji pracují, intuitivně podle názvu své role tuší, co vlastně mají dělat a jakou mají odpovědnost.

Výhodou (ale i nevýhodou) této metodiky je důraz na zadání. Odpovídá to realitě většiny SW projektů při vývoji na zakázku – zákazník nerad platí vývojáře hodinovou sazbou, ale podle dodaných funkcionalit (tedy podle zadání).

Další výhodou je (když už se podaří vytvořit zadání), že je možné odhadout i časovou náročnost a termíny, zkrátka vytvořit relativně podrobný projektový plán.

S jistou mírou nadsázky se dá říct, že vývojový proces je samodokumentující se – architekt potřebuje (písemné) zadání, programátor nakreslenou architekturu, tester zadání ověřuje, podpora potřebuje dokumentaci k podporování…

Kritika

Vodopádový vývoj je závislý na přesném a úplném zadání. Bohužel se často v průběhu projektu požadavky na změny objevují, s tím ovšem vodopádový vývoj nepočítá.

Další nevýhodou je, že z programátora dělá kodera – když už má programátor vhodné zadání a návrh architektury, tak vlastně „nemusí být tak schopný“ – je degradován na kodera.

Vodopádový vývoj se nehodí na malé projekty, kdy jsou všechny role v projektu, od analytika k podpoře, soustředěné v jedné nebo dvou osobách programátorů. Sice tito jednotlivci určitě také budou postupovat od analýzy k nasazení, ale protože vlastní program velmi dobře znají, nebude pro ně takový problém změna zadání.

Nezvládnutá míra podrobnosti předávaných materiálů může vést k přehnanému „papírování“.

Korekce

Vodopádový vývoj není žádné dogma, lze ho upravit k obrazu svému. Například nejasnost zadání lze vyřešit prototypem (a vývoj tak rozdělit na dvě vodopádem řízené části – prototypovou a obyčejnou). Je možné sloučit roli analytika a architekta (a přiblížit tím zadání „realitě“) nebo architekta a programátora (a tím „zatraktivnit“ kódování).

Často bývá kritizován vodopádový vývoj také proto, že zákazník vidí reálnou aplikaci až během testování, a to už je na připomínky pozdě. Nicméně ani to není dogma, zákazník může vidět aplikaci již dříve, otázkou je, jestli tím nebude zneklidněn – z pohledu vnějšího pozorovatele se při vývoji SW často na začátku „dlouhou dobu nic neděje“.

Určitě není problém zpestřit vodopádový vývoj kontinuální integrací nebo průběžným alfa testováním.

Závěr

Vodopádový vývoj není ani lepší ani horší než jiné metodiky – velmi často ostatní metodiky alespoň částečně jeho přístup používají. Proto považuji za důležité správně chápat „vodopád“ i v případě, že ho při vývoji nepoužíváte…

Miroslav Bodeček Says:
3. Duben 2008 - 8:59

Pěkný článek. Přirozený kompromis mezi agilními přístupy a vodopádem je spirálový model. Na ne moc rigidně řízených projektech se stejně k něčemu takovému sklouzne, protože nic jako přesné, úplné a správné zadání neexistuje. Výsledkem je několik dalších iterací, které ale probíhají víceméně ad-hoc a neřízeně – nebylo by lepší vývoj plánovat od začátku jako spirálový? Podle mě každý realistický model vývoje SW musí se změnou zadání počítat jako s jistotou.


Michal Davídek (bez ověření) Says:
9. Duben 2008 - 18:03

Nějak nerozumím tomu, proč je nevhodný pro malé projekty?

"...ale protože vlastní program velmi dobře znají, nebude pro ně takový problém změna zadání."


Pavel Klobasa Says:
9. Duben 2008 - 21:13

Odstavec je míněn tak, že v případě, že dokážeme uřídit změnu v zadání (což je příklad sdílených rolí v menší projektu), tak je výhodnější použít metodiku, která se změnou zadání počítá (některou agilní metodiku), než tu, která se změně zadání brání (vodopádový vývoj).


Lukáš Křečan (bez ověření) Says:
13. Květen 2008 - 7:49

Největší problém je, že se software prostě nedá popsat hromadou wordovských dokumentů a UML diagramů. Pokud by to šlo, nepotřebovali bychom programovací jazyky. Při vývoji software navíc často dochází k něčemu, k čemu říkám náraz na realitu. Prostě zjistíme, že to co tak krásně vypadalo v UMl diagramech a ve specifikaci prostě z nějakého důvodu není možné realizovat. U vodopádu na to přijdeme v lepším případě při implementaci, v horším případě až při testování. To už je ale polovina času v tahu. Oba tyto problémy samosebou řeší iterativní vývoj, ale to už pak není ten obhajovaný vodopád.


Jiří Kodera (bez ověření) Says:
31. Červenec 2010 - 13:40

On klasický vodopád má ještě jednu typickou vlastnost. Nikdy se nepřechází do další fáze, dokud není ta předchozí fáze uzavřena. To přináší značnou rigiditu do celého projektu. Změny, které se potom dějí znamenají, že se opět vrací o fázi dříve a ta se provede a pak se opět pokračuje fází následující. Jeho vhodnost tedy je především pro projekty, které se nemění v průběhu času.


Petr Hanák (bez ověření) Says:
12. Květen 2011 - 18:27

Jsou oblasti, kde to jinak než strikním vodopádem s mnoha peer-review mezi fázemi ani nejde, perfektní příklad je např. proces v NASA příručce :

http://education.ksc.nasa.gov/esmdspacegrant/Documents/NASA%20SP-2007-61...

Ale dnešní běžný komerční vývoj takové problémy nemá, navíc se mu praktický neustále mění zadání (upravuje, doplňuje, mění priority). Vývoj vodopádem dle počáteční specifikace je jako chůze na vodě - je to snadné, když je oboje zamrzlé.


© 2005-2008 oXy Online s.r.o., všechna práva vyhrazena.