Alberto Colombo Fulvio Frati UML Alberto Colombo Fulvio Frati
\\Titano\Public\IngegneriaSW Prima di iniziare... Accedete a \\Titano\Public\IngegneriaSW Scaricate il file BOUML.zip Decomprimete il file direttamente sul Z
Use Case Diagram (1) Un caso d’uso è uno specifico modo di utilizzare il sistema da parte di un attore per eseguire una certa funzionalità del sistema stesso “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) Rappresenta una funzionalità del sistema dal punto di vista di chi la utilizza: 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) Ogni caso d’uso può soddisfare più requisiti Un requisito può dare origine a più casi d’uso Ad ogni caso d’uso possono venire associati più requisiti
Use Case Diagram (4) I casi d’uso servono a: 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 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 prelevare visualizzare saldo identificarsi al bancomat <<include>>
Relazioni tra casi d’uso: extend <<extend>>: mostra il comportamento opzionale (alternativo o relativo al trattamento di condizioni anomale) trattare condizioni particolari aprire conto corrente <<extend>>
Esercizio: Sportello Bancomat 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 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) Una classe è una tipologia di oggetti, con propri attributi e operazioni Rappresentazione di una classe in UML: Automobile marca modello colore targa cambiaTarga cambiaColore Nome Attributi (proprietà) Operazioni (metodi)
Class diagram: le classi(2) 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) Associazione: correlazione fra classi; nel diagramma è una linea continua fra due classi, con esplicita semantica nei due sensi Aggregazione Composizione 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) Clienti clienteDal getOrdini Ordini dataOrdine stato calcolaTasse calcolaTotale setStato Articoli codice descrizione peso prezzo DettagliOrdine quantità calcolaPeso calcolaPrezzo 1 0..* 1..* emette emesso da riguarda atricolo nell’ordine
Class diagram: aggregazione 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 E’ un caso particolare di aggregazione in cui: la parte (componente) non può esistere da sola, cioè senza la classe composto una componente appartiene ad un solo composto
Class diagram: aggregazione/composizione Università Dipartimenti Docenti composizione aggregazione
Class diagram: ereditarietà Persone nome cognome indirizzo cambiaIndirizzo Clienti codiceCliente clienteDal contaOrdini PotenzialiClienti numVisite simbolo di ereditarietà sottoclassi superclasse
Esercizio: Struttura Universitaria Le entità coinvolte sono: Persone Docenti Studenti Frequenze Esami Corsi
Esercizio: soluzione insegna tenuto da del corso sostiene di Frequenze Corsi nome durata Esami voto data Studenti matricola Persone Docenti insegna tenuto da del corso sostiene periodo di relativo a 1 1..* *
Sequence Diagram 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) 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
in questo intervallo di tempo l’oggetto è in vita e attivo Sequence Diagram(3) Instance:Class Oggetto Cancellazione in questo intervallo di tempo l’oggetto è in vita e attivo Linea di vita tempo Box di attivazione
Sequence diagram: componenti Condizione: è associata ad un messaggio: solo se è soddisfatta il messaggio viene generato Iterazione: indica che un messaggio viene inoltrato più volte ad oggetti diversi di uno stesso gruppo Ritorno: indica il valore restituito all’oggetto chiamante e non un nuovo messaggio; può essere omesso Distruzione: deallocazione di un oggetto come metodo interno o tramite messaggio da un altro oggetto [ha disponib]
Sequence diagram: messaggi In generale un messaggio rappresenta il trasferimento del controllo da un oggetto ad un altro Se l’oggetto che invia il messaggio rimane in attesa che l’oggetto ricevente ritorni, si ha un messaggio sincrono 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: 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 controlla la disponibilità del proprio Articolo: 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 Condizione Chiamata interna Iterazione Creazione Ritorno Chiamata interna Condizione Creazione Cancellazione un Ordine un Articolo una Linea d’Ordine una finestra “Inserisci Ordine” preparazione() controlloDisp() [haDisponib] remove() deveRiordina() Nuovo ordine [deveRiordinare] do un Prodotto da Consegnare [haDisponib] do
Collaboration diagram(1) 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 NomeOggetto: NomeClasse ma è possibile indicare solo l’uno o l’altro
Collaboration diagram(2) A differenza del sequence diagram, i messaggi sono numerati, in modo da evidenziare esattamente la sequenza 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: 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 controlla la disponibilità del proprio Articolo: 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 Oggetto Messaggio Numero di sequenza :Finestra di Inserimento Ordine :Ordine Linea X : Linea d’Ordine :Prodotto da consegnare Articolo Xx : Articolo :Riordine Articolo 1: preparazione() 2: [per tutte le linee d’ordine] preparazione() 7: [ha Disponib] new 3: controlloDisp() 4: [haDisponib] remove()
Activity Diagram(1) Servono per la modellazione di workflow e per descrivere processi con una forte componente di computazione parallela Il componente principale è 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) Oltre alle Attività le altre componenti sono le Transizioni Le transizioni non hanno condizioni e sono innescate semplicemente dal termine dell’attività precedente
Activity Diagram(3) Un Activity Diagram può essere associato: A una classe All’implementazione di un’operazione Ad uno Use Case
Activity Diagram: Componenti(1) Action state action azione fatta nello stato Stato Iniziale Stato Finale Transizioni scatenate da completion events action1 action2 scatta quando action1 termina
Activity Diagram: Branch & Merge Branch: diramazione con una transizione entrante e più di una uscente, con condizioni mutuamente esclusive Non è possibile che valgano entrambe (comportamento ambiguo) o nessuna comportamento bloccato) Se le condizioni sono più di due deve comunque esserne verificata ogni volta una e una soltanto Merge: giunzione con più transizioni entranti ed una sola uscente, termina il blocco aperto dal Branch
Activity Diagram: Fork e Join Fork: divisione con una transizione entrante e più di una uscente che si eseguono in parallelo 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) 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) Ogni attività deve essere contenuta in una singola swimlane Le transizioni invece possono attraversare le linee verticali di demarcazione
Esercizio Sistema di autenticazione ad un servizio: Richiesta password Verifica password
Esercizio: soluzione(1) Richiesta password Introduzione password [errata] Richiesta ri-immetere password [corretta] Connessione negata Accetta connessione connessione
Esercizio: soluzione(2) CLIENT SERVER Richiesta connessione password Introduzione password [errata] [corretta] Richiesta password seconda volta Connessione negata Accetta connessione