1.2.1 Elutsükli faasid

iDevice ikoon 1.2.1 Elutsükli faasid
Süsteemiarenduse elutsükkel (Systems Development Life Cycle) (ka tarkvaraarenduse elutsükkel) on protsess, mille käigus luuakse uus või muudetakse vana tarkvarasüsteemi, samuti mudelid ja meetodid, mida inimesed kasutavad süsteemide arendamiseks. Tarkvara kui toode on süsteemiarenduse väljund. Süsteemiarenduse protsess koosneb nii toote projekteerimisest (disainist) kui toote valmistamisest. Süsteemiarenduse eesmärk on valmistada kõrgekvaliteetne toode ehk tarkvara, mis vastab kasutajate vajadustele ja ootustele, saab valmis kokkulepitud tähtajaks ja maksumuse piires, töötab efektiivselt ja tõhusalt praeguses ja planeeritavas IT infrastruktuuris ning ei ole kulukas hooldada ega laiendada.

Käsitledes tarkvara justkui iga teist toodet, võib tarkvara elutsükli (arendusprotsessi) jagada faasidesse. Faaside nimed ja täpsem jaotus varieerub sõltuvalt autorist. Kuid see ei tähenda, et oluliste arendustegevuste loetelu kuidagi erineks. Tüüpilisteks elutsükli osadeks võib lugeda: analüüsi (analysis), projekteerimise / kavandamise (design), teostuse (implementation) ja hoolduse (maintenance).

Järgnevalt sellest, milliseid tegevusi nimetatud arendusfaasid sisaldavad.

Analüüsi etapil ja kogu arenduse käigus on tarkvarale esitatavate nõuete väljaselgitamine üks olulisemaid. Ilma selleta ei ole võimalik järgmisi samme astuda. Oma olulisuse tõttu käsitletakse tööd nõuetega tihti ka eraldi faasina. Nõuded annavad ettekujutuse sellest, mida kasutaja tarkvara abil teha tahab, milliseid eesmärke tal vaja saavutada. Teisisõnu on tegemist tarkvara funktsionaalsuse (funktsionaalsed nõuded) väljaselgitamisega. Lisaks on olulised ka mittefunktsionaalsed nõuded. Need on tihti piirangud või lisatingimused, millega süsteemi töötamisel arvestada tuleb.

Näide funktsionaalsete nõuete kohta: tavapärases õpiinfosüsteemis (ÕIS) tahab õpilane vaadata oma hindeid. Õpetajal on vaja näha, lisada, muuta ja kustutada kõigi õpetatavate õpilaste hindeid (muidugi oma aines). See ei ole ammendav loetelu ÕIS-i nõuetest. Küll aga tuleb siit välja veel oluline fakt, et tavaliselt on nõuded seotud rollidega - erinevatel süsteemi kasutajatel on erinevad soovid ja erinevad õigused. Mittefunktsionaalsed nõuded võivad näiteks sisaldada tingimust, et süsteem peab töötama pidevalt ning maksimaalne lubatud katkestuse pikkus on pool tundi.

Projekteerimine (kavandamine) on vastavalt IEEE definitsioonile "süsteemi või komponentide arhitektuuri, osade, liideste ja teiste omaduste määramine" Inglisekeelne sõna design tähendab nii tegevust kui ka selle tegevuse produkti, eesti keeles võib tulemust nimetada kavand või projekt. Kavandamine on arendusprotsessi osa, kus analüüsitakse nõudeid, et luua tarkvara sisemine struktuur. Loodud kirjeldus on omakorda realisatsiooni aluseks. Tarkvara projekt peab kirjeldama süsteemi arhitektuuri, st kuidas süsteem on jaotatud osadeks (komponentideks) ning millised on nende liidesed (seostamisvõimalused teiste komponentidega). Komponendid peavad olema kirjeldatud sellise täpsusega, mis lubaks hakata neid realiseerima.

Klassikalises tarkvara elutsüklis vastavalt standardile ISO/IEC 12207 Software life cycle processes, on kavandamise osa jaotatud kahte etappi:

  • arhitektuuri kavandamine, millega määratakse kindlaks nö kõrgema taseme komponendid, seosed suuremate ja üldisemate tarkvara osade vahel;
  • detailsem kavandamine, millega täpsustatakse komponentide ülesehitus (protseduurid, objektid, algoritmid jms)

Realisatsiooni (teostuse) faasis programmeeritakse tarkvara valmis lähtudes kavandamisetapil loodud tarkvaraprojektist. Komponentideks jagamine loob eeldused tööjaotuseks, st vähegi suurema süsteemi kodeerimiseks rakendatakse tööle programmeerijate meeskond. Realisatsiooni faasis toimub ka programmeeritud osade testimine ehk vigade otsimine. Esialgu komponentide kaupa loogika jms vigade leidmiseks.

Tegelikkuses ei toimu arendus nii sirgjooneliselt, et enne tehakse põhjalik projekt kogu süsteemi tarbeks ning seejärel asutakse programmeerima. Pigem põimuvad need faasid ning peale projekti tekkimist süsteemi osa kohta asutakse seda osa ka teostama. Samal ajal jätkub aga ülejäänud süsteemi projekteerimine.

Realisatsiooni faasi viimaseks osaks on süsteemi valideerimine. See on samuti sisuliselt testimine, kuid põhieesmärgiks on teada saada, kas tekkinud süsteem vastab kasutaja nõuetele ehk lihtsamalt öeldes - kas süsteem teeb seda, mida kasutaja tahab.

Tarkvara hooldamiseks nimetatakse tarkvara muutmist peale kliendile üleandmist, et parandada vigu, tõsta jõudlust või parandada muid omadusi. Hoolduse eesmärkideks on süsteemi kohandamine vastavalt muutunud keskkonnale ning muutunud kasutaja soovidele ja tarkvarasüsteemi töös hoidmine nii kaua kui võimalik. Hooldamise juures on oluliseks aspektiks teiste programmeerijate poolt kirjutatud tarkvaraga töötamine (parandamine, täiendamine, muutmine) ja sellest tulenevad omakorda seosed eelmistes faasides tehtud töö kvaliteediga. Hästi kavandatud, kodeeritud ja dokumenteeritud tarkvara on kergem, kiirem ja seega ka odavam hooldada.

Tarkvara tootmine lõppeb kliendile tarkvara üleandmisega. Valminud tarkvara peab olema selline, mida klient tahtis. Kuid tarkvara peab edasi arenema. Töötamise käigus leitakse anomaaliaid, muutub töökeskkond, tekivad uued nõuded. Muudatuste vajadused logitakse, määratakse muudatuste mõju, kood muudetakse, tehakse testid, antakse välja tarkvara uus versioon ja vajadusel korraldatakse ka koolitus.

Võrdluseks Ian Sommerville oma raamatus "Software Engineering" toob välja järgmised tegevused tarkvaraprotsessis. Järele mõeldes kattub nende sisu eespool toodud faaside kirjeldustega.

1. Tarkvara kirjeldamine, mille käigus kliendid ja tarkvarainsenerid määratlevad koostöös loodava tarkvara funktsionaalsuse ja piirangud tema töötamisel.

2. Tarkvara arendamine, mille käigus tarkvara projekteeritakse ja programmeeritakse

3. Tarkvara valideerimine, mille käigus kontrollitakse tarkvara veendumaks, et see on selline, nagu klient tahtis.

4. Tarkvara edasiarendus, mille käigus tarkvara muudetakse, et see vastaks jätkuvalt kliendi muutuvatele nõuetele ja turu ning äri muutuvatele tingimustele.

Süsteemiarenduse elutsüklisse peavad kuuluma kõik eelpool kirjeldatud tegevused, kuid need faasid ei pea tingimata olema kirjeldatud viisil lineaarselt ritta seatud.