Casi d’uso – FAQ – domande frequenti

La mia guida alla scrittura dei casi d’uso è sempre molto usata, così come la relativa template.

Periodicamente ricevo delle richieste di chiarimento su aspetti particolari. Alcune meritano risposte pubbliche.

  • La verifica della  pre-condizione per un caso d’uso è automatica, oppure è necessario inserire all’inizio dello scenario dei passi per la sua verifica?
    Non è automatica, nel senso che non viene effettuata automaticamente da uno strumento; si dà per implicita e non va descritta nel testo degli scenari.
  • Posso documentare i casi d’uso “di estensione” e quelli “di inclusione”  con lo stesso template utilizzato per documentare qualunque altro caso d’uso?
    Sì.
  • Come qualunque altro caso d’uso, quelli “di inclusione” hanno le loro pre-condizioni e trigger ( stimolo di attivazione) che devono verificarsi affinché possano partire? Oppure quando richiamati dal caso d’uso base, partono direttamente?
    I casi d’uso di inclusione non sono casi d’uso veri e propri, ma solo frammenti di caso d’uso. Quindi vengono sempre attivati da altri casi d’uso.
  • Come qualunque altro caso d’uso, quelli di “estensione” hanno le loro pre-condizioni e trigger ( stimolo di attivazione) che devono verificarsi insieme alla relazione di extend affinché possano partire? Oppure quando richiamati dal caso d’uso base, viene verificata solo la condizione di extend?
    Anche i casi d’uso di estensione sono solo frammenti di casi d’uso, ma a differenza di quelli di inclusione non vengono “richiamati”.  Il caso d’uso base ignora le proprie estensioni, definisce solo degli extension point a cui i casi d’uso di estensione fanno riferimento.
  • La verifica della condizione di extend è automatica, oppure è necessario inserire dei passi per la sua verifica, all’inizio dello scenario del caso d’uso di estensione ?
    Anche qui, la verifica non è automatica, ma si dà per implicita.
  • La precondizione e la condizione di extend possono coincidere(stessa condizione), in alcune situazioni?
    Le precondizioni vanno definite per i casi d’uso base, e specificano una condizione necessaria per raggiungere l’obiettivo del caso d’uso. Ogni caso d’uso “reale” (base) ha un obiettivo da conseguire, mentre i frammenti di caso d’uso (inclusioni, estensioni, specializzazioni) non hanno obiettivi autonomi propri, sono semplicemente porzioni di attività che si preferisce descrivere in modo separato. Quindi definire precondizioni per i frammenti di caso d’uso è una forzatura.
  • Nel documentare il caso d’uso di estensione con il template, posso aggiungere un’apposita sezione in cui riportare la condizione di extend?
    Sì, anche se io preferisco usare per questo il primo passo del relativo scenario.
  • Posso inserire all’interno di un caso di estensione più comportamenti, uno per ogni extension point del caso d’uso base?
    Ogni caso d’uso di estensione è collegato ad un unico extension point del caso d’uso base a cui si riferisce.
  • Se ho un caso d’uso di estensione con più comportamenti, dovrò utilizzare una pre-condizione per ogni scenario di comportamento oppure un unica precondizione per tutti? In altri termini la precondizione ha senso solo a livello di caso d’uso oppure anche per ogni singolo comportamento previsto all’interno del caso d’uso di estensione?
    La precondizione ha senso solo a livello di caso d’uso complessivo.
  • Cosa intende quando afferma che il caso d’uso è completo? ( paragrafo 4.3.3 e 6.2 di “Linee guida UML-Casi d’uso)
    Un caso d’uso è completo quando in caso di successo raggiunge il suo obiettivo, e quando, anche in caso di insuccesso, lascia comunque il sistema in uno stato consistente.
  • Nel testo su UML 2 e UP di Jim Arlow ed Ila Neustadt si dice che un caso d’uso di estensione può avere più comportamenti (frammenti) con relative pre-condizione e post-condizioni; ed uno stesso caso d’uso base può essere esteso nello stesso punto da più casi d’uso di estensione. Cosa ne pensa?
    Hanno ragione: ogni caso d’uso può essere esteso nello stesso punto da più casi d’uso di estensione. Però ogni caso d’uso di estensione si aggancia ad un unico punto di estensione. Per quanto riguarda pre e post condizioni, si tratta di loro interpretazioni, in sé non illogiche, ma non standard.
  • Nella pratica, mediamente, quante pagine può richiedere la documentazione di un caso d’uso?
    Impossibile rispondere con un numero. Dipende dallo stile che si usa, dai destinatari, dal processo di sviluppo che si utilizza.
  • Nel suo template indica che è possibile, oltre al nome, associare anche un id all’use case. Quindi sia il nome che l’id individuano univocamente il caso d’uso. Quale caratteristica aggiuntiva fornisce l’id rispetto al nome?
    Facilita la consultazione. Quando il numero di casi d’uso supera la decina, un id diventa utile.
  • L’ attore primario è quell’entità esterna che attiva il caso d’uso, utilizza la funzionalità del caso d’uso (partecipando allo scenario attivamente, “botta e risposta”) e trae vantaggio dai risultati ricevuti?
    No, è chi riceve valore dal caso d’uso. Se un caso d’uso produce periodicamente un report, l’attore primario è il destinatario del report.
  • L’attore secondario è un’entità che fornisce supporto (e viene interpellata quando necessario) durante lo svolgimento dello scenario del caso d’uso, fornendo e ricevendo informazioni?
    No, è solo un partecipante diverso dall’attore primario.
  • Un attore secondario può attivare un caso d’uso (eseguire il primo passo dello scenario base)?
    Certo. Ad esempio per attivare una emissione di report destinato ad un altro attore, che ne trarrà beneficio ed è quindi primario .
  • Può accadere che un singolo attore (primario o secondario) attivi il caso d’uso, ma più attori (primari) siano interessati ai risultati?
    Sì.