Introduzione a UML Linguaggio di Modellazione Unificato
Transcript
Introduzione a UML Linguaggio di Modellazione Unificato
Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2006/2007 1 Che cos’è UML? ● ● ● ● UML (Unified Modeling Language) è un linguaggio grafico per: – specificare – visualizzare – realizzare – documentare i manufatti di un sistema software. Adottato come standard da OMG (Object Management Group) dal 1997 (UML 1.1) La versione attuale è UML 2.0 (2004) Creatori: Grady Booch, Ivar Jacobson, Jim Rumbaugh 2 OMG ● ● Object Management Group (OMG). OMG è un'organizzazione no-profit con 700 membri che definisce gli standard per supportare l'interoperabilità tra sistemi orientati agli oggetti. 3 Storia di UML 4 Hanno contribuito a UML ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Aonix Colorado State University Computer Associates Concept Five Data Access EDS Enea Data Hewlett-Packard IBM I-Logix InLine Software Intellicorp Kabira Technologies Klasse Objecten Lockheed Martin ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Microsoft ObjecTime Oracle Ptech OAO Technology Solutions Rational Software Reich SAP Softeam Sterling Software Sun Taskon Telelogic Unisys ... 5 Obiettivi UML ● ● ● ● Definire un linguaggio di modellazione semplice ma ricco di concetti Unificare i linguaggi di modellazione OO: Booch, OMT, Objectory e gli altri presenti sul mercato Adottare le “best practices” dell’industria Considerare le tematiche attuali dello sviluppo del software: – ● Scalabilità, distribuzione, concorrenza, ecc. Abilitare l’interscambio dei modelli OO e aiutare la definizione di repository per i modelli 6 UML: Modeling Language (1/3) ● ● Un linguaggio fornisce un vocabolario e le regole per combinare le parole del vocabolario. Linguaggio: – Sintassi: regole con cui gli elementi del linguaggio (ad es. le parole) sono raggruppati in espressioni (ad es. le frasi). – Semantica: regole con cui viene assegnato un significato alle espressioni sintattiche. 7 UML: Modeling Language (2/3) ● ● Un modeling language è un linguaggio in cui il vocabolario e le regole si focalizzano sulla rappresentazione concettuale e fisica del sistema UML – Sintassi: simboli usati nel modello – Semantica: set di regole che definiscono come usare la notazione 8 UML: Modeling Language (3/3) ● ● ● Un modeling language come UML definisce come creare e leggere modelli ben formati ma non quali modelli creare. Modello ben formato: modello (o parte di un modello) che rispetta tutte le regole semantiche e sintattiche che gli si applicano. Tutti gli elementi e i diagrammi UML sono basati sul paradigma object-oriented 9 Modelli ben formati ● ● UML permette di specificare regole (tra l'altro) per: – Dare i nomi – Visibilità dei nomi – Esecuzione (in modo limitato) Durante lo sviluppo iterativo e incrementale, è possibile che i modelli siano incompleti e inconsistenti 10 Regole comuni a tutti i diagrammi ● ● ● I diagrammi UML sono grafi contenenti nodi e connessioni Vi sono tre relazioni topologiche importanti: – la connessione (forme bidimensionali collegate con linee) – il contenimento – la prossimità (di due simboli) Di solito, le dimensioni non hanno importanza. 11 Esempi di Regole ● ● Regole sintattiche: Classe – Notazione base: una classe si disegna come un rettangolo delimitato da riga continua, avente tre compartimenti separati da righe orizzontali – Opzioni di presentazione: i compartimenti con gli attributi e/o con le operazioni possono essere non visibili Linee guida sintattiche: Classe – I nomi delle classi dovrebbero iniziare con lettera maiuscola – I nomi degli attributi dovrebbero iniziare con la lettera minuscola 12 I quattro costrutti grafici di UML ● ● Icone: Simboli bidimensionali: ● Collegamenti: ● Stringhe: integrate (f: Function, from: Real, to: Real) 13 Costrutti grafici di UML ● ● ● ● Le icone hanno dimensioni e forma fisse, e non contengono nulla I simboli bidimensionali: – hanno dimensioni variabili – possono essere espansi e contenere altre entità – possono essere suddivisi in compartimenti I collegamenti sono linee curve o spezzate che terminano con connessioni a due simboli Le stringhe hanno molti usi e possono apparire entro liste 14 Blocchi base di UML ● Elementi: astrazioni che rappresentano concetti di prima classe del modello. – ● Relazioni : relazioni tra le cose. – ● Classi, interfacce, componenti, casi d’uso, ecc. Associazioni, generalizzazioni, dipendenze, ecc. Diagrammi : raggruppano collezioni interessanti di elementi. – Diagrammi delle classi, dei casi d’uso, d’interazione, ecc. 15 Modelli UML ● Modello statico: – ● Rappresenta gli elementi strutturali di un sistema software (la struttura dati e l’architettura) e le loro relazioni statiche (cioè invarianti al trascorrere del tempo). Modello dinamico: – Rappresenta il comportamento di un sistema software al trascorrere del tempo. 16 Modellazione strutturale ● ● ● Rappresenta una vista di un sistema software basata sulla struttura degli oggetti (classi di appartenenza, relazioni, attributi, operazioni) E’ rappresentata dal modello statico Il diagramma delle classi è il principale diagramma UML per rappresentare un modello statico 17 Modellazione Strutturale Entità Fondamentali 18 Modellazione Strutturale Relazioni Fondamentali Costrutto Descrizione Associazione Una relazione tra due o più tipi che comporta un collegamento tra le loro istanze Aggregazione Una forma di aggregazione che specifica una relazione tutto-parti tra le istanze Generalizzazione Una relazione di classificazione tra un tipo più specifico ed uno più generale Dipendenza Una relazione tra due elementi, per cui un cambiamento dell’elemento indipendente influenza l’elemento dipendente Sintassi 19 Modellazione Strutturale Relazioni Fondamentali Costrutto Descrizione Realizzazione Una relazione tra una specifica e la sua implementazione Sintassi Annidamento 20 I diagrammi di modellazione strutturale ● Mostrano la struttura statica del modello OO: – ● le entità presenti nel modello (classi, interfacce, componenti, nodi, ecc.), la struttura interna e le relazioni con altre entità Non mostrano informazione dipendente dal tempo 21 I diagrammi di modellazione strutturale ● Principali tipi di diagrammi: – Composite structure diagram – Diagrammi strutturali statici: ● ● – Diagrammi di classe Diagrammi degli oggetti Diagrammi d’implementazione: ● ● ● Diagrammi dei componenti Diagrammi di dispiegamento (deployment) Diagramma dei package 22 Diagrammi di struttura statica ● ● ● Mostrano le entità del sistema connesse secondo le relazioni statiche che le caratterizzano Diagrammi di classe: – Mostrano le classi e le loro relazioni – Sono a un livello di astrazione alto – Sono utilizzabili per generare il codice con le strutture dati e le dichiarazioni delle funzioni Diagrammi degli oggetti – Mostrano istanze delle classi durante uno scenario di funzionamento del sistema 23 Diagrammi comportamentali ● Rappresentano caratteristiche comportamentali di un sistema o di un processo di business. ● Mostrano informazione dipendente dal tempo ● Principali tipi di diagrammi: – Diagramma dei casi d'uso – Diagramma di attività – Diagramma delle macchine a stati – Diagrammi di interazione: enfatizzano le interazioni tra oggetti ● ● Diagramma di sequenza Diagramma di interazione 24 Diagrammi UML 2 ● ● ● Vedi diagramma “classificazione dei tipi di diagrammi in UML 2” Segue una breve sintesi dei diagrammi di UML 2.0, eccetto i diagrammi delle classi, degli oggetti e di stato Per ogni diagramma si elencano: – Le notazioni principali – Il significato di tali notazioni – L'importanza e l'uso del diagramma 25 I diagrammi dei pacchetti (package) ● ● ● Denotano graficamente che pacchetti (sottosistemi) che compongono il sistema, e quali sono le loro dipendenze Se si genera del codice, ogni pacchetto corrisponde tipicamente ad un “namespace” Un pacchetto può contenere altri pacchetti, e/o un diagramma delle classi. 26 I diagrammi dei pacchetti (package) 27 Relazioni tra pacchetti (1/2) 28 Relazioni tra pacchetti (2/2) ● ● ● ● dipendenza semplice: le classi di P4 utilizzano le classi di P3 (in modo generico) import:importazione pubblica. P3 incorpora il contenuto di P2, e lo può a sua volta esportare access: importazione privata. P3 incorpora il contenuto di P1, ma non lo esporta Un pacchetto può anche essere annidato entro un altro 29 Relazione merge tra pacchetti (1/2) 30 Relazione merge tra pacchetti (2/2) ● ● E’ una dipendenza complessa: un “merge” equivale a un “import”, con in più una relazione di generalizzazione tra le classi omonime di cliente e fornitore (Se ne sconsiglia l’uso!) 31 Composite structure diagram (1/2) ● ● Permette di rappresentare un intero sistema, dandone i componenti interni, le interfacce, le porte Utile anche per rappresentare sistemi Web 32 Composite structure diagram (2/2) 33 Diagrammi di implementazione ● Mostrano aspetti dell’implementazione di un modello: Struttura del codice sorgente – Struttura del sistema in esecuzione Due diagrammi: – ● – Diagramma dei componenti (component diagram) – Diagramma di dispiegamento (deployment diagram) 34 Diagramma dei componenti ● ● ● Un componente è una parte di un sistema sw, che contiene l' implementazione e che rispetta un insieme di interfacce e ne fornisce una realizzazione Mostra l’organizzazione delle componenti software e le interazioni tra di esse Non è particolarmente usato o significativo 35 Diagramma dei componenti 36 Diagramma dei componenti 37 Diagramma di dispiegamento (deployment) ● ● ● Mostra la configurazione di ogni elemento a run-time, oltre che delle componenti software, dei processi, e degli oggetti in esso presenti Può essere usato per mostrare il nodo in cui ogni componente entra in esecuzione Non è particolarmente usato o significativo 38 Diagramma di dispiegamento 39 Diagramma di dispiegamento (parti) 40 Diagramma di dispiegamento (parti) 41 Diagramma di attività ● Mostra il flusso di esecuzione di elaborazioni ● Equivale ai classici diagrammi di flusso ● Usa la notazione di Harel: 42 Un altro diagramma di attività 43 Diagramma di temporizzazione ● ● Mostra l’andamento temporale di uno stato e/o di un valore di oggetti del sistema Può anche mostrare le interazioni tra eventi temporali, ed i vincoli temporali che li governano 44 Diagramma di temporizzazione ● ● Andamento di uno stato Andamento di un valore 45 Un diagramma di temporizzazione completo ● ● Diagrammi di stato e valore si sovrappongono, con lo stesso asse dei tempi L’effetto di un evento (transizione o cambio di valore) su uno stato o su un valore si denota con una freccia 46 Diagramma complessivo di interazione (Interaction overview) ● ● ● ● E’ una forma di diagramma di attività, in cui i nodi sono diagrammi di interazione (sequenziali, di comunicazione, di temporizzazione, di attività, complessivi di interazione) esistenti nel modello o riportati direttamente Una “Interaction occurrence” è un riferimento ad un diagramma esistente, il cui nome è riportato al centro, e con un “ref” in alto a sinistra Un “Interaction element” mostra direttamente il diagramma riferito al suo interno. E’ un diagramma di altro livello, che mostra il funzionamento in risposta a richieste o interazioni esterne. 47 Diagramma complessivo di interazione (Interaction overview) 48 UML & ciclo di vita del SW (1/3) ● Analisi dei Requisiti – ● Casi d'uso: catturano i requisiti del cliente Analisi – Diagramma delle classi: definisce un vocabolario del dominio – Diagramma delle attività: chiarisce il funzionamento dei casi d'uso – Diagramma di stato: risulta utile se un'entità può assumere diversi stati 49 UML & ciclo di vita del SW (2/3) ● Progettazione: – I diagrammi della fase di analisi diventano più tecnici ● ● Diagramma delle classi Diagramma di stato – Diagramma di sequenza: descrive gli scenari dei casi d'uso – Diagramma dei package: mostra l'organizzazione del software su larga scala – Diagramma di deployment: visualizza la distribuzione fisica del sistema 50 UML & ciclo di vita del SW (3/3) ● Codifica: – ● I modelli definiti nella fase di design vengono convertiti in codice Testing: – Unit Test: si parte tipicamente dal diagramma delle classi – Integration Test: si parte dai diagramma dei componenti e dal diagramma di collaborazione – System Test: si parte dai casi d'uso 51