Ce este cerința nefuncțională în ingineria software?
⚡ Rezumat inteligent
Cerințele nefuncționale specifică atribute de calitate precum performanța, securitatea, utilizabilitatea, fiabilitatea, scalabilitatea și portabilitatea, definind cât de bine trebuie să se comporte un sistem software și transformând așteptările vagi în obiective inginerești măsurabile, testabile și aplicabile pe tot parcursul ciclului de viață al livrării.
Ce este o cerință nefuncțională?
A Cerință non-funcțională (NFR) specifică un atribut de calitate al unui sistem software. NFR-urile evaluează sistemul în funcție de receptivitate, utilizabilitate, securitate, portabilitate și alte atribute de calitate care sunt critice pentru succes. Un exemplu comun de cerință nefuncțională este, „Cât de repede se încarcă site-ul?” Neîndeplinirea cerințelor nefuncționale produce sisteme care lasă utilizatorii frustrați.
Cerințele nefuncționale din ingineria software impun constrângeri asupra proiectării sistemului în întregul backlog agil. De exemplu, site-ul ar trebui să se încarce în trei secunde atunci când utilizatorii simultani depășesc 10,000. Descrierea cerințelor nefuncționale este la fel de importantă ca și captarea cerințelor funcționale.
Tipuri de cerințe nefuncționale
Principalele categorii de cerințe nefuncționale sunt:
Tipuri de cerințe nefuncționale
- Usability
- serviceability
- maniabilitate
- Recuperare
- Securitate
- Date Integrity
- Capacitate
- Disponibilitate
- Scalabilitate
- Interoperabilitate
- Încredere
- mentenabilitate
- Respectarea reglementărilor
- Constrângeri de mediu
Exemple de cerințe nefuncționale
Iată câteva exemple practice de cerințe nefuncționale:
- Utilizatorii trebuie să schimbe parola inițială după prima autentificare reușită, iar parola inițială nu trebuie niciodată reutilizată.
- Angajaților nu li se va permite să își actualizeze propriile informații salariale, iar orice astfel de încercare va fi raportată administratorului de securitate.
- Fiecare încercare nereușită a unui utilizator de a accesa un element de date trebuie înregistrată într-o pistă de audit.
- Site-ul web va suporta 20 de milioane de utilizatori simultani fără a reduce timpii de răspuns.
- Software-ul trebuie să fie portabil, astfel încât trecerea de la un sistem de operare la altul să nu creeze probleme.
- Confidențialitatea informațiilor, exportul tehnologiilor restricționate și drepturile de proprietate intelectuală trebuie să fie auditabile.
Cerințe funcționale vs. cerințe nefuncționale
Principalele diferențe dintre cerințele funcționale și cele nefuncționale sunt:
| parametrii | Cerință funcțională | Cerință non-funcțională |
|---|---|---|
| Ce este asta? | Verb | Atribute |
| Cerinţă | Este obligatoriu | Este neobligatoriu |
| Tip de captură | Este capturat în cazul de utilizare. | Este surprins ca un atribut de calitate. |
| Rezultat final | Caracteristica produsului | Proprietățile produsului |
| capturarea | Usor de capturat | Greu de capturat |
| Obiectiv | Vă ajută să verificați funcționalitatea software-ului. | Vă ajută să verificați performanța software-ului. |
| Zona de focalizare | Concentrați-vă pe cerințele utilizatorului | Se concentrează pe așteptările utilizatorului. |
| Documentație | Descrieți ce face produsul | Descrie modul în care funcționează produsul |
| Tipul de testare | Functional Testing cum ar fi Sistem, Integrare, End-to-End, Testare API etc. | Testare non-funcțională, cum ar fi performanța, stresul, gradul de utilizare, testarea de securitate etc. |
| Executarea testului | Execuția testului se face înainte de testarea nefuncțională. | După testarea funcţională |
| Informatii despre produs | Caracteristici produs | Proprietățile produsului |
Avantajele cerințelor nefuncționale
Principalele beneficii ale Testare nefuncțională sunt:
- Cerințele nefuncționale asigură respectarea de către sistem a regulilor legale și de conformitate.
- Acestea protejează fiabilitatea, disponibilitatea și performanța sistemului.
- Acestea oferă o experiență bună pentru utilizator și ușurință în utilizare.
- Acestea modelează politica de securitate a software-ului.
Dezavantajele cerințelor nefuncționale
Dezavantajele comune ale cerințelor nefuncționale sunt:
- Cerințele nefuncționale pot afecta mai multe subsisteme software de nivel înalt.
- Acestea necesită o atenție specială în timpul arhitecturii și proiectării la nivel înalt, ceea ce crește costul.
- Implementarea rareori se mapează la un singur subsistem software.
- Sunt greu de modificat odată ce faza de arhitectură este finalizată.
Modelul FURPS+ pentru clasificarea cerințelor nefuncționale
FURPS+ este cea mai utilizată taxonomie pentru cerințele nefuncționale. Dezvoltată inițial la Hewlett-Packard, aceasta grupează atributele de calitate în cinci categorii principale, plus constrângeri suplimentare marcate cu „+”. Modelul îi ajută pe analiștii de afaceri să evite omiterea unei întregi clase de cerințe.
- funcţionalitate: Capacitate, securitate și reutilizare care depășesc lista de funcții de bază.
- Usability: Factorii umani, estetica, consecvența, documentația și receptivitatea experienței utilizatorului.
- Fiabilitate: Disponibilitate, timp mediu între defecțiuni, recuperabilitate, predictibilitate și precizie.
- Performanță: Viteză, randament, capacitate, scalabilitate și consum de resurse sub sarcină.
- Suportabilitate: Testabilitatea, flexibilitatea, instalabilitatea, localizabilitatea și mentenabilitatea sistemului livrat.
- Plus (+): Proiectare, implementare, interfață și constrângeri fizice, cum ar fi platformele, standardele sau hardware-ul necesare.
Echipele care mapează fiecare cerință nefuncțională la o categorie FURPS+ sunt mai puțin predispuse să livreze un sistem care îndeplinește caracteristicile, dar eșuează în ceea ce privește performanța, securitatea sau mentenabilitatea.
Cum se scriu cerințe non-funcționale testabile
O cerință nefuncțională bine scrisă este măsurabilă, verificabilă și limitată în timp. Afirmații vagi precum „sistemul trebuie să fie rapid” sau „aplicația trebuie să fie sigură” sunt aspirații, nu cerințe. Urmați pașii de mai jos pentru a converti o intenție într-o cerință nefuncțională (NFR) testabilă.
- Identificați atributul calității. Mapați problema la o categorie FURPS+, astfel încât echipa să știe dacă este o cerință de performanță, utilizabilitate, securitate sau fiabilitate.
- Alegeți o metrică. Fiecare NFR are nevoie de o unitate - milisecunde, solicitări pe secundă, utilizatori concurenți, procent de disponibilitate sau un standard de conformitate, cum ar fi ISO 27001.
- Setați un prag numeric. Înlocuiți „rapid” cu „sub 400 de milisecunde la percentila 95”. Înlocuiți „disponibilitate ridicată” cu „timp de funcționare lunar de 99.9%.
- Descrieți afecțiunea. Indicați sarcina, mediul sau segmentul de utilizatori căruia i se aplică pragul, de exemplu „în timpul vânzărilor de vârf cu 10,000 de utilizatori simultani”.
- Definiți metoda de verificare. Rețineți tipul testului — test de sarcină, test de penetrare, experiment de haos, audit de accesibilitate — și instrumentul care va confirma pragul.
- Aplicați verificarea SMART. Confirmați că cerința este Specifică, Măsurabilă, Realizabilă, Relevantă și Limitată în Timp înainte de a fi inclusă în lista de lucrări restante.
Exemplu de rescriere: „Sistemul trebuie să fie rapid” devine „Pagina de finalizare a comenzii trebuie să răspundă în mai puțin de 500 de milisecunde la percentila 95 cu 5,000 de utilizatori simultani, verificați de un JMeter „testarea încărcării la fiecare versiune.” Declarația revizuită permite dezvoltatorilor să proiecteze în funcție de aceasta, testerilor să o verifice, iar proprietarilor de produse să o accepte fără argumente.


