Am discutat anterior principalele 4 activitati de inginerie a cerintelor.

Ingineria cerintelor este un proces de colectare si definire a serviciilor care ar trebui furnizate de sistem.

Se concentreaza pe evaluarea daca sistemul este util afacerii (studiu de fezabilitate), descoperirea cerintelor (elicitare si analiza), convertirea acestor cerinte intr-un anumit format standard (specificatie) si verificarea faptului ca cerintele definesc sistemul dorit de client ).

In practica, ingineria cerintelor nu este un proces secvential, este un proces iterativ in care activitatile sunt intercalate.

Array

De exemplu, iterati mai intai cerintele utilizatorului; solicitare, specificatii si validare si repetati aceiasi pasi pentru cerintele sistemului.

Procesul de inginerie a cerintelor

La inceputul procesului, cele mai multe eforturi vor fi cheltuite pentru intelegerea cerintelor la nivel inalt de afaceri si ale utilizatorilor . Mai tarziu in acest proces, vor fi depuse mai multe eforturi pentru elicitare si intelegerea cerintelor detaliate ale sistemului .

Unii oameni considera ca ingineria cerintelor este procesul de aplicare a metodei de analiza structurata, cum ar fi analiza orientata pe obiecte.

Array

Aceasta implica analiza sistemului si dezvoltarea unui set de modele grafice de sistem, cum ar fi modelele de cazuri de utilizare, care servesc apoi ca o specificatie a sistemului.

Desi metodele structurate au un rol de jucat in procesul de inginerie a cerintelor, in ingineria cerintelor exista mult mai mult decat este acoperit de aceste metode.

Analiza si proiectarea orientate pe obiecte vor fi discutate intr-o alta serie de tutoriale.

De obicei, cerintele sunt prezentate in doua niveluri de detaliu; cerintele utilizatorului si ale sistemului, in cazul in care utilizatorul are nevoie de o declaratie la nivel inalt a cerintelor, in timp ce dezvoltatorii de sistem au nevoie de o specificatie de sistem mai detaliata.

Array

Deci, cerintele utilizatorului si ale sistemului se refera doar la diferite niveluri de detalii.

Avand un nivel diferit de detalii este util, deoarece comunica informatii despre sistemul dezvoltat pentru diferite tipuri de cititori.

Cititori ai diferitelor tipuri de specificatii ale cerintelor

Deci, utilizatorii finali nu vor fi preocupati de detalii, au nevoie de o cerinta scrisa generica, abstractizata.

In timp ce oamenii care sunt implicati in dezvoltare, au nevoie de ceea ce ar trebui sa faca exact sistemul.

Probabil ca veti ajunge la o multime de probleme si neintelegeri daca nu ati avea o separare clara intre detaliile de nivel diferit.

Cerintele utilizatorului

Descrie serviciile pe care ar trebui sa le ofere sistemul si constrangerile sub care trebuie sa functioneze. Nu ne asteptam sa vedem niciun nivel de detaliu sau ce anume va face sistemul, este mai mult o cerinta generica.

De obicei este scris intr-un limbaj natural si este furnizat prin diagrame.

Vom discuta diferite moduri de a specifica cerintele mai tarziu in aceasta serie.

Cerinte de sistem

Cerintele de sistem inseamna o descriere mai detaliata a serviciilor de sistem si a constrangerilor operationale, cum ar fi modul in care sistemul va fi utilizat, si constrangeri de dezvoltare, cum ar fi limbajele de programare.

Acest nivel de detaliu este necesar pentru cei care sunt implicati in dezvoltarea sistemului, cum ar fi inginerii, arhitectii de sisteme, testeri etc.

Cerintele software sunt clasificate in cerinte functionale si cerinte nefunctionale.

Cerinte functionale

Acopera principalele functii care ar trebui sa fie furnizate de sistem. Atunci cand sunt exprimate ca cerinte ale utilizatorului , acestea sunt de obicei descrise intr-un mod abstract.

Cu toate acestea, cerintele functionale ale sistemului descriu functiile sistemului, intrarile, procesarea; cum va reactiona la o anumita intrare si care este rezultatul asteptat.

Cerinte nefunctionale

Acestea sunt constrangerile asupra functiilor furnizate de sistem.

Constrangerile, cum ar fi cate procese poate gestiona sistemul (performanta), care sunt problemele (de securitate) de care sistemul trebuie sa aiba grija, cum ar fi injectiile SQL …

Rata de esec (fiabilitate), care sunt limbile si instrumentele care vor fi utilizate (dezvoltare), care sunt regulile pe care trebuie sa le urmati pentru a va asigura ca sistemul functioneaza in conformitate cu legea organizatiei (legislativa).

Cerinte nefunctionale

Cerintele nefunctionale sunt adesea critice decat cerintele functionale individuale. Utilizatorii pot gasi, de obicei, modalitati de a rezolva o functie de sistem care nu satisface cu adevarat nevoile lor. Cu toate acestea, neindeplinirea unei cerinte nefunctionale poate insemna ca intregul sistem este inutilizabil.

De exemplu, daca o aeronava nu inseamna ca indeplineste cerintele sale de fiabilitate, nu va fi sigura pentru functionare sau daca un sistem de control incorporat nu indeplineste cerintele sale de performanta, functiile de control nu vor functiona corect.

Cerintele nefunctionale ar trebui sa fie masurabile

Ori de cate ori este posibil, ar trebui sa scriem cerinte nefunctionale cantitativ, astfel incat sa poata fi testate. Le puteti masura atunci cand sistemul este testat pentru a verifica daca sistemul indeplineste cerintele sale nefunctionale.

Valori pentru cerinte nefunctionale

In practica, clientilor pentru un sistem le este deseori dificil sa isi transpuna obiectivele in cerinte masurabile. Nu inteleg ce numar definesc viteza sau fiabilitatea necesara. Pentru unele obiective, cum ar fi mentenabilitatea, nu exista valori care sa poata fi utilizate.

Costul verificarii cerintelor nefunctionale masurabile poate fi foarte mare si este posibil ca clientii sa nu creada ca aceste costuri sunt justificate.

Cerintele nefunctionale si functionale sunt dependente

Cerintele nefunctionale sunt adesea in conflict, interactioneaza sau chiar genereaza alte cerinte functionale sau nefunctionale.

O cerinta a utilizatorului preocupata de securitate, cum ar fi limitarea accesului la utilizatorii autorizati, poate genera alte cerinte care sunt functionale, cum ar fi necesitatea de a include facilitati de autentificare a utilizatorului in sistem.

Distinctia intre cerintele functionale si nefunctionale

In practica, este dificil sa separi cerintele functionale si nefunctionale. Distinctia nu este clara, asa cum sugereaza definitiile lor.

Separati intre cerintele functionale si nefunctionale

Daca cerintele nefunctionale sunt declarate separat de cerintele functionale, relatia dintre ele poate fi greu de inteles.

Cu toate acestea, ar trebui sa evidentiem in mod explicit cerintele care sunt in mod clar legate de proprietatile emergente ale sistemului, cum ar fi performanta sau fiabilitatea.

Proprietatile emergente sunt proprietati ale sistemului in ansamblu, mai degraba decat proprietati care pot fi derivate din proprietatile componentelor individuale ale sistemului.