UML Alberto Colombo Fulvio Frati Prima di iniziare
UML Alberto Colombo Fulvio Frati
Prima di iniziare. . . l Accedete a \TitanoPublicIngegneria. SW l Scaricate il file BOUML. zip l Decomprimete il file direttamente sul Z
Use Case Diagram (1) l Un caso d’uso è uno specifico modo di utilizzare il sistema da parte di un attore per eseguire una certa funzionalità del sistema stesso l “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” (Jacobson ‘ 92)
Use Case Diagram (2) l Rappresenta una funzionalità del sistema dal punto di vista di chi la utilizza: l l l nasce, in genere, con la richiesta che un attore fa al sistema si conclude con la produzione di tutte le risposte relative alla richiesta definisce le interazioni tra attori e sistema relative a questa funzionalità
Use Case Diagram (3) l Ogni caso d’uso può soddisfare più requisiti l Un requisito può dare origine a più casi d’uso l Ad ogni caso d’uso possono venire associati più requisiti
Use Case Diagram (4) l I casi d’uso servono a: l l chiarire i requisiti del committente in termini comprensibili trovare aspetti comuni (riuso) individuare gli attori del sistema individuare gli eventi a cui il sistema deve rispondere
Attori Gli attori sono rappresentati tramite il ruolo che giocano nel caso d’uso e sono normalmente indicati tramite l’icona: <<Attore>> Cassiere
Relazione tra attori • E’ possibile definire gerarchie di attori • Associare un attore ad uno o più attori specializzati Utente Banca Utente Sede Centrale Utente Filiale
Relazioni tra casi d’uso: generalizzazione/specializzazione l Associare un caso d’uso ad uno o più casi d’uso specializzati validare utente validare password validare badge
Relazioni tra casi d’uso: include <<include>> : mostra il comportamento comune a uno o più casi d’uso identificarsi al bancomat <<include>> prelevare <<include>> visualizzare saldo
Relazioni tra casi d’uso: extend <<extend>>: mostra il comportamento opzionale (alternativo o relativo al trattamento di condizioni anomale) aprire conto corrente <<extend>> trattare condizioni particolari
Esercizio: Sportello Bancomat l l l l Il Sistema sarà eseguito su uno sportello bancomat automatico L'utente deve essere in grado di depositare assegni sul suo conto L'utente deve essere in grado di prelevare i soldi dal suo conto L'utente deve poter interrogare il Sistema sul saldo del suo conto Se lo richiede, l'utente deve poter ottenere la ricevuta per la transazione. I tipi di transazione sono ritiro o deposito. La ricevuta deve indicare la data della transazione, ilnumero del conto, il saldo precedente e successivo la transazione Dopo ogni transazione, il nuovo saldo deve essere visualizzato all'utente
Esercizio: Soluzione
Class diagram l l Rappresenta le classi che compongono il sistema, cioè le collezioni di oggetti, ciascuno con il proprio stato e COMPORTAMENTO (attributi ed operazioni) Specifica, mediante associazioni, le relazioni fra le classi
Class diagram: le classi(1) l l Una classe è una tipologia di oggetti, con propri attributi e operazioni Rappresentazione di una classe in UML: Automobile Nome marca modello colore targa Attributi (proprietà) cambia. Targa cambia. Colore Operazioni (metodi)
Class diagram: le classi(2) l l l Nome: inizia con una lettera maiuscola, non è sottolineato e non contiene underscore Attributi: proprietà i cui valori identificano un oggetto istanza della classe e ne costituiscono lo stato; iniziano con una lettera minuscola Operazioni/Metodi: insieme di funzionalità che esprimono il comportamento di un oggetto, ovvero ciò che ogni oggetto di questa classe può fare
Class diagram: associazioni(1) l Associazione: Associazione correlazione fra classi; nel diagramma è una linea continua fra due classi, con esplicita semantica nei due sensi l l l Aggregazione Composizione Molteplicità: Molteplicità numero di oggetti che partecipano all’associazione. Esempi di molteplicità sono: 1 Esattamente una istanza 0. . * Nessun limite al numero di istanze 1. . * Almeno una istanza n. . m Da n a m istanze
Class diagram: associazioni(2) Ordini Clienti 1 emette data. Ordine 0. . * stato emesso da cliente. Dal get. Ordini calcola. Tasse calcola. Totale set. Stato 1. . * Articoli codice descrizione peso prezzo 1 1 nell’ordine riguarda atricolo 0. . * Dettagli. Ordine quantità calcola. Peso calcola. Prezzo
Class diagram: aggregazione l Aggregazione: tipo particolare di associazione; esprime concetto “è parte di ” (part of ), che si ha quando un insieme è relazionato con le sue parti.
Class diagram: composizione l E’ un caso particolare di aggregazione in cui: l la parte (componente) non può esistere da sola, cioè senza la classe composto l una componente appartiene ad un solo composto
Class diagram: aggregazione/composizione Docenti Università aggregazione composizione Dipartimenti
Class diagram: ereditarietà Persone nome cognome indirizzo cambia. Indirizzo Clienti superclasse simbolo di ereditarietà Potenziali. Clienti codice. Cliente cliente. Dal num. Visite conta. Ordini sottoclassi
Esercizio: Struttura Universitaria l Le entità coinvolte sono: l l l Persone Docenti Studenti Frequenze Esami Corsi
Esercizio: soluzione Persone nome Docenti Frequenze Studenti periodo matricola 1 * * sostiene relativo a di 1. . * insegna tenuto da Corsi nome durata 1 Esami 1 del corso voto data
Sequence Diagram l l l Evidenziano la sequenza temporale delle azioni Non si vedono le associazioni tra oggetti Le attività svolte dagli oggetti sono mostrate su linee verticali La sequenza dei messaggi scambiati tra gli oggetti è mostrata su linee orizzontali Possono corrispondere a uno scenario specifico o a un intero caso d’uso (aggiungendo salti e iterazioni) Si possono annotare con vincoli temporali
Sequence Diagram(2) l l l Oggetto: è rappresentato come un box in alto con un nome sottolineato e una linea tratteggiata verticale detta linea di vita dell’oggetto. Il tempo scorre dall’alto verso il basso Messaggio: è una freccia con un nome Chiamata interna (self-call): riferimento ricorsivo di un oggetto a se stesso, per chiamare una delle sue funzioni
Sequence Diagram(3) Instance: Class Oggetto in questo intervallo di tempo l’oggetto è in vita e attivo Cancellazione Linea di vita tempo Box di attivazione
Sequence diagram: componenti l Condizione: è associata ad un messaggio: solo se è soddisfatta il messaggio viene generato l Iterazione: indica che un messaggio viene inoltrato più volte ad oggetti diversi di uno stesso gruppo l Ritorno: indica il valore restituito all’oggetto chiamante e non un nuovo messaggio; può essere omesso l Distruzione: deallocazione di un oggetto come metodo interno o tramite messaggio da un altro oggetto [ha disponib]
Sequence diagram: messaggi l In generale un messaggio rappresenta il trasferimento del controllo da un oggetto ad un altro l Se l’oggetto che invia il messaggio rimane in attesa che l’oggetto ricevente ritorni, si ha un messaggio sincrono l Se invece l’oggetto che invia il messaggio prosegue la propria elaborazione in parallelo all’oggetto chiamato, siamo in presenza di un messaggio asincrono
Esempio
Esercizio: ordine prodotto Supponiamo di dover illustrare il seguente caso: l La finestra Inserisci Ordine manda un “messaggio di preparazione” ad un Ordine l L’Ordine invia messaggi di preparazione a tutte le Linee d’Ordine contenute nell’Ordine l Ciascuna Linea controlla la disponibilità del proprio Articolo: l l se è presente lo rimuove dal magazzino e crea un prodotto da consegnare se la disponibilità del prodotto è scesa al di sotto di una certa soglia l’oggetto Articolo genera una richiesta di un nuovo ordine
Esercizio: soluzione una finestra “Inserisci Ordine” un Ordine una Linea d’Ordine un Articolo preparazione() Condizione preparazione() controllo. Disp() [ha. Disponib] remove() Iterazione deve. Riordina() Ritorno Chiamata interna Creazione [deve. Riordinare] do Nuovo ordine Cancellazione [ha. Disponib] do un Prodotto da Consegnare
Collaboration diagram(1) l l l Evidenzia la collaborazione fra gli oggetti, ma lo svolgimento temporale complessivo risulta meno chiaro rispetto ai sequence diagrams. 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 Ogni oggetto ha il formato Nome. Oggetto: Nome. Classe ma è possibile indicare solo l’uno o l’altro
Collaboration diagram(2) l A differenza del sequence diagram, i messaggi sono numerati, in modo da evidenziare esattamente la sequenza l I messaggi sono accompagnati da frecce per capire quale oggetto invia il messaggio e quale lo riceve
Collaboration diagram: esempio
Esercizio: ordine prodotto Supponiamo di dover illustrare il seguente caso: l La finestra Inserisci Ordine manda un “messaggio di preparazione” ad un Ordine l L’Ordine invia messaggi di preparazione a tutte le Linee d’Ordine contenute nell’Ordine l Ciascuna Linea controlla la disponibilità del proprio Articolo: l l se è presente lo rimuove dal magazzino e crea un prodotto da consegnare se la disponibilità del prodotto è scesa al di sotto di una certa soglia l’oggetto Articolo genera una richiesta di un nuovo ordine
Esercizio: soluzione : Finestra di Inserimento Ordine Oggetto 1: preparazione() Messaggio : Ordine 2: [per tutte le linee d’ordine] preparazione() Linea X : Linea d’Ordine Articolo Xx : Articolo 3: controllo. Disp() 4: [ha. Disponib] remove() 7: [ha Disponib] new : Prodotto da consegnare Numero di sequenza : Riordine Articolo
Activity Diagram(1) l l l Servono per la modellazione di workflow e per descrivere processi con una forte componente di computazione parallela Il componente principale è l’Attività: l’Attività si può definire in maniera informale come il “fare qualcosa”, cioè un processo del mondo reale (es. compilare un ordine) o l’esecuzione di una procedura software (es. metodo di una classe) Il diagramma consiste in una sequenza di attività e supporta l’esecuzione di cicli, l’esecuzione parallela e quella condizionale
Activity Diagram(2) l Oltre alle Attività le altre componenti sono le Transizioni l Le transizioni non hanno condizioni e sono innescate semplicemente dal termine dell’attività precedente
Activity Diagram(3) l Un Activity Diagram può essere associato: l l l A una classe All’implementazione di un’operazione Ad uno Use Case
Activity Diagram: Componenti(1) l Action state action azione fatta nello stato l Stato Iniziale Transizioni scatenate da completion events action 1 action 2 scatta quando action 1 termina Stato Finale
Activity Diagram: Branch & Merge l Branch: diramazione con una transizione entrante e più di una uscente, condizioni mutuamente esclusive l Non è possibile che valgano entrambe (comportamento ambiguo) o nessuna comportamento bloccato) l Se le condizioni sono più di due deve comunque esserne verificata ogni volta una e una soltanto l Merge: giunzione con più transizioni entranti ed una sola uscente, termina il blocco aperto dal Branch
Activity Diagram: Fork e Join l l l Fork: Fork divisione con una transizione entrante e più di una uscente che si eseguono in parallelo Join: Join unione con più transizioni entranti ed una sola uscente che può scattare solo dopo che sono terminate le attività degli stati corrispondenti alle transizioni entranti Fork e Join si devono corrispondere!
Combinazione di Fork e Join
Activity diagram: Esempio
Slide Aggiuntive
Swimlanes(1) l l l I diagrammi delle attività documentano bene ciò che accade, ma non chi fa che cosa Un modo di risolvere il problema, indicando le responsabilità per le attività, è l’uso delle swimlanes Le swimlanes sono corsie verticali separate da linee continue, in cui ogni corsia è coperta dalla responsabilità di una particolare classe (o sottosistema)
Swimlanes(2) l l Ogni attività deve essere contenuta in una singola swimlane Le transizioni invece possono attraversare le linee verticali di demarcazione
Esercizio l Sistema di autenticazione ad un servizio: l l Richiesta password Verifica password
Esercizio: soluzione(1) Richiesta connessione Richiesta password Introduzione password [corretta] Accetta connessione [errata] [corretta] Richiesta ri-immetere password [errata] Connessione negata
Esercizio: soluzione(2) CLIENT SERVER Richiesta connessione Richiesta password Introduzione password [errata] Richiesta password seconda volta [corretta] Accetta connessione [corretta] [errata] Connessione negata
- Slides: 51