Diagrammi di Sequenza

I diagrammi di sequenza visualizzano come gli oggetti interagiscono nel tempo. Mostrano l'ordine dei messaggi scambiati tra i partecipanti per portare a termine un compito o uno scenario specifico.

Concetti di base

Partecipanti

I partecipanti rappresentano gli oggetti o gli attori coinvolti nell'interazione. Ogni partecipante ha una linea di vita - una linea verticale tratteggiata che si estende verso il basso e rappresenta il tempo.

Messaggi

I messaggi sono le comunicazioni tra i partecipanti, mostrate come frecce orizzontali tra le linee di vita. Il tempo scorre dall'alto verso il basso.

Riquadri di attivazione

I riquadri di attivazione (chiamati anche execution specification) sono sottili rettangoli su una linea di vita che mostrano quando un partecipante sta elaborando attivamente.

Creare i partecipanti

Usare lo strumento Partecipante

In una pagina UML Diagramma di Sequenza, premi P o scegli Partecipante dal menu UML della barra degli strumenti, poi fai clic sulla tela per posizionare i partecipanti. I nuovi partecipanti si allineano a quelli esistenti. Premi Return con un partecipante selezionato per rinominarlo.

Tipi di partecipante

I partecipanti possono rappresentare diversi tipi di entità:

  • Partecipante - Una parte generica di un oggetto o sistema (rettangolo)
  • Attore - Un utente o un sistema esterno (omino stilizzato)
  • Confine - Un confine di interfaccia utente o di sistema
  • Controllo - Logica di processo o controller
  • Entità - Un oggetto di dati o di dominio
  • Database - Un archivio dati

Imposta il Tipo di ruolo nella scheda Disponi dell'Ispettore → sezione UML.

Creare i messaggi

Usare lo strumento Messaggio

Premi M per attivare lo strumento Messaggio, poi:

  1. Fai clic sulla linea di vita del partecipante di origine
  2. Trascina fino alla linea di vita del partecipante di destinazione
  3. Rilascia per creare il messaggio

Tipi di messaggio

TipoStile frecciaDescrizione
SincronoLinea continua, freccia pienaIl mittente attende la risposta
AsincronoLinea continua, freccia apertaIl mittente continua senza attendere
RitornoLinea tratteggiata, freccia apertaRisposta a una chiamata sincrona
CreaLinea tratteggiata, freccia aperta verso un riquadroCrea un nuovo partecipante
DistruggiLinea che termina con una XTermina un partecipante
Auto-chiamataFreccia che ritorna sulla stessa linea di vitaUn partecipante chiama se stesso

Imposta il Tipo messaggio del messaggio selezionato nella sezione UML dell'Ispettore.

Etichette dei messaggi

Seleziona un messaggio e modifica la sua Etichetta nella sezione UML dell'Ispettore. Formati comuni:

  • methodName() - Semplice chiamata a un metodo
  • methodName(param1, param2) - Chiamata con parametri
  • result := methodName() - Chiamata con assegnazione del risultato
  • [condition] methodName() - Messaggio condizionale (guardia)

Riquadri di attivazione

I riquadri di attivazione mostrano il periodo durante il quale un partecipante è in esecuzione o in attesa di una risposta.

Aggiungere riquadri di attivazione

  1. Scegli Attivazione dal menu UML della barra degli strumenti
  2. Trascina lungo la linea di vita di un partecipante per l'intervallo in cui è attivo
  3. Il riquadro di attivazione viene posizionato su quella linea di vita

Attivazioni annidate

Quando un partecipante chiama se stesso (chiamata ricorsiva) o gestisce più chiamate annidate, i riquadri di attivazione possono essere impilati.

Frammenti

I frammenti raggruppano i messaggi per mostrare logica condizionale, cicli o altro flusso di controllo.

Tipi di frammento

TipoParola chiaveScopo
AlternativaaltRamificazione if-else
OpzioneoptEsecuzione opzionale (if senza else)
CicloloopEsecuzione ripetuta
InterruzionebreakUscita dal ciclo che lo racchiude
ParalleloparEsecuzione concorrente
CriticocriticalSezione atomica/critica
NegativonegInterazione non valida
AsserzioneassertInterazione richiesta
IgnoraignoreMessaggi che possono essere ignorati
ConsideraconsiderMessaggi che devono essere considerati
RiferimentorefRiferimento a un'altra interazione

Creare i frammenti

  1. Scegli Frammento dal menu UML della barra degli strumenti
  2. Trascina un rettangolo sopra i partecipanti e i messaggi che vuoi raggruppare
  3. Seleziona il frammento e imposta il suo Tipo frammento nella sezione UML dell'Ispettore
  4. Inserisci una Condizione di guardia se necessario

Guardie dei frammenti

Le guardie sono condizioni mostrate tra parentesi quadre:

  • [x > 0] - Condizione numerica
  • [user.isAdmin] - Verifica di una proprietà
  • [else] - Ramo predefinito/else nei frammenti alt

Riordinare gli elementi

Spostare i partecipanti

Trascina i partecipanti orizzontalmente per riordinarli. I messaggi collegati li seguiranno.

Spostare i messaggi

Seleziona un messaggio e premi Cmd+↑ o Cmd+↓ per spostarlo prima o dopo nella sequenza.

Buone pratiche

  1. Inizia dal flusso principale - Modella prima il percorso ideale (happy path), poi aggiungi le alternative
  2. Mantienilo leggibile - Limita a 5-7 partecipanti per diagramma
  3. Usa nomi significativi - Etichetta i messaggi con nomi di metodo o descrizioni reali
  4. Mostra i messaggi di ritorno - Specialmente per le chiamate sincrone dove il valore di ritorno è importante
  5. Usa i frammenti con parsimonia - Troppi frammenti annidati riducono la leggibilità
  6. Aggiungi note - Usa le note adesive per spiegare la logica complessa

Esempio: Flusso di accesso utente

Una tipica sequenza di accesso potrebbe includere:

  1. L'utente inserisce le credenziali
  2. Il client invia una richiesta di accesso al server
  3. Il server effettua la convalida con il database
  4. Il database restituisce il record dell'utente
  5. Il server crea una sessione
  6. Il server restituisce successo/fallimento al client
  7. Il client aggiorna l'interfaccia utente

Questo flusso mostra chiamate sincrone, messaggi di ritorno e possibili frammenti alt per i percorsi di successo/fallimento.