Concetto: Requisiti
Un requisito viene definito come "una condizione o una capacità alla quale un sistema si deve conformare".
Relazioni
Descrizione principale

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.  

Funzionalità

I requisiti funzionali possono includere:

  • serie di funzioni
  • capacità
  • sicurezza

Utilizzabilità

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

Affidabilità

I requisiti di affidabilità da considerare sono:

  • frequenza e severità degli errori
  • recuperabilità
  • prevedibilità
  • accuratezza
  • MFCT (mean time between failure)

Prestazioni

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

Supportabilità

I requisiti di supportabilità possono includere:

  • testabilità
  • estensibilità
  • adattabilità
  • manutenibilità
  • compatibilità
  • configurabilità
  • facilità di manutenzione (serviceability)
  • installabilità
  • localizzabilità (internazionalizzazione)

Requisito di progettazione

Un requisito di progettazione, spesso denominato vincolo di progettazione, specifica o vincola la progettazione di un sistema.

Requisito di implementazione

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

Requisito di interfaccia

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

Requisito fisico

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.