I Casi d’Uso sono come una mappa che ci guida nel labirinto della progettazione di sistemi informativi, mantenendo sempre l’utente al centro del processo. Alan Cooper
Cosa sono i casi d’uso?
Storie coinvolgenti che rivelano i complessi rapporti tra gli attori e i sistemi informativi. Ecco cosa sono i casi d’uso! Queste narrazioni rappresentano un tassello fondamentale nella progettazione orientata agli oggetti, poiché sono flessibili e veloci da sviluppare.
Padroneggiare la scrittura dei casi d’uso è un’arte che permette di modellare qualsiasi integrazione tra gli utenti e il sistema informativo che si intente progettare o reingegnerizzare.
I casi d’uso sono il cuore pulsante dei requisiti funzionali e comportamentali, delineano le azioni che un sistema deve compiere per soddisfare le esigenze degli utenti e viceversa.
A differenza dei vecchi elenchi di funzionalità e caratteristiche degli anni ’70, i casi d’uso organizzano i requisiti in scenari di utilizzo orientati al raggiungimento degli obiettivi degli utenti.
La modellazione dei casi d’uso è un atto di scrittura, ma la sua efficacia aumenta esponenzialmente combinata con diagrammi di contesto o di alto livello.
Nel mondo interattivo della progettazione ad oggetti, i casi d’uso possono rappresentare sia input per la progettazione grafica di alto livello, che dettagliati documenti testuali di output di diagrammi di contesto.
Quali sono le componenti principali di un caso d’uso?
Un caso d’uso ben strutturato è composto da diverse componenti chiave che lo rendono completo e informativo. Di seguito, una descrizione dettagliata delle componenti principali:
- Attori: Gli attori rappresentano qualsiasi cosa o qualcuno dotato di comportamento come: persone, organizzazioni, ruoli o i sistemi esterni che interagiscono con il sistema. Anche il sistema in discussione (SuD, da system under discussion) è considerato un attore quando ricorre ai servizi di altri sistemi. Nel caso d’uso, vengono elencati gli attori coinvolti nella specifica interazione. Ogni attore ha un ruolo nell’esecuzione del caso d’uso e può essere un utente, un amministratore, un sistema esterno e in alcuni casi anche il tempo.
- Scopo: Questa sezione fornisce una breve descrizione dell’obiettivo o dello scopo del caso d’uso. Indica l’azione principale che il caso d’uso intende raggiungere, come “Effettuare un pagamento” o “Pubblicare un articolo”.
- Scenari: Flusso di eventi che rappresenta la sequenza di azioni (transizioni) che si verificano durante l’esecuzione del caso d’uso. Questa sezione è il nucleo del caso d’uso ed è solitamente presentata come una serie di passaggi numerati. Ogni passaggio descrive un’azione specifica compiuta dall’attore o dal sistema, evidenziando l’interazione tra di loro.
- Precondizioni: Le precondizioni indicano lo stato o le condizioni che devono essere soddisfatte prima che il caso d’uso possa essere avviato. Possono includere requisiti preliminari come l’accesso al sistema, l’inserimento di dati o la verifica di autorizzazioni.
- Postcondizioni: Le postcondizioni descrivono lo stato del sistema una volta completato il caso d’uso. Indicano eventuali cambiamenti o effetti che si verificano come risultato dell’interazione. Ad esempio, potrebbero indicare l’aggiornamento di un database o la visualizzazione di un messaggio di conferma.
- Test: I casi d’uso possono essere collegati ai test pertinenti per garantire che siano implementati correttamente e che soddisfino gli obiettivi definiti. I test possono includere verifiche di accettazione o casi di test specifici per valutare il comportamento e le funzionalità del caso d’uso. L’inclusione di test nel contesto del caso d’uso aiuta a garantire la qualità del sistema e la corretta implementazione delle funzionalità richieste.
- Diagrammi: Anche se i casi d’uso sono principalmente documenti di testo, possono essere supportati da diagrammi visivi per illustrare in modo più chiaro le interazioni e i flussi. I diagrammi dei casi d’uso, come i diagrammi UML, rappresentano graficamente gli attori, i casi d’uso e le relazioni tra di loro.
Come definire il perimetro dei casi d’uso?
I seguenti approcci possono essere utilizzati per definire il perimetro dei casi d’uso:
- Identificazione degli attori: Gli attori che interagiscono con il sistema devono essere individuati considerando almeno tre livelli di interazione. Gli attori possono essere utenti finali, sistemi esterni, componenti del sistema o entità esterne coinvolte nell’esecuzione del caso d’uso.
- Definizione dei processi: È necessario determinare processi sono inclusi o esclusi dal caso d’uso. Ciò aiuta a stabilire i limiti dell’interazione del caso d’uso con il sistema e gli attori coinvolti.
- Delimitazione delle interfacce: Le interfacce tra il sistema e gli attori coinvolti nel caso d’uso devono essere specificate. Ciò può includere l’identificazione dei canali di comunicazione, dei protocolli utilizzati e delle modalità di interazione
- Identificazione dei flussi di dati: I flussi di dati tra il sistema e gli attori coinvolti devono essere individuati. Ciò può includere l’identificazione dei dati in ingresso, dei dati elaborati dal sistema e dei dati in uscita.
- Valutazione degli obiettivi: Gli obiettivi del caso d’uso devono essere valutati e considerati come contributi al raggiungimento degli obiettivi generali del sistema. Ciò aiuta a garantire l’allineamento del caso d’uso con le finalità complessive del progetto.
La definizione dei confini di un caso d’uso è importante per garantire una comprensione chiara del contesto e delle interazioni coinvolte. Ciò facilita la comunicazione, la progettazione e l’implementazione efficace del caso d’uso.
Come identificare gli attori e gli obiettivi dei casi d’uso?
Nell’identificazione degli attori e degli obiettivi, è importante considerare tutte le entità coinvolte nel sistema o nell’applicazione. Gli attori possono essere persone, ruoli, organizzazioni o sistemi esterni che interagiscono con il sistema. Si deve determinare il ruolo di ciascun attore e come contribuisce al funzionamento del sistema. Gli attori principali vengono individuati in base ai loro obiettivi chiave nel contesto del caso d’uso.
Per quanto riguarda gli obiettivi, si devono individuare gli obiettivi degli attori principali. Gli obiettivi rappresentano ciò che gli attori desiderano ottenere o i risultati che intendono raggiungere attraverso l’interazione con il sistema. È importante che gli obiettivi siano concreti e osservabili, in modo da poterli quantificare o verificare.
Per identificare gli attori e gli obiettivi, è possibile condurre interviste o workshop con gli stakeholder o gli utenti del sistema al fine di comprendere le loro esigenze, le aspettative, le azioni e le responsabilità del sistema. Inoltre, si possono analizzare la documentazione esistente, osservare direttamente gli utenti interagire con il sistema o coinvolgere esperti di dominio o analisti aziendali per ottenere una visione approfondita del contesto e delle dinamiche aziendali.
Come individuare i casi d’uso?
I casi d’uso hanno l’obiettivo di raccogliere ed organizzare gli scopi principali che soddisfano gli obiettivi degli attori principali di un sistema informativo (prodotto, servizio o sistema digitale).
Di seguito si uno dei possibili workflow che reputo tra i più efficaci per l’individuazione dei casi d’uso.
Workflow:
- Scegliere i confini del sistema.
- Identificare gli attori esterni principali, ovvero tutti gli utenti che raggiungono i propri obiettivi attraverso l’utilizzo del sistema.
- Identificare gli obiettivi concreti di ogni attore primario.
- Individuare le azioni concrete che l’attore deve compiere per soddisfare i propri obiettivi, attraverso l’interazione con il sistema.
- Nominare i casi d’uso in base all’obiettivo dell’attore.
Come è possibile immaginare, non tutti i casi d’uso riescono ad essere individuati e definiti correttamente ex-ante, spesso vengono scoperti durante l’evoluzione del progetto, durante lo sviluppo iterativo, nella fase di test, durante il collaudo e perfino dopo la messa a regime del sistema.
Perché utilizzare i casi d’uso?
I vantaggi dell’utilizzo dei casi d’uso sono molteplici e rendono questa metodologia una delle più efficaci per l’individuazione e la raccolta dei requisiti.
I vantaggi principali sono:
- Catturare i requisiti funzionali: I casi d’uso rappresentano uno strumento potente per registrare i veri requisiti funzionali di un sistema. Attraverso le storie narrative, è possibile identificare in modo chiaro e dettagliato le azioni che il sistema deve svolgere per soddisfare le richieste degli utenti.
- Pianificare in modo flessibile: I casi d’uso si adattano facilmente alle diverse fasi del processo di sviluppo. Possono essere scritti in varie fasi, come durante l’ideazione, la prototipazione, l’elaborazione e progettazione, o la fase di costruzione o produzione. Questa flessibilità consente di integrare i casi d’uso in modo coerente nel flusso di lavoro e di ottenere risultati più solidi.
- Stimare i costi e dei tempi di progetto: I casi d’uso forniscono un input fondamentale per stimare i costi e i tempi di un progetto. Identificando le azioni e le interazioni necessarie, è possibile valutare con maggiore precisione le risorse richieste per l’implementazione del sistema. Questo aiuta a definire le CAPEX (spese di capitale) e i LEAD TIME (tempi di consegna) del progetto.
- Documentare e organizzazione: I casi d’uso possono essere inclusi nella documentazione di progetto o nei manuali, fornendo una guida chiara e strutturata per il team di sviluppo. Questo aiuta a mantenere traccia delle funzionalità e delle interazioni del sistema, facilitando la comprensione e la collaborazione.
- Identificare i test funzionali: Gli scenari dei casi d’uso possono essere utilizzati come base per la definizione dei test funzionali del sistema. Questo collegamento diretto tra i casi d’uso e i test assicura una copertura completa dei requisiti e facilita la verifica e la validazione del sistema.
L’utilizzo dei casi d’uso offre numerosi vantaggi che vanno dalla chiarezza nella definizione dei requisiti alla pianificazione flessibile, dalla stima accurata dei costi e dei tempi alla documentazione organizzata e alla corrispondenza con i test funzionali.
Come scrivere un caso d’uso efficace?
Esistono diverse tecniche per scrivere casi d’uso, personalmente ritengo che un approccio essenziale e concreto risulti particolarmente efficace.
Come regola principale bisognerebbe affrontare la scrittura del caso d’uso immaginando di trascurare l’interfaccia utente. La storia dovrebbe coinvolgere solamente le interazioni dell’utente con il sistema in modo da concentrarsi solamente sull’obiettivo dell’attore.
La seconda regola molto importante coesiste nel considerare il sistema come un’entità dotata di responsabilità, una metafora affascinante del pensiero orientato agli oggetti. Gli elementi hanno responsabilità e collaborano tra loro. Invece di descrivere il processo dettagliato di come il sistema deve agire, sarebbe opportuno focalizzarsi su ciò che il sistema deve fare per soddisfare l’utente. Ad esempio, è preferibile scrivere “Il sistema gestisce le vendite” invece di “Il sistema registra le vendite in una base dati” o, ancor peggio, “Il sistema esegue un’istruzione SQL INSERT per la vendita…”.
La terza regola consiste nell’evidenziare le responsabilità del sistema nei confronti dell’utente, mettendo in risalto i risultati osservabili. Adottare il punto di vista dell’attore, evidenziando ciò che l’utente considera di valore.
Altre regole fondamentali da non trascurare:
- Ogni transizione dovrebbe descrivere un’azione concreta, ponendo l’accento sugli obiettivi dell’utente. Concentrati su ciò che l’utente ritiene significativo, cercando di capire la sua prospettiva.
- Scrivere i casi d’uso in modo conciso ma completo. Scrivere preferibilmente “Il sistema elabora l’ordine di pagamento” a “L’amministratore richiede l’elaborazione dell’ordine di pagamento” (richiesto da chi?).
- Selezionare attentamente le transizioni principali, seguendo la regola di Pareto. Focalizzarsi sul 20% delle transizioni principali che creano il maggior valore per l’attore.
- Evitare di perdersi in eccezioni o eventi poco probabili nel flusso delle transizioni. Mantenere la narrazione concentrata sugli scenari o alternative più rilevanti e probabili.
Come scrive un caso d’uso sintetico?
Per rispondere in modo efficace alla domanda di seguito viene descritto un caso d’uso d’esempio.
Prima di iniziare è importate sempre contestualizzare l’analisi
CONTESO
Mandato (Scopo della commessa):
Il mandato del progetto è stato assegnato dal venditore di auto a noleggio, che ha richiesto lo sviluppo di un sistema di gestione delle prenotazioni. Il venditore ha identificato la necessità di automatizzare e semplificare il processo di prenotazione per i propri clienti. Il mandato del progetto include la progettazione, lo sviluppo e l’implementazione di un sistema software che consenta agli utenti di effettuare prenotazioni di auto in modo efficiente e conveniente.
Il venditore ha specificato che il sistema di gestione delle prenotazioni dovrebbe consentire agli utenti di visualizzare le auto disponibili per il periodo desiderato, selezionare le date di inizio e fine del noleggio, fornire i dettagli del pagamento e ricevere conferma della prenotazione. Inoltre, il venditore ha richiesto che il sistema consenta di gestire le prenotazioni effettuate, inclusa la verifica della disponibilità delle auto, la comunicazione con gli utenti e l’aggiornamento dello stato delle prenotazioni.
Il mandato del progetto prevede anche l’integrazione del sistema di gestione delle prenotazioni con il sistema esistente del venditore, in modo da garantire un flusso di lavoro integrato e una gestione efficiente delle risorse. L’obiettivo principale del mandato è fornire un sistema completo e funzionale che soddisfi le esigenze del venditore e migliori l’esperienza complessiva dei clienti durante il processo di prenotazione di auto a noleggio.
Scopo del mandato (scope of work): :
L’obiettivo del mandato è implementare un sistema di gestione delle prenotazioni per il venditore di auto a noleggio al fine di semplificare e ottimizzare il processo di prenotazione, migliorando l’efficienza operativa e la soddisfazione dei clienti.
Il focus:
Il focus durante l’analisi è rivolto alla progettazione e sviluppo di un sistema di gestione delle prenotazioni che sia in linea con le esigenze e gli obiettivi del venditore del servizio di noleggio. L’attenzione sarà posta sull’ottimizzazione dei processi di prenotazione, sull’efficienza operativa e sulla massimizzazione della soddisfazione del venditore
ATTORI
Attori:
- Venditore del servizio – Il venditore del servizio di noleggio auto che offre il sistema di prenotazione.
- Acquirente del servizio – L’utente secondario che desidera prenotare un’auto attraverso il sistema di prenotazione.
Obiettivi:
Venditore del servizio
- Gestire e fornire un sistema di prenotazione efficiente e conveniente per gli utenti.
- Verificare la disponibilità delle auto richieste.
- Ricevere e confermare le prenotazioni effettuate dagli acquirenti.
- Ottenere le informazioni necessarie per la gestione delle risorse e la pianificazione del servizio di noleggio auto.
Acquirente del servizio:
- Prenotare un’auto per un determinato periodo di tempo.
- Selezionare l’auto desiderata tra quelle disponibili.
- Fornire i dettagli del pagamento e garantire la sicurezza delle informazioni.
- Ricevere la conferma della prenotazione e l’assicurazione della disponibilità dell’auto.
L’elenco degli attori e degli obiettivi può essere ulteriormente dettagliato o personalizzato in base alle specifiche esigenze del caso d’uso e al contesto di utilizzo del sistema di prenotazione. Questo esempio fornisce una base iniziale per comprendere chi sono gli attori coinvolti e cosa cercano di raggiungere attraverso l’interazione con il sistema.
CASO D’USO
Titolo: Effettuare prenotazione
Attore principale: Venditore del servizio
Attore secondario: Acquirente del servizio
Descrizione: Questo caso d’uso descrive il processo di prenotazione di un’auto da parte di un utente secondario attraverso il sistema di prenotazione per il noleggio di auto offerto dal venditore.
Obiettivo: L’utente secondario desidera prenotare un’auto per un determinato periodo di tempo attraverso il sistema di prenotazione.
Flusso dello scenario principale:
- L’utente secondario avvia l’applicazione di prenotazione sul proprio dispositivo.
- Il sistema di prenotazione visualizza all’utente secondario l’opzione per effettuare una nuova prenotazione.
- L’utente secondario seleziona la data e l’ora di inizio del noleggio dell’auto desiderata.
- L’utente secondario seleziona la data e l’ora di fine del noleggio dell’auto desiderata.
- Il sistema di prenotazione presenta all’utente secondario un elenco delle auto disponibili per il periodo selezionato.
- L’utente secondario seleziona l’auto desiderata dall’elenco.
- L’utente secondario fornisce i dettagli del pagamento, inclusi i dati della carta di credito.
- Il sistema di prenotazione verifica la disponibilità dell’auto e la validità dei dettagli di pagamento.
- Se l’auto è disponibile e i dettagli di pagamento sono validi, il sistema di prenotazione conferma la prenotazione all’utente secondario.
- Il sistema di prenotazione invia una notifica al venditore per informarlo della nuova prenotazione.
Precodizioni:
- L’utente secondario ha accesso al sistema di prenotazione e ha effettuato l’autenticazione.
- L’utente secondario ha eseguito correttamente l’autenticazione nel sistema di prenotazione.
- Le informazioni sulle auto disponibili e i relativi dettagli sono correttamente caricati nel sistema di prenotazione.
Postcondizioni:
- La prenotazione dell’auto confermata è registrata nel sistema di prenotazione.
- L’utente secondario riceve una conferma di prenotazione contenente i dettagli dell’auto e le informazioni relative al noleggio.
- Il venditore del servizio riceve una notifica contenente i dettagli della nuova prenotazione da parte dell’utente secondario.
Con quale altre informazioni è possibile integrare il caso d’uso sintetico?
Nel contesto dell’analisi dei casi d’uso di sintesi, quando si affronta l’implementazione di nuovi prodotti o sistemi, diventa fondamentale integrare ulteriori informazioni per una visione ancora più completa e dettagliata.
Per una visione ancora più completa e dettagliata, oltre alla descrizione essenziale dei casi d’uso, diventa fondamentale integrare ulteriori informazioni come: l’inclusione di scenari alternativi, la gestione delle eccezioni, le fonti informative e test correlati. Inserire queste informazioni permette di approfondire la comprensione e garantire una migliore implementazione dei requisiti funzionali, ovvero delle funzionalità del sistema.
Questo approccio risulta particolarmente rilevante e vantaggioso quando si affronta lo sviluppo di nuovi prodotti o sistemi, dove l’accuratezza e la completezza delle informazioni svolgono un ruolo chiave nel garantire un’esecuzione coerente e di successo delle specifiche del caso d’uso.
Di seguito si riporta lista delle possibili integrazioni:
- Scenari alternativi: Possono essere inclusi scenari alternativi che ampliano la copertura del caso d’uso, considerando situazioni diverse o percorsi alternativi che gli attori possono seguire. Questi scenari aggiuntivi forniscono una visione più completa delle possibili interazioni e flussi nel contesto del caso d’uso.
- Eccezioni: Questa sezione affronta scenari alternativi o eccezionali che possono verificarsi durante l’esecuzione del caso d’uso. Le eccezioni descrivono situazioni anomale o errori che richiedono un flusso di eventi diverso. Possono includere errori dell’utente, problemi di connessione o condizioni impreviste.
- Basi di dati: È importante considerare come il sistema memorizza e organizza le informazioni. Le basi di dati sono come grandi cassette che contengono le informazioni. Assicurarsi soprattutto per sistemi già esistenti di specificare dove dovrà trovare e/o memorizzare le informazioni.
- Fonti informative: Le fonti informative utilizzate per definire il caso d’uso possono includere documenti di analisi dei requisiti, interviste con gli utenti, discussioni con gli stakeholder o best practice del settore. Queste fonti forniscono le informazioni necessarie per comprendere e definire correttamente il caso d’uso, assicurando che le esigenze degli utenti siano prese in considerazione e soddisfatte.
Con quali altri strumenti è possibile integrare i casi d’uso?
I casi d’uso possono essere integrati con altre informazioni per fornire una visione più completa e dettagliata del sistema che si sta progettando o revisionando. Di seguito alcune possibili integrazioni:
- Diagrammi dei casi d’uso: È possibile integrare, o meglio far precedere, il testo dei casi d’uso da un diagramma dei casi d’uso (Use Case Diagram, UCD) che rappresenti visivamente la relazione tra casi d’uso correlati del sistema. Ciò aiuterà a identificare i casi d’uso del sistema e i flussi principali e alternativi tra i vari casi d’uso.
- Diagrammi di sequenza: È possibile integrare il testo dei casi d’uso con i diagrammi di sequenza che illustrino l’interazione tra gli attori e il sistema. Questi diagrammi permettono di mostrare le azioni e le comunicazioni tra gli utenti e il sistema.
- Diagrammi di classi: È possibile integrare il testo dei casi d’uso con diagrammi di classi che descrivano la struttura delle classi e le relazioni tra di loro all’interno del sistema. Questi diagrammi permettono di mostrare le entità coinvolte, come le classi e gli utenti.
Integrando il caso d’uso con queste informazioni aggiuntive è possibile ottenere una visione completa e dettagliata del sistema che si intende progettare un data set informativo As-Is prezioso da comunicare e condividere con il business e con i gruppi di sviluppo.
Fonti e approfondimenti
Larman, Craig. “Applicare UML e i pattern: Analisi progettazione orientata agli oggetti.
Cockburn, Alistair. “Writing Effective Use Cases.”
Leffingwell, Dean. “Use Case with Goals: Requirements in Context.
Kulak, Daryl, and Guiney, Eamonn. “Use Case Requirements in Context.”
Conclusione
In conclusione, i casi d’uso sono un tassello fondamentale nella progettazione orientata agli oggetti e nella definizione dei requisiti. Attraverso storie coinvolgenti, delineano le azioni che un sistema deve compiere per soddisfare le esigenze degli utenti. I casi d’uso offrono una pianificazione flessibile, stimano costi e tempi di progetto e documentano in modo organizzato le funzionalità del sistema. Sono strumenti che permettono di creare esperienze coinvolgenti e allineate agli obiettivi di business. Scopri il potenziale dei casi d’uso per guidare progetti di successo e creare sistemi informativi di impatto
