Tarkvaraarenduse elutsükkel on protsess, mille käigus tarkvara arendatakse, testitakse, juurutatakse ja hooldatakse.
See hõlmab erinevaid etappe, nagu nõuete analüüs, disain, arendus, testimine ja hooldus. Eesmärk on tagada tarkvara kvaliteet ja vastavus kasutajate vajadustele.
Tarkvaratoode on tarkvara, mis on loodud konkreetse eesmärgi saavutamiseks ja mida saab kasutada erinevates keskkondades. See võib olla rakendus, süsteem või teenus, mis pakub kasutajatele teatud funktsionaalsust. Tarkvaratooded võivad olla kommertstooted, avatud lähtekoodiga projektid, kohandatud lahendused või ükskõik mis muu rakendus mis kasutaja jaoks midagi ära teeb.
Tarkvaraarenduse elutsükli eesmärk on tagada, et tarkvara arendamine toimub struktureeritud ja organiseeritud viisil, mis võimaldab saavutada kõrge kvaliteediga tarkvara, mis vastab kasutajate vajadustele. Elutsükli järgimine aitab vältida vigu, parandada koostööd meeskonnas ja tagada, et tarkvara on usaldusväärne, turvaline ja hõlpsasti hooldatav.
Tüüpiline tarkvaraarenduse elutsükkel koosneb mitmest järjestikusest etapist, sealhulgas:
Olenevalt mudelist võivad need etapid olla järjestatud erinevalt, kuid üldiselt järgivad nad sarnast struktuuri, mis võimaldab tarkvara arendamist ja hooldust efektiivselt hallata.
Selles etapis kogutakse ja analüüsitakse tarkvara nõuded, mis võivad hõlmata funktsionaalseid (eht mida
päriselt
toode tegema peaks) ja mittefunktsionaalseid (ehk kuidas välja näeb, palju korraga kasutada saab,
millisel
riistvara jooksma peab)
nõudeid. Nõuete analüüs aitab mõista, mida tarkvara peab tegema ja millised on kasutajate ootused.
Näiteks oleks kalorikalkulaatoril sellised nõuded:
| Funktsionaalsed nõuded | Mittekfunktsionaalsed nõuded |
|---|---|
| Programm lubab kasutajal arvutada oma päevast tarbimist. | Kasutajal on lihtne ja mugav programmiaknas navigeerida. |
| Programm laseb kasutajal valida olemasolevaid tooteid. | Programm toetab vaegnägijaile programmi kasutust. |
| Kasutaja saab arvutada kaloreid kodus tehtud söögi kohta. | Programm ei hõiva ebaloogilist palju kasutaja süsteemiressursse. |
| Programm saadab telefonile märguandeid hoiatuste ja eesmärkide saavutatuse kohta. | Programm ei salvesta kasutaja isiklikku infot serveris. |
Siin määratakse ära süsteemi sisemine arhitektuur, osised, liidesed ja muud vajalikud omadused.
Selle töö tulemusena tekib arendatavast tarkvaraprojektist kavand. Selles etapis analüüsitakse
eelnevas etapis paikapandud nõudeid ja kirjeldatakse selle abil struktuur. Projekti kavand ongi
aluseks kuidas järgmises etapis projekti teostama hakatakse.
Mõnikord aga jaotatakse kavandamisetapp kaheks, kus üleüldine struktuur selgitatakse välja detailidest
eraldi.
Neid jaotatakse siis omakorda eraldi kaheks alametapiks:
| Arhitektuuri kavandamisetapp | Detailide kavandamisetapp |
|---|---|
| Arhitektuuri kavandamises keskendutakse siis üleüldisele struktuurile: määratakse ära erinevad kõrgema taseme komponendid, seosed teiste tarkvara osade vahel, jms. | Detailses kavandamisetapis aga keskendutakse juba individuaalsetele komponentidele, funktsioonidele, objektidele, algoritmidele jms. |
Selles etapis, põhinedes eelnevalt paika pandud kavandile, algabki arendustöö mille käigus reaalselt nüüd tarkvaratoode valmis saadaksegi. Kuna eelnevalt kirjeldati ka süsteemi pisidetailid, saab siin rakendada kogu arendusmeeskonda samaaegselt, kus iga liige või iga alamgrupp arendab ühte kirjeldatud detaili. Kogu projekt on eri osade kaudu paralleelselt arenduses. Selle etapi lõpupoole toimub ka testimine, otsitakse vigu, nii koodis kui ka kasutaja vaatepunktist, ja tagatakse, et valmistatav tarkvaratoode on üleüldiselt veavaba ning omab kõrget käitluskvaliteeti.
Selles etapis kontrollitakse tarkvara kvaliteeti, veendudes, et see vastab nõuetele ja töötab ootuspäraselt. Testimine võib hõlmata erinevaid meetodeid, nagu üksustestid, integratsioonitestid, süsteemitestid ja kasutajatestid. Eesmärk on tuvastada ja parandada vigu ning tagada, et tarkvara on usaldusväärne ja kasutajasõbralik.
Pärast tarkvara juurutamist ja kasutuselevõttu algab hooldusfaas, kus tarkvara jälgitakse, parandatakse vigu, lisatakse uusi funktsioone ja tagatakse, et see jätkuvalt vastab kasutajate vajadustele. Hooldus võib hõlmata ka tarkvara optimeerimist ja kohandamist muutuvate tehnoloogiate ja turutingimustega.