Watervalmodel versus agile ontwikkeling: verloop, planning, omgaan met wijzigingen, testen en welke projecten passen
Het watervalmodel is een ontwikkelmodel dat eisendefinitie, ontwerp, programmeren en testen op volgorde van stroomopwaarts naar stroomafwaarts doorloopt, en in principe pas naar de volgende fase gaat als de opleveringen van de vorige fase zijn vastgesteld. Omdat het hele plan aan het begin vastligt, zijn voortgang en kosten goed te beheersen, maar fouten in de eisen die pas in latere fasen worden ontdekt, veroorzaken veel herwerk. Agile ontwikkeling is een verzamelnaam voor benaderingen die korte iteraties van enkele weken herhalen, elke keer werkende software bouwen, feedback van gebruikers verwerken en het plan bijstellen als de eisen veranderen; Scrum en extreme programming (XP) zijn typische methoden. Waterval past wanneer de eisen duidelijk en stabiel zijn, en agile wanneer de eisen gemakkelijk veranderen en je bruikbare functies vroeg wilt opleveren.
| Kenmerk | Watervalmodel | Agile ontwikkeling |
|---|---|---|
| Hoe de fasen verlopen | Eisen → ontwerp → programmeren → testen, elk één keer, op volgorde vanaf stroomopwaarts | Korte iteraties (sprints in Scrum) met planning, ontwerp, implementatie en testen, vele keren herhaald |
| Planning | Omvang, planning en kosten van het hele project worden aan het begin vastgelegd, en het werk volgt dat plan | Er wordt een globale richting bepaald, en het plan wordt elke iteratie bijgesteld, met de hoogste prioriteit eerst |
| Omgaan met gewijzigde eisen | Wijzigingen nadat de opleveringen van de vorige fase zijn vastgesteld, veroorzaken veel herwerk en doorlopen een procedure voor wijzigingsbeheer | Verandering wordt verondersteld en gemakkelijk opgenomen in het plan voor de volgende iteratie |
| Wanneer werkende software verschijnt | Vooral tegen het einde van de ontwikkeling; na het testen in één keer opgeleverd | Elke iteratie levert werkende software op (een increment, in Scrum) |
| Wanneer wordt getest | Na het programmeren: unit-, integratie-, systeem- en acceptatietests op volgorde (in het V-model gekoppeld aan de ontwerpfasen) | Elke iteratie; wijzigingen worden vaak elke keer gecontroleerd met geautomatiseerde tests en continuous integration |
| Documentatie | Eisenspecificaties, ontwerpdocumenten enz. worden per fase geschreven en via reviews vastgesteld | Werkende software staat voorop, en documentatie blijft vaak beperkt tot wat nodig is |
| Betrokkenheid van de klant | Vooral bij de eisendefinitie aan het begin en de acceptatietest aan het einde | Beoordeelt het product elke iteratie en geeft feedback; in Scrum bepaalt de product owner de prioriteiten van wat er wordt gebouwd |
| Voortgangsbewaking | Gemeten aan afgeronde fasen en opleveringen; goed te beheren met een WBS en Gantt-diagrammen | Elke iteratie gemeten aan functies die af zijn en werken |
| Passende projecten | Duidelijke, stabiele eisen; specificaties die vroeg samen met hardware moeten worden vastgelegd; contracten die omvang en kosten vooraf moeten vastleggen | Eisen die gemakkelijk veranderen, of nieuwe diensten waarbij je tijdens het bouwen de reacties van gebruikers wilt toetsen |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.