Istituto di Scienza e Tecnologie dell'Informazione “A. Faedo” Software Engineering Laboratory Sequence Diagrams Sequence Diagrams Antonino Sabetta [email protected]
Istituto di Scienza e Tecnologie dell'Informazione “A. Faedo”Software Engineering Laboratory
Sequence DiagramsSequence Diagrams
Antonino Sabetta
SOFTWARE ENGINEERING LABORATORY
Nota sul copyrightNota sul copyright
Il materiale presentato in queste slide è basato sul documento di specifica dello standard UML 2.2
(Superstructure) e sul testo UML2 Toolkit e su altro materiale di pubblico dominio (ma potenzialmente coperto da copyright) reperito sul Web. Da queste fonti sono state prese tutte le figure e gli esempi
di questa presentazione.
Resta inteso che questo materiale è reso disponibile unicamente per fini didattici e solo ai frequentanti del corso UML
presso il CNR-ISTI di Pisa.
SOFTWARE ENGINEERING LABORATORY
Le lezioni precedenti (in una slide)Le lezioni precedenti (in una slide)
» Progettare un sistema partendo da cosa deve fare
» La descrizione di cosa deve fare è guidata da scenari tipici di interazione tra attore e sistema
» La modellazione di tali scenari di interazione, inizialmente usa linguaggio naturale
SOFTWARE ENGINEERING LABORATORY
Le lezioni precedenti (in una Le lezioni precedenti (in una slide ...o due)slide ...o due)
» Da questa modellazione iniziale si continua a dettagliare la specifica del problema (il cosa) e si inizia ad esplorare lo spazio delle soluzioni possibili (il come)
» Gli activity diagram, concentrandosi sui passi necessari a svolgere una funzionalità richiesta al sistema, sono un buon aiuto per questa esplorazione
SOFTWARE ENGINEERING LABORATORY
Una mappa per orientarci - 1Una mappa per orientarci - 1
» Diagrammi UML per descrivere:» struttura statica del sistema
» structure diagrams
» comportamento del sistema» behavior diagrams» interaction diagrams
SOFTWARE ENGINEERING LABORATORY
Una mappa per orientarci - 2Una mappa per orientarci - 2
» STUCTURE DIAGRAMS» class diagram» object diagram» component diagram» deployment diagram» composite structure diagram» package diagram
SOFTWARE ENGINEERING LABORATORY
Una mappa per orientarci - 3Una mappa per orientarci - 3
» BEHAVIOUR DIAGRAMS» state machine diagram» activity diagram» use case diagram» interaction diagrams
» sequence diagram» communication diagram» interaction overview diagram» timing diagram
SOFTWARE ENGINEERING LABORATORY
Interaction Diagrams- 1Interaction Diagrams- 1
» Una famiglia di diagrammi» Focalizzati sull'interazione tra elementi del
sistema (o tra attori e sistema)
» Una veloce rassegna:» Communication diagram
» Scambio di messaggi, enfasi sulla struttura interna degli oggetti
» Timing diagrams» Enfasi sulla durata dei behaviour
SOFTWARE ENGINEERING LABORATORY
Interaction Diagrams- 2Interaction Diagrams- 2
» Sequence diagram» Scambio di messaggi, uso di lifeline visualizzare
l'asse temporale e la sequenza degli scambi
» Interaction overview diagram» Usa un insieme di sequence diagram come
elementi di comportamento che sono combinati usando la notazione dell'activity diagram
SOFTWARE ENGINEERING LABORATORY
In questa lezioneIn questa lezione
» Ci concentriamo sui sequence diagram» Con un rapido cenno (solo usando esempi)
agli altri interaction diagram
» Notazione e semantica di base» Esempi
» Linee guida pratiche per descrivere use case con sequence diagram
» Qualche indicazione pratica» Esempi/esercizi
SOFTWARE ENGINEERING LABORATORY
sequencesequence diagram, in sintesidiagram, in sintesi
» mostrano lo scambio di messaggi tra oggetti» Illustrano in che modo un insieme di oggetti
interagiscono l'uno con l'altro » esprimono un possibile comportamento di
interazione tra più elementi» (elemento è un attore oppure un oggetto)
» visualizzano l'ordine temporale (parziale) dei messaggi
SOFTWARE ENGINEERING LABORATORY
sequencesequence diagram, in sintesidiagram, in sintesi
» adatti per:» descrivere la realizzazione di use-case» la modellazione di comportamenti visibili
dall'esterno dell'oggetto
» includono elementi per il controllo del flusso di esecuzione (fragments)
» Due assi:» Asse orizzontale:
» insieme di elementi che comunicano
» Asse verticale:» tempo
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
» Il diagramma è racchiuso in un riquadro.
» In alto a sinistra si indica il nome del diagramma, preceduto dall'indicazione sd
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
» Rettangolo indica una istanza» Non necessariamente
identificata in modo esplicito
» Lifeline: il tempo scorre dall'alto al basso
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
» Attivazione di un oggetto: il rettangolo posto lungo la lifeline indica che l'oggetto è attivo
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
» Scambio di messaggi» Messaggio sincrono» Messaggio asincrono» Creazione di un oggetto» Ricezione di messaggio
(con mittente non specificato)
» Invio di messaggio (con destinatario non specificato)
» Ritorno (da invocazione sincrona)
SOFTWARE ENGINEERING LABORATORY
Notazione di baseNotazione di base
SOFTWARE ENGINEERING LABORATORY
RiepilogoRiepilogo
SOFTWARE ENGINEERING LABORATORY
Creazione e distruzione di oggettiCreazione e distruzione di oggetti
SOFTWARE ENGINEERING LABORATORY
Rappresentare alternativeRappresentare alternative
SOFTWARE ENGINEERING LABORATORY
Rappresentare iterazioniRappresentare iterazioni
SOFTWARE ENGINEERING LABORATORY
Comporre scenariComporre scenari
SOFTWARE ENGINEERING LABORATORY
Esempio di sequence diagramEsempio di sequence diagram
SOFTWARE ENGINEERING LABORATORY
Esprimere vincoliEsprimere vincolisul tempo di rispostasul tempo di risposta
SOFTWARE ENGINEERING LABORATORY
Regioni parallele e regioni criticheRegioni parallele e regioni critiche
SOFTWARE ENGINEERING LABORATORY
Continuazione di scenari - Continuazione di scenari - 11
SOFTWARE ENGINEERING LABORATORY
Continuazione di scenari - Continuazione di scenari - 22
SOFTWARE ENGINEERING LABORATORY
Sovrapposizione diSovrapposizione diExecution OccurrenceExecution Occurrence
SOFTWARE ENGINEERING LABORATORY
Confrontare Sequence DiagramConfrontare Sequence Diagrame Activity Diagram - 1e Activity Diagram - 1
» Entrambi possono essere usati per descrivere realizzazioni di casi d'uso
» Activity diagram: enfasi sulle azioni compiute per realizzare un behaviour
» Sequence diagram: enfasi sullo scambio di messaggi tra elementi del sistema o tra attori e sistema
SOFTWARE ENGINEERING LABORATORY
Confrontare Sequence DiagramConfrontare Sequence Diagrame Activity Diagram - 2e Activity Diagram - 2
» Usando varianti “avanzate” delle rispettive sintassi, è in teoria possibile usare i due diagrammi in modo (quasi) equivalente» Nota: la scelta del diagramma giusto resta
fondamentale per esprimere in modo naturale, intuitivo, non contorto, il comportamento del sistema
SOFTWARE ENGINEERING LABORATORY
Punti di forza dei sequence Punti di forza dei sequence diagramdiagram
» Adatti a rappresentare scenari che hanno un» grande numero di messaggi scambiati» numero consistente di entità che
comunicano
» Offrono un supporto naturale per il raffinamento iterativo» Una interazione che inizialmente prevede
solo due entità (attore e un oggetto) può essere man mano raffinata per includere ulteriori elementi del sistema
SOFTWARE ENGINEERING LABORATORY
Piccola parentesi diPiccola parentesi dimetodologia spicciola metodologia spicciola - 1- 1
» Da use case a sequence diagram
» Un sequence diagram per use-case» Partire da un sequence di base, con un
solo attore e un solo oggetto» L'oggetto rappresenta l'intero sistema, così
come lo vede l'attore, dall'esterno» Punto di partenza: black-box
SOFTWARE ENGINEERING LABORATORY
Piccola parentesi diPiccola parentesi dimetodologia spicciola metodologia spicciola - 2- 2
» Un messaggio dall'attore al sistema con cui il caso d'uso viene attivato
» Trattare il caso base, in modo “ottimistico”» Tralasciare eccezioni e ogni volta che ci
sono scelte, descrivere solo ciò che accade nel caso “positivo”
» Ulteriori dettagli possono essere aggiunti in seguito (descrivendo frammenti alternativi)
SOFTWARE ENGINEERING LABORATORY
Piccola parentesi diPiccola parentesi dimetodologia spicciola metodologia spicciola - 3- 3
SOFTWARE ENGINEERING LABORATORY
Piccola parentesi diPiccola parentesi dimetodologia spicciola metodologia spicciola - 4- 4
» Quali oggetti/entità mettere nel sequence diagram?» Un attore che attiva il caso d'uso» Un oggetto che si occupa della
presentazione (oggetto “boundary”)» Un oggetto che si occupa di coordinare
l'attività svolta dal sistema (oggetto “control”)
» Un oggetto responsabile della rappresentazione/gestione/memorizzazione dei dati (oggetto “entity”)
SOFTWARE ENGINEERING LABORATORY
Piccola parentesi diPiccola parentesi dimetodologia spicciola metodologia spicciola - 5- 5
» Queste regole non sono la soluzione universale, e l'esperienza suggerisce eccezioni, ma...
» ...se non si da dove mettere le mani, le semplici regole delle slide precedenti sono già un ottimo punto di partenza...
SOFTWARE ENGINEERING LABORATORY
SOFTWARE ENGINEERING LABORATORY
Altri diagrammi di interazioneAltri diagrammi di interazione
» Nelle prossime slide, qualche esempio di» Communication diagram» Interaction overview diagram» Timing diagram
SOFTWARE ENGINEERING LABORATORY
Communication diagramCommunication diagram
SOFTWARE ENGINEERING LABORATORY
Interaction overviewInteraction overview
SOFTWARE ENGINEERING LABORATORY
interaction overview diagraminteraction overview diagram
» è un activity diagram dove i nodi possono essere:» sequence diagrams» communication
diagrams» interaction overview
diagrams
SOFTWARE ENGINEERING LABORATORY
Timing diagramTiming diagram
SOFTWARE ENGINEERING LABORATORY
Un rapido riepilogo...Un rapido riepilogo...
» ...e qualche puntualizzazione
» Punto di partenza per la realizzazione del sistema:» Informazioni fornite dall'esperto del
dominio/committente» Esperienza di chi fa l'analisi
» Tipicamente questa esperienza non è specifica del dominio...
SOFTWARE ENGINEERING LABORATORY
Un rapido riepilogo...Un rapido riepilogo...
» Inizialmente il sistema è una scatola nera (e ignota) descritta dall'esterno, in termini di» cosa ci si aspetta che essa faccia...» ...quando un attore ne attiva una
funzionalità
» La funzionalità è di interesse diretto per l'attore (non descrive quindi operazioni interne al sistema, alle quali l'attore non è interessato direttamente)
» In questa fase è importante cosa, non come
SOFTWARE ENGINEERING LABORATORY
Un rapido riepilogo...Un rapido riepilogo...
» In un secondo momento bisogna aprire la scatola e capire cosa c'è dentro (o meglio, cosa bisogna metterci dentro, visto che la stiamo costruendo noi..)
» Iniziamo ad occuparci del come
» Due strade alternative:» Descrizione del caso d'uso come attività» Descrizione del caso d'uso modellando uno
scenario particolare
SOFTWARE ENGINEERING LABORATORY
EsercizioEsercizio
» Gli esempi delle slide che seguono sono tratti da:» http://www.dis.uniroma1.it/~bei/index.php
» Realizzare un sistema informatico che supporti le attività compiute in un ristorante» Modello di Dominio (supponiamo dato)» Individuare dei casi d'uso (con un po' di
immaginazione)» Rappresentarli con sequence diagram
SOFTWARE ENGINEERING LABORATORY
Modello del dominioModello del dominio
» Un Ristorante propone nel proprio menù un insieme di Piatti, un insieme di Vini ed alcuni Menù Regionali a prezzo fisso.
» Un Piatto è caratterizzato da un nome (es: "millefoglie al cucchiaio") un tipo di portata (es: "dolce) ed un prezzo (es: 7 €).
» Un Vino è caratterizzato da un nome (es: "Vermentino"), un tipo ("Bianco"), un prezzo (es: 14 €) ed una annata (es: "2006").
SOFTWARE ENGINEERING LABORATORY
Modello del dominioModello del dominio
» I MenùRegionali sono menù completi (dal primo alla frutta + vino) tipici di una Regione e sono caratterizzati da un Nome (es: "Sapori di Sicilia"), dal nome di una Regione (es: "Sicilia"), dal Prezzo (es: 40 €) dalla mappa dei Piatti che compongono il Menù e da un Vino.
» I Menù Regionali hanno un costo scontato del 15 % rispetto al costo derivante dalla somma del vino e dei piatti che li compongono.
» Il Ristorante propone i propri menù ad un insieme di tavoli (una lista di coppie <numero tavolo,tavolo>) . Ad ogni Tavolo sono associate le ordinazioni di Vini, Piatti e MenùRegionali.
SOFTWARE ENGINEERING LABORATORY
Un diagrammaUn diagrammavale più di 1000 parolevale più di 1000 parole
SOFTWARE ENGINEERING LABORATORY
Associa Piatto a Menù RegionaleAssocia Piatto a Menù Regionale» Il sistema prende come input il nome di un piatto e il
nome di un menu regionale e poi:» 1) a partire dal nome del piatto recupera il
prezzoPiatto;» 2) a partire dal nome del menu regionale ne
recupera il prezzo;» 3) calcola il nuovo prezzo per il menù (con lo
sconto)» 4) imposta come prezzo del menù regionale il
nuovo prezzo appena calcolato;» 5) aggiunge il piatto al menù regionale.
SOFTWARE ENGINEERING LABORATORY
Associa Piatto a Menù RegionaleAssocia Piatto a Menù Regionale
SOFTWARE ENGINEERING LABORATORY
Una possibile soluzioneUna possibile soluzione
SOFTWARE ENGINEERING LABORATORY
Calcola conto tavoloCalcola conto tavolo
» Il sistema prende in input un numero di tavolo ed ha le seguenti responsabilità:» 1) a partire dal numero del tavolo recupera
i dati del tavolo» 2) a partire dal tavolo calcola e restituisce
il conto sommando i prezzi dei Piatti, dei Vini e dei Menù Regionali ordinati
SOFTWARE ENGINEERING LABORATORY
Calcola conto tavoloCalcola conto tavolo
SOFTWARE ENGINEERING LABORATORY
Una possibile soluzioneUna possibile soluzione
SOFTWARE ENGINEERING LABORATORY
Ordina VinoOrdina Vino
» Il sistema prende come argomenti il numero del tavolo e il nome del vino ed ha le seguenti responsabilità:» 1) a partire da numeroTavolo e nomeVino
recupera gli oggetti tavolo e vino» 2) esegue l'ordine del Vino
SOFTWARE ENGINEERING LABORATORY
Ordina VinoOrdina Vino
SOFTWARE ENGINEERING LABORATORY
Una possibile soluzioneUna possibile soluzione
SOFTWARE ENGINEERING LABORATORY
Inserisci nuovo Menù RegionaleInserisci nuovo Menù Regionale
» Il sistema prende come input nome e regione e crea un nuovo menù regionale
SOFTWARE ENGINEERING LABORATORY
Inserisci nuovo Menù RegionaleInserisci nuovo Menù Regionale
SOFTWARE ENGINEERING LABORATORY
Una possibile soluzioneUna possibile soluzione