Linee guida per la Gestione
dei Requisiti
Iolanda Salinari
2
Sommario
Introduzione
Un framework per il processo di gestione dei requisiti
Requisiti e altri processi del progetto
Requisiti e project management
Definire i requisiti
Gestire l’evoluzione dei requisiti (intro)
Scoprire i requisiti
Analizzare i requisiti
Specificare i requisiti
Verificare i requisiti
Gestire l’evoluzione dei requisiti
Linee guida per scrivere i requisiti
Le misure di qualità per valutare la specifica di un requisito software
Requisiti e standard
CMM
ISO 9000
ISO 9126 – La qualità del prodotto software
Glossario
Bibliografia e testi consigliati
Introduzione
La Gestione dei Requisiti è oggi considerata determinante per il miglioramento dello
sviluppo del software e per il successo dei progetti. E' raccomandata come prima "key
process area" nel Capability Maturity Model del SEI e dalle linee guida ISO 9000.
L'intento è quello di definire un processo che stabilisce e mantiene l'accordo tra le parti
interessate (clienti e team di progetto) sull'identificazione e l'evoluzione dei requisiti del
sistema. Tale processo comporta un approccio sistematico per individuare, analizzare,
specificare, verificare e gestire nel tempo i requisiti.
La Gestione dei Requisiti è stata ideata principalmente per migliorare lo sviluppo del
software, ridurre i costi e i rischi correlati alla sua costruzione.
Sebbene sia di importanza decisiva soprattutto nelle fasi iniziali di un progetto, si tratta
di un processo che accompagna tutto il ciclo di vita del software.
Un framework per il processo di gestione dei requisiti
3
Il framework qui presentato è una rielaborazione di quanto proposto da Karl E. Wiegers
(vedi testo "Software requirements") sulla base dell'esperienza di Tecnet Dati nella
consulenza e formazione in tale ambito. L'intero documento si ispira, inoltre, alle idee
di altri autorevoli esperti di Requirements Engineering, quali Ian Sommerville, Suzanne
Robertson, Dean Leffingwell e Don Widrig.
Il processo di Gestione dei Requisiti deve integrarsi con il project management e altri
processi del progetto.
Requisiti e altri processi del progetto
4
Requisiti e project management
La gestione dei requisiti è strettamente connessa alle attività di project management,
infatti i requisiti sono la base per la pianificazione dei progetti e le modifiche ai requisiti
hanno impatto su tale pianificazione.
I piani di progetto dovrebbero, per quanto possibile, anticipare le modifiche prevedibili
ai requisiti e conciliarle con l'ambito del progetto.
In relazione alla gestione dei requisiti, elenchiamo alcune attività d'importanza
fondamentale per il progetto:
•
•
•
•
•
Selezionare un ciclo di vita del software
Scegliere un modello per il ciclo di vita del software idoneo alle esigenze del
progetto.
Se inizialmente l'ambito del progetto e i requisiti non sono sufficientemente
determinati, può essere utile adottare un approccio incrementale, che, pur
basandosi su un'architettura robusta e aperta al cambiamento, preveda di
rilasciare il prodotto in più tranche e consenta di focalizzarsi in un primo tempo
sui requisiti più chiari.
Basare i piani di progetto sui requisiti
Occorre produrre in modo iterativo e incrementale i piani del progetto e le
relative stime d'impegno, in modo da riadattarli man mano che aumenta la
comprensione dei requisiti e la loro definizione si fa più precisa.
Rinegoziare i termini dell'accordo/contratto con i clienti quando cambiano i
requisiti
A fronte di modifiche ai requisiti (nuovi requisiti, variazioni a requisiti esistenti),
valutare l'impatto su tempi e costi e rinegoziare i termini dell'accordo. Gestire in
modo opportuno gli eventuali rischi associati all'intervento richiesto.
Documentare e gestire i rischi di progetto
Individuare i rischi correlati al contesto del progetto e alla gestione dei requisiti
(es: il successo del progetto dipende da entità esterne quali altri fornitori o altri
progetti; è richiesto l'utilizzo di tecnologie innovative e poco conosciute dai
progettisti; assenza di sponsor, è impossibile coinvolgere gli utenti in modo
continuativo, turnover nel gruppo di progetto o degli utenti; scarsa conoscenza
del dominio del problema, ecc.).
Documentare i rischi, definire le azioni correttive più idonee e controllarne lo
stato di avanzamento e l'efficacia.
Tracciare il carico di lavoro richiesto per le attività di gestione dei requisiti
Tener traccia dell'impegno richiesto dalle attività di definizione e gestione dei
requisiti per migliorare la pianificazione di tali attività nei progetti successivi.
Definire i requisiti
Le principali attività sono le seguenti:
•
•
•
Individuare le classi di utenti da coinvolgere nella definizione dei requisiti
Scoprire le necessità dei clienti / utenti
Capire gli attuali scenari di operatività degli utenti e le necessità del business
5
•
•
•
•
•
•
Analizzare le informazioni ricevute dagli utenti, differenziandole in requisiti
funzionali, vincoli di varia natura, regole di business, attributi di qualità,
necessità, suggerimenti e informazioni di vario genere
Definire i confini del sistema, individuare eventuali sottosistemi, suddividere ed
allocare i requisiti del sistema in accordo a tale partizionamento
Identificare i fattori di performance e gli attributi di qualità più importanti
Tradurre i requisiti nelle specifiche del sistema
Generare e valutare proposte alternative di implementazione del sistema al fine
di negoziare i requisiti e le priorità di implementazione
Riesaminare la specifica dei requisiti per assicurarne una comprensione comune (a
gruppo di progetto e clienti / utenti) e per correggere ogni omissione, conflitto o
ambiguità prima dell'approvazione dei requisiti stessi.
Per il dettaglio comincia da "Scoprire i requisiti"
Gestire l’evoluzione dei requisiti (intro)
Prevede le seguenti attività:
•
•
•
•
•
•
Definire una baseline dei requisiti
Gestire la tracciabilità tra requisiti e prodotti dello sviluppo (documentazione e
componenti software)
Esaminare le modifiche proposte e valutarne tutti gli impatti (a livello di altri
requisiti, della documentazione e dei componenti software; dei piani di lavoro,
ecc.) per deciderne l'approvazione
Negoziare i nuovi impegni stimati in base all'impact analysis effettuata
Mantenere i piani di progetto allineati ai requisiti
Controllare lo stato del requisito e le attività di modifica durante l'intero ciclo di
vita del sistema.
Per il dettaglio vedi "Gestire l'evoluzione dei requisiti"
Scoprire i requisiti
Si tratta di indagare le necessità dei clienti / utenti e determinare i requisiti che
possono essere opportunamente implementati nel sistema per soddisfare tali necessità.
La tecnica principale per la scoperta dei requisiti consiste nell'identificazione dei casi
d'uso, ovvero delle modalità di utilizzo del sistema da parte dei suoi utilizzatori (attori)
per eseguire specifiche funzionalità del sistema stesso.
Ciò che viene richiesto dal committente e dagli altri interlocutori interessati, costituisce
il punto di partenza per l'individuazione dei casi d'uso.
Nello stesso tempo, i casi d'uso rappresentano uno strumento estremamente efficace ed
efficiente per determinare e analizzare i requisiti, portare alla luce nuovi requisiti non
ancora emersi, e per chiarire requisiti ambigui, generici o in conflitto tra loro.
L'efficacia dei casi d'uso per la scoperta dei requisiti è legata al fatto che, nel dialogo
tra progettisti e le altre funzioni interessate, vengono analizzati per ogni caso d'uso gli
scenari concreti di operatività degli utilizzatori nei confronti del sistema, le sequenze di
passi, le varianti e le eccezioni.
In questo modo il committente e le altre funzioni interessate possono esprimere
6
feedback sugli scenari concreti ipotizzati dal progettista, contribuendo al chiarimento
dei requisiti esistenti o alla definizione di nuovi requisiti.
I casi d'uso servono quindi a chiarire che cosa dovrà fare il sistema e, una volta
concordati con il committente, costituiscono il punto di partenza per la progettazione
del sistema stesso e il riferimento principale per la definizione, progettazione ed
esecuzione dei test da effettuare per la verifica del sistema in sede di accettazione.
E' opportuno che l'identificazione dei casi d'uso parta da un'analisi dei processi di
business, per chiarire il contesto organizzativo in cui si andrà a collocare il sistema
software da realizzare.
In particolare, nel caso di rifacimento di un sistema esistente, non opportunamente
documentato o comunque poco conosciuto dai progettisti del nuovo sistema, può
risultare utile descrivere, in modo sommario, i casi d'uso relativi ai processi di business
del sistema attuale.
In tal modo sarà possibile far emergere tutte le criticità e le opportunità di
miglioramento, sia a livello organizzativo che a livello informatico, prima di procedere
alla definizione dei casi d'uso relativi alle funzionalità software del nuovo sistema da
realizzare.
Passi operativi principali
Descrivere gli obiettivi di business del progetto
Chiarire e descrivere le motivazioni di business (esigenze di
cambiamento funzionale e/o organizzativo e/o tecnologico; eventuali
problemi da risolvere) che hanno dato origine al progetto e i benefici
attesi. Descrivere in modo sintetico le feature richieste al prodotto e i
vincoli imposti (di business, tecnologici, ecc..). Definire i confini (scope)
del progetto.
Individuare interlocutori e fonti dei requisiti
Individuare gli stakeholder da coinvolgere nella raccolta dei requisiti.
Identificare almeno una persona per ogni classe di utenti, che ne possa
rappresentare in modo opportuno le necessità.
Identificare altre fonti per la scoperta dei requisiti (report, documenti,
manuali, procedure organizzative, documentazione del sistema
esistente, .).
Identificare i casi d'uso
Identificare con gli utenti le modalità di utilizzo del sistema necessarie
7
per portare a termine i loro compiti (casi d'uso). Discutere i dialoghi e
le interazioni tra utenti e sistema necessari per completare ogni task.
"Osservare" gli utenti durante lo svolgimento delle loro attività;
documentare il workflow dei processi di business per facilitare
l'individuazione dei casi d'uso e dei requisiti funzionali che supportano
tali processi.
Documentare i casi d'uso con un template standard e derivare i requisiti
funzionali dai casi d'uso.
Scoprire i requisiti non funzionali
Individuare gli attributi di qualità del prodotto (efficienza, usabilità,
ecc.) e altri requisiti non funzionali che soddisfino le aspettative dei
clienti.
L'analisi dei problemi del sistema attuale e delle richieste di
manutenzione correttiva o perfettiva può essere determinante per
l'individuazione delle caratteristiche più appropriate da includere nel
nuovo prodotto.
Utilizzare tecniche diverse per la scoperta dei
requisiti
Oltre ai casi d'uso, l'individuazione dei requisiti può richiedere tecniche
diverse:
•
•
•
•
•
Interviste
Brainstorming
JAD
Prototipazione
Analisi documentazione esistente (eventuale Reverse
Engineering)
Analizzare i requisiti
Si tratta di analizzare, raffinare e valutare i requisiti raccolti in modo da:
•
•
assicurarsi che siano comprensibili per tutti gli stakeholder;
individuare eventuali errori, omissioni o altre carenze.
L'obiettivo è quello di sviluppare i requisiti a livelli di qualità e di dettaglio sufficienti
per poter formulare una o più ipotesi di soluzione per il prodotto da realizzare,
8
effettuare stime realistiche del progetto e procedere con la progettazione e la
realizzazione del prodotto stesso.
Passi operativi principali
Definire il diagramma di contesto del sistema
Disegnare il diagramma di contesto del sistema per individuarne i
confini e le interfacce con gli attori.
Costruire prototipi per chiarire i requisiti
Costruire prototipi delle interfacce utente per rendere maggiormente
tangibili i concetti e le possibilità di soluzione. (Soprattutto nel caso in
cui i requisiti non siano sufficientemente chiari)
Il prototipo delle interfacce utente aiuta a chiarire gli scenari di
interazione, espressi attraverso i casi d'uso, e i requisiti sottostanti.
Valutare la fattibilità dei requisiti
Valutare la possibilità di implementare i requisiti a costi accettabili e
con prestazioni adeguate nell'ambiente di implementazione previsto.
Vagliare i rischi associati alla realizzazione di ogni requisito.
Assegnare una priorità ai requisiti
Indurre gli utenti a classificare la priorità di implementazione dei
requisiti. Tale classificazione è un input fondamentale per determinare
i rilasci incrementali del prodotto.
Modellare i requisiti
Sviluppare i casi d'uso individuati, per definire ciò che il sistema deve
essere in grado di fornire ed analizzare ulteriormente i requisiti.
Iniziare a produrre i modelli di analisi a partire dai casi d'uso
(diagrammi delle classi o diagrammi E/R, diagrammi di attività,
diagrammi di stato, ecc.) per esplorare funzionalità e informazioni
richieste al sistema e individuare eventuali omissioni o incongruenze
9
nei requisiti.
Creare un glossario
Creare un glossario dei termini di business del sistema per rendere
comune la terminologia al team di progetto e agli utenti.
Specificare i requisiti
I requisiti devono essere documentati ed espressi in modo coerente, non ambiguo e
verificabile.
La specifica dei requisiti deve essere chiara sia per gli utenti che per i progettisti. (Vedi
anche "Linee guida per scrivere i requisiti").
La documentazione deve essere facilmente accessibile per tutti gli attori coinvolti (team
di progetto, committenti, utenti).
Passi operativi principali
Adottare un template standard per documentare i
requisiti software
Fare riferimento al Software Requirement Specification template
secondo gli standard IEEE.
Documentare l'origine di ogni requisito
Documentare l' origine di ogni requisito: un caso d'uso o un altro input
del cliente (es: un documento di richiesta offerta), una regola di
business, uno standard aziendale, un vincolo legislativo o derivato da
un'altra fonte esterna all'azienda, ecc...
Assegnare un identificativo ad ogni requisito
Assegnare un identificativo univoco al singolo requisito per poterlo
referenziare e gestirne la tracciabilità lungo tutto il ciclo di vita del
prodotto.
Gestire la versione del requisito per poter tracciare tutte le modifiche
apportate al requisito.
10
Definire gli altri attributi di ogni requisito
Oltre all'identificativo e alla descrizione, ogni requisito ha una serie di
attributi, che ne consentono una maggiore specificazione:
•
•
•
•
•
•
•
•
•
•
Tipologia requisito
Richiedente
Data richiesta, data ultima modifica
Versione (per tener traccia dell'evoluzione del singolo requisito)
Importanza per il committente (es: essenziale, importante,
secondario)
Priorità di rilascio (es: alta, media, bassa)
Stato (es: proposto, approvato, implementato, verificato,
annullato)
Criterio di validazione o accettazione
Origine
Stabilità (indica il grado di probabilità con cui il requisito
cambierà in futuro)
Creare una matrice di tracciabilità dei requisiti
La matrice serve a gestire la tracciabilità dei requisiti con altri requisiti
e con i casi d'uso, in prima battuta, e successivamente con i diversi
"artefatti" dello sviluppo (classi, ecc.) fino ai componenti fisici che li
implementano e con le specifiche dei test che li verificano.
Verificare i requisiti
Occorre effettuare con i clienti una revisione dei requisiti documentati, per esaminarne
l'accuratezza e la completezza, prima di procedere all'approvazione degli stessi.
(vedi "Le misure di qualità per valutare la specifica di un requisito software")
Passi operativi principali
Definire i criteri di accettazione dei requisiti
Stabilire per ogni requisito i criteri di accettazione che guideranno i
test di verifica della rispondenza del prodotto al requisito stesso.
11
Scrivere i casi di test per i requisiti
Specificare i casi di test a fronte dei casi d'uso (correlati ai requisiti
funzionali) permette di scoprire ambiguità, imprecisioni e omissioni
nella documentazione dei requisiti.
Individuare eventuali conflitti o incongruenze tra i
requisiti
I conflitti tra i requisiti possono essere dovuti a
•
•
incomprensioni, fraintendimenti, errori
reali divergenze di opinioni ed intenzioni.
I conflitti del primo tipo sono, di norma, quelli più facilmente
risolvibili.
Per risolvere i conflitti del secondo tipo occorre utilizzare opportune
tecniche di negoziazione e mediazione.
Gestire l’evoluzione dei requisiti
Richiede attività quali:
•
•
•
•
mantenere traccia e storia di ogni requisito e delle sue variazioni
determinare quali dipendenze tra i requisiti sia utile tracciare
stabilire relazioni di tracciabilità tra i requisiti e i casi d'uso, tra i casi d'uso e i
prodotti dello sviluppo
gestire la versione dei requisiti.
E' opportuno definire un vero e proprio processo di controllo e approvazione delle
modifiche richieste.
Passi operativi principali
Definire un processo per controllare le modifiche
ai requisiti
Definire un processo per gestire le modifiche proposte ai requisiti
(nuovi requisiti o variazioni a requisiti esistenti), analizzarle,
approvarle e decidere come e quando attuarle.
12
Definire un unico canale di controllo delle
modifiche
In progetti di dimensione considerevole è necessario definire un canale
ufficiale, il CCB (Change Control Board), che ha il compito di
determinare l'impatto della modifica sul sistema e decidere come e
quando effettuare la modifica stessa.
Stabilire una baseline dei requisiti
La baseline è una fotografia dei requisiti inclusi nell'accordo iniziale
con il cliente; tutte le modifiche richieste successivamente possono
essere effettuate solo tramite il processo di "controllo delle modifiche"
(change control) definito. Sottoporre il documento dei requisiti a
procedure di change management e version control.
Valutare le modifiche proposte ai requisiti
Analizzare le modifiche proposte per valutarne l'impatto su altri
requisiti o sui prodotti dello sviluppo (utilizzare a questo scopo le
matrici di tracciabilità) e determinare il carico di lavoro necessario.
Definire un piano per gestire le modifiche.
Utilizzare un sistema che tracci tutte le richieste di modifica (change
request) e le anomalie (defect), possibilmente in un repository
centrale.
Il sistema dovrebbe essere usato per catturare tutti gli input e
trasmetterli all'autorità del CCB per la loro risoluzione.
Per l'approvazione di una richiesta di modifica, il CCB deve considerare
una serie di fattori, tra cui:
•
•
•
l'impatto della modifica sulle funzionalità del sistema, su tempi
e costi
l'impatto su clienti e stakeholder esterni: altri progetti, fornitori
di componenti, ecc..
il potenziale effetto di "destabilizzazione" del sistema in seguito
alla modifica.
Se le richieste di modifica hanno impatto sui tempi e i costi, è
necessario rinegoziare i termini dell'accordo con il cliente prima di
approvarle.
13
Gestire le modifiche in modo "gerarchico"
Una modifica ad un requisito può avere impatto su un altro requisito,
un caso d'uso, sul disegno del sistema, su un componente fisico
realizzato, ma anche su costi e tempi pianificati, su un rischio
associato al progetto, ecc.
Le modifiche devono essere introdotte in modo top-down seguendo la
tracciabilità tra i requisiti e i prodotti dello sviluppo (non prima nel
codice e poi.).
Mantenere la storia di tutte le modifiche ai
requisiti
E' importante conoscere quando, come e perché un requisito è
cambiato.
Tracciare lo stato di ogni requisito
Per avere una visione chiara dello stato di avanzamento di ogni
requisito (proposto, approvato, implementato o verificato), in modo
da conoscere in ogni istante il numero dei requisiti in ognuna delle
diverse categorie di stato.
Misurare la stabilità dei requisiti
Un numero eccessivo di modifiche potrebbe essere sintomo di una
scarsa comprensione del problema o di una definizione inadeguata
degli obiettivi e dell'ambito del progetto oppure di frequenti
cambiamenti negli scenari di mercato o nelle strategie aziendali.
Monitorare la stabilità dei requisiti può consentire di evidenziare
tempestivamente i rischi correlati ed intraprendere le opportune
azioni correttive.
Linee guida per scrivere i requisiti
•
•
Scrivere frasi e paragrafi brevi
Utilizzare la forma attiva del verbo
14
•
•
•
•
•
•
•
•
•
•
Scrivere frasi complete dal punto di vista ortografico, grammaticale (soggetto,
verbo, completamento oggetto, ecc.) e della punteggiatura
Utilizzare termini coerenti con quanto definito nel glossario (di progetto, di
sistema o aziendale)
Assicurarsi che il significato dei termini utilizzati sia conosciuto, compreso dagli
stakeholder.
Esprimere i requisiti nella forma "il sistema deve." , "l'utente deve.", con frasi in
cui compaia una verbo e un risultato osservabile. Ad esempio: " Il sistema deve
visualizzare l'elenco dei containers presenti in magazzino"
Per ridurre l'ambiguità, evitare termini vaghi come user-friendly, facile, semplice,
rapido, efficiente, accettabile, robusto, ecc. Verificare che cosa significa
esattamente per il cliente un termine quale user-friendly o rapido, ecc.
Evitare parole come: migliorare, massimizzare, minimizzare, ottimizzare, ecc..
Quantificare il grado di miglioramento necessario o indicare i valori massimo e
minimo accettabili per un dato parametro.
Evitare paragrafi lunghi che contengono più requisiti
Tipicamente i requisiti sono espressi in prima battuta in modo vago e astratto,
man mano che l'esplorazione del sistema va avanti, emergono requisiti più
specifici, più dettagliati e meno ambigui. Scomporre un requisito di alto livello che
risulti ambiguo, in più requisiti per chiarirne il significato ed eliminarne le
ambiguità
Una linea guida per scrivere requisiti ad un opportuno livello di granularità
consiste nello specificare requisiti in modo che siano individualmente verificabili
(sottoponibili a test) .
Se è sufficiente un piccolo numero di casi di test per verificare che un requisito sia
correttamente implementato, probabilmente il requisito è scritto al giusto livello
di dettaglio.
Se i casi di test sono numerosi e diversificati, è opportuno suddividere il requisito
in più requisiti.
Evitare di specificare dettagli di disegno
Le misure di qualità per valutare la specifica di un requisito software
Secondo gli standard IEEE 830 un requisito deve essere:
•
•
•
•
•
corretto
deve descrivere che cosa vuole lo stakeholder
non ambiguo
deve essere soggetto ad una sola possibile interpretazione
completo (nell'insieme)
un insieme di requisiti è completo se e solo se descrive tutti i requisiti significativi
per l'utente, inclusi quelli che riguardano le funzionalità, le performance, i vincoli
di disegno, i dati o le interfacce esterne
consistente
non deve essere in conflitto con altri requisiti
classificato
deve riportare l'importanza per l'utente (grado di soddisfazione del cliente nel
caso in cui il requisito venga implementato con successo) e il grado di stabilità
(un indicatore della probabilità con cui il requisito cambierà in futuro)
15
•
•
•
verificabile
deve essere possibile verificare la rispondenza del prodotto al requisito
modificabile
deve essere possibile effettuare modifiche al requisito in modo semplice,
completo e coerente
tracciabile
deve essere chiara l'origine del requisito, deve essere inoltre possibile definire
una corrispondenza tra il requisito e altri requisiti e tra il requisito e i prodotti
dello sviluppo
Requisiti e Standard
CMM
Il Capability Maturity Model è un modello di riferimento per migliorare il processo di
lavoro delle organizzazioni di sviluppo software.
E' stato sviluppato dal Software Engineering Institute sotto l'egida del Dipartimento della
Difesa americano.
Il modello esprime l'organizzazione di riferimento dei processi di sviluppo e
manutenzione del software attraverso le "key process area", ovvero quell'insieme di
attività che influenzano maggiormente i vari aspetti della produzione e della qualità del
software.
Il modello definisce 5 livelli di maturità e descrive quali passi occorre intraprendere per
passare da un processo non definito e instabile ad un processo maturo e ottimizzato.
Livelli di maturità e key process area
Livello di maturità
Key Process Area
1. Iniziale (initial)
Il processo non è ben
definito, segue strategie
occasionali e caotiche, il
suo successo dipende solo
dall'impegno degli individui.
2. Ripetibile (repeteable)
Sono eseguite le attività di
base per la gestione dei
progetti in modo da
controllare: le funzionalità,
i costi e la schedulazione.
Il processo è
sufficientemente
Requirements Management
Software Project Planning
Software Project Tracking and
Oversight
Software Subcontract Management
Software Quality Assurance
Software Configuration
Management
16
disciplinato per essere
ripetuto.
3. Definito (defined)
Il processo è conforme agli
standard
dell'organizzazione.
Le attività di gestione e
progettazione sono
documentate e integrate.
Organization Process Focus
Organization Process Definition
Training Program
Integrated Software Management
Software Product Engineering
Intergroup Coordination
Peer Reviews
4. Gestito (managed)
Quantitative Process Management
Dettagliate misure del
Software Qualità Management
processo e dei prodotti sono
rilevate e raccolte, in modo
da tener sotto controllo
entrambi.
5. Ottimizzato (optimizing)
Defect Prevention
Il miglioramento continuo
Technology Change Management
del processo è perseguito
Process Change Management
tramite l'applicazione
sistematica delle attività di
raccolta dei feedback di
processo, l'analisi dei difetti
e delle cause che li hanno
generati, l'introduzione di
tecnologie innovative.
Il CMM riassume la key process area "Requirements Management" come segue:
"Scopo della Gestione dei Requisiti è quello di stabilire tra cliente e progettisti
software una comprensione comune dei requisiti del cliente che saranno affrontati nel
progetto software"
Obiettivi:
•
•
I requisiti per lo sviluppo software sono posti sotto controllo in modo da costituire
la baseline ad uso dei progettisti software e del management
I piani, i prodotti e le attività dello sviluppo software devono essere coerenti con i
requisiti del sistema
Le attività previste sono le seguenti:
1. il team di progetto rivede i requisiti prima che essi vengano incorporati nel
progetto
17
2. il team di progetto utilizza i requisiti come base per la definizione dei piani, dei
prodotti e delle attività dello sviluppo
3. le modifiche ai requisiti vengono esaminate e riviste prima di essere incorporate
nel progetto.
ISO 9000
ISO 9000 è un insieme di standard per il controllo e la guida della qualità in tutti i settori
produttivi.
L'organizzazione che adotta ISO 9000 deve dotarsi di un Sistema Qualità che definisce le
modalità per valutare, controllare e guidare la qualità di tutti i processi aziendali.
I dettagli del sistema qualità sono contenuti in un Manuale della Qualità.
ISO 9001 rappresenta un modello per l'assicurazione della qualità nella progettazione,
sviluppo, produzione, installazione e assistenza.
Per quanto riguarda la gestione dei requisiti, la normativa ISO stabilisce che: "per
procedere allo sviluppo del software, il fornitore dovrebbe avere un insieme completo e
non ambiguo di requisiti funzionali".
Lo stesso documento dichiara che tali requisiti dovrebbero includere tutti gli aspetti che
determinano l'accettazione del sistema realizzato da parte del cliente, quali requisiti
relativi a prestazioni, sicurezza, affidabilità, riservatezza.
ISO 9000 enfatizza la necessità di un'effettiva collaborazione tra clienti e progettisti del
sistema software richiedendo:
•
•
•
•
la responsabilità di entrambe le parti nella definizione dei requisiti
la definizione di metodi e procedure per concordare e approvare le modifiche ai
requisiti
l'impegno a prevenire fraintendimenti e incomprensioni nei requisiti
la definizione di procedure per memorizzare e rivedere i risultati delle discussioni
sui requisiti.
ISO 9126 - La qualità del prodotto software
Le caratteristiche di qualità del prodotto software secondo la norma ISO/IEC 9126:
Caratteristica
Sotto-caratteristica
FUNZIONALITA' (functionality)
Adeguatezza
rispondenza del sistema rispetto
alle necessità informative
dell'utente
Accuratezza
livello di precisione dei risultati
Interoperabilità
capacità di interazione con altri
sistemi
Conformità
aderenza a standard,
18
regolamentazioni legislative e
normative specifiche
Sicurezza
capacità di proteggere il sistema
da accessi non autorizzati
AFFIDABILITA' (reliability)
Maturità
mancanza di interruzioni per
malfunzionamenti
Tolleranza ai difetti
livello di operatività garantito dal
sistema in caso di
malfunzionamenti
Ricoverabilità
capacità di ripristino delle
normali condizioni d'uso dopo
interruzioni
USABILITA' (usabilità)
Comprensibilità
facilità di comprensione della
logica funzionale e operativa del
sistema
Apprendibilità
facilità di apprendimento dell'uso
del sistema
Operabilità
facilità di utilizzo del sistema
EFFICIENZA (efficiency)
Prestazioni di tempo
capacità di minimizzare i tempi di
risposta e massimizzare il carico
elaborativo del sistema
Utilizzo risorse
capacità di ottimizzare l'utilizzo
delle risorse del sistema
MANUTENIBILITA'
(maintainability)
Analizzabilità
facilità di diagnosi dei problemi e
di individuazione dei punti di
intervento
Modificabilità
facilità di modifica
Collaudabilità
facilità di testare le modifiche
apportate
Stabilità
capacità di sopportare più
modifiche senza produrre "effetti
collaterali" indesiderati
PORTABILITA' (portability)
Adattabilità
19
predisposizione del sistema
all'installazione in ambienti
hw/sw differenti
Aderenza
conformità con gli standard in
vigore negli ambienti target
Installabilità
facilità di installazione
Sostituibilità
capacità di rimpiazzare un'altra
applicazione con simili
funzionalità
Corrispondenza tra caratteristiche di qualità secondo ISO e tipologia di
requisiti
I requisiti funzionali e alcuni dei requisiti non funzionali relativi al prodotto software
possono configurarsi come qualità attese nel prodotto e trovano quindi corrispondenza
con le "caratteristiche di qualità del software" ISO. La tabella sottostante illustra la
corrispondenza tra le tipologie di requisito, così come sono state indicate nel presente
documento (vedi glossario), e le caratteristiche di qualità ISO.
Tipologie di requisiti
Caratteristiche
Normativo,
di
Organiz di
di
di qualità
Funzionale
Tecnologico Legale
Utilizzo zativo Progettazione Sicurezza
del software
Fiscale
F
U
N
Z
I
O
N
A
L
I
T
A'
A
F
F
I
D
A
B
I
L
I
T
A'
Adeguatezza
U
Accuratezza
Interoperabilità
X
X
X
X
X
X
Conformità
Sicurezza
X
X
Tolleranza ai
difetti
X
X
Ricoverabilità
X
Comprensibilità
X
Maturità
X
20
S
A
B
I
L
I
T
A'
E
F
F
I
C
I
E
N
Z
A
M
A
N
U
T
E
N
I
B
I
L
I
T
A'
P
O
R
T
A
B
I
L
I
T
A'
Apprendibilità
X
Operabilità
X
Prestazioni di
tempo
X
Utilizzo Risorse
X
Collaudabilità
X
X
X
Stabilità
X
Adattabilità
Installabilità
X
X
X
Sostituibilità
X
Analizzabilità
Modificabiità
Aderenza
21
Glossario
Brainstorming
E' una tecnica utilizzata nelle riunioni di gruppo per generare idee su un determinato
argomento.
Ad ogni persona del gruppo è richiesto di suggerire più idee possibili. Nessuna idea è
respinta durante la sessione di "storming", solo alla fine le idee vengono discusse dal
gruppo, valutate e selezionate.
Change Control Board
Consiglio (comitato guida) per il controllo delle modifiche. Può essere costituito da una
varietà di stakeholder, che insieme hanno l'autorità di valutare le modifiche richieste ai
requisiti e la competenza tecnica per decidere quali richieste di modifica debbano
essere ufficialmente approvate.
Criterio di accettazione
Il criterio di accettazione o di validazione indica il criterio sulla base del quale il
committente verificherà la conformità del prodotto al requisito in fase di accettazione.
Per i requisiti funzionali, i criteri di validazione saranno espressi in termini di casi di
prova a fronte dei casi d'uso corrispondenti.
Per i requisiti non funzionali, è necessario che il criterio di validazione sia non ambiguo
e verificabile senza lasciare troppi margini all'interpretazione soggettiva
IEEE
Institute of Electrical and Electronics Engineers. E' un organismo mondiale nato nel 1963;
è diventato un punto di riferimento per tutto ciò che riguarda l'innovazione tecnologica
nell'ambito dell'elettronica, dell'informatica, ecc.
ISO
International Organization for Standardization
È un'associazione mondiale di organismi nazionali di normazione.
L'ISO collabora strettamente con l'IEC (International Electrotechnical Commission) in
tutti i campi di normazione del settore elettrotecnico.
Joint Application Design (JAD)
Tecnica sviluppata dall'IBM negli anni '70. Si basa su riunioni intensive (senza telefono e
con partecipazione full-time) di committenti, utenti e progettisti. Le riunioni sono
guidate da un "conduttore" possibilmente esterno al gruppo di progetto.
Il conduttore intervista anticipatamente il manager e gli utenti per definire l'ambito e gli
obiettivi della riunione e determinare i partecipanti alla sessione JAD.
L'efficacia dell'approccio sta nell'integrazione di tecniche legate al comportamento e
alle dinamiche di gruppo con aspetti metodologici.
Feature
Caratteristica funzionale del sistema; espressione, ad alto livello di astrazione, del
comportamento del sistema.
Un servizio fornito dal sistema per soddisfare una o più necessità dell'utente.
22
Prototipazione
Realizzazioni parziali di un prodotto software.
La prototipazione è utilizzata principalmente per risolvere anticipatamente incertezze
del ciclo di sviluppo: un prototipo rappresenta un modo eccellente per evidenziare e
risolvere ambiguità e incompletezze dei requisiti.
Un prototipo può servire a:
•
•
•
chiarire e completare i requisiti
esplorare alternative di disegno (ad esempio per valutare le scelte architetturali)
fornire un nucleo iniziale del prodotto che evolverà nel prodotto finale (in questo
caso attenzione all'approccio "quick & dirty", non far evolvere il prototipo in un
prodotto senza un'analisi solida!).
In particolare, il prototipo delle interfacce utente è essenziale per chiarire gli scenari di
interazione dei casi d'uso e i requisiti ad essi correlati.
Requisito
E' una caratteristica del sistema, richiesta al gruppo di progetto dal committente (o da
un altro interlocutore interessato), perché ritenuta necessaria per risolvere determinati
problemi o raggiungere i propri obiettivi.
Requisito funzionale
Funzionalità attesa dal prodotto per soddisfare determinati obiettivi.
Esempi: "il sistema deve permettere di aprire un conto corrente" , "il sistema deve
consentire di effettuare prelievi dal conto corrente".
Requisito non funzionale
Una qualità richiesta al prodotto relativamente a usabilità, performance, sicurezza, ecc.
oppure l'espressione di un vincolo inerente i tempi e le modalità di rilascio del prodotto,
il budget previsto per la sua realizzazione, ecc.
Reverse Engineering
Il Reverse Engineering è un insieme di tecniche e di strumenti che consentono di :
•
•
•
•
analizzare il software esistente
derivarne in automatico la documentazione
modificarne l'impostazione
rigenerare il codice (Forward Engineering).
In particolare, a riguardo della componente dati di un sistema, è possibile, tramite il
reverse engineering, derivare le strutture concettuali dei dati a partire da DDL o copy di
tracciati record di archivi esistenti.
Stakeholder
Letteralmente: chi tiene le puntate in una scommessa.
Gli stakeholder di un progetto sono tutti coloro che sono coinvolti nella definizione dei
requisiti e che sono in qualche modo interessati all'esito del progetto:
•
committenti (clienti)
23
•
•
•
•
•
•
•
•
sponsor
utilizzatori del sistema
funzioni aziendali quali Marketing, Esercizio dei Sistemi
partecipanti allo sviluppo
esperti del dominio del problema
esperti di particolari tecnologie
esperti legali
rappresentanti di aziende, associazioni o enti esterni all'azienda con cui il sistema
deve interagire (es: banche o enti nazionali) o autorità interessate al rispetto di
vincoli esterni predeterminati.
Tipologia requisito
Classificazione del requisito.
E' possibile una prima distinzione tra requisiti funzionali e non funzionali
E' opportuno classificare ulteriormente i requisiti non funzionali, ad esempio:
•
•
•
•
•
•
•
•
di utilizzo
di sicurezza
temporale
economico
organizzativo
di progettazione
tecnologico
normativo, legale, fiscale.
La suddivisione in tipologie dei requisiti funge da template per la raccolta e la
qualificazione dei requisiti, serve essenzialmente a verificare se i requisiti stessi sono
stati sufficientemente compresi da poter essere opportunamente classificati.
Seguono alcuni esempi per ogni tipologia di requisito non funzionale
Classificazione requisiti non funzionali
Utilizzo
Requisito relativo alle modalità di
utilizzo del sistema da parte degli
utenti.
Rientrano in questa categoria i
requisiti di:
•
Disponibilità: specifica quando
il sistema deve essere
utilizzabile.
Es.: "il sistema deve essere
attivo 24 ore su 24"
•
Documentazione: completezza,
chiarezza, facilità di
consultazione, facilità di
24
aggiornamento.
Es.: "il sistema deve prevedere
un help a livello di singolo
campo"
•
Efficienza: efficienza di
memoria, efficienza di
esecuzione
Es.: "il sistema deve consentire
di far lavorare simultaneamente
300 utenti nell'orario dalle 9
alle11, 150 utenti negli altri
orari"
•
Supporto: installazione,
assistenza, help desk
Es.: "deve essere disponibile un
numero verde per l'assistenza
alla clientela"
•
Training
Es.: "gli utilizzatori dovranno
partecipare ad una settimana di
corso"
•
Usabilità: utilizzo operativo del
sistema da parte dell'utente
(consistenza, univocità di
comportamento, semplicità,
chiarezza )
Es.: "il sistema deve poter
essere utilizzato da bambini di
10 anni"
di Sicurezza
Requisito che specifica chi è
autorizzato ad accedere al sistema e
in quali circostanze tale accesso è
garantito
Es.:
"il prelievo al bancomat è autorizzato
solo a chi è in possesso della carta
bancomat ..."
25
Temporale
Requisito che esprime un vincolo sulle
date di rilascio del sistema o sulle
date di completamento di specifiche
attività di progettazione
Esempi:
"il sistema deve essere rilasciato in
produzione entro la fine del 2003"
"le specifiche di analisi devono essere
completate entro la data ..."
Economico
Requisito che esprime un vincolo sui
costi di progettazione del sistema o sui
costi gestionali (risorse umane,
energia, ...) del sistema in
produzione.
Esempi:
"il costo globale per la progettazione
del sistema non può superare l'importo
di ..."
"il numero delle risorse impegnate in
attività gestionali continuative non
può essere superiore a ..."
Organizzativo
Requisito che specifica un'attribuzione
di responsabilità organizzativa.
Esempi:
"gli ordini di importo superiore al
massimale previsto per il reparto
devono essere autorizzati dal direttore
di stabilimento"
"la selezione dei servizi previsti per le
polizze deve essere effettuata dal
marketing"
26
di Progettazione
Requisito relativo all'architettura
logica o ad altre caratteristiche
"tecniche" del software che il sistema
dovrà possedere.
Rientrano in questa categoria i
requisiti di:
•
Interoperabilità: capacità di
interagire con sistemi,
piattaforme, protocolli
eterogenei
Es.: "deve essere possibile
accedere a DBMS eterogenei"
•
Manutenibilità: tracciabilità,
modularità, ...
Es.: "deve essere possibile
modificare gli algoritmi per il
calcolo delle tasse ogni anno,
sulla base dell'evoluzione delle
norme legislative"
•
Portabilità: specificano altre
piattaforme o ambienti su cui i
sistema deve essere "portato" in
futuro
Esempi:
"il prodotto deve funzionare con
Window 98 e UNIX"
"il sistema deve funzionare
anche sul mercato giapponese"
•
Riusabilità: capacità di
incorporare componenti
predefinite
Es.: "devono essere utilizzate le
routine standard di calcolo del
rateo"
Tecnologico
Requisito relativo a specifiche
tecnologie (prodotti o tipologie di
prodotti) HW e SW che il sistema dovrà
utilizzare.
Esempi:
27
"il sistema deve utilizzare il DBMS
Oracle"
"il sistema deve essere in grado di
interfacciarsi con qualsiasi tipo di
browser HTML"
Normativo, legale, fiscale
Requisito relativo a leggi o standard a
cui il sistema deve essere conforme.
Esempi:
"il sistema deve essere conforme alla
legge sulla privacy"
"la definizione del nuovo
prodotto/servizio deve essere
coerente con la normativa prevista a
livello aziendale"
Tracciabilità
Gestione delle corrispondenze tra elementi diversi, appartenenti a livelli di astrazione
diversa, ad es. tra un livello logico e un livello fisico, tra una classe di oggetti e una
tabella Oracle.
La tracciabilità tra requisiti e prodotti dello sviluppo è essenziale, perché:
•
•
fornisce una visione chiara dello stato di avanzamento di ogni requisito
quando il requisito è soggetto a revisione, è possibile verificare l'impatto della
modifica sul sistema.
Tale tracciabilità è gestita innanzitutto attraverso la correlazione tra requisiti e casi
d'uso.
28
Bibliografia e testi consigliati
SOMMERVILLE, Ian, SAWYER, Pete "Requirements Engineering: A Good Practice Guide"Wiley and Sons 1997
SOMMERVILLE, Ian, KOTONYA, Gerald "Requirements Engineering: Processes and
Techniques"- Wiley and Sons 1998
ROBERTSON Suzanne, ROBERTSON James "Mastering the Requirements Process"Addison Wesley 1999
LEFFINGWELL D., WIDRIG D. "Managing Software Requirement: A Unified Approach"Addison Wesley 2000
WIEGERS, Karl E. "Software requirements" - Microsoft Press 1999
Per un maggiore dettaglio sui casi d'uso si rimanda al tutorial "Introduzione ai Casi
d'Uso" disponibile sul sito di Tecnet Dati
Ogni key process area identifica un insieme di attività che, se applicate collettivamente,
permettono di innalzare il livello di maturità dell'organizzazione
Tecnet Dati s.r.l.
C.so Svizzera 185 –
10149 - Torino (TO), Italia
Tel.: +39 011 7718090 Fax.: +39 011 7718092
P.I. 05793500017 C.F. 09205650154
www.tecnetdati.com
Scarica

Linee guida per la Gestione dei Requisiti