Un requisito viene definito come "una condizione o capacità alla quale il sistema si deve conformare".
Esistono molti tipi diversi di requisiti. Un modo per classificarli in categorie viene descritto come modello
FURPS+ [GRA92], utilizzando l'acronimo FURPS per descrivere le categorie di requisiti
principali e quelle secondarie, come indicato di seguito.
Il segno "+" in FURPS+ sta ad indicare che è necessario includere altri requisiti quali:
(Consultare anche [IEEE Std 610.12.1990].)
Queste categorie ed esempi di requisiti non funzionali possono essere utilizzati come un elenco di controllo, per
verificare se si possiede un requisito in una particolare categoria. Modalità di generazione di una serie
completa di potenziali requisiti non funzionali Altre fonti includono:
-
Per la descrizione di un approccio sistematico ai requisiti di acquisizione mediante FURPS+, consultare l'articolo
di The Rational Edge 'Capturing Architectural Requirements' di Peter
Eeles (http://www.ibm.com/developerworks/rational/library/4706.html).
Fornisce un questionario che elenca un gran numero di requisiti non funzionali, con le questioni relative alla
determinazione della loro applicabilità
-
Il Software Engineering Institute ha inoltre creato un catalogo di 'scenari generali' - espressioni dei requisiti
dell'attributo di qualità – che possono essere riutilizzati su diversi tipi di sistemi per definire i requisiti
della qualità. Per ulteriori informazioni, consultare http://www.sei.cmu.edu/publications/documents/01.reports/01tr014.html o Software
Architecture in Practice, 2nd Ed., di Len
Bass, Paul Clements e Rick Kazman (Addison-Wesley, 2003).
I requisiti funzionali specificano le azioni che un sistema deve essere in grado di eseguire, senza tenere in
considerazione i vincoli fisici. Spesso sono descritti in maniera più dettagliata in un modello di caso d'uso e nei casi
d'uso. I requisiti funzionali quindi specificano l'input ed il comportamento di un sistema.
I requisiti non funzionali, come quelli elencati di seguito, a volte vengono denominati requisiti non
funzionali. Molti requisiti sono non funzionali e descrivono solo gli attributi del sistema o dell'ambiente di
sistema. I requisiti non funzionali sono quelli che si occupano di problematiche quali quelle descritte di
seguito.
I requisiti funzionali possono includere:
-
serie di funzioni
-
capacità
-
sicurezza
I requisiti di utilizzabilità possono includere delle categorie secondarie come:
-
fattori umani
-
estetica
-
coerenza nell'interfaccia utente
-
guida in linea e guida sensibile al contesto
-
procedure guidate ed agenti
-
documentazione per l'utente
-
materiali per la formazione
I requisiti di affidabilità da considerare sono:
-
frequenza e severità degli errori
-
recuperabilità
-
prevedibilità
-
accuratezza
-
MFCT (mean time between failure)
Un requisito di prestazione impone le condizioni sui requisiti funzionali. Ad esempio, per una determinata azione può
specificare i parametri di prestazione per:
-
velocità
-
efficienza
-
disponibilità
-
accuratezza
-
produttività
-
tempi di risposta
-
tempi di recupero
-
utilizzo della risorsa
I requisiti di supportabilità possono includere:
-
testabilità
-
estensibilità
-
adattabilità
-
manutenibilità
-
compatibilità
-
configurabilità
-
facilità di manutenzione (serviceability)
-
installabilità
-
localizzabilità (internazionalizzazione)
Un requisito di progettazione, spesso denominato vincolo di progettazione, specifica o vincola la progettazione
di un sistema.
Un requisito di implementazione specifica o vincola il codice o la costruzione di un sistema. Esempi:
-
standard richiesti
-
linguaggi di implementazione
-
politiche per l'integrità del database
-
limiti delle risorse
-
ambienti operativi
Un requisito di interfaccia specifica:
-
una voce esterna con la quale un sistema deve interagire
-
vincoli sui formati, i tempi o altri fattori utilizzati dall'interazione
Un requisito fisico specifica una caratteristica fisica che un sistema deve possedere; ad esempio,
-
materiale
-
forma
-
dimensione
-
peso
Questo tipo di requisito può essere utilizzato per rappresentare dei requisiti hardware, ad esempio le configurazioni
fisiche di rete necessarie.
|