Waterfall
Jest to model tworzenia oprogramowania zapożyczony z innych dziedzin inżynierii. Po raz pierwszy został formalnie opisany przez Winstona Royce'a w 1970. Składa się z następujących faz:
- analiza wymagań
- projekt oprogramowania
- pisanie i testy jednostkowe
- integracja
- testy systemowe
- wdrożenie
Podstawowym założeniem jest, że każda z faz dostarcza produktów stabilnych, to znaczy zakłada że nie będą wymagały zmian w kolejnej fazie. W większości projektów nie jest to prawdą. Zmiany wynikają ze zmian środowiska i potencjalnych błędów (analityków, projektantów) które mogą wyjść dopiero w momencie wdrożenia. Wtedy korekty okazują się niebywale kosztowne -- Waterfall nie jest przygotowane na zmianę wymagań.
Jeśli zmian nie można uniknąć należy się do nich przystosować. Programowanie Ekstremalne postuluje przygotowanie architektury i organizacji projektu do wprowadzania zmian.