Tutorial sul diagramma di sequenza: Guida completa con esempi

Questo tutorial sui diagrammi di sequenza ha lo scopo di aiutarvi a capire meglio i diagrammi di sequenza; di spiegare tutto ciò che dovete sapere, da come disegnare un diagramma di sequenza agli errori comuni che dovreste evitare quando ne disegnate uno.

Esistono 3 tipi di diagrammi di interazione: diagrammi di sequenza, diagrammi di comunicazione e diagrammi di temporizzazione. Questi diagrammi sono utilizzati per illustrare le interazioni tra le parti all’interno di un sistema. Tra i tre, i diagrammi di sequenza sono preferiti sia dagli sviluppatori che dai lettori per la loro semplicit√†.

In questo tutorial sul diagramma di sequenza imparerete a conoscere;

Cos’√® un diagramma di sequenza?

I diagrammi di sequenza, comunemente usati dagli sviluppatori, modellano le interazioni tra gli oggetti in un unico caso d’uso. Essi illustrano come le diverse parti di un sistema interagiscono tra loro per svolgere una funzione, e l’ordine in cui le interazioni avvengono quando un particolare caso d’uso viene eseguito.

In parole pi√Ļ semplici, un diagramma di sequenza mostra diverse parti del lavoro di un sistema in una ‘sequenza’ per ottenere qualcosa.

Notazioni del diagramma di sequenza

Un diagramma di sequenza √® strutturato in modo tale da rappresentare una linea temporale che inizia dall’alto e scende gradualmente per segnare la sequenza delle interazioni. Ogni oggetto ha una colonna e i messaggi scambiati tra di loro sono rappresentati da frecce.

Una rapida panoramica delle varie parti di un diagramma di sequenza

Notazione della linea-vita
Sequence diagram - LifelineAUn diagramma de sequenza è composto da diverse di queste notazioni della linea di vita che dovrebbero essere disposte orizzontalmente nella parte superiore del diagramma. Non si devono sovrapporre due notazioni della linea di vita. Essi rappresentano i diversi oggetti o parti che interagiscono tra loro nel sistema durante la sequenza.

Una notazione della linea di vita con il simbolo di un elemento attore viene utilizzata quando il particolare diagramma di sequenza è di proprietà di un caso usato.
linea di vita con il simbolo di un elemento attore Una linea di vita con un elemento entit√† rappresenta i dati del sistema. Ad esempio, in un’applicazione per il servizio clienti, l’entit√† cliente gestirebbe tutti i dati relativi a un cliente. Entit√† Linea diUna linea di vita con un elemento di confine indica un elemento di sistema/software in un sistema; per esempio, le schermate dell’interfaccia utente, i gateway di database o i menu con cui gli utenti interagiscono, sono confini. Linea di vita perimetraleE un ancora di salvezza di vita con un elemento di controllo indica un’entit√† o un gestore di controllo. Organizza e programma le interazioni tra i confini e le entit√† e funge da mediatore tra di loro.
Barre di attivazione

La barra di attivazione √® il riquadro posto sulla linea di vita. Si usa per indicare che un oggetto √® attivo (o istanziato) durante un’interazione tra due oggetti. La lunghezza del rettangolo indica la durata degli oggetti che rimangono attivi.

In un diagramma di sequenza, l’interazione tra due oggetti avviene quando un oggetto invia un messaggio ad un altro. L’utilizzo della barra di attivazione sulle linee di vita del Message Caller (l’oggetto che invia il messaggio) e del Message Receiver (l’oggetto che riceve il messaggio) indica che entrambi sono attivi/√® istanziato durante lo scambio del messaggio. Diagramma di sequenza - Barre di attivazione Frecce dei messaggi

Una freccia dal chiamante al destinatario del messaggio specifica un messaggio in un diagramma di sequenza. Un messaggio pu√≤ fluire in qualsiasi direzione; da sinistra a destra, da destra a sinistra o indietro verso il chiamante stesso. Mentre sulla freccia √® possibile descrivere il messaggio che viene inviato da un oggetto all’altro, con diverse punte di freccia √® possibile indicare il tipo di messaggio inviato o ricevuto.

La freccia del messaggio viene fornita con una descrizione, nota come firma del messaggio, su di essa. Il formato per la firma di questo messaggio è il seguente. Tutte le parti tranne il nome_messaggio sono opzionali.

attributo = nome_messaggio (argomenti): ritorno_tipo

  • Messaggio sincrono

Come mostrato nell’esempio delle barre di attivazione, un messaggio sincrono viene utilizzato quando il mittente attende che il destinatario elabori il messaggio e ritorni prima di continuare con un altro messaggio. La punta della freccia utilizzata per indicare questo tipo di messaggio √® solida, come quella qui sotto. Freccia del messaggio sincrono

  • Messaggio asincrono

Un messaggio asincrono viene utilizzato quando il chiamante non aspetta che il destinatario elabori il messaggio e ritorni prima di inviare altri messaggi ad altri oggetti all’interno del sistema. La punta della freccia utilizzata per mostrare questo tipo di messaggio √® una freccia a linea come mostrato nell’esempio qui sotto. Esempio di messaggio asincrono

  • Messaggio di ritorno

Un messaggio di ritorno viene utilizzato per indicare che il destinatario del messaggio ha terminato l’elaborazione del messaggio e sta restituendo il controllo al chiamante del messaggio. I messaggi di ritorno sono pezzi di notazione opzionali, per una barra di attivazione che viene attivata da un messaggio sincrono implica sempre un messaggio di ritorno.

Suggerimento: Potete evitare di ingombrare i vostri diagrammi riducendo al minimo l’uso dei messaggi di ritorno, poich√© il valore di ritorno pu√≤ essere specificato nella freccia iniziale del messaggio stesso. Esempio di messaggio

  • Messaggio di creazione del partecipante

Gli oggetti non vivono necessariamente per tutta la durata della sequenza degli eventi. Gli oggetti o i partecipanti possono essere creati in base al messaggio che viene inviato.

La notazione della casella partecipante caduta pu√≤ essere utilizzata quando √® necessario dimostrare che il partecipante in questione non esisteva prima dell’invio della chiamata di creazione. Se il partecipante creato fa qualcosa subito dopo la sua creazione, si dovrebbe aggiungere una casella di attivazione proprio sotto la casella del partecipante. Esempio di creazione del

  • Messaggio di distruzione del partecipante

Allo stesso modo, i partecipanti quando non sono pi√Ļ necessari possono anche essere cancellati da un diagramma di sequenza. Questo viene fatto aggiungendo una ‘X’ alla fine della linea di vita del suddetto partecipante. Messaggio di distruzione della partecipazione

  • Messaggio riflessivo

Quando un oggetto invia un messaggio a se stesso, viene chiamato messaggio riflessivo. √ą indicato con una freccia di messaggio che inizia e finisce sulla stessa linea di vita come mostrato nell’esempio seguente. Messaggio riflessivo Commento

I diagrammi UML permettono generalmente l’annotazione di commenti in tutti i tipi di diagrammi UML. L’oggetto commento √® un rettangolo con un angolo ripiegato come mostrato di seguito. Il commento pu√≤ essere collegato all’oggetto correlato con una linea tratteggiata. Esempio di oggetto di commento Nota: Visualizza il diagramma di sequenza delle migliori pratiche per conoscere i frammenti di sequenza.

Diagramma di sequenza delle migliori pratiche

  • Gestire interazioni complesse con frammenti di sequenza

Un frammento di sequenza è rappresentato come una scatola che incornicia una sezione di interazioni tra oggetti (come mostrato negli esempi seguenti) in un diagramma di sequenza.

Viene utilizzato per mostrare interazioni complesse come flussi e loop alternativi in modo pi√Ļ strutturato. Nell’angolo in alto a sinistra del frammento si trova un operatore. Questo – l’operatore del frammento – specifica che tipo di frammento √®.

Alternative

La frammento di combinazione alternativa viene utilizzato quando √® necessario scegliere tra due o pi√Ļ sequenze di messaggi. Modella la logica del “se poi altro”.

Il frammento alternativo √® rappresentato da un grande rettangolo o da una cornice; viene specificato menzionando ‘alt’ all’interno della casella del nome della cornice (alias operatore del frammento).

Per mostrare due o pi√Ļ alternative, il rettangolo pi√Ļ grande viene poi diviso in quelli che vengono chiamati operandi di interazione utilizzando una linea tratteggiata, come mostrato nell’esempio di diagramma di sequenza sopra riportato. Ogni operando ha una guardia da testare e viene posizionata nell’angolo in alto a sinistra dell’operando.

Esempio di frammento alternativo - tutorial sul diagramma di sequenza Opzioni

La frammento della combinazione di opzioni viene utilizzato per indicare una sequenza che si verificher√† solo in una certa condizione, altrimenti la sequenza non si verificher√†. Modella l’affermazione “se poi”.

Simile al frammento alternativo, il frammento di opzione √® rappresentato anche con una cornice rettangolare dove “opt” √® posto all’interno della casella del nome.

A differenza del frammento alternativo, un frammento di opzione non √® diviso in due o pi√Ļ operandi. La guardia dell’opzione √® posizionata nell’angolo in alto a sinistra.

(Trovare un diagramma di sequenza di esempio con un frammento di opzione nella sezione Modelli di diagramma di sequenza ed esempi).

Loops

Il frammento loop viene utilizzato per rappresentare una sequenza ripetitiva. Posizionare le parole ‘loop’ nella casella del nome e la condizione di protezione vicino all’angolo in alto a sinistra del telaio.

Oltre al test booleano, la guardia in un frammento di loop può essere sottoposta a due altre condizioni speciali. Si tratta di iterazioni minime (scritte come minint = [il numero] e massime (scritte come maxint = [il numero]).

Se si tratta di una guardia minima di iterazioni, il loop deve eseguire non meno del numero indicato, e se si tratta di una guardia massima di iterazioni, il loop non deve eseguire pi√Ļ del numero indicato.

(Trovate un esempio di un frammento di loop qui sotto nei modelli di diagrammi di sequenza e nella sezione di esempio)

Frammento di riferimento

Potete usare il frammento di ref per gestire la dimensione di grandi diagrammi di sequenza. Permette di riutilizzare parte di un diagramma di sequenza in un altro, o in altre parole, si può fare riferimento a parte di un diagramma in un altro diagramma usando il frammento di ref.

Per specificare il frammento di riferimento, √® necessario indicare “ref” nella casella del nome del riquadro e il nome del diagramma di sequenza a cui si fa riferimento all’interno del riquadro.

Esempio di frammento di riferimento Per altri frammenti di sequenza si rimanda al sito Beyond the Basics of Sequence Diagrams: Parte 1, Parte 2 e Parte 3.

  • Disegnare diagrammi di sequenza pi√Ļ piccoli che catturino l’essenza del caso d’uso

Invece di ingombrare il vostro diagramma di sequenza con diversi oggetti e gruppi di messaggi che confonderanno il lettore, disegnate alcuni diagrammi di sequenza pi√Ļ piccoli che spiegano giustamente cosa fa il vostro sistema. Assicurarsi che il diagramma si inserisca in un’unica pagina e lasci spazio anche per le note esplicative.

Inoltre, invece di disegnare decine di diagrammi di sequenza, scopri cosa √® comune tra gli scenari e concentrati su questo. E se il codice √® espressivo e pu√≤ stare in piedi da solo, non c’√® bisogno di disegnare un diagramma di sequenza in primo luogo.

Come disegnare un diagramma di sequenza

Un diagramma di sequenza rappresenta lo scenario o il flusso degli eventi in un unico caso d’uso. Il flusso dei messaggi del diagramma di sequenza si basa sulla narrazione del particolare caso d’uso.

Quindi, prima di iniziare a disegnare il diagramma di sequenza o decidere quali interazioni devono essere incluse in esso, √® necessario disegnare il diagramma del caso d’uso e preparare una descrizione completa di ci√≤ che il particolare caso d’uso fa.

Come disegnare un diagramma di sequenza Un diagramma di sequenza rappresenta lo scenario o il flusso degli eventi in un unico caso d'uso. Il flusso di messaggi del diagramma di sequenza si basa sulla narrazione del particolare caso d'uso. Quindi, prima di iniziare a disegnare il diagramma di sequenza o decidere quali interazioni devono essere incluse in esso, è necessario preparare una descrizione completa di ciò che il particolare caso d'uso fa.

Dall’esempio del diagramma dei casi d’uso sopra riportato di ‘Creare un nuovo conto di biblioteca online’, ci concentreremo sul caso d’uso denominato ‘Crea un nuovo account utente’ per disegnare il nostro esempio di diagramma di sequenza.

Prima di disegnare il diagramma di sequenza, è necessario identificare gli oggetti o gli attori che sarebbero coinvolti nella creazione di un nuovo account utente. Questi sarebbero;

  • Bibliotecario
  • Sistema di gestione della biblioteca online
  • Database delle credenziali utente
  • Sistema di posta elettronica

Una volta identificati gli oggetti, √® quindi importante scrivere una descrizione dettagliata di ci√≤ che fa il caso d’uso. Da questa descrizione, si possono facilmente capire le interazioni (che dovrebbero andare nel diagramma di sequenza) che si verificherebbero tra gli oggetti di cui sopra, una volta eseguito il caso d’uso.

Ecco i passi che avvengono nel caso d’uso denominato “Crea un nuovo account utente della biblioteca”.

  • Il bibliotecario chiede al sistema di creare un nuovo conto di biblioteca online
  • Il bibliotecario seleziona quindi il tipo di account utente della biblioteca
  • Il bibliotecario inserisce i dati dell’utente
  • I dati dell’utente vengono controllati utilizzando il database delle credenziali dell’utente
  • Viene creato il nuovo conto utente della biblioteca
  • Un riepilogo dei dati del nuovo account viene poi inviato via e-mail all’utente

Da ognuno di questi passi, è possibile specificare facilmente quali messaggi devono essere scambiati tra gli oggetti del diagramma di sequenza. Una volta che è chiaro, si può procedere e iniziare a disegnare il diagramma di sequenza.

Il seguente diagramma di sequenza mostra come gli oggetti nel sistema di gestione della biblioteca online interagiscono tra loro per eseguire la funzione ‘Crea nuovo account utente della biblioteca’.

Come disegnare un diagramma di sequenza - tutorial

Diagramma delle sequenze Errori comuni

Quando si disegnano diagrammi di sequenza, i progettisti tendono a commettere questi errori comuni. Evitando questi errori potete garantire la qualità del vostro diagramma.

  • Aggiungendo troppi dettagli. Questo ingombra il diagramma e lo rende difficile da leggere.
  • Diagrammi di sequenza obsoleti e non aggiornati che sono irrilevanti se confrontati con le interfacce, le architetture reali ecc. del sistema. Non dimenticate di sostituirli o di modificarli.
  • Non lasciando spazi vuoti tra il testo del caso d’uso e la freccia del messaggio; ci√≤ rende difficile la lettura del diagramma.
  • Non considerando attentamente le origini delle frecce del messaggio.

Vedere questi errori comuni spiegati in dettaglio nella Guida ai diagrammi di sequenza: Errori comuni da evitare quando si disegnano i diagrammi delle sequenze.

Esempi di diagrammi di sequenza e modelli

Di seguito sono riportati alcuni esempi di diagrammi di sequenza e modelli che vengono disegnati con Creately. Creare diagrammi di sequenza online con il tool online di Creately. Cliccare sul modello per aprirlo nell’editor.

Diagramma di sequenza di un sistema di esami online  

Esame online - Schema del diagramma di sequenza

Fare clic sull’immagine per modificarla online

Diagramma di sequenza Esempio di un sistema di gestione della scuola Sistema di gestione della scuola - Modello del diagramma di sequenza

Esempio di un frammento di combinazione di opzioni Esempio di un frammento di opzione

Esempio di sequenza di loop  Anelli - Esempio di diagramma di sequenza

Qui ce ne sono altri modelli di diagrammi di sequenza ed esempi che potete modificare subito.

Tutorial del diagramma di sequenza – Presentazione SlideShare

Feedback sul tutorial del diagramma di sequenza

Questo tutorial sui diagrammi di sequenza copre tutto ciò che è necessario sapere sui diagrammi di sequenza e sul loro disegno. Se avete suggerimenti o domande riguardo al tutorial sul diagramma di sequenza, sentitevi liberi di lasciare un commento.

Altri tutorial per i diagrammi

Lascia un commento

*
*

13 − four =

Torna in cima