Iteracyjny model kaskadowy (ang. waterfall model) to jeden z procesów tworzenia oprogramowania, który został zdefiniowany w inżynierii oprogramowania. Jest to odmiana modelu kaskadowego w pewnych specyfikacjach połączona z iteracyjnym modelem. Wobec tego połączenia, głównie proponuje się dokonywanie analizy, projektowania oraz zbierania wymagań według modelu kaskadowego natomiast implementację oraz testowanie dzieli się na iteracje. Wdrożenie może być dokonane zaraz po zaimplementowaniu i przetestowaniu całego systemu zgodnie z założeniami modelu kaskadowego.
Model powstał do wykonywania podstawowych czynności jedna po drugiej z tak zwanymi nawrotami. Dają one większą elastyczność jednak wydłuża się przez nie czas danego przedsięwzięcia. Każda faza musi zakończyć się szeregiem dokumentów w których zostają opisane wyniki danego etapu.
Wymieniamy następujące etapy:
- Planowanie systemu - faza odpowiadająca określaniu wymagań, określane są również cele i potrzeby.
- Analiza systemu - obejmuje analizę wymagań dzięki której możliwe jest usunięcie niekompletności, braku spójności czy niejednoznaczności.
- Projekt systemu - w fazie projektowania powstaje szczegółowy projekt systemu, który spełnia wcześniej ustalone wymagania, faza ta dzieli się na projektowanie pojęciowe i projektowanie implementacyjne.
- Implementacja - na tym etapie projekt zostaje zaimplementowany w konkretnym środowisku programistycznym, oprócz tego wykonywane są różnego rodzaju testy poszczególnych modułów.
- Testowanie - faza testowania i integracji poszczególnych podsystemów i jednocześnie całego oprogramowania.
- Wdrożenie - etap cyklu życia systemu, który polega na instalacji oraz dostosowaniu oprogramowania do wymagań użytkownika.
Ważnymi zaletami modelu są na pewno:
- możliwość wykorzystania różnych technologii
- prawidłowo zdefiniowany ciąg kroków
- sprawdzony w wielu rzeczywistych projektach
- zrozumiały i łatwy w obsłudze.
Natomiast wady jakie możemy wymienić to:
- każda modyfikacja czy zmiana wymaga cofnięcia się
- walidacja - brak udziału użytkownika w projektowaniu jak i samej implementacji
- proces zależy w dużym stopniu od stabilności wymagań
- milczące założenie - szansa na wytworzenie poprawnej specyfikacji wymagań na samym początku projektu, która jest niestety niemożliwa gdyż spotyka się trudności podczas pozyskiwania tych wymagań, przygotowania specyfikacji.