Cerințe software

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 20 iunie 2019; verificările necesită 22 de modificări .

Cerințe software  - un set de solicitări / declarații privind atributele, proprietățile sau calitățile unui sistem software care urmează să fie implementat. Sarcini pentru dezvoltarea/modernizarea software-ului (SW) sunt create în procesul de elaborare (analiza și sinteza).

Cerințele pot fi exprimate sub formă de enunțuri text și modele grafice .

În abordarea tehnică clasică, un set de cerințe este utilizat în etapa de proiectare a software-ului. Cerințele sunt, de asemenea, utilizate în procesul de verificare a software-ului, deoarece testele se bazează pe cerințe.

Faza de dezvoltare a cerințelor poate fi precedată de un studiu de fezabilitate sau de o fază de analiză a proiectării conceptuale. Faza de dezvoltare a cerințelor poate fi împărțită în identificarea cerințelor (strângerea, înțelegerea, luarea în considerare și constatarea nevoilor părților interesate), analiză (verificarea integrității și completității), specificarea (documentarea cerințelor - sinteza modelelor text și grafice) și validare.

Tipuri de cerințe pe niveluri

Tipuri de cerințe după natură

Surse de cerințe

Cerințe de calitate

Caracteristicile calității cerințelor sunt definite diferit de diferite surse. Cu toate acestea, următoarele caracteristici sunt în general recunoscute :

Caracteristică Explicaţie
Singularitate O cerință descrie un singur lucru.
completitudine Cerința este complet definită într-un singur loc și toate informațiile necesare sunt prezente.
Urmare Cerința nu intră în conflict cu alte cerințe și este pe deplin în concordanță cu documentația externă.
Atomicitatea Cerința este „atomică”. Adică, nu poate fi defalcat într-o serie de cerințe mai detaliate fără pierderea completității.
Trasabilitate Cerința îndeplinește integral sau parțial nevoile de afaceri, așa cum sunt declarate de părțile interesate și documentate.
Relevanţă Cerința nu a devenit învechită în timp.
Fezabilitate Cerința poate fi implementată în cadrul proiectului.
neambiguitate Cerința este definită succint, fără a se recurge la jargon tehnic, acronime sau alt limbaj ascuns. Exprimă fapte obiective, nu opinii subiective. Este posibilă o singură interpretare. Definiția nu conține fraze neclare. Utilizarea aserțiunilor negative și a aserțiilor compuse este interzisă.
obligatoriu O cerință reprezintă o caracteristică definită de un stakeholder, a cărei absență va duce la o inferioritate a soluției, care nu poate fi ignorată. O cerință opțională este o contradicție în însuși conceptul de cerință.
Verificabilitate Fezabilitatea unei cerințe poate fi determinată prin una dintre cele patru metode posibile: inspecție, demonstrație, testare sau analiză.

Metode de identificare a cerințelor

Verificarea cerințelor

Toate revendicările trebuie să fie verificabile. Cea mai comună tehnică de verificare sunt testele. Dacă verificarea prin teste nu este posibilă, atunci ar trebui utilizată o altă metodă de verificare (analiza, demonstrație, inspecție sau revizuire a proiectului).

Anumite cerințe sunt în mod inerent neverificabile. Acestea includ cerințe care spun că sistemul nu trebuie să afișeze niciodată sau întotdeauna o anumită proprietate. Testarea corectă a acestor cerințe ar necesita un ciclu de testare nesfârșit. Astfel de cerințe ar trebui redefinite astfel încât să fie verificabile. După cum sa menționat mai sus, toate cerințele trebuie să fie verificabile.

Cerințele nefuncționale care nu sunt verificabile programatic ar trebui păstrate în continuare ca documentație a intenției clientului. Astfel de cerințe de produs pot fi traduse în cerințe de proces. De exemplu, o cerință nefuncțională conform căreia software-ul nu conține „pasaje secrete” poate fi satisfăcută prin înlocuirea acesteia cu o cerință de a utiliza programarea în pereche. Cerințele complexe de securitate pentru software de aviație pot fi îndeplinite urmând  procesul de dezvoltare DO-178B .

Analiza cerințelor

La elaborarea cerințelor, apar adesea probleme de ambiguitate, incompletitudine și inconsecvență ale cerințelor individuale. Eliminarea acestor probleme în etapa de dezvoltare a cerințelor costă câteva ordine de mărime mai puțin decât rezolvarea acelorași probleme în etapele ulterioare de dezvoltare. Pentru a rezolva și elimina aceste probleme, există un proces de dezvoltare a cerințelor.

În dezvoltarea cerințelor, există un compromis tehnic între cerințele prea vagi și cerințele atât de detaliate încât:

Cerințe de documentare

Cerințele sunt de obicei folosite ca mijloc de comunicare între diferiți factori interesați. Aceasta înseamnă că cerințele ar trebui să fie simple și ușor de înțeles pentru utilizatorii și dezvoltatorii obișnuiți.

O specificație software este adesea denumită specificație tehnică .

Cel mai adesea, în practica rusă, un analist de sistem este responsabil pentru crearea unei specificații software , uneori un analist de afaceri .

Pentru modelele de cerințe grafice din punct de vedere istoric s-au folosit diagrame sau metodologii de modelare grafică: ER (IDEF1FX), IDEF0 , IDEF3 , DFD , UML , OCL , SysML , ARIS ( eEPC , VAD ).

Modificarea cerințelor

În general, cerințele se modifică în timp. Odată ce cerințele sunt definite și aprobate, modificările ar trebui să facă obiectul controlului modificărilor. Pentru multe proiecte, cerințele se modifică înainte ca sistemul să fie finalizat. Acest lucru se datorează parțial complexității software-ului și faptului că utilizatorii nu știu de ce au nevoie cu adevărat. Această caracteristică a cerințelor a dat naștere procesului de management al cerințelor .

Vezi și

Literatură

Link -uri