Introduzione a UML obiettivo di questa introduzione
Transcript
Introduzione a UML obiettivo di questa introduzione
Adriano Comai 1998 Introduzione a UML Introduzione a UML Adriano Comai 1998 [email protected] Introduzione a UML Pag. 1 Adriano Comai 1998 obiettivo di questa introduzione • fornire elementi di base su UML • introdurre i principali diagrammi • fornire indicazioni sulle modalità di utilizzo di UML nello sviluppo delle applicazioni • questi temi sono trattati in modo approfondito, con esercitazioni, nel corso “Rapid Application Development” http://www.analisi-disegno.com/a_comai/corsi/sk_rad.htm • nel corso “Analisi e disegno Object Oriented con UML” http://www.analisi-disegno.com/a_comai/corsi/sk_uml.htm [email protected] Pag. 2 1 Introduzione a UML Adriano Comai 1998 lo Unified Modeling Language (UML) • un linguaggio (e notazione) universale, per rappresentare qualunque tipo di sistema software • uno standard OMG (Object Management Group), dal nov.1997 • gli autori: – Grady Booch – Ivar Jacobson – Jim Rumbaugh • i co-proponenti: Microsoft, IBM, Oracle, HP, Platinum, Sterling, Unysis (e tanti altri) [email protected] Introduzione a UML Pag. 3 Adriano Comai 1998 cos’è UML (e cosa non è) • è un linguaggio di progettazione, non un linguaggio di programmazione (come Java, VisualBasic, C++, …) • quindi serve a progettare un nuovo sistema, o a apportare modifiche alla progettazione di un sistema esistente, senza perdersi nei dettagli dei linguaggi di programmazione • è universale, nel senso che può rappresentare sistemi molto diversi senza differenze legate alla tecnologia: dai sistemi web a quelli più tradizionali, dalle vecchie applicazioni Cobol a quelle object oriented e a componenti [email protected] Pag. 4 2 Introduzione a UML Adriano Comai 1998 ...cos’è UML (e cosa non è)... • è un linguaggio, non un metodo (come quelli di Yourdon e DeMarco, o di Rumbaugh o Jacobson) • definisce una notazione standard, basata su un metamodello integrato degli “oggetti” che compongono un sistema software • ma non prescrive una sequenza di processo, cioè non dice “prima bisogna fare questa attività, poi quest’altra” • quindi può essere (ed è) utilizzato da persone e gruppi che seguono metodi diversi (è “indipendente dai metodi”) [email protected] Introduzione a UML Pag. 5 Adriano Comai 1998 ...cos’è UML (e cosa non è). • è un linguaggio non proprietario, standard • i suoi autori (Grady Booch, Jim Rumbaugh e Ivar Jacobson) non hanno il copyright su UML • la versione diventata standard OMG (Object Management Group) ha ricevuto i contributi di molti altri metodologi, e delle più importanti società di software mondiali • la sua evoluzione è a carico dell’OMG, e soggetta a procedure ben definite per ogni cambiamento [email protected] Pag. 6 3 Adriano Comai 1998 Introduzione a UML nuove tecniche e modelli ??? • UML è un’evoluzione di modelli preesistenti, non una rivoluzione • Forti affinità con modelli e diagrammi molto noti: –Entity - Relationship –Flow Chart –modelli object oriented • Innovazione dei modelli per adeguarsi alle architetture distribuite [email protected] Pag. 7 Adriano Comai 1998 Introduzione a UML Booch OOD 91 OOAD 94 Rumbaugh (OMT) 91 Jacobson (Objectory / OOSE) 92 pre-istoria di UML 94 (RATIONAL) Ott. 95 UNIFIED METHOD NOTATION (vers. 0.8) Ott. 95 (RATIONAL) Lug. 96 UNIFIED MODELING LANGUAGE (vers. 0.9) Microsoft, HP, Oracle e altri Gen. 1997 UML 1.0 IBM, Platinum e altri OOSE Object Oriented Software Engineering OMT Object Modeling Technique Nov. 1997 UML 1.1 [email protected] Pag. 8 4 Adriano Comai 1998 Introduzione a UML UML: meta-modello e diagrammi • UML è basato su un meta-modello integrato, composto da numerosi elementi collegati tra loro, secondo regole precise • grazie a queste regole, utilizzando gli elementi del metamodello è possibile creare modelli particolari per le singole applicazioni da progettare • molti elementi (ad es. l’elemento “classe”) hanno una icona che li rappresenta graficamente • gli elementi del meta-modello possono comparire in diagrammi di diverso tipo [email protected] Pag. 9 Adriano Comai 1998 Introduzione a UML diagrammi UML livello “logico”: diagramma dei casi d’uso (use case) diagramma delle classi (class) diagramma di sequenza (sequence) diagramma di collaborazione (collaboration) diagramma di transizione di stato (state) diagramma delle attività (activity) livello “fisico”: diagramma dei componenti (component) diagramma di distribuzione dei componenti (deployment) [email protected] Pag. 10 5 Adriano Comai 1998 Introduzione a UML diagramma dei casi d’uso Diagramma dei casi d'uso: vendita per corrispondenza effettua ordine Venditore verifica stato avanzamento Customer attore: un utilizzatore del sistema (essere umano, altro sistema, …) caso d’uso: una particolare modalità di utilizzo del sistema [email protected] Pag. 11 Introduzione a UML Adriano Comai 1998 casi d’uso : a cosa servono • rappresentano le modalità di utilizzo del sistema da parte di uno o più utilizzatori (attori) • descrivono l’interazione tra attori e sistema, non la “logica interna” della funzione • sono espressi in forma testuale, comprensibile anche per i non “addetti ai lavori” • possono essere definiti a livelli diversi (sistema o parti del sistema) • ragionare sui casi d’uso aiuta a scoprire i requisiti funzionali [email protected] Pag. 12 6 Adriano Comai 1998 Introduzione a UML ruolo dei casi d’uso Acquirente Venditore caso d’uso: effettua ordine requisiti unità di rilascio modelli di analisi e disegno Ordine DataArrivo Numero Prezzo verifica( ) evadi( ) Cliente nome indirizzo 0..* casi prova 1 StabilisciCredito( ) [email protected] Pag. 13 Introduzione a UML Adriano Comai 1998 diagramma delle classi nomeclasse Libro cod_libro titolo data edizione ISDN 0..* data acquisizione richiesta( ) restituzione( ) create( ) pubblicato da 1 variazione dati editore( ) scritto da 0..* 0..* [email protected] attributi 1..* Libro prezioso valore : lire = 0 classe: una tipologia di oggetti, con propri attributi ed operazioni Editore ragione sociale nome breve indirizzo sede telefono Autore nome : type = initval cognome : type = initval anno nascita anno morte operazioni variazione anagrafica( ) valorizza( ) Prestito 0..* Utente variazione anagrafica( ) Pag. 14 7 Adriano Comai 1998 Introduzione a UML diagramma delle classi Libro cod_libro titolo data edizione ISDN 0..* data acquisizione richiesta( ) restituzione( ) create( ) pubblicato da 1 associazione (relationship) Editore ragione sociale nome breve indirizzo sede telefono variazione dati editore( ) 1..* scritto da 0..* 0..* Libro prezioso valore : lire = 0 Autore nome : type = initval cognome : type = initval anno nascita anno morte variazione anagrafica( ) valorizza( ) Prestito gerarchia di specializzazione (superclassesottoclasse) [email protected] Introduzione a UML 0..* Utente variazione anagrafica( ) classe associativa Pag. 15 Adriano Comai 1998 diagramma delle classi: a cosa serve • rappresenta le classi e gli oggetti che compongono il sistema, ed i relativi attributi ed operazioni • specifica, mediante le associazioni, i vincoli che legano tra loro le classi • può essere definito in fasi diverse (analisi, disegno di dettaglio) • può rappresentare diverse tipologie di oggetti (oggetti business, oggetti di interfaccia, …) [email protected] Pag. 16 8 Adriano Comai 1998 Introduzione a UML interfaccia richiesta : Utente : interfaccia biblioteca consente all'utilizzatore di richiedere in prestito uno o più libri 1: RichiestaPrestito 2: L'utente fornisce i dati relativi al libro (ai libri) che vuole in prestito. Il sistema verifica se 6: err: utente non censito ( l'utente è censito, 5: controllo richiesta : Utente : Libro : Prestito messaggio oggetto 3: ControlloUtentePerPrestito ( 4: 7: PrestitiDelCliente ( ) Verifica quindi se ha 10: err: utente deve restituire libri in prestito da restituire, o se ne ha già tre in prestito, segnala l'impossibilità del prestito. Altrimenti il sistema controlla se i libri sono 15: err: libro già in prestito disponibili, e se lo sono li fornisce all'utente, altrimenti segnala l'errore specifica di scenario (caso d’uso) [email protected] Introduzione a UML attività dell’oggetto 9: 8: 11: richiesta (cod_libro) 14: 13: 12: Prestito ( ) diagramma di sequenza Pag. 17 Adriano Comai 1998 diagramma di sequenza: a cosa serve • evidenzia il modo in cui uno scenario (uno specifico percorso in un caso d’uso) viene risolto dalla collaborazione tra un insieme di oggetti • specifica la sequenza dei messaggi che gli oggetti si scambiano • può specificare nodi decisionali e iterazioni • diagrammi di sequenza e diagrammi di collaborazione esprimono informazioni simili, ma le evidenziano in modo diverso [email protected] Pag. 18 9 Adriano Comai 1998 Introduzione a UML diagramma di collaborazione 1: RichiestaPrestito interfaccia richiesta : interfaccia : Utente biblioteca 10: err: utente deve restituire 6: err: utente non censito ( ) 15: err: libro già in prestito 9: 2: 5: 14: controllo richiesta 13: oggetto 3: ControlloUtentePerPrestito ( ) 11: richiesta (cod_libro) : Libro messaggio 12: Prestito ( ) 8: 4: : Utente : Prestito 7: PrestitiDelCliente ( ) [email protected] Pag. 19 Introduzione a UML Adriano Comai 1998 diagramma di collaborazione: a cosa serve • specifica gli oggetti che collaborano tra loro in un dato scenario, ed i messaggi che si indirizzano • la sequenza dei messaggi è meno evidente che nel diagramma di sequenza, mentre sono più evidenti i legami tra gli oggetti • può essere utilizzato in fasi diverse (analisi, disegno di dettaglio), e rappresentare diverse tipologie di oggetti [email protected] Pag. 20 10 Adriano Comai 1998 Introduzione a UML diagramma transizioni di stato evento stato iniziale transizione di stato stato acquisizione libro( dati libro, autori, editore ) acquisito prestito( data ) restituzione( data restituzione ) in prestito scadenza termini cancellazione libro( ISDN ) stato finale restituzione( data restituzione ) sollecito in ritardo cancellazione libro( ISDN ) [email protected] Pag. 21 Introduzione a UML Adriano Comai 1998 diagramma transizioni di stato: a cosa serve • 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 (e non da altri) • come risultato di un evento l’oggetto può passare ad un nuovo stato (transizione) [email protected] Pag. 22 11 Adriano Comai 1998 Introduzione a UML Cliente richiedi servizio paga ricevi merce [email protected] Vendite Magazzino transizione di stato ricevi ordine spedisci merce stato di attività completa ordine barra di sincronizzazione diagramma di attività Pag. 23 Adriano Comai 1998 Introduzione a UML diagramma di attività: a cosa serve • a rappresentare sistemi di workflow, oppure la logica interna di un processo (di qualunque livello, dai business process ai processi di dettaglio) • permette di rappresentare processi paralleli e la loro sincronizzazione • è un caso particolare di diagrammi di stato, in cui ogni stato è uno stato di attività [email protected] Pag. 24 12 Adriano Comai 1998 Introduzione a UML Cliente Vendite richiedi servizio ordine [effettuato] diagramma di flusso oggetto - azione ricevi ordine paga ordine [completato] ricevi merce ordine [spedito] Magazzino ordine [inserito] completa ordine spedisci merce [email protected] Pag. 25 Introduzione a UML Adriano Comai 1998 diagramma di flusso azione oggetto: a cosa serve • a rappresentare le interazioni tra processi e oggetti • è un caso particolare di diagramma di attività • è un vero e proprio flow chart [email protected] Pag. 26 13 Adriano Comai 1998 Introduzione a UML diagramma dei componenti ordine database server cliente form inserimento ordine l'esistenza dell'ordine dipende da quella del cliente package dipendenza componente [email protected] Pag. 27 Introduzione a UML Adriano Comai 1998 diagramma dei componenti: a cosa serve • evidenzia l'organizzazione e le dipendenze esistenti tra componenti • i componenti sono moduli software eseguibili, dotati di identità e con un'interfaccia ben specificata • i componenti (come a livello logico le classi) possono essere raggruppati in package [email protected] Pag. 28 14 Adriano Comai 1998 Introduzione a UML diagramma di distribuzione client server locale tcp / ip interfaccia utente connessione tra nodi application server tcp / ip server remoto nodo [email protected] Introduzione a UML data server Pag. 29 Adriano Comai 1998 diagramma di distribuzione: a cosa serve • evidenzia la configurazione dei nodi elaborativi in ambiente di esecuzione (run-time), e dei componenti, processi ed oggetti ubicati in questi nodi • permette di rappresentare, a diversi livelli di dettaglio, l’architettura fisica del sistema [email protected] Pag. 30 15 Adriano Comai 1998 Introduzione a UML benefici portati da UML • superamento della "guerra dei metodi" – decine (o centinaia?) di metodi di analisi e disegno proposti e praticati – difficoltà per chi vuole passare all’approccio object oriented: qual è il metodo migliore? – quale strumento scegliere, se non c’è chiarezza nel campo dei metodi? • risposta ai problemi legati allo sviluppo di sistemi complessi con ambienti visuali – ritorno di attenzione sul processo di lavoro e sugli approcci utilizzati, non solo sulle tecnologie – il metamodello comune favorisce le possibilità di comunicazione tra strumenti di supporto alla progettazione, e più in generale tra i diversi ambienti utilizzabili dai progettisti nello sviluppo [email protected] Pag. 31 Introduzione a UML Adriano Comai 1998 UML è troppo complesso? • il metamodello di UML è veramente complesso, perché ha l'ambizione di poter rappresentare qualunque tipo di sistema software, a livelli di astrazione differenziati • il numero dei diagrammi è elevato, e per molti diagrammi è possibile scegliere tra forme di rappresentazione leggermente diverse tra loro • UML non suggerisce, né tantomeno prescrive una sequenza di utilizzo dei diversi diagrammi, lascia anzi molte strade aperte, tra le quali i progettisti sono liberi di scegliere [email protected] Pag. 32 16 Introduzione a UML Adriano Comai 1998 UML va adattato alle proprie esigenze • le realtà che sviluppano software sono molto eterogenee: chi sviluppa da solo, per conto proprio, non ha le stesse esigenze di documentazione e comunicazione di chi opera in un gruppo di lavoro all'interno di un'azienda • tra aziende diverse possono esserci differenze anche notevoli nel livello di formalizzazione richiesto ai progettisti, nelle tecniche da adottare, negli approcci da seguire, nel tipo di documentazione da produrre [email protected] Pag. 33 Introduzione a UML Adriano Comai 1998 UML va adattato alle proprie esigenze (segue) • i progetti non sono tutti uguali: variano per dimensioni, per tipologia, per criticità, e per molti altri fattori • UML può essere utilizzato da tutti, perché è sufficientemente complesso per potersi adattare a tutte le esigenze • ma non ha senso che tutti utilizzino UML esattamente nello stesso modo: per scegliere il percorso "ottimale", e quali diagrammi utilizzare davvero tra tutti quelli che UML mette a disposizione, è necessario verificare quali siano le esigenze che dobbiamo concretamente soddisfare [email protected] Pag. 34 17 Adriano Comai 1998 Introduzione a UML conclusioni • UML è uno standard, e questo è un bene (uniformità nei concetti e nelle notazioni utilizzate, interoperabilità tra strumenti di sviluppo, indipendenza dai produttori, dalle tecnologie, dai metodi) • UML è articolato: può rappresentare qualunque sistema software, a diversi livelli di astrazione • UML è complesso: va adattato ("ritagliato") in base alle specifiche esigenze dei progettisti e dei progetti, utilizzando solo ciò che serve nello specifico contesto [email protected] Pag. 35 18