Software ontwikkelen: Agile, Scrum en Lean
Voor het ontwikkelen van software zijn verschillende standaard methodes beschikbaar. In het verleden werd vooral gewerkt met de watervalmethode, waarbij ontwerp-, ontwikkel- en testwerkzaamheden fasegewijs en voorzien van lijvige documentatie uitgevoerd werden. Omdat deze manier van werken veel nadelen heeft en niet zelden tot teleurstellende resultaten leidt, is gezocht naar methodes die tot betere resultaten leiden. Agile, Scrum en Lean worden steeds vaker genoemd als methodes die veel betere resultaten opleveren.
Agile
Agile software ontwikkelen wordt vaak in één adem genoemd met Scrum en Lean. Het gaat hierbij echter om verschillende methodes, waarbij agile feitelijk geen methode is in tegenstelling tot Scrum en Lean.
Behendig of wendbaar, dat is wellicht de beste Nederlandse vertaling van het begrip agile. Het duidt echter niet zozeer een werkmethode aan, maar meer een bepaald gedachtegoed dat men hanteert bij de manier van werken. Het begrip agile komt voort uit het Agile Manifesto, het in 2001 onder andere door Jeff Sutherland opgestelde manifest als reactie op de tot dan toe gebruikte logge en van veel documentatie voorziene software ontwikkelmethodes als de Watervalmethode. De letterlijke tekst van het Agile Manifesto luidt:
“Wij laten zien dat er betere manieren zijn om software te ontwikkelen door in de praktijk aan te tonen dat dit werkt en door anderen ermee te helpen. Daarom verkiezen we:
- Mensen en hun onderlinge interactie boven processen en hulpmiddelen
- Werkende software boven allesomvattende documentatie
- Samenwerking met de klant boven contractonderhandelingen
- Inspelen op verandering boven het volgen van een plan
Hoewel wij waardering hebben voor al hetgeen aan de rechterkant staat vermeld, hechten wij méér waarde aan wat aan de linkerzijde wordt genoemd.”
Het manifest geeft dus niet aan dat er geen processen of hulpmiddelen mogen worden gebruikt, dat er niet gedocumenteerd mag worden, etc. Het geeft vooral aan dat mensen en interactie, werkende software, samenwerking en reageren op veranderingen de belangrijkste uitgangspunten zijn voor succesvolle software ontwikkeling en -projecten. Het Agile Manifesto en het agile gedachtegoed vormen het fundament voor onder andere Scrum, DSDM (Dynamic Systems Development Method) en XP (Extreme Programming), die wel als gestructureerde werkmethode voor software-ontwikkeling zijn uitgewerkt.
Scrum
Het op het agile gedachtegoed gebaseerde Scrum is in de basis een zeer eenvoudige methode voor software-ontwikkeling. De methode kent slechts drie rollen:
- Product Owner
- Scrum Master
- Team.
In het Team bevinden zich weliswaar de traditionele rollen als ontwerper, ontwikkelaar en tester, maar zij beperken zich niet tot de uitvoering van de traditionele rolinvulling. Het resultaat van het Team staat namelijk voorop en zo kan bijvoorbeeld ook de ontwerper testwerkzaamheden op zich nemen, als het te bereiken resultaat hierom vraagt. Naast deze agile rolinvulling, is het Scrumteam ook agile in de wijze waarop het de opdrachten plant en uitvoert. Deze opdrachten worden opgedeeld in tijdvakken (sprints) van één tot maximaal vier weken, waarbij aan het einde van elke sprint werkende software wordt opgeleverd. De Product Owner bepaalt hierbij wat het belangrijkste volgende onderdeel van de opdracht is en in de eerstvolgende sprint door het Team kan worden opgepakt. Daardoor kan continu worden ingespeeld op veranderingen. De Scrum Master bewaakt en faciliteert de toepassing van Scrum als werkmethode door het Team.
Lean
In tegenstelling tot Scrum is Lean in de basis geen methode voor software-ontwikkeling, maar een methode om continu te werken aan procesverbetering, het opleveren van een voor de klant acceptabel eindproduct en het vinden en reduceren of zelfs wegnemen van verspillingen. De basis voor Lean is gelegd door Toyota, in de vorm van het TPS (Toyota Production System). De vijf principes van Lean zijn:
- Stel de toegevoegde waarde voor de klant vast
- Bekijk de waardestroom, welke processtappen worden gevolgd om het resultaat te bereken
- Hanteer een continue processtroom, vermijd zoveel mogelijk wachttijd en voorraad
- Voorkom overproductie en begin pas met produceren als de klant of de volgende processtap erom vraagt
- Probeer de perfecte situatie te bereiken door een continue verbetercultuur
Eigenlijk is Lean overal toepasbaar waar procesmatig gewerkt wordt. En daarmee is het ook toepasbaar voor software-ontwikkeling. Mary en Tom Poppendieck beschrijven in hun boek Lean Software Development hoe Lean toepasbaar is als agile software-ontwikkelmethode: “Lean Software Development is the application of the principles of the Toyota Product Development System to software development.”
Conclusie
Agile is bij software-ontwikkeling dus vooral een gedachtegoed dat wordt gehanteerd, met het Agile Manifesto als basis voor een aantal agile software-ontwikkelmethodes, met Scrum als de belangrijkste daarvan. Lean is vooral een methode gericht op procesverbetering en het wegnemen van verspilling in processen, maar is wel degelijk ook toepasbaar als agile software-ontwikkelmethode.
Lees verder