Incrementeel en iteratief worden vaak in een adem genoemd als men het over de manier van werken in ICT-projecten heeft. Agile aanpakken bijvoorbeeld combineren incrementeel en iteratief werken.

In dit artikel vind je antwoorden op de vragen:

  • Wat is het verschil tussen incrementeel en iteratief?
  • Kan een ICT-project alleen incrementeel of alleen iteratief werken?
  • Waarom is een agile aanpak incrementeel en tevens iteratief?

Wat is iteratief?

Iteratie betekent herhaling.

In een iteratief proces herhalen de onderdelen van het proces zich stelselmatig

Bij iteratieve softwareontwikkeling worden in elke iteratie de requirements-, ontwerp-, bouw- en testactiviteiten herhaald, voor zover nodig om een nieuwe versie van de software op te leveren. Dat doe je omdat je in elke iteratie de software verder wilt verbeteren.

Jeff Patton (auteur van User Story Mapping) trok ooit de analogie met het schilderen van de Mona Lisa.

“Artists work iteratively. They often create sketches, decide to create a painting, create an under-painting showing colors and form, then eventually begin finishing the painting. They stop when it’s ‘good enough’ or they run out of time or interest.”

Iteratief

Met een iteratief proces ontdek je gaandeweg de rit steeds beter wat voor software de business nodig heeft. Hier kom je achter door steeds feedback te vragen, de software aan te passen en vervolgens opnieuw feedback te verzamelen.

Een iteratief proces gebruik je om de juiste requirements te vinden!

Je begint met een vaag idee, met hele globale requirements en gebruikt de iteraties om het steeds concreter en beter te maken.

Wat is incrementeel?

Incrementeel betekent aangroeiend, toenemend.

Bij een incrementeel proces lever je het eindproduct stapsgewijs op. Elk nieuw increment is een kleine toevoeging aan hetgeen er al was.

Bij incrementele softwareontwikkeling bouw en release je het hele systeem niet in één keer maar voeg je geleidelijk steeds meer functionaliteit toe. Dit zou je kunnen vergelijken met het metselen van een muur, waarbij met elke extra steen de muur groter wordt.

Bij incrementeel werken weet je van te voren al exact wat je gaat maken. Elke increment voegt een stukje toe, en het veranderd niets aan hetgeen je al in vorige incrementen gemaakt had.

Als we de analogie van de Mona Lisa doortrekken zou het schilderij als volgt opgebouwd worden.

Incrementeel

Waarom incrementeel en/of iteratief toepassen?

Zowel incrementeel als iteratief werken heeft voordelen. Je kunt ze onafhankelijk van elkaar of in combinatie toepassen.

Incrementeel werken pas je toe om het systeem geleidelijk in productie te kunnen nemen. Je voegt dan bij elke volgende release extra functionaliteit toe. Op deze manier is het mogelijk om sneller de investering terug te verdienen, tenminste als je meteen businesswaarde weet te leveren. Daarom combineert agile een iteratief proces met incrementele opleveringen.

Iteratief werken pas je toe om de juiste oplossing te vinden ofwel om te ontdekken op welke manier het systeem het beste aan de behoeften van de business voldoet. Je erkent dat het onmogelijk is om op voorhand precies het optimale eindresultaat uit te denken.

Requirements zijn aan veranderingen onderhevig, zeker in een complexe omgeving met veel onzekerheden. Dat veel agile teams toch proberen de requirements op voorhand duidelijk te krijgen, bracht Jeff Patton op de volgende uitspraak:

“Knowing what you want in agile development may be an impediment to getting it.”

Dat je de gebouwde software steeds moet wijzigen is niet erg, want daar anticipeer je op. Je ontwikkelt de software met de verwachting dat het nog gaat wijzigen. Daarom bouw je het minimale dat nodig is om zinvolle feedback te krijgen. Je blijft voortdurend aanpassen en feedback vragen totdat de klant tevreden is of totdat er geen tijd of budget meer over is.

Agile is incrementeel én iteratief

Agile teams werken zowel incrementeel als iteratief. In elke iteratie verbetert het team het voorgaande increment en/of voegt van nieuwe functionaliteit een initiële versie toe, die in latere iteraties verbeterd en uitgebreid wordt.

Welke gevolgen dat praktisch gezien voor jou als analist heeft, leg ik haarfijn uit in het online programma Meester in agile requirements.

Agile is erop gericht om zo veel en zo vroeg mogelijk businesswaarde te leveren. Hiertoe wordt frequent bijvoorbeeld iedere maand of ieder kwartaal een release in productie genomen. Dit kan alleen bij een incrementele aanpak.

Agile stelt dat het onmogelijk is de requirements op voorhand vast te stellen. Als je dat toch probeert zouden ze later behoorlijk veranderen door gewijzigde en voortschrijdende inzichten. Iteratief werken is dan de oplossing.

Heb jij ervaring met een incrementele en/of iteratieve aanpak? Hoe beviel dat? Laat hieronder gerust een reactie achter.

Nicole de Swart

Misschien vind je dit ook interessant

5 reacties

  • Philip

    Welke ontwikkelmethodieken en technieken worden hierbij gebruikt?> (bijv. RUP, MSF, UML..)

    • Nicole de Swart

      (Aandacht voor) ontwikkelmethodieken speelt vooral bij waterval projecten. De eerste waarde van het agile manifesto is immers ‘Individuals and interactions over processes and tools’. Scrum, de populairste agile variant bijvoorbeeld, is geen methodiek maar een raamwerk voor het managen van complexe processen. Niet door een voorgedefinieerd proces maar door empirische procesbesturing. Belangrijk daarbij zijn transparency, inspection, and adaptation.

      Agile principes en practices zijn er wel veel. Zie het agile manifesto en XP.
      Technieken op het gebied van requirements zijn o.a. user stories, storymapping, product backlog, planning poker.

  • Rick Kegel

    Beste Nicole,
    de discussie over het verschil tussen incrementeel en iteratief is m.i. altijd appels met peren vergelijken: “incrementeel” slaat immers op het product, terwijl “iteratief” een eigenschap is van het proces. Doordat beide concepten inherent verschillen, heeft het volgens mij ook niet zoveel zin om je af te vragen of je ze apart kunt toepassen of gecombineerd: dat kan dan nl. altijd!

    • Nicole de Swart

      Rick, klopt dat beide concepten inherent verschillen. Ik hoor veel mensen de begrippen incrementeel en iteratief in één adem noemen of ze zelfs als synoniem gebruiken. Vandaar mijn uitleg.

  • maarten

    Dankjewel,
    Verhelderende tekst en erg leuke visuele toelichting !

Geef een reactie