Što je nefunkcionalni zahtjev u softverskom inženjerstvu?
⚡ Pametni sažetak
Nefunkcionalni zahtjevi specificiraju atribute kvalitete kao što su performanse, sigurnost, upotrebljivost, pouzdanost, skalabilnost i prenosivost, definirajući koliko dobro se softverski sustav mora ponašati i pretvarajući nejasna očekivanja u mjerljive, testirane i provedive inženjerske ciljeve tijekom životnog ciklusa isporuke.
Što je nefunkcionalni zahtjev?
A Nefunkcionalni zahtjev (NFR) specificira atribut kvalitete softverskog sustava. NFR-ovi ocjenjuju sustav na temelju responzivnosti, upotrebljivosti, sigurnosti, prenosivosti i drugih atributa kvalitete koji su ključni za uspjeh. Uobičajeni primjer nefunkcionalnog zahtjeva je, "koliko se brzo učitava web stranica?" Neispunjavanje nefunkcionalnih zahtjeva stvara sustave koji korisnike ostavljaju frustriranima.
Nefunkcionalni zahtjevi u softverskom inženjerstvu nameću ograničenja na dizajn sustava u cijelom agilnom zaostatku. Na primjer, stranica bi se trebala učitati za tri sekunde kada broj istovremenih korisnika premaši 10 000. Opisivanje nefunkcionalnih zahtjeva jednako je važno kao i opisivanje funkcionalnih zahtjeva.
Vrste nefunkcionalnih zahtjeva
Glavne kategorije nefunkcionalnih zahtjeva su:
Vrste nefunkcionalnih zahtjeva
- Upotrebljivost
- servisiranja
- upravljivost
- Nadoknadivost
- Sigurnost
- Datum Integrity
- Kapacitet
- Dostupnost
- skalabilnost
- Interoperabilnost
- Pouzdanost
- sposobnost snabdijevanja
- Usklađenost s propisima
- Ograničenja okoline
Primjeri nefunkcionalnih zahtjeva
Evo praktičnih primjera nefunkcionalnih zahtjeva:
- Korisnici moraju promijeniti početnu lozinku nakon prve uspješne prijave, a početna lozinka se nikada ne smije ponovno koristiti.
- Zaposlenicima nije dopušteno ažuriranje vlastitih podataka o plaći, a svaki takav pokušaj mora se prijaviti administratoru sigurnosti.
- Svaki neuspješan pokušaj korisnika pristupa podatku mora se zabilježiti u revizijskom tragu.
- Web stranica će podržavati 20 milijuna istovremenih korisnika bez smanjenja vremena odziva.
- Softver mora biti prenosiv tako da prelazak s jednog operativnog sustava na drugi ne stvara probleme.
- Privatnost informacija, izvoz ograničenih tehnologija i prava intelektualnog vlasništva podložni su reviziji.
Funkcionalni i nefunkcionalni zahtjevi
Glavne razlike između funkcionalnih i nefunkcionalnih zahtjeva su:
| Parametri | Funkcionalni zahtjev | Nefunkcionalni zahtjev |
|---|---|---|
| Što je to? | Glagol | Značajke |
| Zahtjev | To je obavezno | Nije obavezan |
| Tip hvatanja | Hvata se u slučaju upotrebe. | Uhvaćen je kao atribut kvalitete. |
| Krajnji rezultat | Značajka proizvoda | Svojstva proizvoda |
| snimanje | Lako za snimanje | Teško za uhvatiti |
| Cilj | Pomaže vam provjeriti funkcionalnost softvera. | Pomaže vam da provjerite učinkovitost softvera. |
| Područje fokusa | Usredotočite se na zahtjeve korisnika | Koncentrira se na očekivanja korisnika. |
| Dokumentacija | Opišite čemu proizvod služi | Opisuje kako proizvod radi |
| Vrsta testiranja | Funkcionalno ispitivanje kao što su testiranje sustava, integracije, end-to-end, API testiranja itd. | Nefunkcionalna testiranja poput testiranja performansi, stresa, upotrebljivosti, sigurnosti itd. |
| Izvršenje testa | Izvršenje testa provodi se prije nefunkcionalnog testiranja. | Nakon funkcionalnog ispitivanja |
| Informacije o proizvodu | Značajke proizvoda | Svojstva proizvoda |
Prednosti nefunkcionalnih zahtjeva
Glavne prednosti od Nefunkcionalno testiranje je:
- Nefunkcionalni zahtjevi osiguravaju da sustav slijedi zakonska pravila i pravila usklađenosti.
- Oni štite pouzdanost, dostupnost i performanse sustava.
- Pružaju dobro korisničko iskustvo i jednostavnost korištenja.
- Oni oblikuju sigurnosnu politiku softvera.
Nedostaci nefunkcionalnih zahtjeva
Uobičajeni nedostaci nefunkcionalnih zahtjeva su:
- Nefunkcionalni zahtjevi mogu utjecati na nekoliko visokorazinskih softverskih podsustava.
- Zahtijevaju posebnu pažnju tijekom arhitekture i dizajna na visokoj razini, što povećava troškove.
- Implementacija se rijetko preslikava na jedan softverski podsustav.
- Teško ih je modificirati nakon što je faza arhitekture završena.
FURPS+ model za klasifikaciju nefunkcionalnih zahtjeva
FURPS+ je najčešće korištena taksonomija za nefunkcionalne zahtjeve. Izvorno razvijena u Hewlett-Packardu, grupira atribute kvalitete u pet glavnih kategorija plus dodatna ograničenja označena znakom "+". Model pomaže poslovnim analitičarima da izbjegnu propuštanje cijele klase zahtjeva.
- funkcionalnost: Mogućnosti, sigurnost i ponovna upotrebljivost koje nadilaze osnovni popis značajki.
- Upotrebljivost: Ljudski faktori, estetika, dosljednost, dokumentacija i responzivnost korisničkog iskustva.
- Pouzdanost: Raspoloživost, srednje vrijeme između kvarova, mogućnost oporavka, predvidljivost i točnost.
- Performance: Brzina, propusnost, kapacitet, skalabilnost i potrošnja resursa pod opterećenjem.
- Podrživost: Testabilnost, fleksibilnost, instalacija, lokalizacija i održavanje isporučenog sustava.
- Plus (+): Dizajn, implementacija, sučelje i fizička ograničenja kao što su potrebne platforme, standardi ili hardver.
Timovi koji mapiraju svaki nefunkcionalni zahtjev u FURPS+ kategoriju imaju manje šanse isporučiti sustav koji zadovoljava značajke, ali ne zadovoljava performanse, sigurnost ili održavanje.
Kako napisati testirane nefunkcionalne zahtjeve
Dobro napisan nefunkcionalni zahtjev je mjerljiv, provjerljiv i vremenski ograničen. Nejasne izjave poput „sustav mora biti brz“ ili „aplikacija treba biti sigurna“ su težnje, a ne zahtjevi. Slijedite korake u nastavku kako biste pretvorili namjeru u testirani NFR.
- Odredite atribut kvalitete. Mapirajte problem u FURPS+ kategoriju kako bi tim znao radi li se o zahtjevu performansi, upotrebljivosti, sigurnosti ili pouzdanosti.
- Odaberite metriku. Svaki NFR treba jedinicu - milisekunde, zahtjeve u sekundi, istovremene korisnike, postotak vremena rada ili standard usklađenosti kao što je ISO 27001.
- Postavite numerički prag. Zamijenite „brzo“ s „ispod 400 milisekundi na 95. percentilu“. Zamijenite „vrlo dostupno“ s „99.9 posto mjesečne dostupnosti“.
- Opišite stanje. Navedite opterećenje, okruženje ili korisnički segment na koji se prag primjenjuje, na primjer „tijekom vrhunca prodaje s 10 000 istovremenih korisnika“.
- Definirajte metodu provjere. Zabilježite vrstu testa - test opterećenja, test penetracije, eksperiment kaosa, revizija pristupačnosti - i alat koji će potvrditi prag.
- Primijenite SMART provjeru. Potvrdite da je zahtjev specifičan, mjerljiv, ostvariv, relevantan i vremenski ograničen prije nego što uđe u zaostatak.
Primjer prepisivanja: „Sustav mora biti brz“ postaje „Stranica za naplatu mora odgovoriti za manje od 500 milisekundi na 95. percentilu s 5,000 istovremenih korisnika, što je potvrđeno od strane JMeter "testiraj opterećenje svakog izdanja." Revidirana izjava omogućuje programerima da dizajniraju za nju, testerima da je provjere, a vlasnicima proizvoda da je prihvate bez rasprave.


