La relazione di inclusione connette un caso d'uso base con un caso d'uso d'inclusione. Il caso d'uso d'inclusione è
sempre astratto. Descrive un segmento di funzionalità, inserito in un'istanza di caso d'uso, che sta eseguendo un caso
d'uso base. Il caso d'uso base possiede il controllo della relazione con l'inclusione e può dipendere dal risultato di
esecuzione dell'inclusione, ma né la base e né l'inclusione possono accedere l'una agli attributi dell'altra.
L'inclusione è in questo senso incapsulata, e rappresenta la funzionalità che può essere riutilizzata in differenti
casi d'uso base.
È possibile utilizzare la relazione d'inclusione per effettuare le seguenti operazioni:
-
Scomporre la funzionalità del caso d'uso base, cosa che non è necessaria per la comprensione dello scopo primario
del caso d'uso, infatti è importante solo il suo risultato.
-
Scomporre la funzionalità che è comune per due o più casi d'uso.
Esempio:
In un sistema ATM, i casi d'uso Prelievo contanti, Deposito contanti e Trasferimento fondi devono tutti includere il
modo in cui il cliente viene identificato sul sistema. Questa funzionalità può essere estratta in un nuovo caso d'uso
d'inclusione, chiamato Identificazione cliente, che è incluso nei tre casi d'uso base. I casi d'uso base sono
indipendenti dal metodo utilizzato per l'identificazione e pertanto viene incapsulato nel caso d'uso d'inclusione.
Dalla prospettiva dei casi d'uso base, non ha importanza se il metodo per l'identificazione sia quello di leggere una
carta bancaria magnetica oppure effettuare una scansione della retina. Dipendono solo dal risultato
dell'Identificazione cliente, che è l'identità del cliente. Viceversa, dalla prospettiva del caso d'uso Identificazione
cliente, non importa il modo in cui i casi d'uso base utilizzano l'identità del cliente, oppure cosa sia avvenuto prima
dell'esecuzione dell'inclusione, il metodo per l'identificazione è sempre lo stesso.
Nel sistema ATM, i casi d'uso Prelievo contanti, Deposito contanti e Trasferimento fondi includono tutti il caso d'uso
Identificazione cliente.
Un caso d'uso base può possedere più inclusioni. Un caso d'uso d'inclusione può essere incluso in molti casi d'uso
base. Ciò non indica alcuna relazione tra i casi d'uso base. È possibile persino che esistano più relazioni
d'inclusione tra lo stesso caso d'uso d'inclusione e quello base, purché l'inclusione sia inserita in differenti
posizioni nel caso d'uso base. La relazione d'inclusione definisce quale sia la posizione. Tutte le aggiunte possono
essere nidificate, ciò significa che un caso d'uso d'inclusione serva come caso d'uso base per un'altra inclusione.
Poiché il caso d'uso d'inclusione è astratto, è necessario che abbia un attore associato ad esso. Un'associazione di
comunicazione è necessaria solo se la funzionalità nell'inclusione coinvolge in modo esplicito l'interazione con un
attore.
La funzionalità dell'inclusione viene inserita in una posizione nel caso d'uso base. Quando un'istanza di un caso
d'uso, seguendo la descrizione di un caso d'uso base, raggiunge una posizione nel caso d'uso base, dal quale viene
definita la relazione d'inclusione, essa seguirà la descrizione del caso d'uso d'inclusione. Una volta che viene
effettuata l'inclusione, l'istanza del caso d'uso verrà ripristinata là dove non viene messa nel caso d'uso base.
Un'istanza di un caso d'uso, che segue la descrizione di un caso d'uso base, che comprende la sua inclusione.
La relazione d'inclusione non è condizionale; se l'istanza del caso d'uso raggiunge la posizione nel caso d'uso base,
per il quale è definita, essa viene sempre eseguita. Se si desidera esprimere una condizione, occorre effettuarla come
parte del caso d'uso base. Se un'istanza di un caso d'uso base non raggiunge mai la posizione per cui viene definita la
relazione d'inclusione, non verrà eseguita.
L'istanza del caso d'uso #1 raggiunge la posizione nel caso d'uso base, per il quale viene definita la relazione
d'inclusione, e viene eseguita l'inclusione. L'istanza del caso d'uso #2 non raggiunge la posizione e, pertanto,
l'inclusione non viene eseguita come parte dell'istanza.
Il caso d'uso d'inclusione è un segmento continuo di funzionalità, e tutte vengono incluse in un'unica posizione nel
caso d'uso base. Se esistono segmenti separati di funzionalità, che devono essere inserite in posizioni differenti,
occorre considerare la relazione di estensione (consultare la linea guida
per il prodotto di lavoro: Relazione di estensione) oppure la generalizzazione del caso d'uso (consultare la linea guida per il prodotto di lavoro: Generalizzazione del caso d'uso).
Per la relazione d'inclusione, occorre definire la posizione all'interno della sequenza della funzionalità del caso
d'uso dove viene inserita l'inclusione. La posizione può essere definita facendo riferimento ad un'operazione
particolare o ad un flusso secondario all'interno di un flusso di eventi del caso d'uso base.
Esempio:
Nel sistema ATM, i casi d'uso Prelievo contanti, include il caso d'uso Identificazione cliente. La relazione di
inclusione dal Prelievo contanti all'Identificazione cliente può essere descritta nel modo seguente:
L'Identificazione cliente viene inserita tra le sezioni 1.1, Avvio del caso d'uso, e 1.2, Richiesta di una somma, nel
flusso di eventi del Prelievo contanti.
Per motivi di chiarezza, occorre anche citare l'inclusione nel testo, che descrive il flusso di eventi nel caso d'uso
base.
Se esiste un segmento di funzionalità in un caso d'uso in cui si nota che il caso d'uso non dipende dal modo si
effettuano le cose, ma dal risultato della funzione, è possibile semplificare il caso d'uso estraendo questa
funzionalità in un caso d'uso d'inclusione. Il caso d'uso d'inclusione può essere incluso in svariati casi d'uso base,
cosa che consente il riutilizzo della funzionalità tra i casi d'uso del modello. Considerare le seguenti strutture in
fasi per i casi d'uso di un semplice sistema telefonico:
Effettua chiamata
-
Il chiamante solleva il ricevitore.
-
Il sistema presenta il tono.
-
Il chiamante compone i numeri.
-
Il sistema disattiva il tono.
-
Il chiamante immette il promemoria del numero.
-
Il sistema analizza le cifre e determina l'indirizzo di rete del ricevente.
-
Il sistema determina se si può stabilire un circuito virtuale tra i chiamante e il
ricevente.
-
Il sistema alloca tutte le risorse per il circuito virtuale e stabilisce la
connessione.
-
Il sistema fa squillare il telefono del ricevente.
-
E così via.
Avvio del sistema
-
L'operatore attiva il sistema.
-
Il sistema effettua i test diagnostici su tutti i componenti.
-
Il sistema verifica le connessioni di tutti i sistemi adiacenti. Per ogni sistema adiacente, il sistema determina se può essere stabilito un circuito virtuale tra se stesso ed ed il sistema
adiacente. Il sistema alloca tutte le risorse per il circuito virtuale e stabilisce la connessione.
-
Il sistema risponde che è già pronto per l'operazione.
-
E così via.
Il testo elencato in blu è molto simile; in entrambi i casi si sta eseguendo la stessa funzionalità, sebbene per motivi
molto diversi. Questa somiglianza può essere sfruttata ed è possibile estrarre la funzionalità comune in un nuovo caso
d'uso, Gestione di circuiti virtuali.
Una volta estratta la funzionalità comune, i casi d'uso diventano:
Effettua chiamata
-
Il chiamante solleva il ricevitore.
-
Il sistema presenta il tono.
-
Il chiamante compone i numeri.
-
Il sistema disattiva il tono.
-
Il chiamante immette il promemoria del numero.
-
Il sistema analizza le cifre e determina l'indirizzo di rete del ricevente.
-
Includere il caso d'uso Gestione del circuito virtuale per stabilire la connettività all'interno della rete.
-
Il sistema fa squillare il telefono del ricevente.
-
E così via.
Avvio del sistema
-
L'operatore attiva il sistema.
-
Il sistema effettua i test diagnostici su tutti i componenti.
-
Il sistema verifica le connessioni di tutti i sistemi adiacenti. Per ciascun sistema adiacente, includere Gestione
del circuito virtuale per stabilire la connettività all'interno della rete.
-
Il sistema risponde che è già pronto per l'operazione.
-
E così via.
In un diagramma di casi d'uso la relazione d'inclusione creata viene illustrata come segue:
I casi d'uso Effettua chiamata e Avvio del sistema comprendono entrambi la funzionalità del caso d'uso astratto
Gestione di circuiti virtuali.
|