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 &lt;nõue&gt;", individuaalne tegevus, mis on osa süsteemist, mille juurde see kuulub. Mittefunktsionaalset nõuet esitatakse kujul "süsteem hakkab olema &lt;nõue&gt;" 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:
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.
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: 
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:
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. Andmesisestuse kinnitamised
 2. Loogilised ja matemaatilised operatsioonid
 3. Andmevormindamine
 4. Sisemised andmeliikumised
 5. Kasutajatele lisaväärtuse kohaletoimetamine andmekonfiguratsiooni kaudu
 1. Kasutajaliidesed
 2. Abimeetodid
 3. Sisendmeetodid
 4. Väljundmeetodid
 1. Platvormid
 2. Andmebaasi tehnoloogia
 3. Töötlusüksuste protsessid
 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.