Mittefunktsionaalsed nõuded

Mittefunktsionaalsed nõuded täpsustavad tarkvara ja nõuete projekteerimises kriteeriume, mille alusel hinnatakse süsteemi töökäiku, mitte kindlaid omadusi. Nende vastandid on funktsionaalsed nõuded, mis defineerivad kindlad funktsioonid või käitumised. Plaan mittefunktsionaalseid nõudeid käiku viia asub süsteemiarhitektuuris, mitte süsteemidisainis, nagu see on funktsionaalsete nõuete korral. See on nii, kuna need on tavaliselt arhitektuuriliselt olulised nõuded.

Üldjoontes defineerivad funktsionaalsed nõuded, mida süsteem peab tegema, ning mittefunktsionaalsed nõuded defineerivad, milline süsteem peab olema. Funktsionaalsed nõuded on üldiselt vormis "süsteem teeb <nõue>", individuaalne tegevus, mis on osa süsteemist, mille juurde see kuulub. Mittefunktsionaalset nõuet esitatakse kujul "süsteem hakkab olema <nõue>" ehk üldine süsteemi omadus või mingi eriline aspekt ja mitte täpne funktsioon. Süsteemi üldised omadused tavaliselt näitavad, kas projektiarendus on õnnestunud või läbikukkunud.

Mittefunktsionaalseid nõudeid kutsutakse süsteemi "kvaliteedi atribuutideks" või omadusteks, kvaliteedi eesmärkideks, kitsendusteks, mittekäitumispärasteks omadusteks. Mittefunktsionaalsete nõuete alla kuuluvaid omadusi on võimalik jaotada kaheks põhikategooriaks:
 Täitmisomadused, nagu turvalisus ja kasutatavus, mis on jälgitavad süsteemi töö ajal.
 Arengulised omadused, nagu testitavus, hooldatavus, pikendatavus ja suurendatavus, mis on tarkvarasüsteemi staatilises struktuuris.

Süsteemi taseme kvaliteedinõuded 
Süsteemi taseme kvaliteedinõuded seostuvad turvalisuse, hallatavuse, laiendatavuse, stabiilsuse ja porditavusega – need ei täida ärilist eesmärki. Nendele kvaliteedinõuetele mittevastamine võib mõjutada kasutajaid kaudselt läbi teiste, seostatud kvaliteedinõuete mittevastamise kaudu.
 Turvalisus – süsteemi ei saa sisse ega kahjustada
 Hallatavus – süsteem on organiseeritud ja kontrollitav
 Hooldatavus – süsteem on kergesti hooldatav
 Laiendatavus – süsteemi on võimalik laiendada
 Stabiilsus – süsteemivigadega toimetuleku võime
 Porditavus – süsteemi komponentide liigutamise võime

Dokumenteerimine  

Projekti elutsüklis (kutsutakse ka projekti töö elutsükliks ehk PDLC-ks) on protsesse, mida tuleks kõigile kvaliteediomadustele vastavuse tagamiseks järgida. Kuigi need protsessid võivad eraldiseisvate organisatsioonide või äriüksuste puhul erineda, peaks põhilised dokumendid olema sarnased.

Mittefunktsionaalseid nõudeid saab dokumenteerida kahes kohas: 
 Kindla kasutusjuhtumi spetsiifilisi, mittefunktsionaalseid nõudeid saab dokumenteerida osana "Kasutusjuhtumi kirjelduse" lõigust "Erinõuete" all. Need nõuded võivad kehtida nii kogu kasutusjuhtumile kui selle kindlatele sammudele. 
 Kogu süsteemile rakenduvaid mittefunktsionaalseid nõudeid võib dokumenteerida lisatud spetsifikatsioonide dokumendis ja nõudeid saab formuleerida küsimuste ja vastustena.

Näited 
Süsteemi ülesandeks võib olla kuvada andmebaasist kasutajale andmete arvu. See on funktsionaalne nõue. Mittefunktsionaalne nõue on selle arvu uudsus. Kui see arv peab olema uuendatav reaalajas, siis süsteemi loojad peavad kindlaks tegema, et süsteem võib uuendada andmete arvu kindla aja tagant, mis on kooskõlas andmete arvu muutumisega. Sobiv võrgukiirus võib olla süsteemi mittefunktsionaalne nõue.

Loodava süsteemi üldiseks reaktsiooniajaks (töövõime nõue) määratakse üks sekund. Võib aga olla kasutusjuhtumeid, kus on teada, et peab kasutama välist teenusepakkujat. Siis võib reaktsiooniaja piirangut lõdvendada viie sekundi peale. Kogu süsteemile üldiselt rakenduvat nõuet dokumenteeritakse osana lisatud spetsifikatsioonide dokumendist. Viie sekundi nõuet aga kirjeldatakse kasutusjuhtumi all kui "erinõuet". Lisatud spetsifikatsioonid ja funktsionaalsed spetsifikatsioonid (kasutusjuhtumid ja valdkonna mudelid) moodustavad koos süsteemi nõuete spetsifikatsioonide dokumendi.

Veel näiteid mittefunktsionaalsetest nõuetest:
 Ligipääsetavus
 Audit ja kontroll
 Saadavus
 Varund
 Võimsus, praegune ja prognoositav
 Sertifitseerimine
 Vastavus
 Konfiguratsiooni haldamine
 Sõltuvus teistest osapooltest
 Dokumentatsioon
 Katastroofiabi
 Kasutegur (mingi koguse jaoks vajalikud ressursid)
 Tõhusus (töö ja jõudluse suhe)
 Emotsionaalsed tegurid
 Keskkonnakaitse
 Lähtekoodi hoiustus
 Ärakasutatavus
 Laienduste võimalus (funktsioonide lisamine jms)
 Nurjumiste haldus
 Vea tolerants (nt süsteemi töötamise monitooring, mõõtmine ja haldus)
 Õigused ja litsentsid
 Koostalitlusvõime
 Hooldatavus
 Võrgu topoloogia
 Avatud lähtekoodiga
 Töökindlus
 Jõudlus
 Platvormide ühilduvus
 Hind
 Privaatsus
 Kaasaskantavus
 Kvaliteet 
 Taastatavus (nt keskmine aeg taastamiseni)
 Usaldusväärsus (nt keskmine aeg vigade vahel)
 Aruandlus
 Vastupidavus
 Vahendite piiratus (protsessori kiirus, mälu, kettaruum, võrgu ribalaius jne)
 Reaktsiooniaeg
 Taaskasutatavus
 Stabiilsus
 Ohutus või FoS
 Mastaapsus (horisontaalne, vertikaalne)
 Turvalisus
 Tarkvara, tööriistad, standardid jms
 Stabiilsus
 Toetatavus
 Testitavus
 Läbipaistvus
 Kasutatavus sihtgrupis

Raamistik 
Mittefunktsionaalsed nõuded (MFN) on sihimudelil põhinev raamistik. Analüüsi alguses sätestatakse tarkvaralised sihid, millega kõik osanikud nõustuvad. Tarkvaralised sihid on raskesti väljendatavad eesmärgid, mis on tavaliselt ülesüsteemilised omadused, näiteks süsteemi kasutatavus, turvalisus, jõudlus ja paindlikkus. Need eesmärgid jagatakse väiksemateks üksusteks ja korrastatakse ning moodustatakse puustruktuur eesmärkidest ning tarkvaralistest sihtidest. Tõenäoliselt leitakse saadud puustruktuuridest üksteist häirivaid tarkvaralisi sihte. Näiteks turvalisuse eesmärgid häirivad tihti kasutatavust. Need puud moodustavad tarkvaraliste sihtide graafi. Viimaks valitakse mingi kindel leht graafist, mis rahuldaks kõiki juuresolevaid tarkvaralisi sihte.

Mõõtmine 
Kui funktsioonipunktid (FP) mõõdavad funktsionaalseid nõudeid, arvestades andmevoo läbivust läbi tarkvara rakenduse, siis IFPUG-i (International Function Point User Group) SNAP (tarkvara mittefunktsionaalse hinnangu protsess) mõõdab mittefunktsionaalseid nõudeid. SNAP-i mudel koosneb neljast kategooriast, mis omakorda jaguvad 14 alamkategooriaks, et mõõta mittefunktsionaalseid nõudeid. Mittefunktsionaalsed nõuded jagatakse alamkategooriatesse. Iga alamkategooria suurus tehakse kindlaks ning nõude suuruseks saab kõikide alamkategooriate suuruste summa.

SNAP-i mõõteprotsess sarnaneb funktsionaalpunkti mõõteprotsessiga. Rakenduse sees seostatakse mittefunktsionaalseid nõudeid kategooriate ning alamkategooriatega. Standardiseeritud põhikriteeriumite komplekti kasutades mõõdetakse iga alamkategooria vastavalt sellele tüübile ning raskusele (sellise nõude suurus on võrdne selle alamkategooriate summaga). Need suurused arvutatakse kokku, et anda tarkvara rakenduse mittefunktsionaalsuse mõõde.

Mudeli beetatestimine 2012. aasta sügisel näitas, et SNAP-i suurusel on tugev korrelatsioon tööjõuvajadusega, et arendada mittefunktsionaalne osa tarkvara rakendusest.

SNAP-i kategooriad 

SNAP kasutab nelja kategooriat, mis omakorda jaotuvad alamkategooriateks. Igat alamkategooriat hinnatakse kasutades meetodiga, mis on kirjas SNAP-i käsiraamatus.

 1. Andmetoimingud
 1. Andmesisestuse kinnitamised
 2. Loogilised ja matemaatilised operatsioonid
 3. Andmevormindamine
 4. Sisemised andmeliikumised
 5. Kasutajatele lisaväärtuse kohaletoimetamine andmekonfiguratsiooni kaudu

2. Liidese disain
 1. Kasutajaliidesed
 2. Abimeetodid
 3. Sisendmeetodid
 4. Väljundmeetodid

3. Tehniline keskkond
 1. Platvormid
 2. Andmebaasi tehnoloogia
 3. Töötlusüksuste protsessid

4. Arhitektuur
 1. Komponendipõhine tarkvara
 2. Mitmed sisend- ja väljundliidesed

SNAP-i plussid 
Tänu mittefunktsionaalsete nõuete mõõtmisele on lihtsam hinnata tarkvara arendavat tööjõudu.

See täiustatud tööjõu hinnang viib parema planeeringu, ressursijaotuse ning vähemate riskideni.

Projektimeeskondade produktiivsust saab paremini hinnata, kuna mõõdetakse rohkemaid töö väljundeid.

Kasutades mõlemat, funktsionaalset ja mittefunktsionaalset tööd, saab tellijale paremini oma toodete väärtust demonstreerida.

Vaata ka 
 Funktsionaalsed nõuded

Viited 

Tarkvaraarendus