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.

  • 📘 Definiție: O cerință nefuncțională, sau NFR, descrie cât de bine funcționează un sistem în ceea ce privește performanța, securitatea, utilizabilitatea, fiabilitatea și portabilitatea.
  • 🗂️ Tipuri comune: Utilizabilitatea, securitatea, fiabilitatea, scalabilitatea, capacitatea, disponibilitatea, mentenabilitatea și conformitatea cu reglementările sunt categoriile echipelor. track cel mai adesea.
  • 📊 Modelul FURPS+: FURPS+ grupează NFR-urile în funcție de funcționalitate, utilizabilitate, fiabilitate, performanță, suportabilitate și constrângeri de design sau interfață.
  • 🎯 Afirmații testabile: Înlocuiți „rapid” sau „sigur” cu praguri numerice și metode de verificare, astfel încât NFR să poată fi testat și acceptat.
  • 🆚 Contrast funcțional: Cerințele funcționale precizează ce face sistemul; cerințele nefuncționale precizează cât de bine face acest lucru în condiții reale.
  • ✅ Impactul asupra afacerii: Lipsa NFR-urilor este principala cauză a incidentelor de producție, a constatărilor de reglementare și a reelaborării costisitoare a arhitecturii în etape avansate.

Cerințe non-funcționale în ingineria software

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

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:

  1. Utilizatorii trebuie să schimbe parola inițială după prima autentificare reușită, iar parola inițială nu trebuie niciodată reutilizată.
  2. 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.
  3. Fiecare încercare nereușită a unui utilizator de a accesa un element de date trebuie înregistrată într-o pistă de audit.
  4. Site-ul web va suporta 20 de milioane de utilizatori simultani fără a reduce timpii de răspuns.
  5. Software-ul trebuie să fie portabil, astfel încât trecerea de la un sistem de operare la altul să nu creeze probleme.
  6. 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ă.

  1. 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.
  2. 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.
  3. 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%.
  4. 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”.
  5. 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.
  6. 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.

Întrebări frecvente

Instrumentele de încărcare și performanță bazate pe inteligență artificială generează trafic realist, detectează anomalii în distribuțiile timpului de răspuns și prezic limitele de scalare înainte de producție. De asemenea, inteligența artificială inspectează jurnalele și modelele de acces pentru a semnala evenimentele de securitate pe care instrumentele tradiționale bazate pe reguli le ratează.

Copilot și GPT convertesc declarațiile vagi de calitate în NFR-uri măsurabile cu ajutorul unor metrici, praguri, condiții și metode de verificare. Analiștii de business examinează fiecare schiță în raport cu categoriile FURPS+ și cu cadrul SMART înainte de a o accepta în restanțe.

Testarea funcțională verifică dacă funcțiile se comportă corect, cum ar fi autentificarea sau căutarea. Testarea nefuncțională măsoară cât de bine funcționează sistemul sub sarcină, stres și utilizare, acoperind obiective de performanță, securitate, utilizabilitate, compatibilitate și fiabilitate.

Scalabilitatea, disponibilitatea, latența, elasticitatea și eficiența costurilor domină NFR-urile în cloud. De asemenea, echipele tracobservabilitatea k, obiectivele de recuperare în caz de dezastru, cum ar fi RPO și RTO, și conformitatea multi-regiune, deoarece acestea determină majoritatea deciziilor privind arhitectura cloud.

Alegeți o metrică cu o unitate, setați un prag numeric, descrieți condiția în care se aplică și denumiți metoda de verificare. De exemplu, un timp de răspuns sub 400 de milisecunde la percentila 95 cu 5,000 de utilizatori, verificat de JMeter.

Criptarea datelor în repaus și în tranzit, puterea autentificării, autorizarea bazată pe roluri, înregistrarea în jurnal a auditurilor, expirarea sesiunii și conformitatea cu standarde precum ISO 27001, PCI DSS și GDPR sunt NFR-urile de securitate pe care majoritatea echipelor le documentează.

Utilizarea de adjective vagi, omiterea metricii sau a condiției, listarea NFR-urilor doar la sfârșitul unui proiect și copierea/lipirea unor elemente standard pe care niciun test nu le poate verifica sunt cele mai frecvente greșeli care duc la reelaborarea arhitecturii în etape avansate.

NFR-urile se află în Specificațiile Cerințelor Software, în înregistrările deciziilor de arhitectură, în acordurile privind nivelul serviciilor și în listele de verificare a definiției a ceea ce este finalizat. Echipele Agile atașează adesea NFR-uri măsurabile la epoci și la definiția „gata” pentru fiecare poveste utilizator.

Rezumați această postare cu: