Concetto: Gestione dei requisiti
La gestione dei requisiti è un approccio sistematico per individuare, documentare, organizzare e seguire i requisiti di sistema con le loro modifiche.
Relazioni
Descrizione principale

Cosa è la gestione dei requisiti?

La gestione dei requisiti è un approccio sistematico per individuare, documentare, organizzare e seguire i requisiti di sistema con le loro modifiche.

Si definisce requisito:

Una condizione o una capacità alla quale il sistema si deve conformare.

La definizione formale della gestione dei requisiti è un approccio sistematico a quanto segue:

  • Deduzione, organizzazione e documentazione dei requisiti del sistema
  • Stipula e gestione di un accordo fra il cliente ed il team del progetto al mutare dei requisiti del sistema

La chiave per una gestione efficace dei requisiti include mantenere un chiaro manifesto dei requisiti, oltre agli attributi applicabili per ogni tipo di requisito e la tracciabilità di altri requisiti ed altri prodotti di lavoro di altri progetti.

La raccolta dei requisiti può sembrare un'attività piuttosto lineare. Nei progetti reali, tuttavia, si può incorrere in difficoltà poiché:

  • I requisiti non sono sempre ovvi e possono provenire da molte fonti.
  • I requisiti non sono sempre facili da esprimere in modo chiaro in parole.
  • Esistono molti tipi diversi di requisiti in diversi livelli di dettaglio.
  • Il numero di requisiti può divenire ingestibile, se non controllato.
  • I requisiti sono correlati gli uni agli altri ed anche ad altri prodotti di lavoro del processo di progettazione software.
  • I requisiti dispongono di proprietà o di valori di proprietà univoci. Ad esempio, non sono ugualmente importanti né ugualmente semplici da soddisfare.
  • Esistono molte parti interessate, il che significa che i requisiti devono essere gestiti da gruppi di persone interfunzionali.
  • I requisiti cambiano.

Quindi, quali skill è necessario sviluppare all'interno dell'organizzazione per poter gestire al meglio queste difficoltà? Con l'esperienza si è appreso che è importante disporre dei seguenti skill:

Analisi dei problemi

L'analisi dei problemi viene effettuata per capire i problemi, le esigenze iniziali degli stakeholder e proporre delle soluzioni ad alto livello. E' un atto di riflessione ed un analisi per individuare "il problema dietro al problema". Durante l'analisi dei problemi viene raggiunto un accordo sui problemi reali e su chi siano gli stakeholder. Vengono anche definiti quali siano i confini della soluzione da una prospettiva del business, oltre ai vincoli di business sulla soluzione. Si deve inoltre analizzare lo scenario business del progetto in modo da ottenere una buona comprensione di quale ritorno ci si aspetta dall'investimento effettuato nel sistema da costruire.

Consultare anche Compito: Analisi del problema.

Comprensione delle esigenze degli stakeholder

I requisiti provengono da varie fonti; degli esempi sono i clienti, i partner, gli utenti e gli esperti di dominio. È necessario sapere in che modo determinare al meglio quali debbano essere le fonti, ottenerne l'accesso e come dedurre le informazioni da queste fonti. Gli individui che forniscono le fonti principali di queste informazioni vengono definiti gli stakeholder del progetto. Se si sta sviluppando un sistema di informazioni da utilizzare internamente nella propria azienda, si possono includere nel team di sviluppo delle persone con esperienza di utente e nel dominio business. Molto spesso si iniziano le argomentazioni a livello di modello di business, piuttosto che a livello di sistema. Se si sta sviluppando un prodotto che deve essere venduto sul mercato, si possono utilizzare in gran numero delle persone del marketing per una migliore comprensione delle esigenze dei clienti di quel settore di mercato.

Possono verificarsi delle attività di deduzione mediante tecniche quali interviste, brainstorming, creazione di prototipi concettuali, questionari ed analisi competitive. Il risultato della deduzione è un elenco di richieste o di esigenze descritte testualmente e graficamente, alle quali è stata assegnata una priorità.

Consultare anche Compito: Comprensione delle esigenze degli stakeholder.

Definizione del sistema

Definire il sistema significa tradurre ed organizzare la comprensione delle esigenze degli stakeholder in una descrizione significativa del sistema da creare. All'inizio della definizione del sistema, le decisioni vengono prese in base a ciò che costituisce un requisito, il formato della documentazione, la formalità del linguaggio, il grado di specificità dei requisiti (il numero di requisiti ed il livello dei dettagli), la priorità delle richieste e l'impegno lavorativo stimato (in genere due valutazioni molto diverse assegnate da persone differenti in esercitazioni separate), i rischi tecnici e di gestione e l'ambito iniziale. Parte di questa attività può includere dei primi prototipi e dei modelli di progettazione direttamente correlati alle richieste più importanti degli stakeholder. Il risultato della definizione del sistema è una descrizione del sistema sia grafica che in linguaggio naturale.

Consultare anche Compito: Definizione del sistema.

Gestione dell'ambito del progetto

Per eseguire un progetto in maniera efficiente è necessario assegnare con attenzione una priorità ai requisiti, in base agli input di tutti gli stakeholder, e gestirne l'ambito. Troppi progetti incappano in sviluppatori che lavorano sulle cosiddette "uova di Pasqua" (delle funzioni che lo sviluppatore ritiene interessanti e stimolanti), piuttosto che concentrare l'attenzione sulle attività che possono ridurre un rischio nel progetto o stabilizzare l'architettura dell'applicazione. Per poter risolvere o ridurre i rischi di un progetto il prima possibile, è necessario sviluppare il sistema in modo incrementale, scegliendo attentamente i requisiti per ogni incremento che riduce i rischi noti del progetto. Per fare ciò è necessario negoziare l'ambito (di ogni iterazione) con gli stakeholder del progetto. In genere questo richiede dei buoni skill di gestione delle aspettative relative all'output del progetto nelle relative diverse fasi. E' anche necessario avere il controllo delle fonti dei requisiti, dell'aspetto dei prodotti di lavoro del progetto e del processo stesso di sviluppo.

Vedere anche l'attività: Compito: gestione dell'ambito del sistema.

Perfezionamento della definizione del sistema

La definizione dettagliata del sistema deve essere presentata in modo tale che gli stakeholder possano comprenderla, convenirne ed approvarla. Deve riguardare non solo la funzionalità, ma anche la conformità con gli eventuali requisiti legali o regolamentari, l'utilizzabilità, l'affidabilità, le prestazioni, la supportabilità e la manutenibilità. Un errore commesso spesso è di credere che quella che si ritiene una creazione complessa richieda una definizione altrettanto complessa. Questo porta a delle difficoltà nello spiegare lo scopo del progetto e del sistema. Le persone possono rimanere impressionate ma non saranno in grado di fornire un buon input perché non capiscono. E' necessario utilizzare molto impegno nel comprendere l'audience a cui sono rivolti i documenti da produrre per la descrizione del sistema. Spesso potrebbe essere necessario produrre dei diversi tipi di descrizioni per audience differenti.

Si è visto che la metodologia dei casi d'uso, spesso in combinazione con dei semplici prototipi visivi, sia un modo molto efficiente per comunicare lo scopo del sistema e per definirne i dettagli. I casi d'uso sono utili per collocare i requisiti in un contesto; descrivono come verrà utilizzato il sistema.

Un altro componente della definizione dettagliata del sistema è di stabilire come verrà testato il sistema. I piani di test e le definizioni relative a quali test eseguire indicano quali capacità del sistema verranno verificate.

Consultare anche Compito: Perfezionamento della definizione del sistema.

Gestione dei cambiamenti dei requisiti

Pur ponendo la massima attenzione possibile nella definizione dei requisiti, ci saranno sempre degli elementi che cambiano. Ciò che rende difficile la gestione delle modifiche dei requisiti non è solo che un requisito cambiato significa più o meno tempo speso nell'implementazione di una nuova particolare funzione, ma anche che la modifica ad un requisito può avere un impatto su altri requisiti. È necessario fornire i requisiti di una struttura flessibile alle modifiche ed utilizzare dei collegamenti di tracciabilità per rappresentare le dipendenze fra i requisiti ed altri prodotti di lavoro del ciclo di vita dello sviluppo. La gestione delle modifiche include attività quali stabilire una linea di base, determinare quali sono le dipendenze di cui è importante tenere traccia, stabilire la tracciabilità fra le voci correlate ed il controllo delle modifiche.

Consultare anche Compito: Gestione dei cambiamenti dei requisiti.

Ulteriori informazioni

Ulteriori informazioni sull'argomento sono contenute in:

Concetto: Requisiti
Concetto: Tipi di requisiti
Concetto: Tracciabilità
White paper: Applicazione della gestione requisiti ai casi d'uso