Corso UML

250
Definizione di UML

Transcript of Corso UML

Page 1: Corso UML

Definizione di UML

Page 2: Corso UML

Cos'è UML ?

UML ( Unified Modeling Language) è un linguaggio standard di modellazione per Specificare Visualizzare Costruire Documentare

domini applicativi eterogenei, adatto maggiormente a progettare sistemi object-oriented e sistemi component-based.

Page 3: Corso UML

UML è un linguaggio...

UML è un linguaggio pertanto costituito da sintassi e semantica sintassi: regole attraverso le quali gli elementi del

linguaggio (parole) sono assemblate in espressioni (frasi). semantica: regole attraverso le quali alle espressioni

sintattiche viene assegnato un significato.

Page 4: Corso UML

UML non è una metodologia!

La metodologia serve per specificare: quale linguaggio di modellazione utilizzare per

descrivere il lavoro progettuale quali sono i passi necessari per raggiungere la

“industrializzazione” nella produzione del software.

Page 5: Corso UML

UML non è un processo!

Il processo è un insieme di regole che definiscono come un progetto di sviluppo dovrebbe essere condotto. Include una descrizione e sequenzializzazione di attività,

documenti e modelli. Definisce i criteri per il monitoraggio delle attività e la

valutazione degli artefatti.

Page 6: Corso UML

…standard…

Per standard si intende: un paradigma codificato per la produzione di tecnologie fra

loro compatibili e interoperabili riferiti ad hardware, software o infrastrutture di rete.

Page 7: Corso UML

…di modellazione…

Modellare significa descrivere un sistema in termini di: entità coinvolte relazioni esistenti tra di loro

Esempio: Diagrammi di flusso UML Diagrammi Entita-Relazione

Page 8: Corso UML

La qualità di un modello

Accuratezza: deve descrivere il sistema correttamente, completamente e

senza ambiguità;

Consistenza: le diverse viste devono completarsi vicendevolmente per

formare un insieme coerente

Semplicità: deve poter essere compreso, senza troppi problemi, da

persone estranee al processo di modellazione;

Manutenibilità: la variazione dello stesso deve essere la più semplice

possibile.

Page 9: Corso UML

… per specificare, visualizzare, costruire e documentare ...

Specificare Dettagli di implementazione

Visualizzare Un immagine è meglio di 100 parole

Costruire Idee, pensieri

Documentare Interazione con gruppi esterni

Page 10: Corso UML

...domini applicativi eterogenei...

Dominio eterogenei sanità, finanza, TLC, aerospazio indipendentemente dalla piattaforma

Sistema: una singola organizzazione vista nella sua globalità (es.

azienda) una parte di un’organizzazione (es. divisione, oppure

processo) un insieme di organizzazioni, o di parti di organizzazioni, in

relazione tra loro (es. processi di interazione Business-to-Business)

Page 11: Corso UML

...e sistemi component-based.

I quattro “dogmi” della modularizzazione sono: Alta coesione (omogeneità interna) Information hiding (poco rumore nella comunicazione) Basso accoppiamento (indipendenza da altri moduli) Interfacciamento esplicito (chiare modalità d’uso)

Page 12: Corso UML

...e sistemi component-based…

Il PC che stiamo utilizzando ne è un esempio... Componenti riutilizzabili Dividere la logica dall'interfaccia Utilizzare uno standard di comunicazione

Page 13: Corso UML

...adatto maggiormente a progettare sistemi object-oriented.

I concetti OO si sono sviluppati dal 1970 attraverso diversi linguaggi di programmazione c++, smalltalk, java, eiffel.

Vediamo meglio cosa si intende per Object Oriented …

Page 14: Corso UML

Come usare UML

Page 15: Corso UML

Approccio ad UML

Steve Mellon e Martin Flower prevedono tre modi diversi di utilizzo: Abbozzo (sketch) Progetto (blueprint) Linguaggio di programmazione

Page 16: Corso UML

Approccio ad UML

UML come abbozzo (sketch) Documentazione, discussione e condivisione delle idee Basso rigore formale Selettività: focalizzazione solo su alcuni aspetti dell’applicazione Bassa, se non nulla dipendenza dal tool di modellazione

Page 17: Corso UML

Approccio ad UML

UML come progetto (blueprint) Alto rigore formale Completezza Forward e reverse engineering Forte dipendenza dal tool di modellazione

Page 18: Corso UML

Approccio ad UML

UML come linguaggio di programmazione Utilizzare diagrammi per generare codice Fortissima dipendenza dal tool di modellazione

Page 19: Corso UML

Storia di UML

Page 20: Corso UML

Come si arriva allo standard ?

UML è definito: sotto l'egida dell'OMG (Object Management Group) a partire dal contributo dei “Tre Amigos” (Grady Booch, Jim

Rumbaugh e Ivar Jacobson) ed il supporto delle più importanti società di software

mondiali

Page 21: Corso UML

Cos'è OMG ?

OMG (Object Management Group) è un consorzio creato nel 1989 partecipano: 440 aziende (Microsoft, Digital, HP, NCR, SUN, OSF)

Obiettivo: creare un sistema di gestione di un'architettura distribuita basati sul paradigma ad oggetti.

Standard più importanti proposti: architettura CORBA linguaggio di modellazione UML standard XMI

Page 22: Corso UML

“Method wars”

Negli anni ’80 si alternano vari linguaggi grafici di modellazione: SADT (Structured Analysis and Development Technique) DFD (Data Flow Diagram) IDEF0 (Integration Definition for Function Modeling)

Page 23: Corso UML

“Tre Amigos”

Grady Booch: Object Oriented Design – OOD Jim Rumbaugh: Object Modeling Technique - OMT Ivar Jacobson: Object-Oriented Software

Engineering - OOSE

Page 24: Corso UML

La guerra è finita

Booch e Rumbaugh lavoravano alla Rational e nel 1994 Unified Object Notation v0.8

Jacobson capo di Objectory che nel 1995 fu acquistata dalla Rational e nel 1995 Unified Modeling Language v0.9

Booch e Rumbaugh e Jacobson crearono consorzio “UML Partners” e redassero UML v1.0

Microsoft, HP, Oracle, Rational ed altri crearono consorzio “OMG”

Page 25: Corso UML

Le versioni di UML

novembre 1997 versione v1.1 dicembre 1998: versione 1.2 Marzo 2000: versione 1.3 settembre 2001: versione 1.4 marzo 2003: versione 1.5 luglio 2005 : versione 2.0 agosto 2006: versione 2.1 settembre 2008: versione 2.2 Beta

Page 26: Corso UML

Le versioni di UML

Page 27: Corso UML

Diagrammi UML

Page 28: Corso UML

Diagrammi UML

Classica suddivisione dei diagrammi UML Strutturali: come è composto il sistema Comportamentali: come interagisce sistema▪ Interattivi: che tipo di messaggi si scambia il sistema

Page 29: Corso UML

Diagrammi UML

UML 1.x Class diagram Object diagram Deployment diagram Component diagram Package diagram Activity diagram Use case diagram Sequence diagram

Communication diagram State Chart diagram

UML 2.xn Class diagramn Object diagramn Deployment diagramn Component diagramn Package diagramn Activity diagramn Use case diagramn Sequence diagram

n Collaboration diagramn State Machine diagram

n Interaction Overview diagram

n Composite Structuren Timing diagram

Page 30: Corso UML

Class Diagram

Consentono di descrivere tipi di entità, con le loro caratteristiche e le eventuali relazioni fra questi tipi.

Concetti di: classe, associazione, dipendenze, generalizzazione.

Page 31: Corso UML

Object Diagram

Consentono di descrivere un sistema in termini di oggetti e relative relazioni.

Concetti di: oggetto, relazione.

Page 32: Corso UML

Deployment Diagram

Consentono di descrivere un sistema in termini di risorse hardware detti nodi, e di relazioni fra di esse.

Spesso si combina con le componenti software per mostrare dove sono distribuite (Component Diagram).

Concetti di: nodo, connessione.

Page 33: Corso UML

Component Diagram

Consentono di descrivere l'organizzazione e le dipendenze tra componenti software.

Concetti di: componente, interfaccia.

Page 34: Corso UML

Package Diagram

Consentono di mostrare l'organizzazione dei packages e dei loro elementi.

Concetti di: package, merge, import, nested.

Page 35: Corso UML

Sequence Diagram

Consentono di mostrare il comportamento dinamico di un gruppo di oggetti che interagiscono.

Concetti di: oggetti, messaggi, lifetime, attivazione

Page 36: Corso UML

Activity Diagram

Consentono di rappresentare la logica interna di un processo.

Concetti di: attività, flusso, responsabilità.

Page 37: Corso UML

Use Case Diagram

Consentono la descrizione delle funzioni o servizi offerti da un sistema, così come sono percepiti e utilizzati dagli attori che interagiscono col sistema stesso.

Concetti di: sistema, attore, caso, associazioni.

Page 38: Corso UML

Communication Diagram

Consentono la descrizione dell'interazione fra più oggetti ed i messaggi scambiati, focalizzandosi sugli oggetti e non sul tempo.

Concetti di: oggetti, messaggi.

Page 39: Corso UML

State Machine Diagram

Consentono la descrizione del comportamento di entità o di classi in termini di stato.

Concetti di: stato, transizione.

Page 40: Corso UML

Interaction Overview Diagram

Fornisce una visione complessiva delle interazioni che cooperano in un flusso molto simile a quella di un diagramma di attività

Concetti di: oggetto, relazione.

Page 41: Corso UML

Timing Diagram

Mostra le interazione tra gli oggetti ed il loro cambiamento di stato in un dato periodo di tempo.

Concetti di: oggetto, relazione, tempo.

Page 42: Corso UML

Composite-structure Diagram

Mostra i sottosistemi che compongono il sistema Concetti di: parte, connettore, porte.

Page 43: Corso UML

UML 2.0

UML 2 è distribuito dall' OMG in 4 specifiche:Diagram Interchange Specification▪ layout dello schema con strumenti diversi (xmi)

UML Infrastructure▪ definisce il core dell'uml, cioè il meta modello utilizzato

UML Superstructure▪ definizione formale degli elementi uml, utilizzata dai tool

dei vendor e definisce in dettaglio i diagrammi utilizzati

Object Constraint Language (OCL)▪ definisce le regole e le logiche da utilizzare. Ha una

sintassi e delle parole chiavi.

Page 44: Corso UML

UML 2.0

Si basa su una struttura composta da 4 livelli di meta modelli:

Meta-Metamodel E’ il padre di tutti gli elementi Viene usato per formalizzare la notazione e

definire le specifiche di linguaggio per il metamodel

Metamodel Ogni oggetto del metamodel è una istanza dei

concetti del meta-metamodel Qui si descrivono astrazioni di modelli object-

oriented e component-oriented Si definiscono linguaggi per definire domini e

modelli

Page 45: Corso UML

UML 2.0

Si basa su una struttura composta da 4 livelli di meta modelli:

Model Qui si definiscono i domini, i problemi e le

soluzioni di sistemi User object E’ composto da elementi che semplificano i

modelli UML Qui si descrivono le specifiche informazioni del

dominio

Page 46: Corso UML

Model Driven Engenering a 4 livelli

Page 47: Corso UML

Computer Aided Software Engineering ( CASE )

Tool di modellazione Supporto alla creazione dei diagrammi e validazione Ricerca tra i mille modelli creati

Generazione del codice Supporto a diversi linguaggi di programmazione, DDL, DML

Reverse engineering Supporto all'analisi partendo dal codice

UML 1.x – 2.x Supporto alle versioni

Page 48: Corso UML

UML CASE Tools

Rose; Rational Modeller ed Architect (IBM - Rational)

Together (Borland) Visio (Microsoft) TAU (Telelogic) Objecteering (Softeam) Poseidon (Gentleware) Enterprise Architect (Sparx

Systems) Magic Draw (No Magic) ArgoUML (open source) StarUML (open source) UModel 2005 (Altova) TAU Developer and TAU Architect

(Telelogic)§ Jude (open-source)§ InnovatorAOX 2006 Object

eXcellence (MID)

§ Real-time Studio(ARTiSAN)§ OMONDO EclipseUML Studio

(open source)§ PathMATE (Pathfinder Solutions)§ Metis with UML 2.0 Template

(Computas)§ Describe (Embarcadero)§ I-Logix Rhapsody§ MetaMatrix MetaBase Modeller

(Tibco)§ Java Studio Enterprise (Sun

Microsystems)§ Model-in-Action (Mia Software)§ Pattern Weaver Ver. 2.0§ EDGE UML Suite (Mentor

Graphics)

Page 49: Corso UML

Use Case

Page 50: Corso UML

Dove si colloca

Page 51: Corso UML

Cosa sono

Esistono diversi modi di “guardare” un sistema Interno▪ Punto di vista del progettista, interessato agli aspetti

architetturali Esterno▪ Visto come una “black box”, di cui si può osservare solo il

comportamento dall’esterno Il punto di vista esterno è il punto di vista dell’utilizzatore e di

tutto ciò che interagisce con il sistema per assicurarne il corretto funzionamento.

Page 52: Corso UML

Esempio

Un videoregistratore Vista del progettista (interno)▪ All’interno vi sono dei componenti▪ Ogni componente svolge funzioni particolari▪ Ogni componente deve essere utilizzato correttamente e

rispettare dei requisiti Vista dell’utente (esterno)▪ Nel manuale c’è la descrizione di come può essere utilizzato▪ Come si inserisce una cassetta▪ Come si effettua il fermo immagine▪ Ecc...ecc..

Page 53: Corso UML

Use Case Diagram: cosa sono?

Rappresentano le modalità di utilizzo del sistema da parte di uno o più utilizzatori (attori)

Descrivono l’interazione tra attori e sistema, senza rivelare l’organizzazione interna del sistema

Sono espressi anche in forma testuale, comprensibile anche per i non “addetti ai lavori”

Possono essere definiti a livelli diversi (sistema o parti del sistema)

Page 54: Corso UML

A cosa servono?

Svolgono un duplice ruolo nello sviluppo del sistema Nelle fasi iniziali della progettazione Chiariscono cosa dovrà fare il sistema Stabiliscono una base comune per la discussione con il committente Fine - individuare ed analizzare i requisisti del sistema

A regime Guidano l’intero processo di sviluppo Rappresentano il punto di partenza per la progettazione del sistema

▪ Definizione dell’architettura▪ Creazione dei modelli di analisi e disegno▪ Realizzazione del codice applicativo

Costituiscono il riferimento primario per dei test per la verifica di quanto prodotto▪ la definizione▪ la progettazione▪ l’esecuzione

Page 55: Corso UML

Da cosa sono composti?

Il Modello dei Casi d’Uso rappresenta le funzionalità che il sistema offre ai suoi utilizzatori

E’ costituito dalla documentazione e dai diagrammi La Documentazione▪ Descrive, in modo testuale, il Caso d’Uso▪ Costituisce l’elemento centrale di comunicazione tra tutte le

parti in causa▪ Committente, Management, Gruppo di progetto

▪ Guida la progettazione e la definizione dei Casi di Test I Diagrammi▪ Ruolo complementare ma secondario▪ Forniscono una “mappa visuale” estremamente sintetica,

delle modalità di uso del sistema

Page 56: Corso UML

Casi d’uso

Casi d’uso Sono le funzionalità che il sistema mette a disposizione dei suoi

utilizzatori Descrivono il sistema da un punto di vista esterno (black box) Sono rappresentati con un’icona a forma di ellisse

Page 57: Corso UML

Attori

Attori Sono i soggetti (esterni) che interagiscono con il sistema tramite

messaggi Ogni attore corrisponde ad un insieme coerente di ruoli che i soggetti

possono assumere interagendo con il sistema Possono rappresentare

▪ Esseri umani▪ Sistemi hardware o software▪ Organizzazioni

Page 58: Corso UML

Sistema

Sistema Contiene un insieme di casi d’uso riguardanti un particolare sistema Descrive in modo completo gli utilizzi del sistema dall’esterno Non rileva la struttura interna del sistema Gli attori sono esterni al sistema

Page 59: Corso UML

Associazione

Attori e casi d’uso Ha il significato di comunicazione Ogni caso d’uso è collegato agli attori (uno o più) Per evidenziare la direzione della comunicazione l’associazione

può essere orientata

Page 60: Corso UML

Associazione

Attore primario È quello per il quale è stato pensato il caso d’uso Ha un interesse primario per la funzionalità che quel caso d’uso

esprime Attore secondario E’ un sistema esterno che interagisce con il sistema di

riferimento nell’ambito del caso d’uso Ogni caso d’uso ha per definizione almeno un attore primario Il ruolo “primario” o “secondario” non è assoluto Un attore primario per un caso d’uso può essere secondario in

un altro E viceversa

Page 61: Corso UML

Associazione

Associazioni tra Attori L’unica associazione ammessa tra attori è la specializzazione L’attore specializzato eredita la partecipazione a tutti i casi d’uso con i

quali comunica l’attore generico L’attore specializzato può partecipare ad ulteriori casi d’uso ai quali

l’attore generico non è collegato

Page 62: Corso UML

Associazione

Tra Casi d’Uso Non è ammessa in UML una associazione di comunicazione tra i

casi d’uso (un caso d’uso descrive un utilizzo completo del sistema)

Non è ammessa la suddivisione di una funzionalità completa in casi d’uso distinti

Page 63: Corso UML

Associazione

L’UML ammette, tra casi d’uso, tre tipi di relazioneSpecializzazioneEstensioneInclusione

Page 64: Corso UML

Specializzazione

Ogni caso d’uso specializzato eredita le caratteristiche del padre Il caso d’uso specializzato può aggiungere nuovi passi o ridefinire

i passi ereditati da quello generale Ogni caso d’uso generale può avere più figli Ogni caso d’uso specializzato può avere più padri

Page 65: Corso UML

Inclusione

Casi d’uso diversi possono avere in comune una sequenza di passi da svolgere

La sequenza comune può essere esportata e definita come un caso d’uso a se stante

Il caso d’uso che si ripete verrà poi incluso in altri casi d’uso In questo modo si evidenziano le parti in comune L’inclusione viene utilizzata tramite la parola chiave

<<include>>

Page 66: Corso UML

Estensione

Permette di definire che un caso d’uso “base” può venire “esteso” con il comportamento definito da un altro caso d’uso

L’estensione riguarda un comportamento opzionale del caso d’uso base (l’estensione è soggetta ad una condizione di attivazione)

La direzione dell’associazione di estensione va dal caso d’uso “di estensione” al caso d’uso “base”

L’estensione viene utilizzata tramite la parola chiave <<extend>>

Pertanto La relazione“extend” tra un Use Case A ed un Use Case B indica che ogni istanza di un Use Case B, in condizioni particolari, viene estesa con le funzionalità di una istanza di Use Case A.

Page 67: Corso UML

Sommario

Page 68: Corso UML

Esempio

Page 69: Corso UML

Esempio

Page 70: Corso UML

Scenari

In UML, ogni specifica esecuzione (istanza) di un caso d’uso è detta scenario Esempio – in un caso d’uso “Acquistare un prodotto”, ogni

acquisto effettuato da uno specifico cliente in uno specifico momento costituisce uno scenario particolare

Ci sono due diverse tipologie di scenario Scenari di successo (nell’esempio – l’acquisto va a buon fine) Scenari di fallimento (nell’esempio – l’acquisto non va a buon

fine)

Page 71: Corso UML

Scenari

Ogni scenario può essere descritto da una sequenza di passi che specificano l’interazione tra il sistema gli attori coinvolti nello scenario

La prassi più diffusa per la specifica degli scenari consiste in: definire uno scenario base, cioè lo scenario che porta al

successo dei casi d’uso definire gli scenari alternativi, cioè gli scenari che possono

verificarsi per effetto delle varianti che possono condurre ad un nuovo scenario

Ciascuno scenario costituisce una diramazione che può portare al successo o al fallimento del caso d’uso

Page 72: Corso UML

Identificare i casi d'uso

L’identificazione dei casi d’uso può avvenire Per un sistema già esistente dallo studio del manuale d’utente se disponibile da suo utilizzo tramite una serie di interviste agli utilizzatori

Per un sistema nuovo o per un sistema in evoluzione dai requisiti già rilevati dal committente dai documenti iniziali disponili per il progetto

Page 73: Corso UML

Identificare i casi d'uso

Identificare tutte le tipologie di utilizzatori del sistema in termini di individui od atri sistemi.

Per ogni attore primario, rilevare in quale modo può/deve utilizzare il sistema, partendo dagli obiettivi che deve raggiungere. Ad ogni modalità di utilizzo corrisponde, almeno inizialmente, un caso

d’uso Per ogni caso d’uso, descrivere lo scenario base

▪ la sequenza di passi più semplice possibile che conduce al successo del caso d’uso

▪ le risposte attese dal sistema le principali varianti a tale scenario

▪ Così facendo, possono emergere necessità di interazione del sistema con altri soggetti (individui o sistemi) che verranno rappresentati come attori secondari

Page 74: Corso UML

Realizzare i casi d'uso

La realizzazione di un caso d’uso è influenzata da due fattori la tipologia del sistema di cui descrivere l’utilizzo l’approccio utilizzato per la progettazione

Se il sistema cui ci si riferisce è un sistema software, la realizzazione dei casi d’uso dipende dall’approccio utilizzato per la progettazione Object-oriented - La realizzazione comporta

▪ l’individuazione: delle classi che vi parteciperanno, delle rispettive responsabilità

▪ nonché la definizione delle modalità di interazione tra gli oggetti delle classi coinvolte

Strutturato-funzionale - Si devono definire▪ le procedure e le transazioni coinvolte▪ la struttura gerarchica dei moduli software

La realizzazione dei casi d’uso rientra tra le attività delle fasi di analisi e design

Page 75: Corso UML

Realizzare i casi d'uso

In UML la realizzazione dei casi d’uso può essere espressa mediante una “collaborazione”

La collaborazione è costituita da una serie di oggetti che interagiscono tra di loro cioè effettuano delle azioni e si scambiano messaggi per richiedere servizi corrispondenti alle rispettive responsabilità

La collaborazione che realizza uno scenario può essere descritta A livello statico, mediante un diagramma delle classi che

evidenzi le classi o gli oggetti coinvolti nella collaborazione e le rispettive associazioni e legami

A livello dinamico, mediante uno dei diagrammi d’interazione (es. diagramma di sequenza) che evidenzi i messaggi che gli oggetti si scambiano nell’ambito della collaborazione

Page 76: Corso UML

Class e Object Diagram

Page 77: Corso UML

Dove si colloca

Page 78: Corso UML

Class Diagram

E’ il modello più importante in UML perché definisce gli elementi base del sistema

Rappresenta il sistema attraverso una visione statica

Rappresenta le classi che compongono il sistema ed i relativi attributi e comportamenti

Specifica, mediante le associazioni, i vincoli che legano tra loro le classi

Page 79: Corso UML

Classi

La classe modella un insieme di oggetti omogenei (le istanze della classe) ai quali sono associate proprietà statiche e dinamiche

Ogni classe è descritta da: Nome della classe (l’identificatore) Attributi (lo stato) Operazioni (il comportamento)

Page 80: Corso UML

Oggetti

Gli attributi di una classe determinano gli attributi delle sue istanze (oggetti)

Regole importanti Se una classe C ha un attributo A di tipo T, ogni oggetto

che è istanza di C ha l’attributo A, con un valore associato di tipo T

Un oggetto X non può avere un valore per un attributo che non è definito nella classe di cui X è istanza

Page 81: Corso UML

Rapporto Classi – Oggetti

La relazione tra un oggetto, che è istanza di una classe C, e la classe C si rappresenta mediante un arco Instance-of

L’arco in realtà non è strettamente necessario, poiché la classe, di cui l’oggetto è istanza, è già indicata nell’oggetto.

Page 82: Corso UML

Importanza dell'identificativo

Due oggetti con identificativi distinti sono comunque distinti, anche se hanno i valori di tutti gli attributi uguali

Due oggetti diversi devono avere identificativi diversi, anche se possono avere gli stessi valori per tutti gli attributi

Page 83: Corso UML

Attributi di Classe

Un attributo modella una proprietà della classe valida per tutte le istanze

Formalmente, un attributo A della classe C può considerarsi una funzione che associa un valore di tipo T ad ogni oggetto che è istanza della classe C

Page 84: Corso UML

Attributi di Oggetto

Un oggetto in UML modella un elemento del dominio di analisi che ha vita propria è identificato univocamente mediante l’identificativo di oggetto è istanza di una classe (la classe più specifica)

DivComm è l'identificativo dell'oggetto Libro è la classe di cui l'oggetto è istanza Notare la sottolineatura

Page 85: Corso UML

Operazione di Classe

In realtà, le classi (e quindi le loro istanze) sono caratterizzate anche da proprietà dinamiche, che in UML si chiamano operazioni. Un’operazione associata ad una classe C indica che sugli oggetti della classe C si può eseguire una computazione (detta anche metodo ), per calcolare una proprietà, per effettuare cambiamenti di stato

In una classe, un’operazione sidefinisce specificando iparametri e il tipodel risultato (se c’è).

Page 86: Corso UML

Operazione di Classe

In una classe, un’operazione si definisce specificando i parametri e il tipo del risultato (se c’è).

Non è necessario che un’operazione restituisca un valore o un oggetto. Un’operazione può anche effettuare solamente azioni senza calcolare un risultato.

Page 87: Corso UML

Classe - Visibilità

Ogni attributo e metodo può avere varie caratteristiche (+) Pubblico: visibile da tutte le classi (#) Protetto: visibile dalle classi dello stesso package o dalle

sottoclassi (~) Package: visibile solo dalle classi dello stesso package (-) Privato: visibile da nessuno

Page 88: Corso UML

Classe Astratta

E’ una classe che non ha una concreta implementazione ma ha solo la dichiarazione delle operazioni

Non può essere istanziata, ma può avere costruttori. Può contenere sia dei metodi astratti (statici e di

istanza) sia dei metodi concreti Se un metodo è definito astratto, anche la classe deve

essere astratta, Se nessun metodo è astratto la classe può comunque

essere astratta.

Page 89: Corso UML

Classe Astratta

Il nome della classe astratta è in corsivo E’ possibile inserire il costruttore (non astratto) I metodi statici sono sottolineati Il metodi astratti sono in corsivo E’ possibile indicare metodi “concreti”

Page 90: Corso UML

Classe Astratta

Le classi astratte consentono di usare il meccanismo di "fattorizzazione" delle informazioni comuni, anche quando la superclasse risultante non sarebbe "ben definita".

Facciamo un esempio: Supponiamo di avere le classi “Sfera” e “Cubo” in cui

troviamo delle ridondanze di dati, quindi possiamo definire una classe “Solido” che fattorizzi le informazioni comuni.

Ma purtroppo non c'è un modo per calcolare la superficie di un solido generico!

Come possiamo implementarlo? Definire “volume()” come metodo astratto, avente solo

l'intestazione ma non l'implementazione, di conseguenza “Solido” è una classe astratta.

Page 91: Corso UML

Classe Astratta

public class Sfera { double raggio; double pesoSpecifico; public Sfera(double raggio, double ps) { this.raggio = raggio; pesoSpecifico = ps; } public double volume() { return 4/3 * Math.PI * Math.pow(raggio,3); } public double peso() { return pesoSpecifico * volume(); }}

public class Cubo { double lato; double pesoSpecifico; public Cubo(double lato, double ps) { this.lato = lato; pesoSpecifico = ps; } public double volume() { return Math.pow(lato,3); } public double peso() { return pesoSpecifico * volume(); }}

Page 92: Corso UML

Classe Astratta

Page 93: Corso UML

Classe Astratta

public class Sfera { double raggio; public Sfera(double raggio, double ps) { this.raggio = raggio; pesoSpecifico = ps; } public double volume() { return 4/3 * Math.PI * Math.pow(raggio,3); }}public class Cubo { double lato; public Cubo(double lato, double ps) { this.lato = lato; pesoSpecifico = ps; } public double volume() { return Math.pow(lato,3); }}public abstract class Solido { double pesoSpecifico; public abstract double volume(); // metodo astratto public double peso (){ return volume() * pesoSpecifico; }}

Page 94: Corso UML

Classe Astratta

Page 95: Corso UML

Classe Astratta

Cosa succede invece in questo caso?

abstract class ClassAbstract { public ClassAbstract(){ System.out.println("ClassAbstract"); };}class Classe extends ClassAbstract { public Classe(){ System.out.println("Classe"); };}

class MiaAvvio { public static void main(String[] args) {

ClassAbstract ca = new Classe(); }}

Page 96: Corso UML

Classe Astratta

Ed in questo caso?

abstract class ClassAbstract {public void metodo(){

System.out.println("metodo ClassAbstract "); };}class Classe extends ClassAbstract {

public void metodo(){System.out.println("metodo Classe");

};}

class MiaAvvio { public static void main(String[] args) {

ClassAbstract ca = new Classe();ca.metodo();

}}

Page 97: Corso UML

Classe Astratta

Ed in questo caso?

abstract class ClassAbstract {public void metodo(){

System.out.println("metodo ClassAbstract "); };}class Classe extends ClassAbstract {

public void metodo(){super.metodo();System.out.println("metodo Classe");

};}

class MiaAvvio { public static void main(String[] args) {

ClassAbstract ca = new Classe();ca.metodo();

}}

Page 98: Corso UML

Classe Astratta

Ed in questo caso?

abstract class ClassAbstract {public abstract void metodo()

}class Classe extends ClassAbstract {

public void metodo(){System.out.println("metodo Classe");

};}

class MiaAvvio { public static void main(String[] args) {

ClassAbstract ca = new Classe();ca.metodo();

}}

Page 99: Corso UML

Interfaccia

Una interfaccia “interface” ha una struttura simile a una classe, ma può contenere SOLO: costanti metodi d'istanza astratti metodi e proprietà “public”

quindi non può contenere: né costruttori né variabili statiche né variabili di istanza né metodi statici metodi e proprietà diversi da “pubblic”

Page 100: Corso UML

Interfaccia

Se scriviamo una interaccia in questo modo:interface MiaInterf { int i=0;

String metodo();}

Il compilatore “aggiungerà” questi modificatori

interface MiaInterf { public static final int i=0; public abstract String metodo();}

Page 101: Corso UML

Interfaccia

La classe provvede una particolare implementazione ma le altre classi potranno interagire con essa usando una interfaccia

Si aumenta notevolmente l’indipendenza tra le classi

Page 102: Corso UML

Interfaccia

Possiamo rappresentare lo scenario di un’interfaccia in 3 modi diversi: Uguale alla classe ma con indicato lo

stereotipo <<interface>> Con una icona a forma di pallina

(lollipop -> “leccalecca”) puntata da una freccia tratteggiata (dipendenza)

Con una icona a forma di pallina agganciata da una icona a forma di semicerchio (socket -> “presa”) introdotta con UML 2

Page 103: Corso UML

Interfaccia

Ed ecco come possiamo rappresentare il codice nel linguaggio Java:

public class Ordine { private List list = new ArrayList();}

public interface List {}

public class ArrayList implements List {}

Page 104: Corso UML

Interfaccia

Le interfaccia permettono di emulare l’ereditarietà multipla, ma senza i problemi ad essa collegati

Come le classi, le interfacce possono usare l’ereditarietà con altre interfacce

Le interfacce specificano un protocollo che deve essere implementato dalle sottoclassi

Page 105: Corso UML

Interfaccia

E’ sempre possibile estendere anche una classe in modo da ereditare i metodi e le proprietà in essa contenuta.

public class Figlio extends TerzoPadre implements PrimoPadre, SecondoPadre {

public void metodoPrimo() {}

public void metodoSecondo() {}

}

Page 106: Corso UML

Interfaccia

Possiamo avere una ereditarietà a diamante ( o rombo ) come nel caso seguente:

public class VeicoloAcquatico implements Veicolo {

public void metodoTerzo() {} public void metodoSecondo() {}}public class VeicoloAnfibio extends

VeicoloAcquatico implements VeicoloTerrestre {

public void metodoPrimo() {} public void metodoSecondo() {}}

public interface VeicoloTerrestre extends Veicolo {

public abstract void metodoPrimo();}public interface Veicolo { public abstract void metodoSecondo();}

Page 107: Corso UML

Interfaccia

Inoltre sarà sempre possibile che più classi ereditino da una stessa interfaccia come in figura sottostante.

Page 108: Corso UML

Interfaccia

Una interfaccia può estendere una o più interfacce (non classi), indicate dopo la parola chiave extends. Per le interfacce non vale la restrizione di "ereditarietà singola" che vale per le classi.

public interface PrimoFiglio extends PrimoPadre, SecondoPadre {public void metodo3();

}

Page 109: Corso UML

Packages

I package sono contenitori di classi Aiutano a modellare sistemi complessi Possono esistere package e sottopackage Si tende ad inserire nel package classi che hanno un

comportamento e scopo comune nel sistema E’ possibile definire relazioni tra package

Page 110: Corso UML

Relazioni tra Classi

Quando si costituiscono i diagrammi delle classi, accade molto raramente che le entità coinvolte siano destinate a rimanere isolate

Tipicamente, tutte le classi identificate sono connesse con altre secondo precisi criteri Non è sufficiente identificare le classi che compongono il sistema, Ma è necessario individuare anche le eventuali relazioni che le

legano

Nel mondo Object Oriented, tutte le relazioni possono essere facilmente ricondotte ai tre tipi fondamentali Dipendenza Generalizzazione Associazione

Page 111: Corso UML

Relazioni tra Classi

Page 112: Corso UML

1-Relazione di dipendenza

Indica che la variazione dello stato di un’istanza della classe indipendente implica un cambiamento di stato nell’istanza della classe dipendente

Es. precedente La dipendenza lega le classi “Window” alla classe ”Event” Indica che un cambiamento di stato dell’oggetto “Event”

genera un aggiornamento dell’oggetto “Window” che lo utilizza

Non è vero l’inverso

Page 113: Corso UML

1-Relazione di dipendenza

È una connessione semantica tra due oggetti di un modello, di cui uno è l’elemento indipendente mentre l’altro è quello dipendente

Indica che un cambiamento dello stato dell’elemento indipendente genera degli effetti su quello dipendente

Page 114: Corso UML

1-Relazione di dipendenza

Ad esempio quando una classe prevede come parametro un oggetto di un’altra classe accede ad un suo oggetti invoca un suo metodo.

In tutti i casi esiste una evidente dipendenza tra le classi sebbene non ci sia un’esplicita associazione

Graficamente Linea tratteggiata con freccia rivolta verso la classe

dipendente

Page 115: Corso UML

1-Relazione di dipendenza

Nell’esempio la classe FilmClip e la classe Channel sono legate da una relazione di dipendenzaSi nota come il metodo PlayOn necessita come

parametro di un oggetto di tipo ChannelCiò evidenzia una dipendenza tra le classi

sebbene non esista un legame di associazione Può essere associato un nome per individuare e

distinguere le relazioni

Page 116: Corso UML

1-Relazione di dipendenza

La tipologia della relazione di dipendenza più frequente:Quando il riferimento ad un oggetto di una specifica

classe venga fornito come parametro ad un metodo di un altro oggetto istanza di una classe diversa

In casi di questo tipo, se i metodi delle classi vengono forniti con la signature completa, è possibile evitare la visualizzazione grafica della relazione

Page 117: Corso UML

2-Relazione di generalizzazione

Indica un legame tra una classe generale, denominata super-class o parent, ed una sua versione più specifica, denominata sub-class o childclass

Una classe figlio specializza il comportamento di quella del padre

Es. precedente La generalizzazione lega le classi “Window” alla classe

”DialogBox” La classe “DialogBox” va ad aggiungere un comportamento

specifico alla classe padre “Window”

Page 118: Corso UML

2-Relazione di generalizzazione

Lega un oggetto (detto super-class o parent) ad uno più specifico (detto sub-class o child-class) appartenente alla stessa tipologia

È spesso indicata con la denominazione Is-kind-of (è di tipo), per specificare che un oggetto specializzato e “del tipo” dell’oggetto più generale

È possibile asserire che le classi

Rectangle, Circle e Polygon sono

del tipo della classe Shape La classe Square, applicando un

ragionamento ricorsivo, è anch’essa di

tipo Shape otre ad essere di tipo Rectangle

Page 119: Corso UML

2-Relazione di generalizzazione

La proprietà peculiare di tale relazione prevede che un qualsiasi oggetto, istanza di una classe specializzata, può essere sempre utilizzato ovunque compaia la classe “base” Un oggetto della classe Rectangle può essere sempre

sostituito ad un oggetto Shape (non vale il contrario) Un oggetto della classe Square può sempre sostituire sia da

un’istanza della classe Rectangle sia da una classe Shape Comprensibile se si considera che una classe figlio eredita

proprietà e metodi della classe padre Anche nel caso limite in cui la classe specializzata non

dovesse aggiungere ulteriore comportamento, conserverebbe comunque, quello della classe padre

Page 120: Corso UML

2-Relazione di generalizzazione

Principio di sostituzione di Liskov Se per ogni oggetto O1 di tipo S c’è un

oggetto O2 di tipo T tale che per tutti i programmi P definiti in termini di T, il comportamento di P non cambia quando O1 è sostituito da O2 allora S è un sottotipo di T

In modo meno formale: Si può sempre passare un puntatore o un

riferimento di una classe derivata ad una funzione che si aspetta un puntatore o un riferimento alla classe base.

Page 121: Corso UML

2-Relazione di generalizzazione

Quando un metodo di una classe figlio possiede la stessa “signature” (nome, parametri formali e parametri di ritorno) di una classe padre, si dice che ne effettua la sovra-scrittura (override)

Ciò implica che ogni riferimento a tale metodo, eseguito in un oggetto della classe figlio, farà riferimento al metodo ridefinito anziché a quello della classe padre Nel caso della classe padre, è sufficiente

premettere un puntatore a tale classe Graficamente Linea piena con freccia vuota nella

direzione della classe padre

Page 122: Corso UML

2-Relazione di generalizzazione

In una generalizzazione la sottoclasse non solo può avere proprietà aggiuntive rispetto alla superclasse, ma può anche specializzare le proprietà ereditate dalla superclasse.

Specializzazione di un attributo: Se una classe C1 ha un attributo A di tipoT1, e se C2 è una sottoclasse di C1, specializzare A in C2 significa definire A anche in C2 ed assegnargli un tipo T2 i cui valori sono un sotto insieme dei valori di T.

Page 123: Corso UML

2-Relazione di generalizzazione

Anche le operazioni si possono specializzare nelle sottoclassi.

Specializzazione di una operazione: un’operazione si specializza specializzando i parametri e/o il tipo di ritorno.

Page 124: Corso UML

2-Relazione di generalizzazione

Specializzazione di una associazione: Se una classe C1 partecipa ad una associazione R1 con un’altra classe C3, e se C2 è una sottoclasse di C1, specializzare R1 in C2 significa: Definire una nuova associazione R2 tra la classe C2 e la

classeC3 (o una classe C4 che è sottoclasse di C3) Stabilire una dipendenza di tipo {subset} da R2 a R1

Page 125: Corso UML

2-Relazione di generalizzazione

Il grafo delle generalizzazioni non può contenere cicli!

class C extends D{}

class A extends C{}class B extends C{}

class D extends B{}

Java Output: cyclic inheritance involving C

Page 126: Corso UML

2-Relazione di generalizzazione

La generalizzazione consente di poter implementare il polimorfismo consentendo di istanziare la classe figlia avendo come riferimento l’oggetto padre.

Page 127: Corso UML

2-Relazione di generalizzazione

Durante il processo di analisi Incontrare entità aventi un comportamento o una struttura simile

Come agire Modellare le varie entità attraverso classi distinte senza alcun

legame Estrapolare dalle entità il comportamento e la struttura comune, al

fine di realizzare una classe più generale dalla quale far derivare tutte le altre

Può capitare di dover schematizzare determinate relazioni tra classi per mezzo di una relazione di ereditarietà multipla nel caso in cui una classe figlio erediti da più classi padre bisogna utilizzare tali relazioni con molta cautela

Page 128: Corso UML

2-Relazione di generalizzazione

Alcuni linguaggi Object-Oriented, come ad esempio Java, non la prevedono si può facilmente incorrere in errori qualora la classe figlio voglia

ridefinire (override) la struttura e/o il comportamento di una delle classi padre

Le relazioni multiple vanno opportunatamente ponderate

Page 129: Corso UML

2-Relazione di generalizzazione

È frequente il caso in cui è consigliabile sostituirla con uno schema denominato “Delegazione”

Prevede di rimpiazzare una ereditarietà “n-aria”, con una singola relazione di generalizzazione “n-1” aggregazioni (un particolare tipo di relazione di

associazione)

Page 130: Corso UML

2-Relazione di generalizzazione

Anche con le ereditarietà singole si possono avere dei problemi

Un dipendente (Istanza della classe Equipaggio o Personale di terra) può essere un passeggero

Presenza di entità che potrebbero essere istanza di più classi

Page 131: Corso UML

2-Relazione di generalizzazione

Bisognerebbe aggiungere ulteriori classi Combinazioni per inserire le possibili casistiche

Utilizzare una serie di relazioni di associazione

Page 132: Corso UML

2-Relazione di generalizzazione

La stessa superclasse può partecipare a diverse generalizzazioni.

Concettualmente, non c’è alcuna correlazione tra due generalizzazioni diverse, perché rispondono a due criteri diversi di strutturare la superclasse.

Page 133: Corso UML

2-Relazione di generalizzazione

complete - Tutte le sottoclassi sono state specificate, nessun altra sottoclasse è permessa

Page 134: Corso UML

2-Relazione di generalizzazione

incomplete - NON tutte le sottoclassi sono state specificate, altre sottoclassi sono permesse.

Page 135: Corso UML

2-Relazione di generalizzazione

overlapping – E’ possibile definire una classe che sia sottoclasse di due classi non disgiunte: Studente e Lavoratore cioè StudenteLavoratore

Page 136: Corso UML

2-Relazione di generalizzazione

disjoint – NON è possibile definire una classe che sia sottoclasse di più uno stato di esecuzione.

Pertanto due classi disgiunte non possono avere sotto classi comuni.

Page 137: Corso UML

2-Relazione di generalizzazione

Page 138: Corso UML

2-Relazione di generalizzazione

Page 139: Corso UML

3-Relazione di associazione

Indica il significato per cui un oggetto di una classe è connesso ad un altro oggetto

È una relazione strutturata tra classi che definisce un canale di comunicazione bi-direzionale fra le classi Tra due classi è associazione binaria Tra n classi è associazione “n-aria”

Una associazione può avere un nome

Page 140: Corso UML

3-Relazione di associazione

Può avere una direzione per distinguere meglio il verso della comunicazione

È anche possibile assegnare due nomi con i relativi versi alla stessa associazione

Osserviamo ancora che le frecce che simboleggiano il verso non aggiungono nulla al significato della associazione (che è sempre una relazione), ma aiutano ad interpretare il senso dei nomi scelti per l’associazione

Le frecce che simboleggiano il verso si indicano anche nel link che sono istanze delle associazioni

Page 141: Corso UML

3-Relazione di associazione

È riflessiva se coinvolge oggetti della stessa classe Indica oggetti multipli della stessa classe che sono in

relazione fra loro in cui l’oggetto è istanza della stessa classe (self-association)

Page 142: Corso UML

3-Relazione di associazione

Istanza di associazione Se “autore” è una associazione tra le classi “Libro” e

“Persona”, una istanza di “autore” è un link tra due oggetti, uno della classe Libro e l’altro della classe Persona

Page 143: Corso UML

3-Relazione di associazione

Istanza di associazione Come gli oggetti sono istanze delle classi, così i link

sono istanze delle associazioni (gli archi Instance-of non sono necessari).

Al contrario degli oggetti, però, i link non hanno identificatori espliciti: un link è implicitamente identificato dalla coppia (o in generale dalla ennupla ) di oggetti che esso rappresenta.

Page 144: Corso UML

3-Relazione di associazione

Associazione n-aria Una associazione può essere definita su tre o più

classi. In tale caso l’associazione si dice n-aria

Page 145: Corso UML

3-Relazione di associazione

Istanze di associazioni n-arie: link n-ari Ogni istanza di una associazione n-aria è un link n-

ario, cioè che coinvolge n oggetti

Page 146: Corso UML

3-Relazione di associazione

Associazioni n-arie con attributi Ovviamente, anche le associazioni n-arie possono

avere attributi

Page 147: Corso UML

3-Relazione di associazione

Link n-ari con attributi I link che sono istanze di associazioni n-arie con

attributi, hanno un valore per ogni attributo.

Page 148: Corso UML

3-Relazione di associazione

Ruolo Denota lo scopo o la capacità con la quale una classe si

associa con un altra Può sostituire il nome dell’associazione Definisce un nome specifico per ogni ruolo che ha

l’associazione con la classe Consente di poter ottenere maggiore chiarezza e leggibilità

Page 149: Corso UML

3-Relazione di associazione

Ruolo Analogamente al verso, il ruolo è generalmente opzionale, e non

aggiunge nulla al significato dell’associazione L’unico caso in cui il ruolo è obbligatorio è quello in cui

l’associazione insiste più volte sulla stessa classe. Se non fossero indicati i ruoli nell’associazione“genitore-figlio”,

non sapremmo interpretare correttamente i link che sono istanze dell’associazione

Page 150: Corso UML

3-Relazione di associazione

Associazione con Molteplicità Definisce :se la relazione è obbligatoria o noil numero minimo e massimo di oggetti che

prendono parte alla relazione

Page 151: Corso UML

3-Relazione di associazione

Associazione con Molteplicità

Page 152: Corso UML

3-Relazione di associazione

Associazione con molteplicità

Page 153: Corso UML

3-Relazione di associazione

Molteplicità di attributi Si possono specificare anche le molteplicità degli

attributi. Se le molteplicità di un attributo B di tipo T di una

classe C non vengono indicate, vuol dire che B associa ad ogni istanza di C esattamente un valore di T

Al contrario, se un attributo B di tipo T di una classe C ha molteplicità x .. y, allora B associa ad ogni istanza di C al minimo x e al massimo y valori di tipo T

Page 154: Corso UML

3-Relazione di associazione

Associazione disordinata Supponiamo di voler descrivere gruppi di persone … Un gruppo è formato da persone. Ogni persona può

apparire in un gruppo al più una volta (ovviamente ciascuna persona può fare parte di 0, 1, molti gruppi) e non ha importanza indicare l’ordine di appartenenza

In UML possiamo rappresentare questo scenario come segue:

Page 155: Corso UML

3-Relazione di associazione

Associazione ordinata Consideriamo ora invece una graduatoria di persone … Una graduatoria ha un certo numero di posizioni ciascuna

occupato da una sola persona (non consideriamo pari merito in questo esempio)e una persona può apparire un una graduatoria al più una volta.

•Una possibile rappresentazione in UML è:

Page 156: Corso UML

3-Relazione di associazione

Classi di associazioni Definiscono delle proprietà che appartengono alla

associazione e non alle classi coinvolte

Per esempio: Se la relazione tra Studente e Corso è “molti a molti”, come

possiamo fare per registrare i voti di tutti i corsi che uno studente ha seguito?

Page 157: Corso UML

3-Relazione di associazione

Poiché: L’attributo del voto non può essere messo nella classe Corso Perché esistono molti link alla classe Studente in quanto lo stesso corso

è seguito da molti studenti L’attributo del voto non può essere messo nella classe Studente Perché esistono molti link alla classe Corso in quanto uno studente

segue dei corsi differenti

Allora: L’attributo appartiene all’associazione che lega lo Studente ed il Corso

Page 158: Corso UML

3-Relazione di aggregazione

Le aggregazioni sono una forma particolare di associazione Definisce una associazione del tipo “parte di” Relazioni tra classi in cui: una rappresenta un oggetto (Whole) e l’altra una

sua componente (Part) È detta anche Whole-Part

E’ una associazione asimmetrica Graficamente Linea piena con rompo rivolto verso la classe più generale

Page 159: Corso UML

3-Relazione di aggregazione

Esempio Aggregazione: facoltà universitaria

Page 160: Corso UML

3-Relazione di composizione

E’ una forma di aggregazione di tipo forte La loro esistenza ha senso solo in relazione al contenitore Creazione e distruzione avvengono nel contenitore I componenti non sono parti di altri oggetti Se si cancella il contenitore si cancellano anche le parti Le parti componenti non esistono senza il contenitore

Page 161: Corso UML

Stereotipi

Uno stereotipo è un nuovo tipo di elemento di modellazione che estende la semantica del meta modello

In UML gli stereotipi si mostrano aggiungendo il suo nome nel compartimento della classe racchiuso tra << >>

Ci sono degli stereotipi tipicamente utilizzati, quali:

Page 162: Corso UML

Class Boundary, Control ed Entity

Page 163: Corso UML

Classi Boundary

Una classe Boundary modella la comunicazione tra l’ambiente ed il sistema ed i suoi meccanismi interni

Riguardano la trasformazione degli eventi che accadono all’esterno e la notifica di cambiamento dello stato “presentation”

Dipendono dall’ambiente che circonda il sistema Aiutano a comprendere i confini del sistema Tipiche classi Boundary: Finestre (interfacce utenti) Interfacce verso stampanti Sensori

Page 164: Corso UML

Classi Boundary

Un sistema può avere diversi tipi di classi boundary User Boundary: classi che mediano la comunicazione con

utenti umani del sistema System Boundary: classi che mediano la comunicazione con

altri sistemi Device Boundary: classi che forniscono una interfaccia verso

dispositivi come i sensori, che intercettano eventi esterni

Page 165: Corso UML

Class Control

Una classe Control modella il comportamento di controllo Crea, inizializza e cancella gli oggetti controllati Controlla le sequenze o coordina l’esecuzione degli oggetti

controllati Rappresentano la dinamica del sistema mostrando come

sono controllati i flussi di eventi Effettuano anche la delega di compiti ai diversi oggetti a

cui sono assegnate responsabilità per le singole funzionalità

Page 166: Corso UML

Classe Entity

Una classe Entity modella informazioni generalmente di tipo persistente ed il comportamento associato

I valori dei suoi attributi sono in genere forniti da un attore Il comportamento è indipendente dal contesto (attori) Sono usate per rappresentare i concetti chiavi che sono

gestiti dal sistema La loro principale responsabilità è quella di memorizzare e

gestire le informazioni necessarie al sistema

Page 167: Corso UML

Esempio

Tracciare il diagramma delle classi corrispondenti alle seguenti specifiche:

Si vogliono modellare gli studenti (con nome, cognome, numero di matricola, età), il corso di laurea in cui sono iscritti, ed i corsi di cui hanno sostenuto l’esame, con il professore che ha verbalizzato l’esame, ed il voto conseguito. Di ogni corso di laurea interessa il codice e il nome. Di ogni corso interessa il nome e la disciplina a cui appartiene (ad esempio: matematica, fisica, informatica, ecc.). Di ogni professore interessa codice e d’età.

Page 168: Corso UML

Esempio

Page 169: Corso UML

Commenti in UML

In UML, quando si vuole specificare una caratteristica che non è possibile rappresentare esplicitamente nel diagramma con i meccanismi visti finora, si può usare la nozione di commento.

Page 170: Corso UML

Sequence Diagram

Page 171: Corso UML

Dove si colloca

Page 172: Corso UML

Sequence Diagram

Il Sequence Diagram descrive il comportamento dinamico di un gruppo di oggetti che interagiscono

Il Sequence Diagram illustra le interazioni degli oggetti ordinate in modo cronologico

Sono usati per “formalizzare” gli scenari, in termini di: Entità (oggetti) Messaggi scambiati (metodi)

Evidenzia la sequenza temporale delle azioni in base ad una dimensione: il TEMPO

Page 173: Corso UML

Sequence Diagram

Le interazioni tra gli oggetti avvengono in una sequenza specifica

La sequenza consuma del tempo per andare dall'inizio alla fine

Un Sequence Diagram contiene: Oggetti▪ Graficamente – rettangoli con il nome sottolineato

Messaggi▪ Graficamente – tramite frecce a linea continua

Tempo▪ Graficamente – rappresentato progressivamente nell'asse

verticale

Page 174: Corso UML

Sequence Diagram - Elementi

OggettiRappresenta una singola entità In un ambiente object–oriented rappresenta un'istanzaPuò rappresentare una particolare istanza di un oggetto o

di un attore

Page 175: Corso UML

Sequence Diagram - Elementi

MessaggioRappresenta la comunicazione tra due oggettiVa dalla lifeline di un oggetto alla lifeline di un altro

oggettoTipi di messaggi▪ Semplice – trasferimento di controllo da un oggetto ad un

altro▪ Sincrona – chi invia il messaggio deve attendere la risposta▪ Asincrona – chi invia il messaggio non deve attendere la

risposta

I messaggi vengono spesso numerati per meglio mostrare la sequenza temporale delle azioni

Page 176: Corso UML

Sequence Diagram - Elementi

Messaggio In UML 1.x i messaggi sincrono ed asincroni erano visualizzati con una

freccia con punta aperta completa o parziale, In UML 2.x per evitare facili confusioni si è preferito visualizzarli con

una freccia chiusa piena ed una aperta completa mantenendo sempre la linea continua

SincronaAsincrona

Il messaggio può essere inviato anche a se stesso in modo ricorsivo

UML 2.xUML 1.x

Page 177: Corso UML

Sequence Diagram - Elementi

Messaggio RicorsivoIndica un messaggio inviate a se stessoE' utile quando si vogliono rappresentare

comportamenti ricorsivi

Page 178: Corso UML

Sequence Diagram - Elementi

Messaggio di ritornoIndica uno stimolo di ritorno dopo l'invio di un

messaggioNon rappresenta un nuovo messaggioSi commette l'errore di utilizzarlo ogni volta che si

invia un nuovo messaggioDeve essere utilizzato solamente per aggiungere

informazioni e per aumentare la comprensione del sistema

Page 179: Corso UML

Sequence Diagram - Elementi

AttivazioneRappresenta il tempo durante il quale un

oggetto esegue un'operazione

Page 180: Corso UML

Sequence Diagram -Elementi

Creazione e distruzione La X indica quando una particolare istanza cessa di

esistereUn oggetto può morire da solo o grazie all'invio di un

messaggio da parte di un altro oggettoE' utile quando sto rappresentano contesti multithread

Page 181: Corso UML

Sequence Diagram - Elementi

Esecuzione concorrenteIndica quando alcune condizioni possono generare

cammini diversi

Page 182: Corso UML

Combined Fragment (CF)

Questo concetto permette di suddividere un Sequence Diagram in piu’ “frammenti” e di combinare tali frammenti, seguendo diverse regole

Alcuni operatori (gli “InteractionOperator”) definiscono come tali frammenti possono essere combinati insieme

Page 183: Corso UML

Interaction Operators

Page 184: Corso UML

Transition Time

Viene utilizzato per esprimere vincoli temporali sul tempo di esecuzione dei messaggi

Espresso tramite constraints In genere si trovano alla sinistra dei messaggi

Page 185: Corso UML

Sequence Diagram - Relazioni

Ad un lifeline, può essere associato uno “stato” Lo stato viene valutato:Se e’ verificato, allora possiamo continuare ad

eseguire il SDaltrimenti, il SD non può essere verificato.

Page 186: Corso UML

Sequence Diagram - Elementi

Macchina seft-service, la cui interfaccia è sostituita da 3 oggetti: Pannello frontale: per il cliente Registro del denaro: raccoglie le monete Dispencer : dove viene erogato il prodotto al cliente

Funzionamento tipico della macchina: Il cliente inserisce le monete nello slot Il cliente fa la selezione Le monete arrivano al registro Il sistema controlla se il prodotto selezionato è nel dispenser Il registro incrementa la sua riserva di cash Il registro rilascia il prodotto nel dispenser

Page 187: Corso UML

Sequence Diagram - Elementi

L'istanza del Sequence Diagram può essere schematizzata utilizzando queste sequenze:

Page 188: Corso UML

Communication Diagram

Page 189: Corso UML

Dove si colloca

Page 190: Corso UML

Communication Diagram

E' simile al Sequence Diagram:Sono semanticamente equivalenti in quanto

mostrano stesso tipo di informazioniEvidenziano le interazioni tra le partiRivolgono maggiore attenzione allo scambio dei

messaggi Ma è diverso dal Sequence Diagram :Organizzato in funzione dello spazio e non del

tempoNon vi è una particolare dimensione per

rappresentare il tempo a parte la numerazione.Sono più evidenti i legami tra gli oggetti rispetto

alla sequenza dei messaggi

Page 191: Corso UML

Communication Diagram

Graficamente rappresentato come un grafo dove i nodi sono gli oggetti e gli archi sono i links

E’ una estensioni del diagramma degli oggetti e mostra: Gli oggetti:Rappresentano una singola entità del diagramma In un ambiente object-oriented rappresenta una

istanzaPuò rappresentare una particolare istanza di un

oggetto o di un attore I Link: Label: mostra il messaggio Frecce: puntano all'oggetto ricevente ed eseguono una

delle operazioni dell'oggetto riceventePossono contenere i parametri dell’operazione

chiamata

Page 192: Corso UML

Communication Diagram - Relazioni

LinkRappresenta la relazione tra gli oggetti in un particolare

istante di tempoE' una particolare istanza delle associazioni del Class

Diagram

Link a se stesso:Rappresenta una particolare istanza di associazioni Inizia e finisce nello stesso oggettoRappresenta una interazione con se stesso

Page 193: Corso UML

Communication Diagram - Relazioni

MessaggioRappresenta la comunicazione tra due oggetti La comunicazione può essere:▪ Sincrona▪ Asincrona

I messaggi vengono numerati per mostrare la sequenza temporale delle azioni

I messaggi si applicano ai link tra i diversi oggetti

Page 194: Corso UML

Communication / Sequence Diagram

Esprimono informazioni simili ma le evidenziano in modo differente

Spesso non è necessario descrivere il sistema utilizzando entrambi i diagrammi

Era possibile in UML 1.x passare da un Sequence Diagram ad un Collaboration Diagram e viceversa.

Un Communication Diagram, in UML 2.0, NON e’ più totalmente equivalente ad un Sequence Diagram.

I Combined Fragment ora presenti nei SD, per esempio, NON sono rappresentati nei Communication Diagram

Page 195: Corso UML

Communication / Sequence Diagram

Page 196: Corso UML

State Machine Diagram

Page 197: Corso UML

Dove si colloca

Page 198: Corso UML

State Machine Diagram

Statechart diagrams sono diagrammi usati per rappresentare il comportamento di una classe (o di un intero sistema) descrivendone i possibili stati raggiunti durante il ciclo di vita della classe, e la reazione ad eventi esterni, in termini di cambiamenti di stato e/o azioni svolte.

Page 199: Corso UML

State Machine Diagram

Mostrano una macchina a stati enfatizzando il flusso di controllo da stato a stato

Specificano le sequenze di stati che ha un oggetto durante il suo ciclo di vita in risposta ad eventi.

Sono utili per mostrare il comportamento dinamico di oggetti particolarmente complessi

Graficamente è un grafo con vertici ed archi Rappresenta il comportamento dei singoli oggetti di

una classe in termini di:Eventi a cui gli oggetti sono sensibiliAzioni prodotteTransazioni di stato

Page 200: Corso UML

State Machine Diagram

Gli Statechart Diagrams sono particolarmente adatti per rappresentare il comportamento di reactive objects, siano essi istanze di classe, use cases e interi sistemi.

Gli Interaction Diagrams sono usati per modellare il comportamento di diversi oggetti che cooperano mentre gli Statechart Diagrams vanno usati per modellare il comportamento di un singolo oggetto all’interno del suo ciclo di vita..

Gli Activity Diagrams modellano il flusso di controllo da un’attività ad un’altra attività mentre gli Statechart Diagrams sono usati per modellare il flusso di controllo da evento a evento.

Page 201: Corso UML

State Machine Diagram

Utile in circostanze dove si ha la necessità di studiare un sistema che:Possiede un numero finito di configurazioniI transiti da una configurazione ad un altra sono in

funzione di uno stimolo esterno Descrivono il ciclo di vita degli oggetti di una classe,

attraverso modifiche causate da eventi che li interessano

E’ composto da: Stato Attività/Azioni Eventi Transizioni

Page 202: Corso UML

State Machine Diagram

StatoA run-time tutti gli oggetti possiedono uno stato Lo stato di un oggetto è una condizione o situazione che

si verifica durante il ciclo di vita dell'oggetto stessoRappresenta la situazione nel tempo di un oggetto che

esegue una attività o aspetta qualche stimolo esternoE' il risultato di tutte le attività eseguite fino a quel dato

istante dall'oggetto Lo stato è costituito dai valori associati ai relativi attributi

e dai legami con altri oggettiUno stato perdura nel tempo finché un evento non fa

cambiare stato all’oggetto (es. un versamento fa passare un conto corrente da saldo negativo a saldo positivo)

Lo stato influenza il comportamento, l'oggetto reagisce in modo qualitativamente diverso agli eventi esterni, in funzione dello stato in cui si trova.

Page 203: Corso UML

State Machine Diagram

Lo stato può essere distinti in 3 tipi:Semplice▪ Uno stato che non contiene altri stati

Composite▪ Uno stato che contiene altri stati

Submachine▪ Uno stato che usa altri stati.

Page 204: Corso UML

State Machine Diagram

Stato iniziale - Stato finaleRappresentano i punti iniziali e finaliNon rappresentano stati veri e propri perché non

hanno tutte le caratteristiche degli altri stati – pseudo stati

Page 205: Corso UML

State Machine Diagram

Stato intermedioRappresentato con un rettangolo con gli angoli smussatiE’ composto da 2 compartimenti:▪ Nome▪ Una stringa testuale che distingue uno stato da un

altro; se non ha nome è considerato anonimo▪ Transizioni interne▪ Contiene una lista di attività o azioni interne che sono

eseguite mentre l’elemento è all’interno dello stato. Quindi tali attività o azioni non comportano il cambiamento di stato

Page 206: Corso UML

State Machine Diagram

▪ Transizioni interne (Sintassi: [label] ‘/’ action-expression )label▪ Identificano le circostanze sotto la quale l’azione

specificata da action-expression viene invocata▪ Alcune label sono riservate:▪ Entry/Action: eseguita nel momento in cui si

entra in uno stato▪ Exit/Action: eseguita nel momento in cui si esce

da uno stato▪ Do/Activities: identifica un’attività in esecuzione

mentre l’oggetto è nello stato della transizione▪ Include/nomeSubMachine : invocazione a una

sub-machine. L’azione contiene il nome della sub-machine invocata.

Page 207: Corso UML

State Machine Diagram

▪ Transizioni interne (Sintassi: [label] ‘/’ action-expression )action-expression▪ Rappresentano operazioni interne eseguite mentre

l’oggetto è in uno stato che possono richiedere tempo e sono interrompibili

▪ Action:▪ sono delle attività che vengono subito eseguite▪ comportano un cambiamento di stato dell’oggetto▪ non possono essere interrotte altrimenti

produrrebbero uno stato inconsistente▪ Activity:▪ sono dellea attività che vengono eseguite dopo che

sono state eseguite altre attivita (entry, exit)▪ non comportano un cambiamento di stato

dell’oggetto▪ possono essere interrotte in quanto non producono

uno stato inconsistente

Page 208: Corso UML

State Machine Diagram

Page 209: Corso UML

State Machine Diagram

PseudoStati Sono degli stati di astrazione che permettono di definire uno

stato caratterizzato da determinate comportamento: I tipi di pseudoStati sono i seguenti:▪ initial:▪ deepHistory▪ shallowHistory▪ join▪ fork▪ junction▪ choice▪ entryPoint▪ exitPoint▪ terminate

Page 210: Corso UML

State Machine Diagram

Fork

Join

junction

Page 211: Corso UML

State Machine Diagram

Stati compostiUno stato che ha sotto-stati viene detto stato

compostoPuò essere decomposto in▪ Sottostati sequenziali▪ Due o più sottostati concorrenti (dette regioni)

Ogni sottostato può essere a sua volta uno stato composto

Page 212: Corso UML

State Machine Diagram

Stato composto concorrenteE' utile quando un oggetto ha diversi ed

indipendenti comportamentaliNon bisogna esagerare con gli stati concorrentiSe sono presenti numerosi stati concorrenti è utile

dividere l'oggetto in parti più sempliciIn breve è una decomposizione AND

Page 213: Corso UML

State Machine Diagram

Stato composto concorrenteSe un sottostato concorrente raggiunge lo stato

finale prima dell’altro, il controllo in questo sottostato aspetta nello stato finale

Quando entrambe le macchine a stato raggiungono il loro stato finale, il controllo dei due sottostati concorrenti si ricongiungono in un unico flusso

Page 214: Corso UML

State Machine Diagram

TransizioneRappresenta la relazione tra due differenti stati di un

oggetto Indica cha un oggetto che si trova nel primo stato (stato

sorgente) eseguirà determinate azioni ed entrerà nel secondo stato (stato destinazione) quando avverrà un particolare evento e certe condizioni sono soddisfatte.

Ogni transizione potrà avere una etichettaNon avviene spontaneamente, ma al verificarsi di un

opportuno evento

Page 215: Corso UML

State Machine Diagram

La transizione è rappresentata mediante una freccia diretta continua dallo stato sorgente a quello destinatario con associata un’etichetta

La Transizione è costituita da 5 parti: Stato Sorgente: lo stato su cui la transizione agisce Evento: lo stimolo esterno la cui ricezione da parte

dell’oggetto nello stato sorgente rende la transizione candidata a scattare, in base alla condizione.

Condizione: una espressione booleana che viene valutata quando l’evento arriva. Se la condizione è verificata la transizione scatta

Azione: è atomica e non interrompibile. L’azione può essere costituita dall’invio di un evento ad un altro oggetto.

Stato destinazione: lo stato che sarà attivo dopo il completamento della transizione

Page 216: Corso UML

State Machine Diagram

event-signature: EventoVerificarsi di un qualcosa degno di nota che può

innescare una transizione di stato Possono verificarsi 4 tipi di eventi: Change event: L’evento si verifica quando il valore di una

determinata condizione cambia da false a true (esempio “when (date = Jan. 1, 2004)” )

Time event: Il passare un determinato periodo di tempo (esempio “after (10 seconds)”)

Segnale: invio di un evento in modo asincrono Calls: ricezione di una chiamata di un’operazione (chiamata

sincrona)

Page 217: Corso UML

State Machine Diagram

[guard-condition]: Condizione di guardiaEspressione booleana che viene valutata alla

ricezione dell’evento.Se è true la transizione viene attivata altrimenti non

avviene la transizione di stato e l’evento viene perso

Page 218: Corso UML

State Machine Diagram

action-expression : AzioneComputazione eseguibile atomica che può agire

sull’oggetto della macchina a stati oppure su altri oggetti inviando segnali o eventi

Page 219: Corso UML

State Machine Diagram

Macro statoUn macro stato aiuta a comprendere meglio azioni

comuni di tutti i sotto statiSepara le transizioni comuni a più oggetti

Page 220: Corso UML

Activity Diagram

Page 221: Corso UML

Dove si colloca

Page 222: Corso UML

Activity Diagram

Rappresenta sistemi di Workflow o la logica interna di un processo

Può essere usato in livelli di astrazione molto differenti

E’ un caso particolare di Statechart DiagramDifferenze▪ Supportano la descrizione di flussi paralleli▪ Transizione avviene in automatico quando

l’attività è stata completamente eseguita▪ Non si necessita di specificare un evento esplicito

che generi la transizione▪ Abbiamo le condizioni che selezionano la

direzione da utilizzare per l’avanzamento del flusso di controllo

Page 223: Corso UML

Activity Diagram

Si focalizza sulla sequenze di attività corredate dai relativi risultati prodotti

Necessarie per realizzare le funzionalità del sistema Semplice formalismo Permette di rappresentare processi paralleli e la loro

sincronizzazione E’ molto utile quando è importante definire il

comportamento dinamico degli oggetti

Page 224: Corso UML

Activity Diagram - Elementi

Stato Iniziale - Stato FinaleCome nel Statechart Diagram rappresentano i

punti iniziali e finali di uno statechart

Page 225: Corso UML

Activity Diagram - Elementi

Action StateUn action state è uno stato con una entry action ed

almeno una transizione uscente in corrispondenza del suo completamento.

Action state non ha transizioni interne, o esterne basate su eventi.

La transizione di uscita non avviene in corrispondenza di un particolare evento.

E’ uno stato in cui è in corso una specifica azioneEsempio:▪ Digitare un tasto▪ Eseguire una routine▪ O un metodo di una classe

Page 226: Corso UML

Activity Diagram - Elementi

Flow TransitionE’ mostrata come una linea continua che va da un

action state sorgente ad un action state di destinazione.

Rappresenta le relazioni tra differenti action statePuò avere una label contenente condizioni booleane

o descrizioni

Page 227: Corso UML

Activity Diagram - Elementi

SwimlanesUna swimlane è una regione che indica l’elemento

responsabile degli action states dentro tale regione.Indica chi sta eseguendo quella attivitàRappresenta attraverso zone verticali la

responsabilità di una particolare classe o di un particolare sottosistema

Page 228: Corso UML

Activity Diagram - Elementi

Branchrappresenta la selezione di una fra più transizioni

sulla base di una condizione di controlloHa un solo punto di ingresso e molti di outputSolo un cammino di uscita può essere presoPuò essere usato come un “if then else”

Page 229: Corso UML

Activity Diagram - Elementi

Fork e JoinRappresentano l’evoluzione

parallela del sistemaAd una fork l’esecuzione

prosegue parallelamente su due o più flussi figli

Ad una join I flussi figli si ricongiungono al flusso padre

L’esecuzione del flusso padre riprende solo quando l’ultimo dei flussi figli ha terminato

Fork ha un solo ingresso e più uscite

Join più ingressi ed una sola uscita

Page 230: Corso UML

Activity Diagram - Elementi

Expansion RegionsUtilizzate quando l’output di una action è causa

di più esecuzioni di un’altra.Una expansion region è un’area dell’activity

diagram costituita da actions ripetute per ogni elemento di una certa collezione.

Page 231: Corso UML

Activity Diagram - Elementi

Flow FinalUn flow final indica la fine di un particolare flusso,

senza che sia stata terminata tutta l’activity

Page 232: Corso UML

Activity Diagram - Elementi

Flussi degli oggetti Le linee tratteggiate mostrano l’utilizzo di specifici

oggetti nelle activity. La linea che parte da una action indica l’oggetto in

essa utilizzato. La linea che parte da un oggetto e va verso un’azione

indica che quell’oggetto è ricevuto in input dalla activity.

Page 233: Corso UML

Component Diagram

Page 234: Corso UML

Dove si colloca

Page 235: Corso UML

Component Diagram

Rappresentano l’architettura SW del sistema, ovvero la suddivisione di esso in varie componenti (classi, librerie, DB, eseguibili, etc.) e le dipendenze tra questi

Mostra l’organizzazione e le dipendenze dei vari componenti del sistema

Può rappresentare unità fisiche, codici sorgenti, librerie, file, etc.

Page 236: Corso UML

Component Diagram

Componente i componenti sono moduli software (eseguibili o meno),

dotati di identità e con un'interfaccia ben specificata Non esiste un metodo unico per l’individuazione dei

componenti (Alhir li definisce “una parte del sistema che esiste durante l’esecuzione del sistema”)

Spesso un componente rappresenta una classe o un package del class diagram

Page 237: Corso UML

Component Diagram

Abbiamo tre tipi di componentiDeployment Component : costituiscono la base dei

sistemi eseguibili (DLL, eseguibili, controlli ActiveX, Java Beans)

Work Product Component : sono ricavati i componenti del tipo precedente (file di dati e file sorgenti)

Execution Component : creati come risultato di un sistema running

Page 238: Corso UML

Component Diagram - Elementi

InterfacciaRappresenta l’interfaccia di un componenteUn componente può avere più interfacce

Page 239: Corso UML

Component Diagram - Elementi

DipendenzaTra due componenti esiste una dipendenza quando

modificando la definizione di uno (il supplier) può doversi modificare la definizione dell’altro (detto client)

Tra classi esistono diversi motivi che causano dipendenza comunicazione tra due classiuna classe memorizza i dati di un’altra classeUna classe adopera i dati di un’altra come parametriMostra come il cambiamento di un componente causa il

cambiamento di altriE’ utile per mostrare quali sono i componenti che

comunicano con un altro

Page 240: Corso UML

Component Diagram - Elementi

DipendenzaUML consente di esprimere dipendenze tra tutti i

suoi elementi, e in particolare nel component diagram

Una dipendenza viene rappresentata con una freccia tratteggiata (punta sul supplier), sulla quale è possibile indicare il tipo di dipendenza

Attenzione: la presenza di numerose dipendenze (soprattutto in grossi sistemi) puo’ complicare notevolmente la gestione delle modifiche

Page 241: Corso UML

Component Diagram - Elementi

Page 242: Corso UML

Deployment Diagram

Page 243: Corso UML

Dove si colloca

Page 244: Corso UML

Deployment Diagram

Rappresenta la relazione fisica tra i componenti software e quelli hardware

E’ utile quando si ha la necessità di mostrare componenti e oggetti in un sistema distribuito

E’ utile quando si ha la necessità di mostrare in quale componente hardware di un sistema distribuito viene eseguito o risiede ciascun componente software

Page 245: Corso UML

Deployment Diagram - Elementi

NodoOgni nodo rappresenta una unità

computazionaleMolte volte viene usato per

rappresentare un componente hardware

Esempio:▪ Un semplice device▪ Un sensore▪ Un server▪ Un mainframe

Un nodo può anche essere esso stesso del SW, un ambiente di esecuzione, ad esempio macchine virtuali

Page 246: Corso UML

Deployment Diagram - Elementi

Istanza di Nodo: In generale il nodo non rappresenta una

specifica risorsa, ma una classe di risorse dello stesso tipo

Per rappresentare una specifica risorsa del sistema si usano le istanze di nodo

In un contesto object-oriented e’ analogo all’istanza di una classe

Una istanza di nodo e’ rappresentata come un nodo, ma il nome e’ del tipo nome:classe

Sia nome che classe possono essere omessi (e in tal caso si può omettere anche il “:”)

Page 247: Corso UML

Deployment Diagram - Elementi

ConnectionRappresenta il percorso di comunicazione tra più nodiPuò rappresentare il protocollo di comunicazione

utilizzatoè rappresentata come una linea continua tra i due nodi

Page 248: Corso UML

Deployment Diagram - Elementi

All’interno dei nodi è possibile rappresentare gli artifact, che sono la manifestazione fisica del SW

Tipicamente gli artifact sono file, e possono essere: eseguibili (file .exe, .dll, script, file

binari, ecc.) Dati file di configurazione pagine HTML

Page 249: Corso UML

Deployment Diagram - Elementi

Se un artifact è posto all’interno di un nodo il file sarà memorizzato proprio in tale nodo durante il funzionamento del sistema

Un artifact può essere indicato elencandoli all’interno del nodo come class box all’interno del nodo, indicando però l’icona documento o la parola <<artifact>>

È possibile etichettare sia i nodi che gli artifact per specificare svariate informazioni (produttore, SO)

Page 250: Corso UML

Deployment / Component Diagram

Spesso è utile integrare i due diagrammi L’integrazione rappresenta la distribuzione dei vari

componenti nei nodi del sistema