Waterfall vs. Agile: Klíčové rozdíly a vhodnost použití


Waterfall byl první formální metodou vývoje softwaru, která byla představena v roce 1970. Myšlenka předvídatelného a sekvenčního vývoje pochází z inženýrství a stavebnictví. Model Waterfall se stal velmi populárním zejména ve vojenských a leteckých projektech, protože byl považován za předvídatelný, kontrolovatelný a dobře zdokumentovaný. Jeho největší nevýhodou je však nízká flexibilita.
Podle Sommervilla (2015) jde o sekvenční proces, ve kterém projekt postupuje přes jednotlivé fáze – analýzu požadavků, návrh, implementaci, testování a údržbu. Každá fáze musí být dokončena, než může začít ta následující.Tento přístup umožňuje detailní plánování a kontrolu, ale zároveň omezuje flexibilitu při změnách požadavků.
Model Waterfall je proto považován za základní rámec pro pozdější vývojové metodologie.

Ve společnosti Moravio jsme dříve používali metodologii Waterfall pro řízení našich projektů. Tento přístup nám připadal přirozený, protože je snadno pochopitelný a široce používaný v různých odvětvích.
Na začátku projektu jsme shromáždili všechny vstupy od klienta, které sloužily jako základ pro celý vývoj. Jakékoliv změny nebo odchylky jsme nejprve řešili jako dodatky ke smlouvám, než byly implementovány do kódu.
Na základě dohodnutých požadavků jsme stanovili pevnou cenu projektu. Abychom zajistili efektivní řízení, rozdělili jsme projekt do několika fází, přičemž klient platil po dokončení každé z nich.
Na začátku jsme provedli důkladnou analýzu vstupů od zákazníka, jeho obchodních cílů, procesů a marketingové strategie. Dále jsme určili funkční a nefunkční požadavky a podporovaná zařízení.
Tato analýza nám umožnila vytvořit detailní projektovou dokumentaci, která popisovala navrhované řešení, a někdy zahrnovala i wireframy. Na dokumentaci navazuje technická analýza, která popisuje navrhovanou architekturu, použité technologie a databázovou strukturu. Jakmile byly požadavky schváleny, naplánujeme technické úkoly, připravíme rozpočet a stanovíme očekávané náklady na implementaci.
Jde o tvorbu grafického návrhu řešení. Zákazníkovi jsme poskytli dvě až tři kola na zpětnou vazbu a úpravy, než jsme se shodli na finální verzi designu.
Jakmile byl design schválen, začala implementace naplánovaných úkolů. Během této fáze klient pravidelně dostával informace o postupu projektu a na konci obdržel finální produkt. Jakékoliv nové požadavky vznesené v průběhu vývoje byly považovány za dodatečné práce, které musí být odhadnuty a schváleny zákazníkem před realizací.
Finální funkční produkt byl nasazen do testovacího prostředí a předán zákazníkovi k důkladnému otestování. Klient měl obvykle předem dohodnuté období, během kterého testování probíhá. Po jeho ukončení poskytl zpětnou vazbu a podepsal předávací protokol.
Jakmile byl produkt schválen, byl “nasazen” do produkčního prostředí v souladu s dohodou uzavřenou se zákazníkem.
Po předání hotového produktu zákazníkovi jsme obvykle uzavřeli “servisní smlouvu” (SLA) a zajišťovali dlouhodobou podporu software po stanovené období. Pokud by zákazník chtěl spolupráci ukončit v jakékoliv fázi projektu, bylo nutné se vzájemně dohodnout na podmínkách zrušení objednávky a vypovězení smlouvy.
Neříkáme, že tento přístup je zcela špatný — může být vhodný pro menší projekty nebo pro případy, kdy se vytváří typově stejný software pro více zákazníků. To ale není to, co obvykle děláme.
V Moravio vyvíjíme na míru šitý software pro naše klienty. Na základě předchozích zkušeností dokážeme poskytnout orientační odhady, avšak čím je projekt složitější nebo rozsáhlejší, tím obtížnější je přesně specifikovat všechny detaily již na začátku – a to jak z naší strany, tak i ze strany zákazníka.
Během vývoje se někdy stane, že se na straně klienta změní odpovědná osoba nebo vnitrofiremní procesy. Nebo že když zákazník poprvé uvidí vyvinutou funkci nebo grafiku, zjistí, že potřebuje fungovat jinak – nebo že se musí upravit kvůli změnám v chování uživatelů či na trhu.
Všechny tyto faktory vedou ke změnám požadavků u již vyvíjeného produktu. Výsledkem často býválo, že zákazník nebyl plně spokojen, protože původní požadavky neodrážely skutečné potřeby, a my jsme také nebyli spokojeni, protože rostly náklady projektu a bylo nutné složitě vyjednávat o dodatečných zdrojích.
Agile je iterativní a inkrementální přístup k vývoji softwaru, který klade důraz na flexibilitu, spolupráci a zpětnou vazbu zákazníka. Vznikl na počátku 90. let 20. století.
Nejpoužívanějším rámcem, který implementuje principy Agile Manifestu, je Scrum.
Na rozdíl od Waterfall přístupu, který postupuje sekvenčně, Agile rozděluje práci do krátkých, snadno řízených iterací nazývaných sprinty.
Každý sprint přináší funkční část produktu, což umožňuje týmům rychle reagovat na změny požadavků a průběžně zlepšovat kvalitu prostřednictvím pravidelného hodnocení a zpětné vazby.
Agile staví na těchto hodnotách:
(Beck et al., 2001; Sommerville, 2015)

Na začátku jsme používali kombinaci přístupů Agile a Waterfall – tedy hybridní metodologii.
Zákazníci tehdy nebyli s Agile přístupem příliš obeznámeni a často mu zpočátku nedůvěřovali, proto jsme zvolili kompromisní model.
Dohodli jsme se na pevně stanoveném harmonogramu a orientačním rozpočtu založeném na specifikovaných požadavcích.
Hlavní rozdíl oproti předchozímu Waterfall přístupu spočíval v úzké spolupráci s klienty, která je klíčovým principem Agile.
Rozdělili jsme dodávky do sprintů, každé dva týdny jsme klientovi prezentovali výsledky a současně jsme pracovali na upřesňování požadavků alespoň o jeden sprint dopředu.
Spolupráce i spokojenost klientů s finálním produktem se výrazně zlepšily. Nicméně během projektu backlog často narůstal, což vedlo k prodloužení harmonogramu.
Nevýhodou tohoto modelu byla i značná časová náročnost na reportování a obhajování každé dodatečně odpracované hodiny.
Stále to nebylo win-win partnerství, kterého jsme chtěli dosáhnout.
Postupem času jsme si uvědomili, že naše další projekty musí být plně agilní.Upravili jsme smlouvy a s rostoucí popularitou metodologie Agile mezi klienty se její přínosy staly všeobecně známé a akceptované

Ve společnosti Moravio klademe důraz na otevřenost a transparentnost při zahájení každého projektu. Místo slibování pevných termínů a cen poskytujeme orientační odhady založené na počátečních nápadech nebo specifikacích.
Následně úzce spolupracujeme s klientem, abychom upřesnili požadavky koncových uživatelů a přizpůsobili rozsah projektu tak, aby odpovídal dostupnému rozpočtu.
Usilujeme o to, abychom našim klientům poskytovali špičkovou kvalitu ve všem, co děláme.Opíráme se o naše zkušenosti, odborné znalosti a neochvějný závazek ke kvalitě v každém sprintu.
Věříme, že díky úzké spolupráci s klienty a neustálému zdokonalování požadavků dokážeme dodat výsledky, které odpovídají jejich očekáváním.
Zároveň dbáme na to, aby naši klienti měli plnou kontrolu nad svými projekty a byli svobodní ve své volbě — pokud by kdykoliv nebyli spokojeni s našimi službami, mohou dle dohodnuté výpovědní lhůty zvolit jiného poskytovatele.
Náš úspěch jako softwarové společnosti totiž závisí především na spokojenosti klientů, a proto se snažíme, aby každý projekt skončil úspěchem pro obě strany.
Z agilních frameworků používáme především Scrum, i když u některých projektů aplikujeme i Kanban.Nejčastěji pracujeme v krátkých dvoutýdenních iteracích (sprintech), na jejichž konci prezentujeme výsledky zákazníkovi, diskutujeme o nich a podle zpětné vazby je dále upravujeme.Shromážděné podněty převádíme do konkrétních úkolů a následně je společně s klientem prioritizujeme.
Pokud klient potřebuje náhle změnit směr, není to problém — v Agile přístupu nejsme svázáni pevnými smlouvami ani rigidními procesy.
Stačí s klientem vyjasnit nové požadavky a změny naplánovat do následujícího sprintu.
Nástroje, které používáme
Obecně dáváme přednost nástrojům, které dobře známe, ale dokážeme se přizpůsobit i těm, které preferuje zákazník
Podle 17. vydání zprávy o stavu Agile od Digital AI (2023) používá 71 % dotázaných firem metodologii Agile v rámci životního cyklu vývoje softwaru.
Nicméně stále existují i jiné metodologie, které se v praxi využívají:
Umělá inteligence (AI) výrazně ovlivňuje, oba metodologické přístupy. AI proměňuje způsob, jakým týmy shromažďují a spravují projektové požadavky. Umožňuje snadnější shrnutí a analýzu dat a také automatické generování dokumentace
(vývoj řízený specifikacemi).
AI zároveň hraje stále větší roli v návrhu aplikací — například umí automaticky generovat wireframy z textových zadání, čímž zpřístupňuje návrhové procesy i lidem bez zkušeností s designem. Dokáže dokonce vytvořit jednoduché funkční aplikace přímo z dokumentace.
V různých rolích pomáhá AI týmům být konzistentnější, efektivnější a produktivnější. Umí generovat vývojové úkoly z dokumentace, navrhovat konkrétní implementace kódu a asistovat při automatizovaném testování a validaci reálných aplikací.
Z metodologického pohledu pomáhá AI odstranit některá tradiční omezení Waterfall přístupu — zejména v oblasti sběru požadavků a tvorby dokumentace. Tyto procesy se díky ní stávají rychlejši a flexibilnější. Ačkoli smluvní a procesní omezení stále existují, jejich dopad dnes výrazně závisí na kvalitní komunikaci a spolupráci s klienty.
Stejně jako každý nástroj může být ale i AI nesprávně používána. Roste riziko, že lidé se začnou na technologie příliš spoléhat a přestanou kriticky přemýšlet o tom, co dělají. Například mohou automaticky generovat velké objemy požadavků či kódu, které jsou zbytečné, nejasné nebo neodpovídají skutečným potřebám projektu – jen proto, aby měli zadání, které vypadá dobře a dle metodologie.
Podobně, pokud nejsou AI-generované návrhy správně zkontrolovány, mohou vést k nedorozuměním mezi designéry, vývojáři a klienty. To pak způsobuje komunikační šumy, nesrovnalosti a dodatečnou práci později v procesu. Totéž platí i pro automaticky generovaný kód – pokud je zbytečně složitý nebo nepřehledný, může vytvářet úzká hrdla a komplikace při vývoji. To, že něco lze snadno automaticky vytvořit, ještě neznamená, že by se to mělo dělat.
AI by měla podporovat kreativitu, efektivitu a porozumění, nikoliv je nahrazovat. Je nezbytné zachovat lidský dohled, kritické myšlení a spolupráci, aby AI zůstala užitečným pomocníkem – ne nekontrolovaným rozhodovacím nástrojem.
Ve společnosti Moravio netrváme nutně na Agile nebo Waterfallu. Volba metodologie vždy závisí na typu projektu, potřebách a očekávání klienta. Oba přístupy mohou vést k vynikajícím výsledkům — nebo k problémům — podle okolností.
To, na čem skutečně záleží, je spolupráce a jasná komunikace. Když má klient jasnou představu o tom, co chce vytvořit, nebo je otevřený tuto představu s námi společně rozvíjet, celý proces probíhá plynule bez ohledu na zvolenou metodologii.
Na konci dne — stejně jako ve většině věcí v životě — úspěch závisí na lidech: na otevřené komunikaci, vzájemné důvěře a kvalitě partnerství.

Somerville (2015), Software Engineering, 10th GLO https://dn790001.ca.archive.org/0/items/bme-vik-konyvek/Software%20Engineering%20-%20Ian%20Sommerville.pdf
Agile frameworks: https://www.wrike.com/agile-guide/faq/what-is-fdd-in-agile/
Metodologie softwarového vývoje: https://www.itransition.com/software-development/methodologies
Ano, je to možné, ale může to být velmi matoucí pro obě strany, zejména pokud klient nemá žádné předchozí zkušenosti s Agile. Ke změně se musí uskutečnit dvě úrovně:
Smluvní úroveň — přechod může být časově náročný a v některých případech může projekt dokonce dočasně pozastavit.
Úroveň procesu — je nutné jasně definovat pravidla, očekávání a způsoby spolupráce na obou stranách.
Cílem je vyhnout se situaci, kdy změna metodiky nepřinese očekávané zlepšení, protože skutečný problém byl někde jinde — například v komunikaci nebo v nejasné vizi projektu.
Na druhou stranu lze často dosáhnout většího zapojení klientů a řešení stávajících problémů bez formální změny metodiky nebo úpravy smluv. Někdy stačí otevřenější komunikace, častější zpětná vazba a ochota najít společnou řeč.
Chápeme, že klienti mají své každodenní povinnosti a není vždy snadné najít čas na aktivní účast na agilním vývoji. Pravidelné zapojení klientů do vývoje produktu je však jedním z klíčových prvků, které skutečně dělají rozdíl.
A angažovaností máme na mysli soustředěnou účast „hlavou ve hře“ - nejen příležitostné check-iny. Je naprosto v pořádku, pokud klient občas zmešká schůzku, ale je zásadní, aby dohnal a poskytl zpětnou vazbu, a to i s krátkým zpožděním. Výsledky každého sprintu vyžadují kontrolu a schválení klienta, což zajišťuje, že konečný produkt se vyvíjí správným směrem.
Ano, pokud to dává smysl pro nás a klienta. Je to všechno o nastavení jasných očekávání a pravidel.
To opravdu závisí na typu produktu, rozsahu projektu a případných omezeních smlouvy. Je těžké učinit obecné prohlášení o tom, který přístup je lepší. Některé projekty jsou malé, přímočaré a snadno plánovatelné, protože požadavky jsou jasné od začátku - podobně jako stavba domu, kde nemůžete postavit střechu dříve, než položíte základ. Pokud jste použili Agile pro tento druh projektu, můžete nakonec přeměnit jednoduchou kabinu na luxusní vilu - dražší a časově náročnější - jednoduše proto, že flexibilita Agile podporuje neustálé změny požadavků.
Doporučená čtení pro vás
Nové příspěvky na blogu, které by vás mohly zajímat


Jakub Bílý
Vedoucí obchodu