Cerințele definesc ce trebuie să facă un produs — o așteptare documentată privind rezultatul implementării unui proiect. Acest document surprinde așteptările clientului, precum și pe cele ale dezvoltatorului cu privire la program, funcțiile acestuia și proiectul în ansamblu. Cerințele cuprind caracteristici, cost, program de execuție și riscuri. Astfel, cerințele reprezintă o declarație a ceea ce trebuie dezvoltat sau o descriere cantitativă precisă a ceea ce se așteaptă să se obțină în urma implementării proiectului. Definirea deficitară a cerințelor este principala cauză a problemelor apărute în timpul execuției proiectului.
Cerințele precizează ce trebuie făcut, cât de bine și în ce condiții de restricție. Dacă cerințele sunt greșite, proiectul și produsul vor avea defecte. Cerințele, restricțiile și ipotezele descompun problema în părți. Acest lucru determină succesul general al proiectului.
Tipuri de cerințe:
- Cerințele funcționale definesc ce trebuie să facă un anumit element al sistemului.
- Cerințele de performanță definesc parametrii cantitativi ai funcțiilor corespunzătoare îndeplinite de sistem.
- Cerințele de restricție decurg din limitările modurilor de funcționare, condițiile de mediu, considerentele de siguranță sau conformitatea cu reglementările.
- Cerințele de verificare oferă încrederea că sistemul posedă caracteristicile specificate în mediul său real de funcționare.
- Cerințele de interfață definesc funcțiile, caracteristicile, toleranțele și restricțiile tuturor interfețelor.
- Cerințele operaționale precizează gradul de pregătire operațională a sistemului, concentrându-se pe performanța sistemului, definind totodată modul în care acesta interacționează cu utilizatorii.
În literatura de limbă engleză, acronimul SMART este folosit pentru a reține caracteristicile unor cerințe bune.
- Specific (Specific) — cerințele trebuie să vizeze o singură trăsătură a proiectului sau caracteristică a sistemului. Ele trebuie formulate în termeni de ce trebuie făcut și cât de bine, dar niciodată în termenii unei posibile soluții — cum trebuie făcut.
- Măsurabil (Measurable) — un parametru măsurabil este exprimat obiectiv și cantitativ.
- Realizabil (Achievable) — o cerință trebuie să fie realizabilă din punct de vedere tehnic, la un cost rezonabil.
- Relevant (Relevant) — o cerință trebuie să corespundă nivelului ales al sistemului.
- Trasabil (Traceable) — cerințele de nivel inferior trebuie să decurgă explicit din cerințele de nivel superior și/sau să fie susținute de acestea. Cerințele fără cerințe „părinte” sunt considerate „orfane” și trebuie evaluate pentru a se stabili dacă implementarea lor este necesară.
Necesitate. Dacă există îndoieli cu privire la faptul dacă o cerință este necesară, este suficient să ne întrebăm: „Ce prejudiciu va suferi sistemul dacă această cerință nu este inclusă în listă?” Dacă nu există răspuns, cerința este probabil inutilă.
Verificabilitate. De îndată ce o cerință este formulată, trebuie stabilit modul în care poate fi verificată. Pentru aceasta, trebuie ales un criteriu de conformitate adecvat.
Realizabilitate. Pentru a fi realizabilă, o cerință trebuie să fie fezabilă din punct de vedere tehnic în cadrul programului și bugetului stabilite, sub rezerva unor restricții suplimentare. Dacă există incertitudine cu privire la fezabilitatea tehnică a unei cerințe, trebuie efectuat un studiu corespunzător sau o investigație suplimentară. Dacă incertitudinea persistă chiar și după aceasta, ar trebui formulat un scop, nu o cerință. Este clar că, chiar dacă o cerință este fezabilă din punct de vedere tehnic, ea poate fi imposibil de realizat din cauza costului, programului sau altor restricții, precum greutatea. Este inutil să formulăm o cerință pentru ceva imposibil de realizat; trebuie să fim pragmatici.
Claritate. Fiecare cerință trebuie să exprime o singură idee și să fie concisă și simplă. Este important ca cerința să fie clară și lipsită de ambiguitate. Cerințele bune nu au nevoie, de cele mai multe ori, decât de propoziții simple.
O cerință trebuie formulată într-o manieră pozitivă și nu trebuie niciodată să înceapă cu o negație. Ea trebuie să fie corectă din punct de vedere gramatical, fără erori de tipar și omisiuni. Trebuie folosită o terminologie consecventă la toate nivelurile sistemului.