Linea guida: Relazione d'inclusione
La relazione di inclusione connette un caso d'uso base con un caso d'uso d'inclusione. Questa linea guida descrive come utilizzare questa relazione.
Relazioni
Descrizione principale

Spiegazione

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.

Diagramma descritto nel testo associato

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.

Esecuzione dell'inclusione

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.

Diagramma descritto nel testo associato.

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.

Diagramma descritto nel testo associato

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).

Descrizione della relazione d'inclusione

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.

Esempio di utilizzo

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

  1. Il chiamante solleva il ricevitore.
  2. Il sistema presenta il tono.
  3. Il chiamante compone i numeri.
  4. Il sistema disattiva il tono.
  5. Il chiamante immette il promemoria del numero.
  6. Il sistema analizza le cifre e determina l'indirizzo di rete del ricevente.
  7. Il sistema determina se si può stabilire un circuito virtuale tra i chiamante e il ricevente.
  8. Il sistema alloca tutte le risorse per il circuito virtuale e stabilisce la connessione.
  9. Il sistema fa squillare il telefono del ricevente.
  10. E così via.

Avvio del sistema

  1. L'operatore attiva il sistema.
  2. Il sistema effettua i test diagnostici su tutti i componenti.
  3. 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.
  4. Il sistema risponde che è già pronto per l'operazione.
  5. 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

  1. Il chiamante solleva il ricevitore.
  2. Il sistema presenta il tono.
  3. Il chiamante compone i numeri.
  4. Il sistema disattiva il tono.
  5. Il chiamante immette il promemoria del numero.
  6. Il sistema analizza le cifre e determina l'indirizzo di rete del ricevente.
  7. Includere il caso d'uso Gestione del circuito virtuale per stabilire la connettività all'interno della rete.
  8. Il sistema fa squillare il telefono del ricevente.
  9. E così via.

Avvio del sistema

  1. L'operatore attiva il sistema.
  2. Il sistema effettua i test diagnostici su tutti i componenti.
  3. 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.
  4. Il sistema risponde che è già pronto per l'operazione.
  5. E così via.

In un diagramma di casi d'uso la relazione d'inclusione creata viene illustrata come segue:

Diagramma descritto nel testo associato.

I casi d'uso Effettua chiamata e Avvio del sistema comprendono entrambi la funzionalità del caso d'uso astratto Gestione di circuiti virtuali.