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
- Notazioni del diagramma di sequenza
- Diagramma di sequenza migliori pratiche
- Come disegnare un diagramma di sequenza
- Diagramma delle sequenze Errori comuni
- Modelli ed esempi di diagrammi di sequenza
- Diagramma di sequenza Presentazione SlideShare
- Feedback sulla guida al diagramma di sequenza
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
Un 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.
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. Una 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. E 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. 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.
- 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.
- 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.
- 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.
- 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 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. 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. 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.
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.
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.
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’.
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
Diagramma di sequenza Esempio di un sistema di gestione della scuola
Esempio di un frammento di combinazione di opzioni
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
- Tutorial sulla modellazione dei processi Affari (Guida BPM che spiega le funzionalità)
- Guida al diagramma di flusso definitivo ( Guida al diagramma di flusso completo con esempi)
- Utilizzare il tutorial sul diagramma del caso ( Guida con esempi )