Un requisito software rappresenta una funzionalità che il sistema da progettare e realizzare deve rendere disponibile all'utente, o una caratteristica che deve presentare. E' opportuno adottare per la descrizione dei requisiti una sintassi strutturata limitata alla forma soggetto-verbo-complemento.
I requisiti sono di 3 tipi:
Funzionali: Descrivono le funzionalità che il sistema software deve rendere disponibili all'utente.
Non Funzionali: Descrivono una caratteristica che il sistema deve avere.
Tecnologici: Sono requisiti relativi agli aspetti tecnologici come ad esempio il linguaggio di programmazione e le applicazioni software da utilizzare.
Oltre a ciò, i requisiti possono essere classificati in: MUST, SHOULD e MAY che sono rispettivamente requisiti INDISPENSABILI, DESIDERABILI e OPZIONALI.
I casi d'uso, invece, sono la definizione degli "scenari" in cui un utente interagisce col sistema in un diagramma UML.
Essi sono definiti da una breve descrizione testuale compresa nel simbolo grafico dell'ellisse che viene collegato alle icone degli "attori" (utenti) che concorrono a realizzare il caso d'uso stesso.