L’analisi dei casi d’uso viene impiegata durante la fase di analisi per modellare il comportamento esterno del sistema da sviluppare, senza dover specificare come tale comportamento viene realizzato.
La tecnica dei casi d’uso è parte integrante della specifica di UML – Unified Modeling Language
Subject (o Confine del sistema)
Rappresenta il limite tra ciò che è interno al sistema da sviluppare e ciò che è esterno ad esso. È rappresentato da un rettangolo etichettato col nome del sistema.
Un ruolo (o un insieme di ruoli) che l’utente del caso d’uso svolge nell’interagire col sistema.
È esterno al sistema, può essere:
Un attore fornisce uno stimolo al sistema e quindi ne riceve un output.
È la specifica di una sequenza di azioni (incluse eventuali sequenze alternative e sequenze di errore) che un sistema può eseguire interagendo con attori esterni.
Descrive il comportamento del sistema quando un attore gli invia un particolare stimolo.
La descrizione di un caso d’uso definisce cosa accade nel sistema in seguito all’evento di innesco. Generalmente lo stimolo parte dall’attore, ma può anche essere il sistema stesso ad iniziare il caso d’uso (es. Produzione cedolini a fine mese, ricarico automatico di un magazzino).
Un caso d’uso corrisponde:
Un caso d’uso può essere descritto tramite un insieme di scenari di interazione tra gli utilizzatori ed il sistema. Esempio:
L’attenzione è rivolta all’interazione, non alle attività interne al sistema.
Definisce cosa accade nel sistema in seguito all’evento di innesco (scenario):
Sono previsti scenari normali e scenari alternativi (o eccezionali).
Stili di descrizione:
Nome del caso d’uso
Attori coinvolti (primari – che avviano il caso d’uso e secondari)
Descrizione breve
Pre-condizioni: specificano lo stato del sistema prima di eseguire il caso d’uso
Sequenza di eventi: Percorso Normale
Post-condizioni: specificano lo stato del sistema dopo l’esecuzione del caso d’uso
Altri casi d’uso correlati
Sequenza di eventi: Percorsi alternativi
Pre-condizioni: Un utente valido ha effettuato il login. Flusso di eventi: Percorso Normale:
Percorsi alternativi:
Al punto 9, se qualche informazione risulta scorretta, il sistema chiederà al cliente di correggere l’informazione scorretta.
Post condizioni: l’ordine è stato salvato nel sistema e segnato come Confermato.
Le alternative possono essere descritte attraverso If oppure attraverso percorsi alternativi.
Cicli While o For possono essere usati per racchiudere gruppi di passi che devono essere ripetuti più volte
Nella descrizione di un caso d’uso NON devono essere indicati dettagli che rivelino le scelte di progetto o architetturali.
Quando si pensa ai casi d’uso, non si è ancora affrontato alcun aspetto della progettazione.
Gli aspetti algoritmici non dovrebbero comparire nella descrizione degli scenari: interessa sapere quale problema sarà affrontato, non la soluzione che verrà scelta (in una fase successiva).
Non possono esserci riferimenti a specifici file/ moduli/ specifiche interfacce utente, a meno che essi non rappresentino dei vincoli (ad esempio dei sistemi già esistenti con i quali bisogna integrarsi).
Il diagramma dei casi d’uso dovrebbe SEMPRE essere tracciato e approvato PRIMA di partire con le fasi di progetto.
Tra gli use case possono esistere relazioni di tipo generalization, include, extend.
Tali relazioni sono usate per strutturare ulteriormente un modello dei casi d’uso:
Simile alla generalizzazione fra classi.
Un caso d’uso generalizzato rappresenta diversi casi d’uso simili.
Uno o più casi d’uso specializzati forniscono i dettagli specifici dei casi d’uso simili.
Il figlio può aggiungere o modificare il comportamento del padre (es. Caso d’uso Valida Utente).
Un comportamento comune a più casi d’uso diventa un caso d’uso che è incluso nei casi d’uso di partenza
L’inclusione NON contiene informazioni sull’ordine con il quale due casi d’uso vengono effettuati
Relazione tra inclusione e generalizzazione
In fig. 1: Descrizione di Segue iter ordinativo:
- ottieni e verifica numero ordinativo;
- include (Valida utente);
- per ogni parte dell’ordine, interroga lo stato, quindi rapporta all’utente.
Si usa per modellare una sequenza opzionale di eventi oppure casi eccezionali.
Creando estensioni separate, la descrizione del caso d’uso di base resterà semplice.
Una estensione deve elencare tutta la sequenza di passi dall’inizio del caso d’uso fino alla fine includendo la gestione della situazione insolita.
Proprietà dell’estensione:
Il caso d’uso ‘Effettua ordine‘ può presentare comportamento aggiuntivo in due casi:
L’esempio visto si poteva anche risolvere utilizzando un unico caso d’uso (Effettua Ordine) che avesse almeno due scenari alternativi (corrispondenti ai due casi d’uso estesi).
Come scegliere tra le due possibili soluzioni modellistiche?
La soluzione con tre casi d’uso è sicuramente più utile nel caso in cui I casi d’uso estesi abbiano ulteriori legami e/o siano direttamente richiamabili dall’utente.
La soluzione con un solo caso d’uso fornisce una vista più compatta del sistema, per cui potrebbe essere preferibile se si vuole realizzare un modello dei casi d’uso meno dettagliato.
Requisito funzionale:
Caso d’Uso:
Ogni caso d’uso può soddisfare più requisiti funzionali;
un requisito funzionale può dare origine a più casi d’uso;
a ogni caso d’uso possono venire associati più requisiti non funzionali.
I requisiti funzionali sono pensati dal punto di vista del sistema, i casi d’uso da quello dell’utente.
È importante incrociare gli archivi dei requisiti funzionali e dei casi d’uso per verificare la reciproca copertura:
Ossia che ogni requisito sia coperto da almeno un caso d’uso e viceversa (in generale la relazione è molti-a-molti).
1. Identifica gli attori
2. Identifica i casi d’uso
3. Definisci la comunicazione tra attori e casi d’uso
4. Descrivi i casi d’uso
5. Struttura i casi d’uso
L’analisi dei casi d’uso produce:
Nel diagramma è contenuto solo un piccolo sottoinsieme delle informazioni contenute nelle descrizioni.
Tutte le informazioni contenute nel diagramma sono contenute anche nelle descrizioni.
Quindi, il diagramma dei casi d’uso non può mai essere considerato separatamente dalle descrizioni. Eventualmente, piuttosto, esso potrebbe essere omesso (o ricavato automaticamente da descrizioni dei casi d’uso scritte in maniera formalmente consistente).
Si vuole realizzare un sistema informatico in grado di gestire in maniera automatizzata le prove di esame tenute da un docente di un corso universitario. Il docente registra preventivamente i dati relativi alla prova, ossia il nome del corso, la data della prova, la durata (espressa in minuti), e l’insieme delle prove da sottoporre agli studenti.
In sede di esame, lo studente deve preventivamente iscriversi, indicando il proprio nome, cognome, numero di matricola e indirizzo e-mail. Il sistema fornisce allo studente iscritto il testo di una prova individuale (scegliendola dall’insieme delle prove registrate dal docente) e calcola il tempo limite entro il quale deve essere consegnata la soluzione. Il tempo limite di consegna è stabilito in base alla durata prevista per la prova e l’ora di assegnazione allo studente. Il sistema dovrà registrare tutti questi dati in apposito archivio.
Lo studente deve completare il proprio elaborato e consegnarlo tramite l’interfaccia del sistema entro il tempo limite. Il sistema invia inoltre una mail di conferma dell’avvenuta ricezione o di consegna impossibile qualora il tempo limite sia scaduto.
Il docente corregge ogni compito, indicando se é sufficiente o meno, inserendo un voto (numerico, compreso tra 18 e 30 oppure insufficiente). Al termine dell’inserimento dei giudizi di tutti i compiti, un messaggio di e-mail viene recapitato ad ogni studente, con il risultato del suo compito.
CASO D’USO CORREGGI COMPITO
Pre-condizioni: Il docente registrò una prova.
Flusso di eventi:
Percorso Normale:
CASO D’USO INVIA RISULTATO
Pre-condizioni: Il docente ha corretto tutti i compiti
Flusso di eventi:
Percorso Normale
CASO D’USO SVOLGI PROVA
Pre-condizioni: Il Docente registrò una prova
Flusso di eventi:
Percorso Normale:
#Percorso alternativo:
CASO D’USO ISCRIVI A PROVA
Flusso di eventi:
Percorso normale:
CASO D’USO INVIA SOLUZIONE
Pre-condizioni: Lo studente ritiene di aver risolto la prova
Flusso di eventi:
Percorso Normale
#Percorso alternativo
1. Introduzione
4. Casi d'uso
6. Class Diagram – parte prima
7. Class diagram – parte seconda
8. Class diagram – parte terza
9. Modellazione architetturale
10. Sequence Diagram
14. Progettazione Architetturale
15. Design Patterns – Parte prima
16. Design Patterns – Parte seconda
17. Progettazione dell'interfaccia utente
Martin Fowler, UML Distilled, capitolo 9.
Ian Sommerville, Ingegneria del Software, capitolo 7.