UML - Roberta Gerboni
Transcript
UML - Roberta Gerboni
TECN.PROG.SIST.INF. – UML 2016 - Roberta Gerboni TECN.PROG.SIST.INF. – UML I linguaggi di modellazione le entità che compongono un sistema complesso Linguaggio di modellazione permette di esprimere le loro caratteristiche le relazioni che le collegano. Nell’ambito di un progetto, il linguaggio è normalmente distinto dal processo di sviluppo: • il linguaggio descrive cosa deve essere ottenuto; • il processo descrive i passi da intraprendere per ottenerlo; • insieme, linguaggio e processo definiscono un metodo di sviluppo. E’ un vero e proprio linguaggio e non una semplice notazione grafica. E’ descritto in linguaggio naturale e con l’uso di diagrammi, cerca di ridurre al minimo le ambiguità. Ha regole sintattiche e regole semantiche. 2 TECN.PROG.SIST.INF. – UML UML E’ un linguaggio grafico (basato su diagrammi) per: definire le specifiche realizzare documentare un qualunque prodotto tangibile di un progetto (in genere progetti software): sorgenti, eseguibili, documentazione, file di configurazione, tabelle di database, … ma non fornisce indicazioni su come deve essere usato. Può essere utilizzato per: comprendere meglio e descrivere le caratteristiche di un nuovo sistema o di uno già esistente. • dall’ambito del progetto. Ed è indipendente • dal processo di sviluppo. • dal linguaggio di programmazione (anche se progettato per essere abbinato alla maggior parte dei linguaggi object-oriented) 3 TECN.PROG.SIST.INF. – UML UML La prima versione del linguaggio di modellizzazione UML fu definita nel 1996 a opera di Grady Booch, Jim Rumbaugh e Ivar Jacobson, noti come los tres amigos. 1997 – novembre: La prima versione adottata da OMG (Object Management Group) UML 1.1 (con il nome ufficiale di “UML OMG 1.0”) 2005 – marzo: UML 2.0 diventa la versione ufficiale 2011 – agosto: UML 2.4.1 – variazioni minori 2015 – marzo: UML 2.5 – completa ristrutturazione della documentazione e variazioni minori Tutta la documentazione ufficiale dell’UML si trova su www.omg.org . 4 TECN.PROG.SIST.INF. – UML OO Modeling languages history OOSE: Object-Oriented Software Engineering OMT : Object Modeling Technique OOA / OOD : Object Oriented Analysis and Object Oriented Design 5 TECN.PROG.SIST.INF. – UML UML I principali diagrammi previsti dalla versione attuale del linguaggio sono i seguenti: 6 TECN.PROG.SIST.INF. – UML UML 7 TECN.PROG.SIST.INF. – UML UML – i diagrammi 8 TECN.PROG.SIST.INF. – UML UML 9 TECN.PROG.SIST.INF. – UML UML a cosa può servire 10 TECN.PROG.SIST.INF. – UML 11 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • I casi d’uso furono proposti da Ivar Jacobson nel 1992-95 • Rappresentano i “modi” in cui il sistema può essere utilizzato (le funzionalità che il sistema mette a disposizione dei suoi utilizzatori). Servono per chiarire cosa dovrà fare il sistema e costituiscono il punto di partenza per la sua progettazione. • È una modalità di rappresentazione delle funzionalità del sistema ad alto livello. Un caso d’uso è una sequenza di transazioni in un sistema, il cui compito è di conseguire un risultato di valore misurabile per un singolo attore del sistema.” Esempio Casi d’uso • telefonare • rispondere a una telefonata • inviare un messaggio • memorizzare un numero • …. Punto di vista: UTILIZZATORE Funzionalità interne • trasmissione / ricezione • alimentazione (batteria) • I/O (display, tasti, ...) • sw gestione rubrica • ….. Punto di vista: PROGETTISTA 12 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso I casi d’uso possono essere descritti sotto forma di scenari di interazione (un dialogo) tra gli utilizzatori e il sistema: Esempio: – il cliente richiede l’elenco dei prodotti – il sistema propone i prodotti disponibili – il cliente sceglie i prodotti che desidera – il sistema fornisce il costo totale dei prodotti selezionati – il cliente conferma l’ordine – il sistema comunica l’accettazione dell’ordine • L’attenzione si focalizza sull’interazione, non sulle attività interne al sistema Scenario Ogni sequenza è detta scenario e rappresenta l’interazione di entità esterne al sistema (attori) con il sistema stesso o sue componenti. Attore • Ruolo che una persona o un dispositivo hardware o un altro sistema gioca rispetto al sistema • Gli attori eseguono casi d’uso: prima si cercano gli attori, poi i loro casi d’uso • Gli attori possono NON essere persone! 13 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso L’analisi dei casi d’uso viene impiegata durante la fase di analisi per modellare il comportamento esterno del sistema da sviluppare, senza dover specificare come tale comportamento viene realizzato. Il sistema viene visto, al suo interno, come una scatola nera (black box). Il comportamento del sistema è analizzato dal punto di vista dei suoi possibili utenti. Per questo motivo si presta particolarmente ad essere compilato a valle di interviste al committente. Ogni caso d’uso descrive il comportamento del sistema quando un attore gli invia un particolare stimolo. Generalmente lo stimolo parte dall’attore, ma può anche essere il sistema stesso ad iniziare il caso d’uso (es. Produzione cedolini a fine mese, ricarico automatico di un magazzino). 14 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Gli attori sono esterni al sistema, i casi d’uso sono all’interno del sistema Un caso d’uso corrisponde: • ad un compito che l’attore vuole eseguire (l’attore inizia il caso d’uso) oppure • ad un compito che il sistema deve eseguire (il sistema inizia il caso d’uso). Attori e confini del sistema 15 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Attori e casi d’uso • in UML, l’associazione tra un attore e un caso d’uso indica partecipazione • ad ogni caso d’uso partecipa almeno un attore Regola sintattica: una relazione tra un attore e un caso d’uso può opzionalmente includere una freccia. Regola semantica: la freccia significa che la prima interazione si svolge nel senso indicato dalla freccia. 16 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Esempio 17 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso 18 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • La generalizzazione / specializzazione viene indicata con una linea continua con una freccia triangolare bianca. • Associa un caso d’uso “generale” ad uno o più casi d’uso “specializzati”. • Il caso d’uso generale definisce una serie di passi ed ha associazioni di comunicazione con uno o più attori. • Ogni caso d’uso specializzato eredita le caratteristiche del caso d’uso generale e può aggiungere nuovi passi o ridefinire quelli ereditati da quello generale (override). • Ogni caso d’uso generale può avere più figli (casi d’uso specializzati). • Ogni caso d’uso specializzato può avere più padri (casi d’uso generali). 19 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso La generalizzazione / specializzazione può essere applicata anche agli attori. 20 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • L’include viene rappresentata con <<include>> e una freccia tratteggiata con la punta aperta che va dal caso d’uso “includente” al caso d’uso “incluso” (indica una dipendenza). Punto di inclusione L’inclusione riguarda un comportamento obbligatorio del caso d’uso base. 21 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • Include • Casi d’uso diversi possono avere in comune una sequenza di passi da svolgere. In questo caso è possibile separare la sequenza comune e definirla come un caso d’uso a se stante da “includere” nei casi d’uso originari evitando ripetizioni. • Ogni caso d’uso può includere un numero illimitato di altri casi d’uso e ogni caso d’uso può essere incluso in un numero illimitato di altri casi d’uso. 22 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • Relazione tra inclusione e generalizzazione/specializzazione Se un caso d’uso generale include un altro caso d’uso, allora tutte le sue specializzazioni “ereditano” tale inclusione. 23 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso • L’extend è un’associazione rappresentata con <<extend>> e una freccia tratteggiata con la punta aperta che va dal caso d’uso “estensione” al caso d’uso “base”. • Permette di definire un caso d’uso “base” che può essere “esteso” con il comportamento definito in un altro caso d’uso (indica una estensione). • L’estensione riguarda un comportamento opzionale del caso d’uso base ed è soggetta ad una condizione di attivazione. • Il caso d’uso base ignora le proprie estensioni in quanto è descritto da una sequenza di passi “già completa”, che tuttavia conterrà uno o più punti di estensione, che sono i punti di ancoraggio ai quali si agganceranno i casi d’uso di estensione. 24 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso I punti di ancoraggio ai quali si agganceranno i casi d’uso di estensione possono essere specificati all’interno del caso d’uso tracciando una linea orizzontale all’interno dell’ellisse e scrivendo sotto alla linea la condizione che attiva l’estensione. 25 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Esempi: Gestione biblioteca Web store 26 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Tracciabilità requisiti- casi d’uso È importante incrociare gli archivi dei requisiti funzionali e dei casi d’uso per verificare la reciproca copertura: ogni requisito deve essere coperto da almeno un caso d’uso e viceversa (in generale la relazione è molti-a-molti). 27 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Riepilogo delle notazioni utilizzate 28 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso 29 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Specifica dei Casi d’Uso Per ogni caso d’uso viene creato un documento particolare (specifica del caso d’uso) che descrive nel dettaglio, ma senza riferirsi ad una particolare implementazione, il comportamento del sistema. Contiene le seguenti informazioni: Attore Descrizione del Caso d’Uso Precondizioni Postcondizioni Flusso principale Sottoflussi Inclusioni Punti di estensione Flussi alternativi Regole Requisiti non funzionali Use Case Specification <Nome caso d’uso> Attore ... Descrizione …. Precondizioni …. Postcondizioni … Flusso Principale 1. … 2. … … … Percorsi alternativi (eventuali) … … 30 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Esercizio Sistema automatico di biglietteria ferroviaria Il viaggiatore può consultare l’orario ferroviario ed acquistare un biglietto. Per poter consultare l’orario o acquistare un biglietto, il viaggiatore deve scegliere la stazione da un elenco. Quando acquista un biglietto il viaggiatore consulta l’orario per individuare il treno che intende prendere. 31 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Al momento dell’acquisto di un biglietto il viaggiatore può, opzionalmente, prenotare i posti a sedere pagando un prezzo aggiuntivo. Prenota Posti E’ possibile acquistare diversi tipi di biglietto: il flusso base dell’acquisto è sempre lo stesso, ma vi sono operazioni particolari da effettuare per ogni singolo caso. 32 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Esercizio Gestione conto corrente • Il sistema usa uno sportello Bancomat • L’utente deve poter depositare assegni • L’utente deve poter ritirare contante • L’utente deve poter chiedere il saldo • L’utente deve poter ottenere una ricevuta se lo richiede. La ricevuta riporta il tipo di transazione, la data, il numero di conto, la somma ed il nuovo saldo • Dopo ciascuna transazione viene visualizzato il nuovo saldo 33 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Gestione conto corrente • Il sistema usa uno sportello Bancomat • L’utente deve poter depositare assegni • L’utente deve poter ritirare contante • L’utente deve poter chiedere il saldo • L’utente deve poter ottenere una ricevuta se lo richiede. La ricevuta riporta il tipo di transazione,la data, il numero di conto, la somma ed il nuovo saldo • Dopo ciascuna transazione viene visualizzato il nuovo saldo 34 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Use case: withdraw Precondition: User has selected withdraw option Main flow: • Include (Verify user) • Prompt user for amount to withdraw • Check available funds of user • Check available money of ATM • Remove amount from account • Give money • (print receipt) • Display current balance Exceptional flow • If not sufficient funds or money available, prompt user for lower amount 35 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Use case: deposit Precondition: User has selected deposit option Main flow: • Include (Verify user) • Prompt user for amount of deposit • Open slot • Get check • (print receipt) • Display (balance + deposited amount) Use case: withdraw with receipt Precondition: User has selected withdraw option and print receipt option … Use case: deposit with receipt Precondition: User has selected deposit option and print receipt option ... 36 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Use case: check balance Precondition: User has selected balanceoption Main flow: • Include (Verify user) • Display balance Use case: verify user Precondition: none Main flow: • User enters ID card • User enters PIN number • System checks validity of card and number Exceptional flow: • If combination is not valid, reject user 37 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Esercizio Acquistare un biglietto di un’autolinea da un distributore automatico Disegnare un diagramma di casi d’uso che risponda ai seguenti requisiti. Un viaggiatore: • può richiedere la visualizzazione dell’elenco delle corse tra un punto di partenza ed una destinazione • può acquistare un abbonamento o uno o più biglietti di una corsa, selezionata in un elenco, tra un punto di partenza ed una destinazione • può effettuare il pagamento in contanti o con bancomat o carta di credito 38 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Acquistare un biglietto di un’autolinea da un distributore automatico Soluzione 39 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Caso d'uso: Acquista Biglietto Autolinea da distributore automatico Attore: Viaggiatore Input: luogo partenza e destinazione corsa, data corsa, n.ro posti Precondizioni: il distributore automatico è attivo, i luoghi di partenza e destinazione devono essere tra quelli serviti dalla autolinea, il n.ro di posti richiesti deve essere non maggiore di quelli ancora disponibili per la corsa Output: biglietto riportante luogo partenza e destinazione corsa, data corsa, posto, registrazione della prenotazione in archivio, aggiornamento n.ro posti liberi rimenenti sulla stessa corsa Postcondizioni: se prenotazione con successo, n.ro posti disponibili sulla corsa deve essere minore di quello iniziale. 40 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Soluzione Caso d'uso: Acquista Biglietto Autolinea da distributore automatico Precondizione: il viaggiatore ha richiesto l’acquisto di un biglietto Flusso principale: • Il sistema verifica che vi sia carta necessaria per la stampa del biglietto • include (“Elenco corse selezionabili”) • Il viaggiatore indica i luoghi di partenza e di destinazione e la data della corsa • Il sistema verifica che esista una corsa nella data indicata e per i luoghi indicati • Il sistema mostra gli orari delle corse soddisfacenti i criteri indicati e chiede all’utente di selezionarne una • L’utente seleziona una corsa e fornisce il n.ro di posti per cui vuole acquistare il biglietto • Il sistema verifica che la corsa selezionata abbia la disponibilità del n.ro di posti richiesti • Presenta l’importo da pagare e chiede conferma dell’acquisto • Il viaggiatore conferma l’acquisto e richiede la stampa del biglietto • Il sistema invita il viaggiatore a scegliere la modalità di pagamento • include (“Pagamento”) • Il sistema stampa il biglietto, aggiorna il numero di posti diponibili e l’elenco delle prenotazioni 41 TECN.PROG.SIST.INF. – UML Esercizio UML- diagramma dei casi d’uso Si vuole realizzare un sistema informatico in grado di gestire in maniera automatizzata le prove di esame tenute da un docente di un corso universitario. Il docente registra preventivamente i dati relativi alla prova, ossia il nome del corso, la data della prova, la durata (espressa in minuti) e l’insieme delle prove da sottoporre agli studenti. In sede di esame, lo studente deve preventivamente iscriversi, indicando il proprio nome, cognome, numero di matricola e indirizzo e-mail. Il sistema fornisce allo studente iscritto il testo di una prova individuale (scegliendola dall’insieme delle prove registrate dal docente) e calcola il tempo limite entro il quale deve essere consegnata la soluzione. Il tempo limite di consegna è stabilito in base alla durata prevista per la prova e l’ora di assegnazione allo studente. Il sistema dovrà registrare tutti questi dati in apposito archivio. Lo studente deve completare il proprio elaborato e consegnarlo tramite l’interfaccia del sistema entro il tempo limite. Il sistema invia inoltre una mail di conferma dell’avvenuta ricezione o di consegna impossibile qualora il tempo limite sia scaduto. Il docente corregge ogni compito, indicando se é sufficiente o meno, inserendo un voto (numerico, compreso tra 18 e 30 oppure insufficiente). Al termine dell’inserimento dei giudizi di tutti i compiti, un messaggio di e-mail viene recapitato ad ogni studente, con il risultato del suo compito. 42 TECN.PROG.SIST.INF. – UML Soluzione UML- diagramma dei casi d’uso Caso d’uso: Correggi Compito Pre-condizioni: Il docente ha registrato in precedenza una prova. Flusso di eventi: Percorso Principale 1. Il docente chiede al sistema i compiti consegnati dagli studenti 2. Il sistema restituisce i file contenenti le risoluzioni dei compiti 3. FOR ogni compito, il docente lo corregge assegnando un voto compreso tra 18 e 30 oppure insufficiente 4. Il sistema memorizza tali voti in un database 5. INCLUDE (Invia risultati) 43 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Caso d’uso: Invia risultato Pre-condizioni: Il docente ha corretto tutti i compiti Flusso di eventi: Percorso Principale 1. Il docente conferma l’autorizzazione all’invio; 2. FOR ogni compito, il sistema invia una mail contenente il voto conseguito allo studente cui appartiene il compito. Caso d’uso: Svolgi prova Pre-condizioni: Il Docente ha registrato in precedenza una prova Flusso di eventi: Percorso Principale 1. INCLUDE (Iscrivi a prova) 2. Lo studente risolve la prova 3. IF lo studente non vuole consegnare la prova, PERCORSO ALTERNATIVO# 4. EXTENSION POINT 1: INVIA SOLUZIONE #Percorso alternativo: Lo studente si ritira Il sistema memorizza l’avvenuto ritiro 44 TECN.PROG.SIST.INF. – UML UML- diagramma dei casi d’uso Caso d’uso: Iscrivi a prova Pre-condizioni: nessuna Flusso di eventi: Percorso Principale 1. Lo studente si identifica e chiede al sistema di iscriverlo alla prova; 2. Il sistema memorizza I dati; 3. Lo studente richiede la traccia della prova; 4. Il sistema memorizza l’orario di inizio della prova e la traccia inviata; 5. Il sistema restituisce allo studente la traccia della prova e fa partire il tempo. Caso d’uso: Invia soluzione Pre-condizioni: Lo studente ritiene di aver risolto la prova Flusso di eventi: Percorso Principale 1. Lo studente conferma l’avvenuta risoluzione della prova; 2. IF Il tempo è scaduto PERCORSO ALTERNATIVO# 3. Il sistema acquisisce la prova #Percorso alternativo Il sistema notifica allo studente che il tempo è scaduto e non può essere consegnata la prova Il sistema memorizza l’avvenuto ritiro 45 TECN.PROG.SIST.INF. – UML 46 TECN.PROG.SIST.INF. – UML UML- diagramma di attività • È una modalità di rappresentazione delle funzionalità del sistema a basso livello. • Descrivono la logica procedurale e quindi aiutano a descrivere gli aspetti dinamici dei casi d’uso. • Per ciascuna delle funzioni individuate con i casi d’uso viene realizzato un flow chart. Alcuni elementi grafici. Nodi azione: specificano unità atomiche, non interrompibili e istantanee di comportamento. Nodi di inizio e di fine: sono nodi speciali che indicano l’inizio e la fine del flusso. Nodi oggetto: sono oggetti particolarmente importanti usati come input e output di azioni. Nodi controllo: descrivono il flusso dell’attività. Un diagramma di attività mostra come ESAW va in giro a trovare cibo 47 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Per capire la semantica dei diagrammi di attività, bisogna immaginare delle entità, dette token, che viaggiano lungo il diagramma. Il flusso dei token definisce il flusso dell’attività. I token possono rimanere fermi in un nodo azione/oggetto in attesa che si avveri una condizione su una freccia, oppure una precondizione o postcondizione su un nodo. Il movimento di un token è atomico. Il disco nero marca l’inizio dell’attività (genera token). Quando un token raggiunge un disco nero bordato (nodo termine. finale), l’attività ha Esempi 48 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Esempio In questo caso sono mostrati più flussi in ingresso e anche in uscita dai nodi azione. Quando l'azione “Il cliente fornisce i dettagli“ viene completata, vengono prodotti due oggetti: “Indirizzo di spedizione" e “Dettagli carta di credito". I due oggetti vengono elaborati da due diversi nodi azione. Poiché un nodo azione richiede che tutti gli input siano disponibili prima di iniziare, l'ultima azione “Consegna merci” non viene avviata fino a quando tutte le azioni che conducono a essa non siano completate. 49 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Nodi decisione I nodi decisione(diramazione): specificano percorsi alternativi, hanno un solo input e vari output sotto una condizione mutualmente esculsiva. I nodi fusione: hanno vari input e un solo output, sul quale vengono indirizzati tutti i token in ingresso. Nodi fork I nodi fork hanno un ingresso e varie uscite: i token in ingresso sono duplicati su tutte le uscite. Indicano l’inizio di una elaborazione parallela (esecuzione di più azioni contemporanee). Nodi join I nodi join hanno vari ingressi e una sola uscita: quando sono presenti token su tutti gli ingressi, viene prodotto almeno un token in uscita. I nodi fork dividono un’esecuzione in più flussi concorrenti, i nodi join sincronizzano e riuniscono i flussi. 50 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Segnali ed eventi temporali Ci sono alcuni nodi azione specializzati che gestiscono l’invio di segnali e la ricezione di segnali o messaggi. L’invio di segnali o messaggi è asincrono e non blocca l’attività, quindi va fatto seguire da un nodo di accetta evento per fermare momentaneamente il flusso. Esempio Diagramma delle attività che rappresenta il comportamento di uno studente che vuole superare l’esame di laboratorio di ingegneria del software. 51 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Esempio L'effetto del Nodo fork (1) consiste nel dividere il flusso in due o più flussi di azioni. Quando l'azione di creazione ordine in ingresso al nodo termina, possono iniziare tutte le azioni sul lato di output del fork (azioni parallele). Il Nodo join (2) raggruppa flussi simultanei. L'azione in uscita dal Nodo join non può iniziare fino a quando tutte le azioni che conducono al Nodo join non siano completate. Viene usato un nodo azione invia segnale (3) per indicare che un segnale o un messaggio di qualche tipo viene inviato ad altre attività o processi. Nel nodo viene scritto il nome dell'azione per indicare che tipo di messaggio viene inviato. Viene utilizzato un nodo azione accetta evento (4) per indicare che l'attività attende per un evento esterno o messaggio in ingresso. Anche in questo caso si scrive nel nodo il nome dell'azione per indicare il tipo di evento che si attende. 52 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Partizioni o corsie (swimlanes) Suddividono il flusso dell’attività, ma non ne modificano il significato. Sono segmenti paralleli e la suddivisione può essere orizzontale, verticale o multidimensionale. Esempi 53 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Esempio Il diagramma mostra alcuni casi d'uso relativi alla ricerca di bug informatici e alla loro correzione. Attori: • Reporter che notifica l’esistenza di un bug • Updater che gestisce il processo di correzione del bug • Developer che si occupa della correzione del bug 54 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Regioni interrompibili (esempio) L’ordine è cancellato solo se un token si trova all’interno della regione al momento della ricezione del segnale. 55 TECN.PROG.SIST.INF. – UML UML- diagramma di attività Esempio: automazione biblioteca Scenario Una università vuole automatizzare la propria biblioteca attraverso un nuovo Sistema Informativo: • Lo Studente può utilizzare il sistema per cercare e prenotare un libro; • Il Bibliotecario utilizza il sistema per registrare prestiti e restituzioni: Prima del prestito vengono chiesti gli estremi dello studente Viene verificata la disponibilità di una copia del libro Uno studente non può prendere più di 3 libri in prestito • La Biblioteca conserva diverse copie dello stesso libro; 56 TECN.PROG.SIST.INF. – UML Soluzione UML- diagramma di attività Diagramma dei casi d’uso e di attività 57 TECN.PROG.SIST.INF. – UML Soluzione UML- diagramma di attività Diagramma dei casi d’uso e di attività Viene realizzato un documento che descrive nel dettaglio il caso d’uso: Presta libro Specifica del caso d’uso Presta Libro Descrizione L’obiettivo è registrare i libri presi in prestito dagli studenti. Precondizioni Lo studente deve aver prenotato il libro. Flusso principale L’utente specifica gli estremi dello studente L’utente specifica gli estremi del libro Viene registrato il prestito Flussi alternativi - Al punto 1, se lo studente ha già 3 libri in prestito, esci. - Al punto 2, se il libro richiesto è già in prestito, esci. … 58 TECN.PROG.SIST.INF. – UML Soluzione UML- diagramma di attività Diagramma dei casi d’uso e di attività Relativa al Parallelizzazione Sincronizzazione 59 TECN.PROG.SIST.INF. – UML 60 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza • Un diagramma di sequenza è un diagramma che descrive le interazioni tra oggetti che collaborano per svolgere un compito e in quale ordine. • Gli oggetti collaborano scambiandosi messaggi • Lo scambio di un messaggio in OOP equivale all’invocazione di un metodo Gli oggetti Asse x: Gli oggetti sono disposti orizzontalmente Un oggetto è un’istanza di una classe nomeOggetto : NomeClasse Asse t: Il flusso del tempo è descritto verticalmente 61 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Significato delle frecce Simbolo Tipo di Messaggio Asincrono Sincrono Freccia circolare Descrizione Il chiamante non rimane in attesa della terminazione del metodo del chiamato, ma prosegue subito dopo l’invocazione, quindi non attende la risposta. La freccia è etichettata col nome del metodo invocato. Il ritorno è rappresentato con una freccia tratteggiata e può non essere immediatamente successivo alla chiamata. Il chiamante rimane in attesa della terminazione del metodo del chiamato prima di proseguire, cioè della risposta. La freccia è etichettata col nome del metodo invocato. Il ritorno è rappresentato con una freccia tratteggiata ed è sempre opzionale. Se si omette, la fine del metodo è decretata dalla fine del life-time. Descrive un oggetto che invoca un suo metodo (chiamante e chiamato coincidono). Rimane all’interno del life time di uno stesso metodo Il life-time (durata di vita) di un metodo è rappresentato da un rettangolo verticale che collega freccia di invocazione e freccia di ritorno. Il life-line (linea di vita) è rappresentato da una linea tratteggiata verticale e il verso del tempo è dall’alto verso il basso. 62 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio Oggetto Diagramma di sequenza: check Email Scorrere del tempo Durata di vita Messaggi (metodi) 63 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio Diagramma di sequenza: Ordina merce 64 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza 1. message1() is sent only if the condition specified in the guard (in brackets) is true. 2. A branch. Sender sends either message2() or message3(). Guards should be exclusive. I use «else» instead of a guard when appropriate. 3. Iteration. Sender sends message4() as long as the condition is true. 4. "For each." If the receiver is a collection of objects (indicated by the cardinality of the associated role in the static model), send the message to all of them. 5. UML 2.0 Interaction Frame. The condition specifies a loop. Can also use: loop A loop, executes multiple times opt Optional. An "if" statement. 6. As shown, an if/else structure. Can use: alt Execute one of the alternatives, controlled by guards Par Execute regions in parallel http://www.holub.com/goodies/uml/ 65 TECN.PROG.SIST.INF. – UML Esempio UML- diagramma di sequenza Esempio con i frame di interazione ref alt opt loop par neg … 66 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio: Crea Ordine 67 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio Diagramma di sequenza: Login 68 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio: sistema di vendita di pasti online Deve consentire: - ai clienti di scegliere elementi da un menu - ai ristoranti di aggiornare il menu Diamo una rappresentazione diagramma di caso d’uso. usando un L’ordinazione di un pasto fa parte del processo di acquisto di un pasto, che comprende anche il pagamento e la consegna: 69 TECN.PROG.SIST.INF. – UML UML- diagramma di sequenza Esempio: sistema di vendita di pasti online Diagramma caso d’uso: ordinazione pasto Diagramma di attività: ordinazione pasto Diagramma di sequenza: ordinazione pasto 70