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.
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 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
Altri possono essere:
UP mette a disposizione diversi elaborati da utilizzare per la ricerca e l'organizzazione dei requisiti.