Inkrementaalne arendusmudel (inglise keeles Incremental Model) on üks viis, kuidas leevendada koskmudeli (Waterfall Model) jäika tsüklit. See aitab arendusmeeskonnal paremini toime tulla muudatustega, mis võivad tuleneda äritegevusest, kliendi soovidest, turuolukorrast, tehnoloogiate muutumisest, seadusemuudatustest või lõppkasutaja tagasisidest. Kuna koskmudeli puhul on arendustöö keskel muudatustega toimetulek keeruline ja kulukas, pakub inkrementaalne mudel paindlikumat alternatiivi.
Mudel on ajagraafikupõhine ja ei tugine, erinevalt koskmudelist, täielikult valmiskirjeldatud kavandile. Selles mudelis saab arendada erinevaid programmiosi (nn. inkremente) samaaegselt või erinevatel aegadel.
Inkrementaalsus aitab arendustöös kuvada kliendile programmi funktsionaalsuse keskseid osi juba enne, kui kogu süsteem on valmis. Selleks luuakse näiteks:
Näiteks, kui tegemist on failikonverteriga, ei oma esimene inkrement suurt kasutajaliidese kujundust ega isegi kõiki toetatavaid formaate, vaid see demonstreerib osaliselt põhilist teisendusfunktsionaalsust.
Inkrementaalne arendusprotsess koosneb korduvatest etappidest, mida korratakse iga inkremendi jaoks:
Kirjeldatakse ära üldjoontes, mida valminud tarkvaratoode tegema peab. Nõuded jaotatakse tähtsamateks ja vähemtähtsamateks (prioriteetide alusel). Tähtsamad nõuded on tavaliselt need, mis toovad kliendile rohkem väärtust. Selles etapis määratakse ka ära, milliste inkrementidena klient oma toodet saama hakkab ja millise ajavahemiku tagant. Iga inkrement peab tarnima kliendile toimiva toote osakese.
Kui nõuded on olemas ja prioriteetide järgi jaotatud, alustatakse arendusprotsessiga. Siin arendatakse välja vastavalt nõuetele programmi osa ehk inkrement.
Kuigi parasjagu arendatava programmiosa nõuded on "külmutatud", on teiste, veel mittearenduses olevate osade nõudeid võimalik muuta ja täpsustada. See tähendab, et ühe programmi osa nõuete väljaselgitamise lõpetamisel saab seda kohe arendama asuda, enne kui kõik nõuded on täielikult valmis.
Nõuetele vastava programmiosa valmimisel tarnitakse see ehk inkrement kliendile.
Klient saab selle koheselt kasutusse võtta, testida ja anda tagasisidet valminud programmi osa kohta. Selle põhjal võidakse tuletada juba valminud osale uusi nõudeid. Klient saab valminud osa ka integreerida oma olemasoleva keskkonna või eelnevalt arendatud süsteemiga.
| Head Küljed | Halvad Küljed |
|---|---|
| Kulutused on väiksemad – Kuna muudatusi saab sisse viia arendustsükli käigus (enne kogu projekti lõppu), on muudatuste kulud väiksemad. | Progressi jälgimine on keerukas – Progressi jälgitakse arenduskiiruse (mitte täielikult fikseeritud nõuete) põhjal, mis nõuab pidevat ja kiiret dokumentatsiooni, mille hankimine on arendustöö ajal raskendatud. |
| Kliendi tagasiside on kohane – Meeskond saab keset arendust kohe tagasisidet, et vajadusel muuta nõudeid ja seega arenduse suunda. | Süsteemi struktuur degradeerub (spagetistub) – Kuna uusi osi lisatakse pidevalt ja vahel planeerimatult, kipub sisemine struktuur halvenema. Selle vältimiseks kulutatakse lisaresursse koodi refaktoreerimisele. |
| Tarne on kiirem – Klient saab juba funktsioneerivad osad kohe pärast arendustöö lõppu kasutusele võtta ja saab sellest varem kasu. | |
Kuigi mõisted "inkrementaalne" ja "iteratiivne" arendus on sarnased sõnad, tähistavad need siiski erinevaid asju: