Tarkvara arendusprotsess

Allikas: Teadmusbaas

Mooduli õpiväljundid:

  • mõistab tarkvara arendusprotsessi olemust ja mudeleid, vt inglisekeelne tarkvara arendusprotsess;
  • (läbiv kompetentsus) teab tarkvara arendusprotsessi põhietappe ja arendusmetoodikaid;
  • (läbiv kompetentsus) tunneb CASE vahendeid ja nende kasutamisvõimalusi;
  • (läbiv kompetentsus) teab projektijuhtimise aluseid ja mõistab tarkvara projekti eripärasid;
  • (läbiv kompetentsus) mõistab versioonihaldussüsteemi olemust ja olulisust;
  • (läbiv kompetentsus) tunneb erinevate rakenduste arhitektuuride ja tüüpide eripärasid;
  • (lõimitud, võtmepädevus, läbiv kompetentsus) kasutab tarkvara arendusprotsessis korrektset õppekeelset terminoloogiat;
  • (lõimitud, võtmepädevus, läbiv kompetentsus) kasutab tarkvara arendusprotsessis korrektset ingliskeelset terminoloogiat;
  • (võtmepädevus) sotsiaalne ja kodanikupädevus
  • (võtmepädevus) kultuuriteadlikkus ja kultuuriline väljendusoskus;

Tarkvaraarendus

Tarkvaraarendus (inglise software development) ja süsteemiarendus on tarkvara loomeprotsess. Üldjuhul peetakse tarkvaraarenduse all silmas tarkvara loomist inimgrupi poolt, kokkulepitud reeglite alusel. Informaalset tarkvara loomist üksikisiku poolt nimetatakse sageli lihtsalt programmeerimiseks (kuigi ka see võib sisaldada kõiki protsessi samme). Tarkvaraarenduse protsessi täpne kuju sõltub peamiselt arendatava tarkvara otstarbest ning loojate eelistustest ning kogemustest. ⇒ Arendusega seotud IEEE standardid

Klassikaliselt sisaldab tarkvaraarendus järgmisi tegevusi:

  • Süsteemianalüüs (System analysis) (sageli ka nõuete analüüs või spetsifitseerimine)

    – luuakse või määratakse kindlaks see, mida loodav tarkvara tegema peab, sageli ka lahenduse üldkuju. Sageli kasutatakse selleks prototüüpimist, mille käigus luuakse tulevase lahenduse osaline mudel, erinevate lahendusvariantide katsetamise või probleemi parema mõistmise eesmärgil.
  • Disain (Design)– luuakse tarkvara sisemine arhitektuur ehk loogiline ülesehitus ning erinevate omaduste jaotus programmi osade vahel. Sageli luuakse disain väga üksikasjalikult – pseudokoodi tasemel.
  • Programmeerimine (Programming) – disainitud lahendus teostatakse programmeerimiskeeles, vajadusel kujundatakse tarkvara kasutajaliides. Sageli on disaini ja programmeerimise vahelise piiri tõmbamine raske. Mõned allikad peavad täpseimaks disainiks testitud programmi lähtekoodi.
  • Testimine(Testing) – kontrollitakse lahenduse töökindlust, jõudlust ja eesmärgipärasust.
  • Silumine (smoothing) - kompileerimisvigade, jooksutamise aegsete, ja loogika ning struktuursete vigade eemaldamine.
  • Juurutamine (Deploying) – olenevalt loodava tarkvara tüübist võib see tähendada nii tarkvara paigaldamist konkreetsesse keskkonda, kui ka lihtsalt müüki paiskamist. Sageli hõlmab juurutamine ka kasutajate koolitamist tarkvaraga töötamiseks.
  • Hooldus (Service) – vigade parandamine, täiendavate omaduste lisamine, kohandamine muutuva keskkonnaga, klienditugi.

Nende tegevuste tegemise ulatus, järjekord ja täpne sisu olenevad suuresti arendaja poolt kasutatavast tarkvaraprotsessist. Näiteks viiakse nn. koskmudeli kohaselt eelnimetatud sammud läbi üksteise järel. Iteratiivse mudeli kohaselt seevastu koosneb kogu protsess mitmest järjestikusest tsüklist (iteratsioonist), mis kõik sisaldavad analüüsi, disaini, programmeerimist ja testimist kuid erinevates tsüklites on rõhk erinevatel sammudel. Tarkvara protsessimudelid arenevad pidevalt edasi.

Metoodika

Metoodika (inglise keeles methodology) on korrastatud lähenemine suuremale tegevusele. On olemas üldised metoodikad tegevuste läbiviimiseks, näiteks õpetamise metoodika, tarkvaraarenduse metoodika, läbirääkimiste metoodika, turu-uuringute metoodika. Metoodika jaotab protsessi väikemateks osadeks, püstitab osadele eesmärgid ning võib näidata ära meetodid nende eesmärkide saavutamiseks. Metoodika on õpetus meetoditest, õpetus metoodikatest on aga metodoloogia. Protsessi läbiviimist metoodika põhjal nimetatakse ka metoodiliseks lähenemiseks protsessile.


Tarkvara protsess

Kogu tarkvaratehnika koosneb kolmest kihist – protsess, meetodid ja vahendid ning eesmärgiks on kvaliteet. Alumine on protsessi kiht, mis peab tagama ratsionaalse ja tähtaega mahtuva tarkvaraarenduse. Protsess määrab raamid protsessi võtmealadele. Määratakse tavaline protsessi raamistik läbi väheste tegevuste, mis peaksid olema rakendatavad kõigile tarkvaraprojektidele sõltumata nende suurusest ja iseloomust. Raamistiku jaoks määratakse tegevuste hulk (tarkvaratehnika tööd), projekti verstapostid, töö tulemid ja kvaliteedi kindlustamise põhimõtted. Et tegemist on lihtsalt raami/ loeteluga, saab seda kohandada vastavalt loodava tarkvara iseloomule ja projektimeeskonna vajadustele. Lisaks on määratud nn vihmavarjutegevused (umbrella activities), mis on kogu protsessimudeli ümber, sõltumatud konkreetsest raamistikust ja kestavad läbi kogu protsessi. Need on nt projekti järgimine ja juhtimine, kvaliteedi kindlustamine, konfiguratsiooni haldamine, dokumentide ettevalmistamine ja tegemine, korduvkasutuse haldamine, riskide haldamine, jne.

Üldine vaade tarkvaratehnikale jagab tegevused järgmisteks etappideks:

  1. kirjelduse faas – tegeldakse probleemiga “mida” (peamiselt nõudmiste analüüs)
  2. arendamise faas – tegeldakse probleemiga “kuidas” (tarkvara kavandamine, realiseerimine ja testimine)
  3. toetuse faas - tegeldakse probleemiga “muudatused” (hoolduse etapp)

Tarkvaraarendamine on omakorda tsükkel, milles lahendatakse probleemi ja kus võib eristada kindlaid staadiume. Neid staadiume eristatakse erinevalt. Üks võimalus oleks selleks:

  • olukorra fikseerimine – kuidas on praegu asjade seis
  • probleemi kirjeldamine – mida hakatakse lahendama?
  • tehniline arendus – probleem lahendatakse mingit tehnoloogiat kasutades
  • lahenduse integreerimine – saadakse tulemused (dokumendid, andmed, uus toode jne)

Need on tegelikult laiemad, kui puhtalt tarkvaraarendusega seotud staadiumid. Ja need staadiumid eksisteerivad tarkvaraarendamises nii makro- kui mikrotasandil. St nii siis, kui vaatame kogu suurt süsteemi korraga, kui siis kui läheme detailsemaks kuni pisikeste komponentideni välja.

Tarkvaraprotsess

Tarkvara protsess: tegevused ja nendega seotud tulemid, mille läbi toodetakse tarkvaraprodukt. Tegevused on enamasti:

  • Tarkvara spetsifitseerimine (tulemiks on spetsifikatsioon)
  • Tarkvara arendamine (tulemiks on tarkvara, mis vastab spetsifikatsioonile)
  • Tarkvara valideerimine (tulemiks on teadmine, et tarkvara vastab sellele, mida klient tahab)
  • Tarkvara muutmine (tulemiks uutele või muutunud nõudmistele vastav tarkvara)

Erinevad protsessid organiseerivad ja järjestavad need tegevused erineval viisil ning kirjeldavad neid erineva detailsusega. Sama tarkvara saab toota erinevatest protsessidest lähtudes. Erinevad organisatsioonid kasutavad erinevaid protsesse. Mõni protsess sobib paremini ühe ja mõni teiserakenduse tootmiseks.

Protsessi kvaliteedi hindamise metoodikad

Süsteemi nõuete dokumenteerimisest

SRS näide

SDD näide

Tarkvara testidokument STD

Tarkvara projekti halduskava SPMP

Tarkvara arenduse metoodikad ja raamistikud (inglisekeelne Wikipedia): Cleanroom TSP PSP RAD DSDM MSF Scrum Kanban UP XP TDD ATDD BDD FDD DDD MDD

Allikad ja viited:
  1. Targo Tennisberg blogi
  2. Liideste (API) haldus
  3. Arendussõnastik
  4. ⇒ IEEE standardite tarkvara arenduse dokumentidele
  5. IEEE tarkvara dokumentatsiooni standardid inglisekeelses Wikipedias
  6. Kasutusloo (Use Case) näide
  7. UML


Tagasi moodulite loetelu lehele