UML: Casi d`uso
Transcript
UML: Casi d`uso
UML (ancora) Contenuto: Casi d’uso Diagrammi di sequenza Componenti O S I V V O R P 08 UML - 2010/11 G. Bucci O I R 1 Casi d’uso Oggi l’anaIisi dei casi d’uso è considerata uno dei passi più importanti dell’intero processo di sviluppo. Mostrano le relazioni tra “attori” e “casi d’uso” del sistema. Danno una rappresentazione del “comportamento” del sistema Mettono in evidenza le funzionalità di un sistema (o di parte di sistema o di una classe) così come le percepisce chi interagisce con esso dal mondo esterno. Un caso d’uso è schematizzato con una ellisse contenente il nome del caso d’uso. Centrati sull’utente . Caso d’uso Attore 08 UML - 2010/11 G. Bucci 2 Cos’è un caso d’uso Un caso d’uso è la rappresentazione di una coerente funzionalità del sistema Un caso d’uso è sempre una sequenza di eventi/risposte La sequenza può essere anche avviata dal sistema Attore 1. Azione Reazione 2. Azione Reazione Confine del sistema 08 UML - 2010/11 G. Bucci 3 Ruolo dei casi d’uso Acquirente effettua ordine requisiti Venditore casi prova modelli di analisi e progetto Ordine 0..* 08 UML - 2010/11 1 Acquirente G. Bucci 4 Esempio Attori Attore 08 UML - 2010/11 G. Bucci 5 Diagramma La linea che unisce un attore a un caso d’uso costituisce una comunicazione. La comunicazione è l’unica relazione tra attori e casi d’uso. Spesso la linea è orientata a indicare chi inizia il caso d’uso. 08 UML - 2010/11 G. Bucci 6 Metodo Identificare gli attori Definire cosa un attore vuol fare => caso d’uso I diagrammi servono a dare una visione sintetica. Al diagramma di un caso d’uso occorre aggiungere una descrizione testuale La descrizione testuale si compone di sequenza di statement del tipo: L’attore fa <xx> il sistema fa <yy> L’attore fa <aa> il sistema fa <bb> 08 UML - 2010/11 G. Bucci 7 Descrizione testuale Numero e titolo Breve descrizione Attori Precondizioni per l’esecuzione del CU Flusso (scenario) principale Flussi (scenari) alternativi Postcondizioni 08 UML - 2010/11 G. Bucci 8 Formato (possibile) 08 UML - 2010/11 G. Bucci 9 08 UML - 2010/11 G. Bucci 10 Non sarebbe mica male se ci fosse anche un “mockup” delle videate Menu Principale Inserimento 08 UML - 2010/11 G. Bucci 11 Scenari 08 UML - 2010/11 G. Bucci 12 Scenario secondario 08 UML - 2010/11 G. Bucci 13 Diagramma Sono possibili le relazioni seguenti tra casi d’uso (e sottocasi): estensione <<extend>> inclusione <<include>> generalizzazione 08 UML - 2010/11 G. Bucci 14 Inclusione Il caso incluso viene sempre fatto come parte del caso includente Somiglia a una chiamata a sottoprogramma 08 UML - 2010/11 G. Bucci 15 Estensione L’estensione può avere luogo o no Corrisponde a una situazione in cui il verificarsi di una condizione porta a fare qualcosa in più 08 UML - 2010/11 G. Bucci 16 Generalizzazione Del tutto simile al concetto tra classi 08 UML - 2010/11 G. Bucci 17 Diciamo la verità Sono piuttosto confusi Come notazione Frecce nei due versi tra include e extend Come significato Estensione o generalizzazione? Estensione o inclusione? C’è chi sostiene di usare solo <<invoca>> e <<precede>> 08 UML - 2010/11 G. Bucci 18 Attenzione! Siamo sicuri che il diagramma sia corretto? OK: Ci sono interazioni tra attore e sistema Un algoritmo non è un caso d’uso! Se non c’è interazione (“botta e risposta”) con l’attore non è un caso d’uso 08 UML - 2010/11 G. Bucci 19 Un attore speciale Nella specifica si legge: “alla mezzanotte il sistema trasmette un messaggio di sollecito a tutti i lettori che non hanno restituito nei termini i libri in prestito” E’ evidente che la trasmissione deve avvenire in modo automatico, senza l’intervento del (presumibile) bibliotecario, che a quell’ora dorme Chi è l’attore? E’ il sistema ? NO !! : Un caso d’uso è un’interazione con un attore esterno. Il sistema svolge il caso d’uso non è l’attore. Ma allora chi è l’attore? 08 UML - 2010/11 G. Bucci 20 ..Un attore speciale L’attore non può che essere il Tempo E’ un attore concettuale che a mezzanotte avvia il caso d’uso. 08 UML - 2010/11 Il modo in cui il Tempo si manifesta non ci interessa; sarà magari attraverso un componente software che lo realizza, concettualmente esterno al nostro sistema G. Bucci 21 Perché limitarsi? Abbiamo considerato il caso d’uso solo in riferimento allo svolgimento di una funzionalità del sistema (interazione AttoreSistema) Si può rappresentare di più: lo svolgimento completo di un processo di business, identificando: Le attività che sono svolte dal sistema software Le attività svolte per altra via Se la procedura è complessa si può fare ricorso ai diagrammi di attività 08 UML - 2010/11 G. Bucci 22 Esempio: apertura di un CC 1. 2. 3. 4. 5. 6. il cliente si presenta in banca per aprire un nuovo c/c l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.) il cliente fornisce i propri dati all’addetto l’addetto verifica se il cliente è censito in anagrafica l’addetto crea il nuovo conto corrente l’addetto segnala il numero di conto al cliente Varianti: 3. (a) se il cliente non accetta il caso d’uso termina; (b) se il conto va intestato a più persone vanno forniti i relativi dati 4. (a) se il cliente (o uno dei diversi intestatari) non è censito l’addetto provvede a registrarlo, richiede al cliente la firma dello specimen e ne effettua la memorizzazione via scanner 08 UML - 2010/11 G. Bucci 23 Esempio: apertura di un CC 1. 2. 3. 4. 5. 6. il cliente si presenta in banca per aprire un nuovo c/c l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.) il cliente fornisce i propri dati all’addetto l’addetto verifica se il cliente è censito in anagrafica l’addetto crea il nuovo conto corrente l’addetto segnala il numero di conto al cliente Varianti: 3. (a) se il cliente non accetta il caso d’uso termina; (b) se il conto va intestato a più persone vanno forniti i relativi dati 4. (a) se il cliente (o uno dei diversi intestatari) non è censito l’addetto provvede a registrarlo, richiede al cliente la firma dello specimen e ne effettua la memorizzazione via scanner I corsivi non sono funzionalità informatiche 08 UML - 2010/11 G. Bucci 24 Esempio: apertura di un CC 1. 2. 3. 4. 5. 6. il cliente si presenta in banca per aprire un nuovo c/c l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.) il cliente fornisce i propri dati all’addetto l’addetto verifica se il cliente è censito in anagrafica l’addetto crea il nuovo conto corrente l’addetto segnala il numero di conto al cliente Questi passi devono essere dettagliato nel modo Varianti: visto in precedenza 3. (a) se il cliente non accetta il caso d’uso termina; (b) se il conto va intestato a più persone vanno forniti i relativi dati 4. (a) se il cliente (o uno dei diversi intestatari) non è censito l’addetto provvede a registrarlo, richiede al cliente la firma dello specimen e ne effettua la memorizzazione via scanner 08 UML - 2010/11 G. Bucci 25 Questa non è accettabile ! 1. L’impiegato immette a video tutti i dati (nome cliente, giorni di permanenza, numero di camera, accompagnatori……..e via elencando) 2. Il sistema effettua i controlli e presenta il conto Non dice niente di più di una ellisse del diagramma Una descrizione deve mostrare una sequenza dettagliata di passi 08 UML - 2010/11 G. Bucci 26 …Inoltre E’ sbagliata concettualmente: Se viene immesso un dato sbagliato c’è il rischio di dover reimmettere tutto, a meno di non fare controlli molto onerosi dei singoli campi, della reimmissione ecc. Se si va per passi la logica risulta semplificata 08 UML - 2010/11 G. Bucci 27 Diagrammi di interazione Sequence diagrams : mostrano le interazioni tra gli oggetti lungo le loro linee di vita (cioè secondo un ordinamento temporale) Communication diagrams : mostrano i messaggi che vengono scambiati tra gli oggetti che intervengono nell’espletare una data funzionalità (i primi sono di gran lunga più importanti) 08 UML - 2010/11 G. Bucci 28 Diagramma di sequenza - sintassi 08 UML - 2010/11 G. Bucci 29 Diagramma di sequenza - sintassi : OggettoA : OggettoB : OggettoC X 08 UML - 2010/11 G. Bucci 30 Diagramma di sequenza - sintassi : OggettoA : OggettoB : OggettoC Linee di vita X Attivazioni 08 UML - 2010/11 G. Bucci 31 Diagramma di sequenza - sintassi : OggettoA Stimolo Sincrono Stimolo Asincrono : OggettoB Risposta op_0() op1() <<create>> opi() : OggettoC Autostimolo opx(param) op_as() <<destroy>> X Ritorno 08 UML - 2010/11 G. Bucci 32 Stimoli, ritorni, ecc Uno stimolo è di norma un messaggio (la chiamata di un metodo) specialmente quando è di tipo sincrono (cioè che attende il ritorno da parte del chiamato) Ma può essere anche un segnale (generalmente nel caso di interazioni asincrone) La creazione e la distruzione sono essi stessi degli stimoli Imparare un tool adeguarsi alle sue regole!!!! 08 UML - 2010/11 G. Bucci 33 Esempio Partiremo da questo diagramma delle classi GestoreOrdini Ordine gestisce * consulta 1 Catalogo 08 UML - 2010/11 G. Bucci 34 ai N ni r o rit ic d n i a on sce ie r i s ltà ma è a , re In icarli ind oso g bri : Catalogo : GestoreOrdini : User 1 : apriOrdine() <<create>> 2 : Ordine loop Per ogni prodotto desiderato 3 : aggiungiProdotto() 4 : Prodotto := cercaProdotto() 5 : addProdotto() 6 : calcolaPrezzo() 7 : importoTotale := getCost() 9 : eliminaOrdine() 8 : ImportoTotale := getCost() <<destroy>> 10 Questo è un Frame (UML 2) 08 UML - 2010/11 G. Bucci 35 Un vantaggio dell’uso di un tool Mettendo le operazioni sul diagramma queste diventano metodi delle classi Ma bisogna faticare un po’!! GestoreOrdini +getCost() +apriOrdine() +aggiungiProdotto() +eliminaOrdine() Ordine gestisce * +getCost() +addProdotto() +calcolaPrezzo() consulta 1 Catalogo +cercaProdotto() 08 UML - 2010/11 G. Bucci 36 08 UML - 2010/11 G. Bucci 37 Frame Servono a raggruppare parti di diagramma (eventualmente a richiamarle in altri diagrammi) esempi di frame loop nome Loop alt [if Prodotto scontato] Alt (guardare StarUML, combined fragment ) 08 UML - 2010/11 [else] G. Bucci 38 08 UML - 2010/11 G. Bucci 39 Diagrammi di comunicazione 08 UML - 2010/11 G. Bucci 40 08 UML - 2010/11 G. Bucci 41 Package Meccanismo di raggruppamento Azienda Personale Produzione <<import>> Utilities Acquisti Personale <<access>> Dirigenti Dirett Impiegati Anagrafe Consigliere 08 UML - 2010/11 G. Bucci 42 Componente Una parte (modulare) logica o fisica del sistema il cui comportamento esterno è descritto attraverso le interfacce che esso presenta o richiede Un componente non dipende da altri componenti, ma solo dalle interfacce che esso offre o richiede Un componente può essere sostituito da un altro se le interfacce sono le stesse 08 UML - 2010/11 G. Bucci 43 Componenti AccountManagement <<component>> AccountManagement <<component>> AccountManagement Notazione UML 1.4 superata Notazione UML 2 (corrente) TransLog IDVerif 08 UML - 2010/11 G. Bucci 44 Dipendenza tra componenti <<component>> AccountManagement Port1 IDverif Port2 TransLog <<component>> AccountManagement Port1 <<component>> CreditCardServices <<component>> Logger <<interface>> IDverif <<component>> CreditCardServices 08 UML - 2010/11 G. Bucci <<interface>> TransLog <<component>> Logger 45 Componenti Porta: Punto di connessione (di un classificatore) con l’esterno <<component>> InterfacciaUtente Port1 <<component>> ServerApplicazione <<delegate>> <<delegate>> <<componente>> Applicazione 08 UML - 2010/11 <<componente>> Driver G. Bucci <<componente>> BaseDati 46 Porte Una porta è il modo in cui un classificatore implementa le interfacce (offerte o richieste) verso l’esterno delegation connector collega una porta (esterna) con elemento interno Le porte permettono di modificare la struttura interna di un classificatore senza effetti sul mondo esterno (purchè le interfacce sulle porte siano correttamente soddisfatte) 08 UML - 2010/11 G. Bucci 47 Artifact <<artifact>> Nome Realizzazione concreta di un qualche elemento file sorgente, librerie, file eseguibili <<artifact>> Logging.jar +numLoggers <<manifest>> <<component>> LoggingSubsystem Un artifact è la manifestazione di un elemento UML: Login.jar è la manifestazione del componente LoginSubsystem. Si usa lo stereotipo <<manifest>> <<artifact>> Logging.jar +numLoggers 08 UML - 2010/11 G. Bucci Possono avere attributi 48 Artifact Studente <<manifest>> <<artifact>> Studente.java <<artifact>> Studente.class Docente <<manifest>> Valutazione <<manifest>> <<artifact>> Valutazione.java <<artifact>> Valutazione.class Corso <<manifest>> <<artifact>> Corso.java <<artifact>> Corso.class Orario <<manifest>> <<artifact>> Docente.java <<artifact>> Docente.class <<artifact>> Orario.java <<component>> Dati Corso <<manifest>> <<artifact>> Persone.jar <<manifest>> Valutazione Studente 08 UML - 2010/11 <<artifact>> Dati.jar <<artifact>> Orario.class <<component>> Persone Docente <<artifact>> Persone.jar <<artifact>> Dati.jar Orario G. Bucci 49 Diagrammi di Deployment Mostrano l’allocazione del software sull’hardware. Nodo: entità che può eseguire software Dispositivo Ambiente di esecuzione <<device>> WebServer Repository <<device>> ApplicationServer components Persone Dati LoggingSubsystem * 1 <<device>> DataBase artifacts <<excecution env>> J2EE 08 UML - 2010/11 Logging.jar Persone.jar Dati.jar G. Bucci 50 Diagrammi di Deployment <<device>> DataBase <<device>> ApplicationServer 1 * <<execution environment>> Oracle <<deploy>> <<artifact>> Persone.jar <<deploy>> <<artifact>> Logging.jar 08 UML - 2010/11 <<deploy>> <<artifact>> Dati.jar G. Bucci 51 Esempi 08 UML - 2010/11 G. Bucci 52