Razlika između iterativnog i inkrementalnog razvoja u agilnom

Koja je razlika u agilnom razvoju softvera između iterativnog i inkrementalnog razvoja? Jesu li ista stvar? Koja je razlika između ove dvije riječi?

Prvo, pogledajmo jednostavne definicije dva pojma:

Inkrementalni - dodavanje nove funkcionalnosti u malim dijelovima

Ponavljanje - izvođenje više puta, tj. dodavanje nove funkcionalnosti na ponavljajući ili cikličan način

Iz Wikipedija :

Iterativni razvoj stvoren je kao odgovor na neučinkovitost i probleme pronađene u slapu.



Osnovna ideja koja stoji iza ove metode je razviti sustav kroz ponovljene cikluse (iterativni) i u manjim dijelovima odjednom (inkrementalno), omogućavajući programerima softvera da iskoriste ono što je naučeno tijekom razvoja ranijih dijelova ili verzija sustava. Učenje dolazi kako iz razvoja tako i iz upotrebe sustava, gdje mogući ključni koraci u procesu započinju jednostavnom implementacijom podskupa softverskih zahtjeva i iterativno poboljšavaju nove verzije dok se ne implementira puni sustav. U svakoj se iteraciji izrađuju izmjene dizajna i dodaju nove funkcionalne mogućnosti.

U postepenom razvoju, funkcionalnost sustava se nareže na inkremente (dijelove), pri čemu se u svakom koraku isporučuje dio funkcije.

Cijela je ideja korisnicima pružiti 'radnu' verziju značajke (koliko god minimalna bila) kako bismo mogli dobiti povratne informacije rano u procesu. Usporedite to s tim da morate nekoliko mjeseci graditi potpuno funkcionalnu značajku, samo da biste otkrili da ono što je izgrađeno ne zadovoljava potrebe korisnika.

Iterativni i inkrementalni razvoj

Pogledajmo primjer kako iterativni i inkrementalni razvoj i isporuka djeluju u agilnom kontekstu.

Pretpostavimo da želite dodati novu funkciju za prijavu na web mjesto i odlučite da želite to razviti pomoću agilne metodologije, radeći u dvotjednim ciklusima isporuke (iteracije).

Prva iteracija:

The minimum bila bi radna verzija funkcionalnosti za prijavu koju vrijedi isporučiti korisnicima

  • Stvorite web stranicu na kojoj će korisnici vidjeti obrazac za prijavu
  • Dodajte obrazac za prijavu sa samo dva polja (korisničko ime i lozinka) i gumb za prijavu, tj. Samo normalni HTML obrazac sa ne styling ili validacija
  • Stvorite stranicu dobrodošlice, tako da će se korisnici, kada se prijave, vidjeti poruku.

Ovo je prva verzija (koja djeluje, ali ograničena u funkcionalnosti) softvera isporučenog u iteracijskoj verziji. Ova osnovna značajka prijave prošla je kroz dizajn, razvoj i testiranje i isporučena na kraju iteracije.

Druga iteracija:

U sljedećoj iteraciji želimo poboljšati funkcionalnost prijave onoga što je izgrađeno u posljednjoj iteraciji. Možda ćemo odlučiti

  • Izgradite pravila provjere valjanosti oko ulaznih parametara
  • Dodajte malo CSS-a kako bi obrazac za prijavu izgledao lijepo
  • Prikažite poruku kada se korisnik pokuša prijaviti s nevažećim vjerodajnicama

Sada smo dodali novu i poboljšanu postojeću funkcionalnost. Drugim riječima, imamo uvećan postojeću funkcionalnost prijave i to smo učinili u ovoj iteraciji.

Treća iteracija:

U trećoj iteraciji dodavanjem možemo još jednom povećati svoju funkcionalnost prijave

  • Zaboravljena funkcionalnost lozinke
  • Potvrdni okvir 'Zapamti me'
  • Mehanizam preusmjeravanja za preusmjeravanje na odgovarajuće stranice kada se korisnici prijave (umjesto samo stranice dobrodošlice razvijene u prvoj iteraciji)

Kao što vidite, u svakoj smo iteraciji povećali funkcionalnost prijave dodavanjem novih korisnih značajki za korisnike. Na taj način od korisnika možemo dobiti brze povratne informacije kako bismo mogli dodati ili poboljšati njegovu funkcionalnost.

Tijekom niza ponavljanja napokon pružamo cjelovito rješenje.