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:

  1. analiza wymagań
  2. projekt oprogramowania
  3. pisanie i testy jednostkowe
  4. integracja
  5. testy systemowe
  6. 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.

(...) Nie ma bowiem łatwych odpowiedzi. Nie istnieje nic takiego jak najlepsze rozwiązanie - zarówno jeśli chodzi o narzędzia, jak i języki czy systemy operacyjne. Są jedynie systemy, które mogą być bardziej odpowiednie w konkretnych okolicznościach.

I tu właśnie do gry wchodzi pragmatyzm. Nie należy przywiązywać się do żadnej określonej metody, ale mieć na tyle rozległą wiedzę i doświadczenie, by w danej sytuacji wybrać dobre rozwiązanie. (...)

Andrew Hunt, David Thomas "Pragmatyczny Programista"