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:
- Fai clic sulla linea di vita del partecipante di origine
- Trascina fino alla linea di vita del partecipante di destinazione
- Rilascia per creare il messaggio
Tipi di messaggio
| Tipo | Stile freccia | Descrizione |
|---|---|---|
| Sincrono | Linea continua, freccia piena | Il mittente attende la risposta |
| Asincrono | Linea continua, freccia aperta | Il mittente continua senza attendere |
| Ritorno | Linea tratteggiata, freccia aperta | Risposta a una chiamata sincrona |
| Crea | Linea tratteggiata, freccia aperta verso un riquadro | Crea un nuovo partecipante |
| Distruggi | Linea che termina con una X | Termina un partecipante |
| Auto-chiamata | Freccia che ritorna sulla stessa linea di vita | Un 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 metodomethodName(param1, param2)- Chiamata con parametriresult := 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
- Scegli Attivazione dal menu UML della barra degli strumenti
- Trascina lungo la linea di vita di un partecipante per l'intervallo in cui è attivo
- 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
| Tipo | Parola chiave | Scopo |
|---|---|---|
| Alternativa | alt | Ramificazione if-else |
| Opzione | opt | Esecuzione opzionale (if senza else) |
| Ciclo | loop | Esecuzione ripetuta |
| Interruzione | break | Uscita dal ciclo che lo racchiude |
| Parallelo | par | Esecuzione concorrente |
| Critico | critical | Sezione atomica/critica |
| Negativo | neg | Interazione non valida |
| Asserzione | assert | Interazione richiesta |
| Ignora | ignore | Messaggi che possono essere ignorati |
| Considera | consider | Messaggi che devono essere considerati |
| Riferimento | ref | Riferimento a un'altra interazione |
Creare i frammenti
- Scegli Frammento dal menu UML della barra degli strumenti
- Trascina un rettangolo sopra i partecipanti e i messaggi che vuoi raggruppare
- Seleziona il frammento e imposta il suo Tipo frammento nella sezione UML dell'Ispettore
- 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
- Inizia dal flusso principale - Modella prima il percorso ideale (happy path), poi aggiungi le alternative
- Mantienilo leggibile - Limita a 5-7 partecipanti per diagramma
- Usa nomi significativi - Etichetta i messaggi con nomi di metodo o descrizioni reali
- Mostra i messaggi di ritorno - Specialmente per le chiamate sincrone dove il valore di ritorno è importante
- Usa i frammenti con parsimonia - Troppi frammenti annidati riducono la leggibilità
- Aggiungi note - Usa le note adesive per spiegare la logica complessa
Esempio: Flusso di accesso utente
Una tipica sequenza di accesso potrebbe includere:
- L'utente inserisce le credenziali
- Il client invia una richiesta di accesso al server
- Il server effettua la convalida con il database
- Il database restituisce il record dell'utente
- Il server crea una sessione
- Il server restituisce successo/fallimento al client
- Il client aggiorna l'interfaccia utente
Questo flusso mostra chiamate sincrone, messaggi di ritorno e possibili frammenti alt per i percorsi di successo/fallimento.