Sequence Diagram e Collaboration Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania
Sommario Interaction Diagrams Sequence Diagram: Definizione Notazione Messaggi Notazione estesa Esempi Collaboration Diagram: Definizione Messaggi Esempi Sequence e Collaboration Diagrams: confronto 2
Diagrammi strutturali (logico) Diagrammi UML Vista Statica Diagrammi di implementazione Diagrammi di interazione Vista Dinamica Diagrammi di comportamento 3
Interaction diagrams: comportamento dinamico del sistema Diagrammi di interazione (interaction diagrams) descrivono il comportamento dinamico, mostrando le interazioni tra gli oggetti (interni e/o esterni) del sistema descrivono come gli oggetti collaborano fra loro nello svolgimento di un attività Tipicamente un diagramma di interazione descrive un singolo caso d uso in termini di specifici oggetti e messaggi scambiati Ci sono due tipi di interaction diagrams Sequence diagram Collaboration diagram 4
Sequence diagram: definizione Sequence diagram: evidenzia l aspetto temporale dell interazione fra gli oggetti illustra i messaggi che i vari oggetti si scambiano e in quale ordine, ma non le associazioni tra gli oggetti evidenzia il ciclo di vita degli oggetti che, attraverso lo scambio di opportuni messaggi, possono essere creati e distrutti 5
Sequence diagram: notazione Oggetti disposti in alto e rappresentati con dei box, con un nome sottolineato nel formato NomeOggetto: NomeClasse ma è possibile indicare solo l uno o l altro, e una linea tratteggiata verticale detta linea di vita dell oggetto. Il tempo scorre dall alto verso il basso in genere la scala non importa interessa solo la sequenza cioè il rapporto di precedenza tra eventi, non la loro distanza, ma per sistemi real-time si può usare Messaggi rappresentati con una freccia e un nome Valore di Ritorno indica il valore restituito all oggetto chiamante e non un nuovo messaggio, e rappresentato con una freccia con linea tratteggiata e un nome 6
Sequence diagram: notazione Oggetti Oggetto1 : Classe1 Oggetto2 : Classe2 Linea di vita Messaggi Box di attivazione Istanti di tempo {b-a > 1sec} a b operazione1() risposta1 Tempo Vincolo temporale c c Messaggio che impiega un certo tempo per essere ricevuto 7
Sequence diagram: notazione Oggetto1 : Classe1 Oggetto3 : Classe3 Tempo Creazione new Oggetto2 : Classe2 op1() remove() Distruzione tramite messaggio da un altro oggetto op2() Distruzione come metodo interno all oggetto 8
Sequence diagram: messaggi I messaggi possono essere Sincroni: se l oggetto che invia il messaggio rimane in attesa del valore di ritorno dall oggetto ricevente Asincroni: se l oggetto che invia il messaggio prosegue la propria elaborazione in parallelo all oggetto chiamato Questo formalismo consente di rappresentare in maniera efficace i sistema con più processi concorrenti Notazione Messaggi sincroni Messaggi asincroni 9
Sequence diagram: notazione estesa Condizione è associata ad un messaggio: solo se è soddisfatta il messaggio viene generato Esempio: [x>=0] operazione1() Selezione In base alla condizione verificata e possibile selezionare il messaggio da generare Esempio: [x>0] operazione1() else [x<=0] operazione2() Iterazione indica che un messaggio viene inoltrato più volte Esempio: *[cond iterazione] operazione1() Chiamata interna (self-call) riferimento ricorsivo di un oggetto a se stesso, per chiamare una delle sue funzioni Esempio: operazione1() 10
Sequence diagram: Esempio1 Supponiamo di dover illustrare il seguente caso: La Finestra Inserisci Ordine manda un messaggio di preparazione ad un Ordine L Ordine invia messaggi di preparazione a tutte le Linee d Ordine contenute nell Ordine Ciascuna Linea d ordine controlla la disponibilità del proprio articolo nel Magazzino: se è presente lo rimuove dal magazzino, verifica: se la disponibilità dell articolo è scesa al di sotto di una certa soglia, l oggetto Magazzino generera una richiesta di riordino, quindi crea un Prodotto da consegnare 11
Sequence diagram: Esempio1 : Finestra Inserisci Ordine : Linea : Ordine d Ordine : Magazzino preparazione () *[per tutte le linee d ordine] preparazione() hadisponib:= check() Condizione Iterazione Ritorno [hadisponib] remove() deveriordinare := deveriord() Chiamata interna Creazione [deveriordinare] new : Riordine Prodotto Creazione Distruzione [hadisponib] new : Prodotto da Consegnare 12
Sequence diagram: Esempio2 Quando una new transazione viene creata una Transazione crea un Coordinatore per il controllo. Il Coordinatore crea una serie di Controllori, uno per tipo di controllo. Questi Controllori svolgono la loro elaborazione in parallelo come processi separati. new un Coordinatore di Transazione new new primo Controllore di Transazione secondo Controllore di Transazione Se un controllo fallisce, il Coordinatore fa terminare tutti gli altri Controllori ancora attivi insuccesso deallocazione dei controllori omessa altra elaborazi one e comunica alla Transazione che non è valida descrizioni testuali invalidazione distruzione 13
Sequence diagram: Riepilogo Con i sequence diagrams si illustra l aspetto temporale delle collaborazioni fra oggetti nell ambito di un singolo caso d uso (o di uno scenario cioe una particolare esecuzione dello use case) Attraverso l uso dei messaggi asincroni si possono modellare sistemi con più processi attivi contemporaneamente, seguendone con precisione la creazione e la distruzione 14
Collaboration diagram: definizione Collaboration diagram: evidenzia le relazioni tra gli oggetti piuttosto che l aspetto temporale dell interazione I componenti del diagramma sono sempre oggetti e messaggi ma questa volta non è modellato esplicitamente in maniera grafica lo scorrere del tempo. Gli oggetti sono disposti liberamente, e in modo da rendere chiare le interazioni più importanti Le sequenze temporali sono descrivibili numerando i messaggi in modo progressivo 15
Collaboration diagram: messaggi La numerazione dei messaggi può essere: Semplice (1, 2, 3, ) permette di seguire in maniera chiara la sequenza generale Decimale (1, 1.1, 1.1.1, 1.1.2, 1.2, ) permette di capire quale operazione invochi quale altra (preferita in UML) I messaggi sono accompagnati da frecce per capire quale oggetto invia il messaggio e quale lo riceve 16
Collaboration diagram: Esempio numerazione semplice :Finestra di Inserimento Ordine 1: preparazione() :Ordine Oggetto Messaggi o Numero di sequenza 2: *[per tutte le linee d ordine] preparazione() 5: deveriordinare:=deveriord() : Linea d Ordine 7: [hadisponib] new :Prodotto da consegnare 3: hadisponib:=check() 4: [hadisponib] remove() : Magazzino 6: [deveriordinare] new :Riordine Prodotto 17
Collaboration diagram: Esempio numerazione decimale :Finestra di Inserimento Ordine 1:preparazione() Oggetto Numero di sequenza :Ordine Messaggi o 1.1:*[per tutte le linee d ordine] preparazione() 1.1.2.1: deveriordinare:=deveriord() : Linea d Ordine 1.1.3: [hadisponib] new :Prodotto da consegnare 1.1.1: hadisponib:=check() 1.1.2: [hadisponib] remove() : Magazzino 1.1.2.2: [deveriordinare] new :Riordine Prodotto 18
Sequence e Collaboration diagrams: confronto Sequence diagrams e Collaboration diagrams sono semanticamente equivalenti (isomorfi). Ciò vuol dire che, in linea di principio, è possibile trasformare gli uni negli altri senza perdita di informazione. Tuttavia, dato che i particolari delle interazioni che enfatizzano sono leggermente diversi, alcuni di essi saranno visibili soltanto in una delle categorie di diagrammi ad es. i messaggi di ritorno dei Sequence diagrams non hanno un corrispettivo formalismo nei Collaboration 19
Pro e contro degli Interaction diagrams + Sono semplici da creare e da leggere + Rappresentano la successione precisa degli eventi (Sequence diagram) o delle collaborazioni fra oggetti (Collaboration diagram) - Diventano rapidamente troppo complicati in presenza di numerosi cicli e di molte alternative di comportamento - In questi casi è quindi conveniente creare un diagramma diverso per ciascuna delle alternative - Esempio: Transazione a buon fine e transazione abortita - Disporre di una serie di diagrammi crea problemi di manutenzione - Una modifica al Main success scenario puo implicare la modifica di tutti gli altri diagrammi 20