Agile en Waterfall (ook wel traditioneel genoemd) zijn twee ontwikkelingsmethoden; Agile gebruikt een iteratieve benadering, terwijl Waterfall sequentieel is.
Bij ieder nieuw project, programma of product moeten projectmanagers beslissen welke leveringsmethode moet worden gebruikt. Een leveringsmethode is in wezen een framework: een proces of reeks processen die worden gebruikt om een georganiseerde planning, ontwikkeling, uitvoering, reparatie, monitoring en revisie van het werk te faciliteren. En twee van de meest gebruikte methodologieën zijn momenteel het traditionele Waterfall-framework en de nieuwere Agile-aanpak. Een derde benadering, die traditionele en flexibele werkmethoden combineert, wordt ook op grote schaal toegepast.
Agile is een iteratieve methodologie voor softwareontwikkeling met een doel gericht op samenwerking tussen zelforganiserende en functieoverschrijdende teams. Meer informatie over Agile.
Agile omzeilt de traditionele, stapsgewijze aanpak waarbij toegewezen resources specifieke toegewezen taken uitvoeren en het project vervolgens naar de volgende toegewezen fase of resource(s) wordt verplaatst. In plaats daarvan vertrouwt deze methodologie op toegewijde teams die in staat zijn om samen en gelijktijdig te werken. Deze teams voeren taken gelijktijdig uit, waardoor er niet meer hoeft te worden gewacht tot taken zijn voltooid en gemakkelijk van koers kan worden veranderd om veranderende behoeften of opkomende problemen aan te pakken.
Zoals hierboven staat vermeld, is Agile iteratief en ondersteunt het continue releases. Deze aanpak splitst het werk op in meerdere sequenties van herhaalde cycli, iteraties genoemd. Dit levert continu waarde op voor de eindgebruiker, in plaats van alles in één keer bij de voltooiing van het project. Agile speelt een belangrijke rol bij continue levering en continue verbetering.
Hoewel verschillende teams Agile op een aantal verschillende manieren kunnen benaderen, houdt Agile zich altijd aan de volgende kernprincipes:
- Aanpasbaarheid
Agile-projecten moeten de flexibiliteit hebben om architectuur, ontwerp, deliverables, eisen en andere elementen te veranderen tijdens het project. - Lean Development
Agile heeft de eenvoudigste benadering van ontwikkeling, waardoor onnodige of overbodige stappen worden geëlimineerd. - Teamwerk
Agile is afhankelijk van effectief teamwerk en communicatie, waardoor meerdere taken tegelijk kunnen worden uitgevoerd. - Klantbetrokkenheid
Agile iteraties leveren waarde in stappen, waardoor het mogelijk is om samen te werken met klanten bij het introduceren van nieuwe ideeën en het maken van productrevisies. - Duurzaamheid
Agile benadrukt het creëren van een duurzaam, constant ontwikkelingstempo om de waarde aan de klant te leveren op basis van resultaten, in plaats van teams die zich op uitvoer richten onder druk te zetten. - Tijd
Tijd die aan Agile-projecten wordt besteed, wordt opgesplitst in sprints: korte tijdeenheden waarin specifieke taken worden voltooid en vervolgens worden beoordeeld. - Testen
Tijdens elke fase van het Agile-project vinden er testen plaats, in plaats van te wachten tot het volledige project is voltooid.
Sinds de introductie in het begin van de jaren 2000 heeft Agile een aanzienlijke populariteit verworven. Voordelen van de Agile-methodologie zijn onder meer:
Met vooraf gedefinieerde sprints kunnen nieuwe functies snel en voorspelbaar worden geleverd. Bètatests kunnen ook eerder worden uitgevoerd dan anders mogelijk zou zijn.
Agile legt de focus op eenvoud en samenwerking en geeft teams ongeëvenaarde vrijheid in het zelf organiseren en nemen van cruciale beslissingen.
Teamautonomie in Agile geeft teams de flexibiliteit om de methoden en technieken te kiezen die het beste bij het gewenste resultaat passen. Tegelijkertijd worden projecten zelf flexibeler, waarbij nieuwe of gewijzigde backlog-items halverwege de ontwikkeling kunnen worden geïntroduceerd. Vroege bètatests bieden ook essentiële feedback die ontwikkelaars kunnen gebruiken om belangrijke wijzigingen aan te brengen.
Agile is afhankelijk van het vermogen van een team om effectief te communiceren, zowel intern als extern. Het benadrukt directheid en duidelijkheid en zorgt ervoor dat er regelmatig persoonlijke communicatie plaatsvindt.
In de Agile-methodologie is het de klant of eindgebruiker die de prioriteit van functies bepaalt. Dit geeft ontwikkelingsteams duidelijk inzicht in welke functies de beste waarde bieden voor het bedrijf.
Wanneer ontwikkelaars te maken krijgen met strakke deadlines en moeilijke langetermijndoelen, kunnen ze gemakkelijk het belang van de klant uit het oog verliezen. Agile past die focus aan, waarbij klantbehoeften en andere feedback van gebruikers worden gebruikt als basis voor verbeterde producten. Dit leidt niet alleen tot een grotere klanttevredenheid, maar ook tot een beter rendement.
Hoewel Agile vaak wordt gezien als de superieure keuze van methodologieën, brengt het wel een handvol nadelen met zich mee waarvan je je bewust moet zijn voordat je het gebruikt: Dit zijn onder meer de volgende:
Indien klanten niet de tijd of de interesse hebben om nauw samen te werken met het ontwikkelingsteam, zal het project niet over de feedback of inzichten beschikken die het nodig heeft om vooruitgang te boeken.
Als teamleden zich niet volledig inzetten om het project effectief en efficiënt te voltooien, valt het zelfbeheeraspect van Agile uiteen.
Sommige taken, of zelfs bepaalde subtaken, kunnen te tijdrovend zijn om tijdens één sprint te worden voltooid. Om deze problemen aan te pakken, moeten teams ofwel prioriteiten wijzigen ofwel dure extra sprints invoeren.
De iteratieve en incrementele aard van Agile is niet zo compatibel met projectgovernance of -toezicht. Teams die zichzelf niet kunnen sturen, zijn waarschijnlijk minder goed effectief te beheren.
Het feit dat Agile werkende software voorrang geeft boven documentatie, betekent soms dat essentiële notatie achterblijft. Dit kan een probleem zijn, omdat uitgebreide documentatie implementaties beter deelbaar maakt, de gedachtegang achter specifieke beslissingen vastlegt en teams in staat stelt gemakkelijker terug te keren naar eerdere fasen.
Verankerde bedrijfsprocessen, toolsets, beleid, organisatiestructuren en controles zijn vaak niet bevorderlijk voor een Agile-werkwijze. Effectieve Agile-implementatie vereist daarom een wijdverspreide culturele verandering binnen de hele organisatie. Dit kan leiden tot weerstand van individuen of afdelingen die gewend zijn aan meer traditionele praktijken.
Waterfall, de meer traditionele benadering van ontwikkeling, is een lineaire, sequentiële methodologie die de levenscyclus van softwareontwikkeling verdeelt in afzonderlijke fasen waarin de volgende fase alleen kan doorgaan als de vorige fase is voltooid.
Waterfall, de vroegste ontwikkelingsmethodologie, is eenvoudig te gebruiken en te begrijpen en is sterk afhankelijk van het vooraf laden van werk, onderzoek, documentatie en planning. Het is een 'tweemaal meten, eenmaal uitvoeren'-benadering; alle projectvereisten worden aan het begin van het project duidelijk gedefinieerd, en er wordt een gedetailleerd plan opgesteld om aan deze behoeften te voldoen.
De traditionele ontwikkelingsmethodologie verdeelt projecten in zeven verschillende fasen. Elk van deze fasen is onafhankelijk van de andere; een nieuwe fase kan over het algemeen niet beginnen voordat de voorgaande fase is voltooid. Bovendien worden de meeste fasen gescheiden door een 'stage-gate', die een reeks vereisten vertegenwoordigt die moeten worden voltooid en managementbeslissingen die moeten worden genomen voordat het project naar de volgende fase kan overgaan. De fasen zijn als volgt:
- Concept
Ontwikkelteams beginnen met het beoordelen van het komende project, inclusief de voordelen en potentiële kosten. - Documentatie
Systeem- en softwarevereisten, evenals andere resources voor het project, worden verzameld en gedocumenteerd. - Analyse en ontwerp
Teams analyseren het project en bepalen hoe ze willen dat het product of de dienst functioneert; essentieel werk wordt geïdentificeerd en gepland. - Code en eenheden testen
Codering begint voor elke software-eenheid, waarbij testen onderweg plaatsvinden. Eenheden zijn geïntegreerd in de softwarearchitectuur die in eerdere fasen is gedefinieerd. - Systeembrede tests
Testen worden systeembreed uitgevoerd; dit omvat testen voor bugs en gebruikersaanvaarding (UAT), evenals andere essentiële tests. - Problemen oplossen
Bugs, inefficiënties en problematische pijnpunten die in de vorige fase zijn geïdentificeerd, worden opgelost en verholpen. - Levering
Het eindproduct of de dienst wordt geleverd aan de eindgebruiker.
De Waterfall-methodologie, die voor het eerst in 1970 werd beschreven, is ongeveer een halve eeuw lang consistent gebruikt door ontwikkelingsteams. Dit komt omdat het bepaalde voordelen biedt, waaronder de volgende:
De Waterfall-methodologie is wellicht het gemakkelijkst te beheren, omdat elke fase is gekoppeld aan specifieke deliverables en een duidelijk beoordelingsproces.
In projecten waar meerdere componenten ontworpen moeten worden om integratie met externe systemen mogelijk te maken, is de benadering van Waterfall (waarbij het ontwerp al vroeg in het proces wordt voltooid) een duidelijk voordeel.
De productvereisten worden gedocumenteerd en overeengekomen vóór de start van de ontwikkeling, waardoor een voorspelbare en concrete set functies wordt gecreëerd.
Een betere planning en vooraf geladen documentatie zorgen voor een duidelijk overzicht van de potentiële kosten. Dit maakt nauwkeurige budgettering mogelijk.
Omdat de volledige omvang van het werk van tevoren bekend is, wordt het meten van de voortgang eenvoudig en nauwkeurig. De voortgang wordt doorgaans gemeten in het 'statusrapport', waarin werkitems worden gedefinieerd als groen, geel of rood als het gaat om planning, budget en resources.
Doelen worden geïdentificeerd en vastgesteld voordat het ontwikkelingswerk begint, in plaats van dat ze flexibel blijven om rekening te houden met veranderende behoeften.
Teamleden hebben de bandbreedte om aan andere projecten te werken, en hoeven alleen hun tijd te besteden tijdens hun aangewezen fasen.
Waterfall-methodologieën zorgen voor een eenvoudigere, meer vrije ervaring voor klanten; betrokkenheid van eindgebruikers is niet vereist, behalve tijdens de vereisten- en beoordelingsfasen.
Met een duidelijkere focus op planning en documentatie volgen projecten een vaste weg, zijn ze makkelijker te beoordelen en zijn de resultaten duidelijker herkenbaar.
De stijging van Agile getuigt van bepaalde nadelen in de traditionele Waterfall-methodologie. Deze nadelen zijn onder meer:
Omdat Waterfall afhankelijk is van gedetailleerde planning in een vroeg stadium, kunnen projecten die onverwachte problemen, obstakels of veranderende behoeften tegenkomen zich mogelijk niet aanpassen. Waterfalls stromen slechts in één richting; het kan onmogelijk of zeer moeilijk zijn om terug te keren naar eerdere stadia om veranderingen aan te brengen.
Stugge gedefinieerde eisen laten weinig ruimte voor inspiratie, innovatie of creativiteit, en kunnen ontwikkelaars ervan weerhouden om te profiteren van onverwachte kansen tijdens de ontwikkeling.
Omdat klanten minder betrokken zijn bij ontwikkelingsprocessen, kan het zijn dat ze zich buitengesloten voelen. Wat misschien nog problematischer is, is dat klanten zich mogelijk niet bewust zijn van wat er zal worden geleverd totdat het project is voltooid. Daarnaast weten ontwikkelaars zelf wellicht niet wat de verwachte uitkomst is voor de klant, waardoor de kloof nog groter wordt. Omdat testen pas aan het einde van het project plaatsvinden, zullen bugs en UX-problemen bovendien eerder onopgemerkt blijven.
Onduidelijke deadlines voor specifieke fasen kunnen ertoe leiden dat projecten niet op tijd af zijn volgens de planning. Om dit te compenseren, zullen de teams zich soms door de laatste stadia en zelfs de testen haasten. Dit kan leiden tot inferieure producten.
Vereisten moeten duidelijk worden geïdentificeerd en goedgekeurd voordat de werkzaamheden kunnen worden gestart. Als dat niet het geval is, kunnen individuele teamleden de vereisten anders interpreteren, wat leidt tot misverstanden.
Met zoveel moeite die wordt besteed aan planning en documentatie zijn er minder middelen beschikbaar voor het daadwerkelijk bouwen van producten.
Agile en Waterfall bieden elk hun eigen voor- en nadelen. Met dit in het achterhoofd kunnen organisaties worden geholpen door de specifieke gebruiksscenario's voor beide opties te begrijpen bij het kiezen van de methodologieën die het beste voor ieder project zullen werken.
Houd bij het nemen van deze beslissingen rekening met het volgende:
Strengere projectvereisten zijn beter geschikt voor Waterfall, terwijl projecten met minder eisen en regels gebruik kunnen maken van creativiteit en vrijheid van Agile.
Strengere projectvereisten zijn beter geschikt voor Waterfall, terwijl projecten met minder eisen en regels gebruik kunnen maken van creativiteit en vrijheid van Agile.
Strikte processen maken het inzetten van Agile zeer moeilijk en profiteren meer van een traditionele Waterfall-benadering. Agile is effectiever wanneer processen flexibeler zijn.
Waterfall is effectief wanneer klanten, eindgebruikers en producteigenaren niet geïnteresseerd zijn in nauwe samenwerking met het ontwikkelingsteam. Gebruikers die meer betrokkenheid willen, profiteren meer van Agile.
Het verbeteren van bestaande verouderde projecten, waar de kenmerken al goed gedefinieerd zijn en integraties zijn opgezet, werkt beter met de Waterfall-benadering. Als het project nieuwe wegen inslaat en iets probeert te doen dat nog niet is gedaan, dan stelt Agile's iteratieve benadering teams in staat om te leren en zich aan te passen gedurende het proces.
De Waterfall-methodologie legt een voorspelbaar resultaat vast en werkt goed met duidelijk gedefinieerde deadlines en langetermijnprojecten. Kortere deadlines die flexibeler zijn, werken beter binnen Agile.
De voorspelbaarheid van Waterfall is ook zeer geschikt voor inflexibele budgetten, waar elke actie en uitgave vroeg in het proces moet worden gedocumenteerd. Agile vraagt minder rigiditeit in het budgetteren, richt zich op functies en ontwikkelingssnelheid, en is niet zo strikt als het gaat om kosten.
Kleinere, goed gedefinieerde projecten zijn vaak beter geschikt voor Waterfall. Grotere, complexere projecten profiteren van de Agile-benadering.
Bij het coördineren met externe werknemers of het samenwerken met andere organisaties is Waterfall een betere keuze wegens de verminderde behoefte aan persoonlijke samenwerking. Als één enkele organisatie en co-locationele teamleden alleen verantwoordelijk zijn voor het project, is Agile effectiever.
Omdat Agile en Waterfall beide aanzienlijke voordelen bieden, zijn bedrijven over de hele wereld op zoek naar manieren om deze voordelen te combineren en tegelijkertijd de nadelen te beperken. Het resultaat is hybride projectmanagement.
Hybride projectmanagement brengt Agile en Waterfall samen om een oplossing te creëren die tijd, middelen en gebruikerstevredenheid optimaliseert.