I grandi sistemi hardware o software, come un veicolo spaziale, hanno requisiti complessi. I requisiti sono una specifica di cosa dovrebbe essere costruito, come dovrebbe comportarsi il sistema o vincoli sul processo di costruzione del sistema. L’ingegneria dei requisiti è l’uso di buone pratiche ingegneristiche per comprendere i requisiti prima che un sistema sia costruito. Assume importanza perché gli stessi portatori di interessi del sistema non sono chiari sui loro bisogni e hanno bisogni divergenti.
Un sistema complesso può avere molte parti interessate come le persone che commissionano il sistema, gli utenti che utilizzano uno o più aspetti del sistema e le persone che traggono vantaggio dal sistema. È anche possibile che gli stakeholder includano membri del pubblico che sono interessati da alcune peculiarità del sistema. Gli stakeholder hanno i loro bisogni speciali. D’altra parte, le persone che sviluppano il sistema possono essere tecnicamente capaci, ma possono non comprendere appieno il punto di vista degli stakeholder. L’ingegneria dei requisiti è la capacità essenziale che collega questi lati.
Formalmente, l’attività di ingegneria dei requisiti è suddivisa in sviluppo dei requisiti e gestione dei requisiti. Lo sviluppo dei requisiti è composto da elicitazione, analisi, specifica e verifica. La gestione dei requisiti è il controllo dell’intero processo dei requisiti, in particolare, la gestione di qualsiasi cambiamento nei requisiti. Alcuni professionisti, al contrario, chiamano l’intera attività semplicemente come analisi dei requisiti.
La richiesta di requisiti da parte delle parti interessate diventa necessaria perché le parti interessate spesso non specificano completamente le loro esigenze e non comprendono le implicazioni del nuovo sistema. Le parti interessate potrebbero non aprirsi, poiché potrebbero temere l’impatto sui loro lavori attuali. L’elicitazione, quindi, è un processo attento e, possibilmente, lungo in cui sono necessarie empatia e psicologia sottile. Bisogna stare attenti che le differenze culturali tra le diverse parti interessate e gli sviluppatori siano colmate.
Diverse tecniche sono utilizzate per suscitare requisiti. I requisiti potrebbero essere ottenuti attraverso interviste individuali, riunioni di gruppo e l’osservazione delle persone nei loro compiti. Le tecniche che possono far emergere i requisiti includono focus group, creazione di elenchi prioritari, prototipazione e confronto con altri sistemi in funzione. I requisiti da suscitare includono le esigenze aziendali del sistema, i processi aziendali degli utenti mentre utilizzano il sistema e le caratteristiche funzionali del sistema. Inoltre, è necessario individuare i requisiti non funzionali come il tempo di risposta, la disponibilità del sistema e la facilità d’uso.
La fase di analisi nell’ingegneria dei requisiti forma requisiti di basso livello che soddisferanno i requisiti di alto livello originali. Ciò include la creazione di modelli concettuali e prototipi per accertare la completezza dei requisiti. I conflitti nelle esigenze delle diverse parti interessate vengono rilevati più spesso da modelli e prototipi che da un semplice elenco di requisiti. Le caratteristiche desiderabili del sistema come sicurezza, flessibilità e manutenibilità devono essere aggiunte ai requisiti degli analisti.
I requisiti sono specificati in un documento per facilitarne la comprensione da parte di tutte le parti interessate. Nel campo del software, il documento è chiamato SRS, che sta per Software Requirements Specification. I requisiti sono verificati dalle principali parti interessate. Ciò avviene principalmente tramite presentazioni e documenti di specifica, ma talvolta anche con casi di test che corrispondono ai requisiti.
L’ingegneria dei requisiti è principalmente un’attività di comunicazione, piuttosto che tecnica. Ha bisogno di competenze multidisciplinari. L’ingegneria dei requisiti aiuta le parti interessate e gli sviluppatori a risolvere i conflitti e li unisce nei loro obiettivi; Questo porta a un sistema robusto.