Spiraalmudel on iteratiivne ja riskidele orienteeritud tarkvaraarenduse mudel. Mudelit kujutatakse spiraalina, kus iga ring ehk iteratsioon sisaldab kogu arendusprotsessi tsüklit: planeerimist, riskianalüüsi, arendust ja ülevaatust. Iga iteratsioon annab tulemuse, mida saab edasi täiustada järgmistes tsüklites.
Iteratiivne arendus tähendab olemasolevate süsteemi osade korduvat parandamist ja täiustamist. Arendus toimub tsüklitena, nn iteratsioonidena, mille käigus süsteemi muudetakse ja täisutatakse.
Spiraalmudel koosneb mitmest iteratsioonist, kus iga iteratsioon on:
Täielik arendustsükkel, mis hõlmab kõiki põhitegevusi;
Keskendub konkreetsetele eesmärkidele ja riskidele;
Lõppeb tulemuse ülevaatusega ja otsusega järgmise iteratsiooni kohta.
Iga iteratsioon võib sisaldada kõiki arenduse osi.
| Etapp | Kirjeldus |
|---|---|
| Eesmärkide seadmine | Määratletakse eesmärgid,
piirangud, nõuded, võimalikud lahendused. |
| Riskide hindamine ja maandamine | Tuvastatakse ja analüüsitakse riske ning tehakse tegevusi nende vähendamiseks. |
| Arendus ja valideerimine | Valitakse sobiv arendusstrateegia ning arendatakse ja testitakse süsteemi osa. |
| Planeerimine | Ülevaatatakse tulemusi, kogutakse tagasisidet ja planeeritakse järgmine kordus. |
| Head küljed | Halvad küljed |
|---|---|
| Väiksemad kulud nõuete muutumisel | Projekti edenemist võib olla raskem jälgida |
| Lihtsam saada kliendi tagasisidet juba valminud osadele | Süsteemi struktuur võib pidevate muudatuste tõttu halveneda |
| Tarkvara osasid saab kliendile kasutamiseks üle anda varem | Vajalik võib olla regulaarne refaktoreerimine tarkvara kvaliteedi säilitamiseks |
| Varased versioonid aitavad paremini mõista süsteemi edasisi nõudeid |
Agiilsed meetodid põhinevad sageli inrkementaalsel arendusel ja rõhutuvad:
Tähtsal kohal on pidev tagasiside, testimine ja kasutajate kaasamine.
Ekstreemprogrammeerimine (XP) on agiilne arendusmeetod, mis rõhutab pidevat tagasisidet, testimist ja
koostööd. XP-s on olulised praktikad nagu paarisprogrammeerimine, pidev integreerimine, testide
kirjutamine enne koodi
kirjutamist (test-driven development) ja regulaarne refaktoreerimine.
Selle meetodi iseloomulikud jooned on ka
väga lühikesed arendustsüklid (päevad või nädalad),
automatiseeritud testide kirjutamine enne koodi kirjutamist,
paarisprogrammeerimine ja
iga iteratsiooni lõpus peab kood läbima kõik testid