Analiza cerințelor software cu exemplu

⚡ Rezumat inteligent

Analiza cerințelor software împarte nevoile părților interesate în declarații funcționale și nefuncționale, le clasifică la nivel de business, arhitectural și de sistem, apoi verifică fiecare în raport cu atributele de calitate pentru a garanta o calitate testabilă. tracspecificație facilă și prioritizată.

  • 📐 Tipuri de cerințe: Cerințele de afaceri, arhitecturale și de design, precum și cerințele de sistem și integrare formează cele trei niveluri care structurează fiecare specificație software.
  • 🔀 Funcțional vs. Non-funcțional: Declarațiile funcționale descriu ce trebuie să facă sistemul, în timp ce declarațiile nefuncționale stabilesc obiective măsurabile de performanță, securitate și utilizabilitate.
  • 📚 Surse alternative: Colegii, versiunile anterioare, documentele de cerințe mai vechi, rapoartele de erori și ghidurile de instalare furnizează cerințe atunci când lipsesc brief-urile formale.
  • Atribute de calitate: Atomic, identificat în mod unic, complet, consistent, tracFacilibil, prioritizat și testabil sunt cele șapte atribute pe care fiecare cerință trebuie să le îndeplinească.
  • 🔗 Un capăt la altul Tracebilitate: Cerințele de business se corelează cu designul, designul cu codul și codul cu cazurile de testare, astfel încât domeniul de aplicare și acoperirea rămân vizibile pe tot parcursul proiectului.
  • 🎯 Formulare testabilă: Înlocuiți termenii vagi precum „fiecare pagină” și „timp acceptabil” cu pagini denumite și obiective măsurabile, cum ar fi 5 secunde.

Analiza cerințelor software

O cerință software este o nevoie funcțională sau nefuncțională care trebuie implementată în sistem. Funcțional înseamnă furnizarea unui anumit serviciu utilizatorului.

De exemplu, în contextul unei aplicații bancare, cerința funcțională este ca, atunci când un client selectează „Vizualizare sold”, să poată vizualiza cel mai recent sold al contului său.

O cerință software poate fi, de asemenea, nefuncțională, cum ar fi o cerință de performanță. De exemplu, o cerință nefuncțională ar putea stabili că fiecare pagină a sistemului ar trebui să se încarce pentru utilizatori în termen de 5 secunde.

Deci, practic cerința software este a

  • Funcțional sau
  • Nefuncțional

nevoie care trebuie implementat în sistem. Cerințele software sunt de obicei exprimate sub formă de declarații.

Tipuri de cerințe

Cerințe de afaceriAcestea sunt cerințe de nivel înalt preluate din studiul de caz pentru proiect. De exemplu, un sistem de servicii bancare mobile oferă servicii bancare în Asia de Sud-Est. Cerința de afaceri decisă pentru India este rezumatul contului și transferul de fonduri, în timp ce pentru China este rezumatul contului și plata facturilor.

Țară Companie care furnizează Funcționalități sau servicii bancare
India Rezumatul contului și transferul de fonduri
China Rezumatul contului și Bill Plată

Archicerințele tehnice și de proiectareAceste cerințe sunt mai detaliate decât cerințele de business și determină arhitectura soluției. Ele determină designul general necesar pentru implementarea cerințelor de business. Pentru o organizație educațională, cazurile tipice de utilizare arhitecturală și de design includ autentificarea, detaliile cursului și înscrierea. Cerința ar fi prezentată mai jos.

Caz de utilizare bancar Cerinţă
Bill Plată Acest caz de utilizare descrie modul în care un client se poate conecta la net banking și poate utiliza Bill Facilitate de plată. Clientul poate vedea un tablou de bord cu facturile restante pentru emitenții de facturi înregistrați. Clientul poate adăuga, modifica și șterge detaliile unui facturant. Clientul poate configura alerte SMS și e-mail pentru diferite acțiuni de facturare. Clientul poate vizualiza un istoric al facturilor plătite în trecut. Actorii care inițiază acest caz de utilizare sunt clienții băncii sau personalul de asistență.

Cerințe de sistem și integrareLa cel mai scăzut nivel, avem cerințe de sistem și de integrare. Acesta oferă o descriere detaliată a fiecărei cerințe. Acestea pot fi surprinse sub formă de povești ale utilizatorilor scrise în limbaj de afaceri obișnuit. Cerințele conțin detalii abundente, astfel încât dezvoltatorii să poată începe să programeze. Bill Exemplul de modul de plată de mai jos arată cerința pentru adăugarea unui facturator.

Bill Plată Cerinţe
Adăuga Billers Numele furnizorului de utilități, numărul clientului relație, plăți automate – Da/Nu, plată integrală Bill – Da/Nu, Limită de plată automată – Nu plătiți dacă Bill este peste suma specificată

Uneori, pentru un proiect, este posibil să nu primiți cerințe sau documente cu care să lucrați. Chiar și așa, există și alte surse de informații despre cerințe pe care vă puteți baza pentru a vă baza software-ul sau designul de testare. Celelalte surse de cerințe pe care vă puteți baza sunt enumerate mai jos.

Alte surse de cerințe

  • Transferul de cunoștințe de la colegii sau angajații care lucrează deja la acel proiect
  • Discutați proiectul cu analistul de afaceri, managerul de produs, liderul de proiect și dezvoltatorii
  • Analizați versiunea anterioară a sistemului deja implementată
  • Analizați documentele de cerințe mai vechi din proiect
  • RevVizualizați rapoartele de erori anterioare; unele rapoarte de erori sunt convertite în solicitări de îmbunătățire care pot fi implementate în versiunea curentă
  • Verificați ghidul de instalare, dacă este disponibil, pentru a vedea ce instalații sunt necesare
  • Analizați cunoștințele din domeniu sau industrie pe care echipa încearcă să le implementeze

Indiferent de sursa de cerințe pe care o utilizați, documentați-le într-un format comun și solicitați revizuirea lor de către membri experimentați ai echipei.

Cum se analizează cerințele

Luați în considerare exemplul unui sistem software educațional în care un student se poate înscrie la diferite cursuri.

Să studiem cum se analizează cerințele. Fiecare cerință trebuie să mențină un set de atribute standard de calitate, care includ următoarele:

  • Atomic
  • Identificat unic
  • Completa
  • Consecvent și lipsit de ambiguitate
  • Traccapabil
  • Prioritizat
  • Testabil

Analizați cerințele

Următorul tabel ilustrează fiecare atribut cu trei coloane:

  1. Prima coloană indică „calitate cerință”
  2. A doua coloană indică „cerință necorespunzătoare cu o problemă”
  3. A treia coloană arată aceeași cerință „convertită într-o cerință bună”.
Cerință Calitate Exemplu de cerință proastă Exemplu de cerință bună
Atomic Studenții se vor putea înscrie la cursuri de licență și postuniversitare Studenții se vor putea înscrie la cursuri de licență. Studenții se vor putea înscrie la cursuri postuniversitare.
Identificat unic 1- Studenții se vor putea înscrie la cursuri de licență. 1- Studenții se vor putea înscrie la cursuri postuniversitare. Înscrierea la cursuri. Studenții se vor putea înscrie la cursuri de licență. Studenții se vor putea înscrie la cursuri postuniversitare.
Completa Un utilizator profesor se va conecta în sistem furnizând numele său de utilizator, parola și alte informații relevante Un utilizator profesor se va autentifica în sistem furnizând numele său de utilizator, parola și codul de departament
Consecvent și lipsit de ambiguitate Un student va avea fie cursuri universitare, fie cursuri postuniversitare, dar nu ambele. Unele cursuri vor fi deschise atât pentru studii universitare, cât și pentru cele postuniversitare Un student va avea fie licență, fie absolvenți postuniversitari, dar nu ambele
Traccapabil Păstrați informațiile despre studenți mapate la BRD req.ID? Menține informațiile despre studenți-Cartografiate la ID-ul solicitat BRD 4.1
Prioritizat Student înregistrat - Prioritate 1. Menținerea informațiilor utilizatorului - Prioritate 1. Înscrierea la cursuri - Prioritate 1. Vizualizare fișă de raport - Prioritate 1 Înregistrare student - Prioritate 1. Menținerea informațiilor utilizator - Prioritate 2. Înscriere cursuri - Prioritate 1. Vizualizare fișă de raport - Prioritate 3
Testabil Fiecare pagină a sistemului se va încărca într-un interval de timp acceptabil Înregistrarea studenților și înscrierea cursurilor paginile sistemului se vor încărca în 5 secunde

Să înțelegem fiecare dintre aceste atribute mai detaliat, începând cu AtomIC.

Atomic

Atomic

Fiecare cerință ar trebui să fie atomică, adică trebuie să fie la cel mai scăzut nivel de detaliu și nu poate fi defalcată în componente. Următoarele exemple compară cerințele atomice și cele neatomice.

Continuând cu exemplul sistemului din domeniul educației: Aici, cerința nepotrivită este „Studenții vor putea să se înscrie la cursuri de licență și postuniversitare”. Aceasta este o cerință nepotrivită deoarece nu este atomică - combină două entități diferite, cursuri de licență și postuniversitare. Cerința bună corespunzătoare o separă în două cerințe. O cerință acoperă înscrierea la cursuri de licență, iar cealaltă acoperă înscrierea la cursuri postuniversitare.

Identificat unic

Identificat unic

Următorul atribut de calitate este identificarea unică. În exemplul negativ, două cerințe separate au același ID#1. Dacă o echipă face referire la o cerință prin ID-ul său, devine neclar care dintre cele două este vorba. Cerința bună le regrupează în Secțiunea 1 — Înscrierea la cursuri, cu subcerințele 1.1 (înscrierea la cursuri de licență) și 1.2 (înscrierea la cursuri postuniversitare).

Completa

Completa

Fiecare cerință ar trebui să fie completă. De exemplu, aici cerința greșită spune că „un profesor se va conecta la sistem furnizând numele de utilizator, parola și alte informații relevante”. „Alte informații relevante” este vag. O cerință completă listează câmpurile exacte, cum ar fi codul departamentului, pe care profesorul trebuie să le furnizeze.

Consecvent și fără ambiguitate

Consecvent și fără ambiguitate

Fiecare cerință ar trebui să fie consecventă și lipsită de ambiguitate. În exemplul negativ, o cerință prevede „Un student va avea fie cursuri de licență, fie cursuri postuniversitare, dar nu ambele”, în timp ce o alta prevede „Unele cursuri vor fi deschise atât studenților de licență, cât și celor de masterat”.

Prima cerință implică împărțirea cursurilor în două categorii exclusive, dar a doua cerință o contrazice prin deschiderea unor cursuri pentru ambele grupuri.

Cerința „bună” rezolvă conflictul prin precizarea clară a faptului că fiecare curs este marcat fie ca licență, fie ca studii postuniversitare, iar un student se poate înscrie doar la cursuri dintr-o singură categorie.

Traccapabil

Traccapabil

Fiecare cerință trebuie să fie tracposibil deoarece cerințele există la mai multe niveluri: de afaceri, arhitectural și de design, precum și de sistem și integrare.

Când convertiți o cerință de afaceri în cerințe arhitecturale și de design sau cerințe arhitecturale și de design în cerințe de sistem și integrare, tracEficacitatea trebuie menținută. Fiecare cerință de business ar trebui să fie corelată cu una sau mai multe cerințe arhitecturale și de design. În exemplul greșit „Mențineți informațiile despre studenți – corelate cu ID-ul cerinței BRD?”, ID-ul cerinței lipsește.

Cerința bună înregistrează aceeași declarație, dar se mapează explicit la cerința BRD ID 4.1. Fiecare cerință trebuie să conțină un trachartă de posibilitatepingCerințele de sistem și de integrare ar trebui să fie, de asemenea, corelate cu codul care le implementează și cu cazurile de testare care le verifică.

TracPrin urmare, ebilitatea se desfășoară de la un capăt la altul al proiectului.

Prioritizat

Fiecare cerință trebuie prioritizată, astfel încât echipa să știe ce să implementeze mai întâi și ce poate aștepta. În exemplul negativ, opțiunile Înregistrare student, Menținere informații utilizator, Înscriere cursuri și Vizualizare raport sunt toate setate la Prioritatea 1. Nu se poate ca nimic să aibă Prioritatea 1, așa că cerințele trebuie clasificate realist. Exemplul bun acordă opțiunilor Înregistrare student și Înscriere cursuri cea mai mare Prioritate 1, Menținere informații utilizator Prioritate 2 și Vizualizare raport Prioritate 3.

Testabil

Fiecare cerință ar trebui să fie testabilă. Exemplul negativ, „fiecare pagină a sistemului se va încărca într-un interval de timp acceptabil”, nu este testabil din două motive. În primul rând, „fiecare pagină” poate însemna zeci de pagini, ceea ce suprasolicită efortul de testare. În al doilea rând, „intervalul de timp acceptabil” este nedefinit - acceptabil pentru cine și în funcție de ce criteriu de referință? Cerința bună rezolvă ambele probleme prin denumirea paginilor specifice („paginile de înregistrare a studenților și de înscriere la cursuri”) și prin stabilirea unei ținte măsurabile de 5 secunde.

Întrebări frecvente

Instrumentele de inteligență artificială grupează feedback-ul părților interesate, semnalează limbajul ambiguu și detectează cerințele duplicate sau lipsă pe linii de bază mari. Analiștii de business verifică în continuare fiecare sugestie în raport cu înregistrarea de solicitare înainte ca aceasta să intre în setul de cerințe aprobat.

GitHub Copilot și GPT redactează povești de utilizator, criterii de acceptare și reguli de business din prompturi scurte. Un analist de business analizează fiecare rezultat în funcție de atributele de calitate, cum ar fi atomic, testabil și... tracposibilă înainte de a deveni o cerință aprobată.

O Specificație a Cerințelor Software (SRS) este un document formal care enumeră cerințele funcționale, cerințele nefuncționale, interfețele și constrângerile pentru sistem. IEEE 830 și ISO 29148 sunt standardele pe care majoritatea echipelor le urmează atunci când scriu un SRS.

Colectarea cerințelor, sau elicitarea, colectează nevoile brute de la părțile interesate. Analiza cerințelor organizează, rafinează și verifică apoi aceste nevoi în raport cu cele șapte atribute de calitate, astfel încât echipa de livrare să primească declarații clare și testabile.

Folosește tehnici precum MoSCoW (Must, Should, Could, Would), analiza Kano, scorul ponderat sau costul întârzierii. Combină valoarea afacerii cu efortul și riscul de livrare, apoi stabilește de comun acord comanda cu sponsorul și proprietarul de produs înainte de începerea dezvoltării.

Cerințe A TracMatricea de testare leagă fiecare cerință de elementul său de design, componenta de cod și cazul de testare. Oferă direcții înainte, înapoi și bidirecționale. traceficiență, astfel încât nimic nu să fie omis, supraconstruit sau expediat fără un test corespunzător.

Formulare ambiguă, restanțe neprioritate, lipsă tracEficacitatea, combinarea ideilor de soluții cu nevoile afacerii și înghețarea domeniului de aplicare fără controlul schimbărilor sunt greșelile care cauzează cele mai multe reluări, derapaje în program și defecte în producție.

Instrumentele populare includ Jama Connect, IBM USI, Modern Requirements pentru Azure DevOps, Jira cu Xray, Cerințe Visure ALM și Blueprint. Echipele aleg o platformă în funcție de nevoile de reglementare, dimensiunea echipei și profunzimea tracebilitate necesară.

Rezumați această postare cu: