,6 PRG % &RUVR GL,QJHJQHULD GHO 6RIWZDUH 80/ Bibliografia Studio di caso: Bancomat Automated Teller Machine uso dei diagrammi: use case, classi, collaborazione, stato - Hassan Gomaa: Designing concurrent distributed and real time applications with UML, Addison Wesley 2000 - I.Jacobson, G.Booch, J.Rumbaugh: The Unified Software Development Process, Addison Wesley 1999 - Reference manual UML 1.4 Renato Conte - UML: Studio di caso - 1 - Renato Conte - UML: Studio di caso - 2 - Riferimenti nel Web Use case sistema bancomat (ATM) - alto livello - UML 1.4 RTF: www.celigent.com/omg/umlrtf TrasferimentoFondi Validazione PIN OMG UML Tutorials: www.celigent.com/omg/umlrtf/tutorials.htm UML 2.0 Working Group: www.celigent.com/omg/adptf/wgs/uml2wg.htm ATM ListaMovimenti o Saldo Startup OMG UML Resources: www.omg.org/uml/ PrelievoContanti Shutdown operatore ATM ATM Banking system Aggiungi Contante Renato Conte - UML: Studio di caso - 3 - Renato Conte - UML: Studio di caso - 4 -
USE CASE raccomandazioni Gli identificatori degli use case devono utilizzare il nome di un verbo e un processo Le funzionalita del sistema devono essere tracciabili all interno degli use case Gli use case devono essere tracciabili all interno del codice implementato I limiti di un sistema: Limiti delle componenti HW e/o SW; Limiti dell organizzazione in cui opera Limiti del dipartimento in cui opera ATM Operatore ATM ATM: Use case sottosistemi Client / Server ATM Client Subsystem Client Validazione PIN Client PrelievoContanti Client TrasferimentoFondi Client ListaMovimenti Aggiungi Contante ATM Server Subsystem Server Validazione PIN Server TrasferimentoFondi Server ListaMovimenti Server PrelievoContanti Startup Shutdown Renato Conte - UML: Studio di caso - 5 - Renato Conte - UML: Studio di caso - 6 - Tipi di Use case USE CASE in descrizione narrativa Use case ad alto livello Brevita Genericita Dettagli Specificita Use Case espansi Documento testuale che descrive la sequenza di eventi di un attore che utilizza il sistema. Servono a migliorare la comprensione dei requisiti Use case essenziali Astrazione tecnologica e/o implementativa Dettagli tecnologici e/o implementativi Use Case reali Passo preliminare per descrivere i requisiti del sistema Renato Conte - UML: Studio di caso - 7 - Renato Conte - UML: Studio di caso - 8 -
USE CASE Validazione PIN (1) In glossario Use case: validazione PIN (Personal Identification Number) Sommario: il sistema controlla e valida il PIN del cliente Attore: cliente ATM Precondizioni: il sistema è in attesa e mostra sul display un messaggio di benvenuto. In glossario Descrizione (funzionalità): 1) Il cliente inserisce l ATM Card (bancomat / carta di credito); 2) Il sistema riconosce l ATM Card e ne legge il numero; 3) Il sistema chiede il PIN; 4) Il cliente inserisce il PIN; 5) Il sistema controlla la data di scadenza e se la Card risulta in stato di smarrita o rubata; 6) Se la Card è valida, il sistema controlla se il PIN è corretto (PIN mantenuto dal sistema); USE CASE Validazione PIN (2) Descrizione (cont.): 7) Se il PIN è corretto, il sistema controlla quali conti correnti sono accessibili con quella Card; 8) Il sistema mostra al cliente le possibili tansazioni (menu): prelievo, saldo, lista movimenti o trasferimento; Alternative: 1) Il sistema non riconosce l ATM Card, la Card viene espulsa; 2) Il sistema determina che la Card è scaduta: la Card viene confiscata; 3) Il sistema determina che la Card risulta smarrita o rubata: la Card viene confiscata; 4) Il cliente digita un PIN non corretto 5) Postcondizioni: Il PIN e stato validato. Renato Conte - UML: Studio di caso - 9 - Renato Conte - UML: Studio di caso - 10 - USE CASE Prelievo contanti Use case: Prelievo contanti Sommario: il cliente preleva una determinata quantità di denaro da un valido conto corrente. Attore: cliente ATM. Dipendenze: include lo use case Validazione del PIN. Precondizioni: l ATM è in attesa mostrando un messaggio. Descrizione: a) il cliente seleziona dal menu l opzione prelievo, inserisce l ammontare da prelevare, ; b) il sistema controlla...; Alternative: il sistema non ha sufficienti contanti... Postcondizioni: il prelievo e stato fatto. Modello statico del sistema diagramma delle classi Renato Conte - UML: Studio di caso - 11 - Renato Conte - UML: Studio di caso - 12 -
diagramma delle classi diagramma degli oggetti primav: Valutazione cognome nome Studente 2..50 1..4 Corso nomecorso x: Studente nome = Pippo voto = 30 : Valutazione mostracurriculum( ) Valutazione y : Studente : Valutazione programmazione: Corso nome = Paperino cognome nome Studente mostracurriculum( ) 1..4 voto data Valutazione 2..50 Corso nomecorso : Studente : Valutazione : Valutazione : Corso : Studente : Valutazione Renato Conte - UML: Studio di caso - 13 - Renato Conte - UML: Studio di caso - 14 - Modello statico concettuale: classi fisiche Modello statico del contesto: classi external, system Bank gestisce ATM «external I/O dev.» ATM adibitoa Operator «external Output dev.» «system» Banking System legge Distrib.contanti distribuisce Contanti Ricevuta stampa ATM «external Output dev.» Distrib.contanti Renato Conte - UML: Studio di caso - 15 - Renato Conte - UML: Studio di caso - 16 -
gestisce Modello statico: Banking System Bank gestisce ATM info Dettagli per la classe (attributi) 0..* possiede * accede a ha possiede Conto corrente identifica * Transazione * 1,2 modifica cardid: String PIN: String dataemissione: date scadenza: date limiteprelievo: integer stato: statov {attiva, smarrita,...} Validaz.PIN Prelievo Estratto conto Trasfer. conto Renato Conte - UML: Studio di caso - 17 - Renato Conte - UML: Studio di caso - 18 - Banking system: applicazione client/server ATM client «external»atm ATM client ATM Distributore contanti «system» Banking System ATM client ATM server Distrib. contanti Transazione ATMControl Bank server Renato Conte - UML: Studio di caso - 19 - Renato Conte - UML: Studio di caso - 20 -
ATM client ATM client per memorizzare le informazioni lette dalla ATM Card ATM client ATM client per la gestione della sequenza delle azioni Transazione Transazione Distrib. contanti Bank server Distrib. contanti Bank server ATMControl ATMControl Renato Conte - UML: Studio di caso - 20 - Renato Conte - UML: Studio di caso - 20 - ATM client ATM client per l interazione col cliente, e per la gestione del PIN Livelli Architetturali Architettura multi-layer (multi-tier) Transazione Presentazione Logica Applicativa Memorizzazione Dati Distrib. contanti Bank server GUI Oggetti del dominio del problema Oggetti dei servizi per l accesso ai dati Database ATMControl Renato Conte - UML: Studio di caso - 20 - Renato Conte - UML: Studio di caso - 21 -
Diagrammi dinamici Modellazione dinamica Dynamic Modeling Interazioni tra oggetti che partecipano in ciascun use case Sequenza di messaggi intra-oggetti Diagrammi di sequenza e/o di collaborazione e di stato ( sequence, collaboration, statechart diagrams ) Renato Conte - UML: Studio di caso - 22 - Renato Conte - UML: Studio di caso - 23 - Diagramma di collaborazione Collaboration Diagrams Un diagramma che illustra le interazioni tra oggetti organizzandole attorno agli oggetti e ai link tra questi oggetti. A differenza di un diagramma di sequenza, evidenzia le relazioni tra gli oggetti. Diagramma di collaborazione: use case Validazione PIN «external» : : : :Bank server :ATM control : :Transazione Renato Conte - UML: Studio di caso - 24 - Renato Conte - UML: Studio di caso - 25 -
Diagramma di collaborazione: use case Validazione PIN Diagramma di collaborazione: use case Validazione PIN 1: Card Reader Input :Bank server :Bank server «external» :r : 1.1: Card Input Data 1.2: Card Inserita «external» : : 2.5: ValidatePIN ( Inform) 2.6 [Valid]: ValidPIN : :ATM control : 2.4: PIN Entered ( Inform) :ATM control 1.4: PIN prompt : 1.3: Get PIN :Transazione 2.8: Selection Menu 2: input PIN 2.2:Dati Card : 2.1: Card Request 2.7a: Display Menu 2.3: Info. :Transazione 2.7b: Aggiorna mento Renato Conte - UML: Studio di caso - 25 - Renato Conte - UML: Studio di caso - 25 - Diagramma di collaborazione: arrow label Diagramma di collaborazione: arrow label Predecessor / sequence-expression: return-value := message-name (argument-list) Pred. / seq.exp: retval := mess(arg.-list) 2.1 a, 2.2 b / 3.1 a : res := getlocation ( fig ) 3.1.2 [ Z >0 ] : res := sadf ( 1,2,3 ) Progressione dei messaggi (livello di annidamento della procedura). Sequenza di interi separati dal punto: numerazione decimale di Dewey. Lettere dell'alfabeto: nome thread. Lista di numeri di sequenze di altri messaggi Clausola opzionale. Indica che il messaggio non sarà attivato fino a che tutti i messaggi indicati nella lista non avranno terminato le loro azioni (sincronizzazioni). 3.7.4: move (5, 7) Opzionale. La clausola condizionale è normalmente espressa in pseudo codice ed esprime quali condizioni devono verificarsi per la attivazione del messaggio. 1.2.5 [ free memory ] : createcopy ( ) Renato Conte - UML: Studio di caso - 26 - Renato Conte - UML: Studio di caso - 27 -
Diagramma di collaborazione: arrow label Esempio di diagramma di collaborazione Pred. / seq.exp: retval := mess(arg.-list) 3.1.2 *[ i:= 1..N ] : drawsegment ( i ) Opzionale. La clausola iterativa è normalmente espressa in pseudo codice ed esprime una esecuzione iterativa. Renato Conte - UML: Studio di caso - 28 - Renato Conte - UML: Studio di caso - 29 - Descrizione dei messaggi: use case Validazione PIN (1) Descrizione dei messaggi: use case Validazione PIN (2) 1: Card Reader Input --- il ATM inserisce la Card: la CardReader legge i dati. 1.1: Card Input Data --- la CardReader manda i dati della Card (ID, scadenza, ) all oggetto ATMCard che li memorizza. 1.2: Card Inserita --- la CardReader invia l evento Card Inserita all ATM control. Come risultato vedremo che nel diagramma di stato relativo all ATM control, un cambiamento di stato da Idle (inattivo) ad Attesa PIN. L evento associato all uscita è Get PIN. 1.3: Get PIN --- l ATM control manda l evento Get PIN all oggetto interfaccia. 1.4: PIN prompt --- l interfaccia manda la richiesta di inserimento PIN (PIN Prompt) all attore ATM. 2: input PIN --- il ATM manda il PIN all oggetto interfaccia. 2.1: Card Request --- 2.2:Dati Card --- 2.3: Info. --- 2.4: PIN Entered (Inform) --- 2.5: ValidatePIN (Inform) --- 2.6 [Valid]: Valid PIN --- Il Bank Server valida il PIN e manda il segnale validpin all ATM control. Come risultato di questo evento l ATM control passa allo stato di Attesa scelta operazione 2.7a: Display Menu --- 2.7b: Aggiornamento --- 2.8: Selection Menu ---...alternative... Renato Conte - UML: Studio di caso - 30 - Renato Conte - UML: Studio di caso - 31 -
Use case Diagrammi di sequenza (o sequenziali) Sequence Diagrams Interazione attore sistema Genera eventi che richiedono operazioni da parte del sistema per un dato use case il diagramma sequenziale e uno schema che rappresenta: gli eventi generati dagli attori l ordine degli eventi generati gli eventi che intercorrono tra i sistemi la sequenza degli eventi segue il corso del use case (incluse le alternative possibili) gli eventi possono includere dei parametri Diagramma di sequenza: use case Validazione PIN 1: Card Reader Input 1.4: PIN prompt 2: input PIN 2.8: Selection Menu «external» : 1.1: Card Input Data : 1.2: Card Inserita :ATM control 2.1: Card Request 2.2:Dati Card 1.3: Get PIN 2.4: PIN Entered (Inform) : 2.7a: Display Menu 2.7b: Aggiornamento :Transazione 2.3: Info. 2.5: ValidatePIN (Inform) 2.6 [Valid]: Valid PIN :Bank server Renato Conte - UML: Studio di caso - 32 - Renato Conte - UML: Studio di caso - 33 - Diagramma di stato Statechart Diagram Diagramma di stato: transizione Transition Specifica il ciclo di vita degli oggetti di una classe, definendo le regole che lo governano. Quando un oggetto si trova in un certo stato può essere interessato da determinati eventi Come risultato di un evento l oggetto può passare ad un nuovo stato (transizione) Utilizzato in situazioni dove le transizioni di stato sono provocate da eventi asincroni. Ready stop / ctr := 0 Trigger Done Action stop Una transizione collega tra loro due stati L uscita da uno stato definisce la risposta dell oggetto all occorrenza di un evento (Trigger ) Una transizione è associata a un evento, una condizione (opzionale), un azione (opzionale), e uno stato di arrivo. Sintassi: evento [condizione] / azione Renato Conte - UML: Studio di caso - 34 - Renato Conte - UML: Studio di caso - 35 -
ATM control : diagramma di stato del use case Validazione PIN ATM control: diagramma di stato generale (top level) Disattivato Attesa PIN 1.2: Card Inserita / 1.3: Get PIN 2.4: PIN Entered (Inform) / 2.5: ValidatePIN (Inform) Idle 1.2: Card Inserita / 1.3: Get PIN Idle Entry/ msg. benvenuto Start Stop Tempo scaduto / restit. card Terzo tentativo, Rubata/ confisca Card Entry/ msg. System down Contante insuff./ restituzione card Validazione PIN Processa Input Cancella op./ restit. Card Termina la transazione 2.6: Valid PIN / 2.7a: Display Menu, 2.7b: Aggiornamento x.y: evento / k.z: azione Sel. trasfer./ ric. trasferim. Errori / restit. card Attesa scelta operazione Sel. movimenti/ ric. movimenti Selez. prelievo/ richiesta prelievo Processa la transazione Trasfer.OK/ stampa ric. Movim.OK/ stampa ric. Prelievo OK/ dispens. contante Renato Conte - UML: Studio di caso - 36 - Renato Conte - UML: Studio di caso - 37 - ATM control: diagramma di stato Processa Input Processa Input 1.2: Card Inserita /1.3: Get PIN Idle Entry/ msg. benvenuto 2.4, 2.6a2: PIN Entered / 2.5, 2.6a3: ValidatePIN Attesa PIN Validazione PIN cnt: integer 2.6a: PIN Err [cnt <3] / cnt:= cnt+1 2.6a.1: messaggio PIN errato PIN Err [cnt =3], / card confiscata Cancella / restit. Card Smarrita, Rubata / card confiscata 2.6: Valid PIN / 2.7a: Display Menu, 2.7b: Aggiornamento Attesa scelta operazione Sel. movimenti/ ric. movimenti Sel. trasfer./ ric. trasferim. Selez. prelievo/ richiesta prelievo Entry / cnt:= 1 Renato Conte - UML: Studio di caso - 38 -