Requisiti evolutivi

Ogni sistema software ha lo scopo di risolvere un determinato problema, di interesse per un insieme di utenti. A tal fine, il sistema stesso deve, di solito, fornire un certo numero di funzionalità, relative alla gestione di alcune tipologie di informazioni. Inoltre il sistema deve possedere alcune caratteristiche di qualità; per esempio, in termini di sicurezza e di prestazioni. I requisiti riguardano proprio la comprensione e la descrizione del problema da risolvere, in termini soprattutto di funzionalità e di qualità desiderate per il sistema.

Requisito

Un requisito è una capacità o condizione a cui il sistema, e più in generale il progetto, deve essere conforme.

I requisiti derivano dalle richieste degli utenti del sistema, per risolvere dei problemi o per raggiungere degli obiettivi. Inoltre i requisiti vengono anche, di solito, descritti, in un contratto: formale, standard, o di specifica.

Ci sono due tipi di requisiti:

  • Requisiti funzionali: descrivono il comportamento del sistema, in termini di funzionalità fornite ai suoi utenti, si tratta di requisiti orientati all'uso del sistema e possono essere espressi sotto forma di casi d'uso.
  • Requisiti non funzionali: non riguardano funzioni del sistema, ma sono relativi a proprietà del sistema nel suo complesso: sicurezza, prestazioni, scalabilità,...

Requisiti evolutivi e a cascata a confronto
Un aspetto fondamentale dell'analisi dei requisiti è il fatto che cambiano. Lo sviluppo iterativo e agile fa sì che i requisiti possano cambiare nel corso dello sviluppo del sistema. Questa è una differenza fondamentale. In UP, così come anche in altri metodi evolutivi, si comincia la programmazione e il test molto tempo prima che la maggior parte dei requisiti siano stati analizzati. I requisiti, oltre a cambiare, devono essere anche trovati. UP incoraggia la ricerca dei requisiti mediante casi d'uso.

Tipi e categorie dei requisiti

  • Funzionale: requisiti funzionali
  • Usabilità: riguarda aspetti legati alla facilità d'uso del sistema, documentazione e aiuto per l'utente.
  • Affidabilità: capacità di tollerare guasti o di poter essere ripristinato dopo un malfunzionamento.
  • Prestazioni: tempi di risposta, uso delle risorse,...
  • Sicurezza: capacità di resistere ad accessi non autorizzati.
  • Sostenibilità: l'abilitò del sistema di poter essere modificato facilmente per consentire miglioramenti e riparazioni.

Altri possono essere:

  • Vincoli di progetto: limitazioni su risorse, linguaggi e strumenti da utilizzare
  • Interoperabilità: vincoli imposti dalla necessità di interagire e interfacciarsi con sistemi esterni.
  • Operazionali: gestione del sistema nel suo contesto operativo
  • Fisici: per esempio, vincoli sulle dimensioni per l'hardware
  • Legali: licenze

UP mette a disposizione diversi elaborati da utilizzare per la ricerca e l'organizzazione dei requisiti.