Skillnaden mellan Iterativ och inkrementell utveckling i Agile

Vad är skillnaden mellan iterativ och inkrementell utveckling inom agil mjukvaruutveckling? Är de samma sak? Vad är skillnaden mellan dessa två ord?

Låt oss först titta på enkla definitioner av de två termerna:

Inkrementell - lägga till ny funktionalitet i små bitar

Iterativ - utföra upprepade gånger, dvs. lägga till ny funktion på ett repetitivt eller cykliskt sätt

Från Wikipedia :

Iterativ utveckling skapades som ett svar på ineffektivitet och problem som finns i vattenfallet.



Grundidén bakom denna metod är att utveckla ett system genom upprepade cykler (iterativt) och i mindre delar åt gången (inkrementellt), så att programutvecklare kan dra nytta av det som lärts ut under utvecklingen av tidigare delar eller versioner av systemet. Lärande kommer från både utveckling och användning av systemet, där det är möjligt, viktiga steg i processen börjar med en enkel implementering av en delmängd av programvarukraven och förbättrar iterativt de utvecklande versionerna tills hela systemet är implementerat. Vid varje iteration görs modifieringar och nya funktionella funktioner läggs till.

Vid inkrementell utveckling skärs systemfunktionaliteten upp i steg (delar), varigenom en del funktionalitet levereras i varje steg.

Hela idén är att leverera en ”fungerande” version av en funktion (men minimal) till användarna så att vi kan få feedback tidigt i processen. Jämför det med att behöva bygga en helt funktionell funktion i några månader, bara för att ta reda på att det som har byggts inte uppfyller användarnas behov.

Iterativ och inkrementell utveckling

Låt oss se ett exempel på hur iterativ och inkrementell utveckling och leverans fungerar i ett smidigt sammanhang.

Antag att du vill lägga till en ny inloggningsfunktionalitet på en webbplats och att du bestämmer dig för att utveckla detta med hjälp av smidig metodik, som arbetar i två veckors leveranscykler (iterationer).

Första iteration:

De minimum fungerande version av inloggningsfunktionen som är värt att leverera till användare skulle vara

  • Skapa en webbsida där användarna ser inloggningsformuläret
  • Lägg till ett inloggningsformulär med bara två fält (användarnamn och lösenord) och en inloggningsknapp, dvs bara ett normalt HTML-formulär med inte styling eller validering
  • Skapa en 'välkomst' -sida så att när användare loggar in ser de ett meddelande.

Detta är den första versionen (fungerar men begränsad i funktionalitet) av programvaran som levereras i iteration one. Denna grundläggande inloggningsfunktion gick igenom design, utveckling och testning och levererades i slutet av iterationen.

Andra iteration:

I nästa iteration vill vi förbättra inloggningsfunktionen för det som byggdes i den senaste iterationen. Vi kan bestämma oss för att göra

  • Bygg valideringsregler kring ingångsparametrar
  • Lägg till lite CSS så att inloggningsformuläret ser vackert ut
  • Visa ett meddelande när användaren försöker logga in med ogiltiga referenser

Nu har vi lagt till ny och förbättrad befintlig funktionalitet. Med andra ord har vi det ökat den befintliga inloggningsfunktionen, och vi gjorde det i denna iteration.

Tredje iteration:

I iteration tre kan vi ännu en gång öka vår inloggningsfunktionalitet genom att lägga till

  • Glömt lösenordsfunktion
  • Kryssrutan 'Kom ihåg mig'
  • Omdirigeringsmekanism för att omdirigera till lämpliga sidor när användare loggar in (snarare än bara en 'välkomstsida' som utvecklades under den första iterationen)

Som du kan se har vi i varje iteration ökat inloggningsfunktionen genom att lägga till nya användbara funktioner för användarna. Genom att göra det kan vi få snabb feedback från användarna så att vi kan lägga till eller förbättra dess funktionalitet.

Under ett antal iterationer levererar vi äntligen hela lösningen.