Snažíme se přesně specifikovat co zákazník chce (ale neřešíme jak toho dosáhnout), protože on to většinou neví. V této etapě také zjistíme jestli to zákazník produkt opravdu potřebuje. Výstupem může být analýza rizik, ale především akceptační testy – testy, které si provede zákazník při převzetí, a pokud jsou splněny, je SW v pořádku.
Naplánování rozdělení na podproblémy, specifikace jejich funkcionalit a rozhraní mezi nimi. Také se plánují podrobnější testy systému.
Také je vhodné už teď naplánovat postup nasazení, protože zatím nejsme ve stresu a tlačeni časem a tak se nad tím dá v klidu zamyslet.
Podrobnější zamyšlení nad jednotlivými moduly, jejich algoritmy a datovými strukturami. Výstupem by měl být odhad ceny a jednotlivých modulů, jejich nároků na lidské zdroje a čas. Výstupem by také měly být podrobnější testy jednotlivých modulů
Programování, realizace, dokumentace.
Začlenění jednotlivých modulů dohromady a jejich testování. Při testování se často vracíme k předchozímu kroku, kvůli opravám chyb.
Otestování systému uživatelem, který se na základě (ne)splnění akceptačních testů produkt (ne)převzít. Proto jsou akceptační testy důležité, jinak by mohl zákazník oddalovat převzetí projektu (a samozřejmě by nechtěl za prodloužení platit) a my bychom na něj neměli žádné páky.
Řešení problémů při provozu a opravy nalezených chyb. Také rozšiřování o nové funkce.
Jednotlivé etapy na sebe navazují. Až je jedna etapa dokončena, začne teprve další. Nejjednodušší a nejpřirozenější model.
Nevýhodou je, že když zákazník dostane hotový produkt a něco si rozmyslí, musí se začít v podstatě od začátku. Což může být problém, protože analytici už nejspíš pracují na jiném projektu a tento si jen matně vybavují. V reálném životě se navíc jednotlivé etapy často překrývají, nebo jsou dokonce v jiném pořadí.
Jednotlivé etapy (kromě prvotní analýzy a předání produktu) se opakují, a teprve až je vše v pořádku, dojde k předání výsledného softwaru.
Jednotlivé etapy se opakují jako u iterativního modelu, ale je zde zaveden tzv. prototyp, který si může zákazník vyzkoušet. Při každé další iteraci je tak výsledek značně blíže cíli, protože velmi rychle získáváme zpětnou vazbu od zákazníka.
Prototyp se od „verze s omezenou funkcionalitou“ liší tím, že je po otestování zahozen, a nový prototyp se vytváří znovu (často se však „zrecyklují“ staré fungující kusy projektu).