Tarkvara kvaliteedijuhtimine

**Tarkvara kvaliteedijuhtimine** (inglise keeles [//en.wikipedia.org/wiki/Software_quality_management *software quality management*]) hõlmab tegevusi ja protsesse, mis võimaldavad tagada tarkvara kvaliteeti ning vähendada vigade arvu kõigis tarkvaraarenduse etappides. Tegevusteks võivad näiteks olla protsessi määratlemine ja rakendamine, auditeerimine ja koolitamine ning protsessideks projektijuhtimine, testimine ja tarkvaraarenduse metoodika.

Tarkvara kvaliteedi tagamiseks on mitmeid meetodeid ning kasutada võib ühte standardit või kombineerida erinevate standardite parimaid külgi. Enamasti jälgitakse ISO 9000 standardi või [//en.wikipedia.org/wiki/Capability_Maturity_Model_Integration CMMI mudeli] vastavuse tagamist. Olenemata kasutatud meetodist on eesmärgiks kõigi tarkvaraarendusprotsesside pidev täiustamine, et saada tarkvara, mis vastab esialgsetele spetsifikatsioonidele ja nõuetele.

## Levinumad standardid ja mudelid
* [//en.wikipedia.org/wiki/Lean_software_development Lean software development]
* [//en.wikipedia.org/wiki/Six_Sigma Six Sigma]
* [//en.wikipedia.org/wiki/Capability_Maturity_Model_Integration Capability Maturity Model Integration (CMMI)]
* ISO 9000
* [//en.wikipedia.org/wiki/ISO/IEC_15504 ISO/IEC 15504 v.2.5 (SPICE)]

## Eesmärgid
* Tagada lõpptoote nõutav kvaliteedi tase
* Juurutada kogu ettevõtet hõlmavat "kvaliteetset kultuuri", kus kõik vastutavad kvaliteedi eest
* Vähendada õppimiskõverat ja aidata järjepidevust olukordades, kui meeskonna liikmete positsioonid muudavad
* Dokumenteerida protsessi käigus tekkinud vead ning parandada protsessi, et edaspidi vältida vigade tekkimist

## Tarkvara kvalideedijuhtimise alamosad
Tarkvara kvaliteedijuhtimise võib jagada kolmeks alamprotsessiks. Sellist jagunemist toetab oma töödes näiteks arvutiteadlane Ian Sommerville.

### Tarkvara kvaliteedikava
Tarkvara kvaliteedikava (inglise keeles *software quality plan*) on iga projekti jaoks koostatud kava, mis defineerib standardid, eeskirjad ja tööriistad, mida kasutatakse kogu arendustsükli vältel. Lisaks sisaldab kvaliteedikava saavutatavaid kvaliteedieesmärke, eeldatavaid riske ja riskijuhtimist.

### Tarkvara kvaliteeditagamine
Tarkvara kvaliteeditagamine (inglise keeles *software quality assurance*) on kvaliteedijuhtimise osa, mis loob organisatsioonisisesed protsessid, standardid ja regulatsioonid, mida jägitakse tarkvaraarenduse elutsükli vältel.

#### Tarkvara kvaliteeditagamine ''vs.'' tarkvara kvaliteedikontroll
Tarkvara kvaliteeditagamine ja tarkvara kvaliteedikontroll on tihedalt seotud tegevused, kuid tihti ei eristata ühte teisest. Kvaliteedi tagamine on ennetav tegevus, kuid kvaliteedikontroll keskendub parandusprotsessidele. Kvaliteeditagamise kõige olulisemaks aluseks on protsesside ja protseduuride rakendamine, mis on vajalikud tarkvara arendamiseks ja kliendi vajaduste kontrollimiseks. Kvaliteedikontroll teisalt tegeleb tegelike tegevustega, mis tagavad, et toodet arendatakse vastavalt määratletud kvaliteedistandardile.

#### Tarkvara kvaliteeditagamine ''vs.'' tarkvara testimine
Lisaks segadusele kvaliteedikontrolli ja kvaliteeditagamise protsessidega ei eristata pahatihti ka testimist ja kvaliteeditagamist ning tarkvara testijat nimetatakse tarkvara kvaliteeditagamise spetsialistiks. Kuigi mõlema tegevuse eesmärk on sama, luua tippkvaliteediga tarkvara, siis testija ja tarkvara kvaliteeditagamise spetsialisti tööülesanded on erinevad.

Kvaliteeditagamise spetsialist töötab välja vajalikke protsesse, jälgib nende rakendamist ja täitmist tarkvaraarenduse elutsükli vältel. Kvaliteeditagamine on ennetav tegevus, mis keskendub järgmisele: defektide vältimine, protsesside loomine ja protsesside täitmise jälgimine. Tarkvara testija ülesanne on aga tuvastada tarkvara vigu ja defekte. Tarkvara testimine on osa kvaliteedikontrolli protsessist ja keskendub ainult tootega seotud tegevustele. Tarkvara testimine on kvaliteedikontrolli protsessi osa.

### Tarkvara kvaliteedikontroll
Tarkvara kvaliteedikontroll (inglise keeles *software quality control*) rakendab ja jälgib defineeritud standardite ja protsesside täitmist kõigis tarkvaraarenduse elutsüklites.

## Viited