Politecnico di Milano
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language -2 2000 - Software Engineering Area
Notazione grafica Linguaggio semi-formale Standard OMG per la modellizzazione di sistemi Object-Oriented sin dal 1997
Unified Modeling Language -3 2000 - Software Engineering Area
Origine di UML
Unifica le notazioni e metodologie precedentemente elaborate dai suoi stessi autori quando operavano singolarmente
G. Booch J. Rumbaugh (OMT) I. Jacobson
Incorpora miglioramenti e suggerimenti provenienti da altre fonti e autori E il risultato della cooperazione di diverse persone ed organizzazioni
Digital, HP, IBM, Microsoft, Oracle, Rational, TI, Unisys, ...
Unified Modeling Language -4 2000 - Software Engineering Area
Situazione
UML 1.0 gennaio 97 Sottomissione a OMG gennaio 97 UML 1.1 settembre 97 UML 1.3 giugno 1999 Dove trovare informazioni costantemente aggiornate:
http://www.rational.com http://www.omg.org internet newsgroup comp.object
-5-
Caratteristiche
Non proprietario
chiunque lo pu usare chiunque pu sviluppare strumenti di supporto
Si considerato il problema dello scambio di dati tra tool diversi (XMI, CDIF, ...)
Unified Modeling Language -6 2000 - Software Engineering Area
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language -7 2000 - Software Engineering Area
I class diagram
Forniscono una vista strutturale (statica) del sistema in termini di
classi
attributi operazioni
-8-
Similitudini
Entit / Relazioni
E una estensione dei diagrammi Entit / Relazioni. Introduce classificazione, istanziazione e aggregazione. Definisce non solo gli attributi, ma anche le operazioni.
-9-
Classi
Una classe descrive un gruppo di oggetti con caratteristiche comuni
attributi comportamento
Gli oggetti (istanze) di una stessa classe differiscono tra loro per i valori degli attributi e per le relazioni che li legano ad altri oggetti.
- 10 -
File
Nome: string Dimensione: int Creazione: data Stampa
Disegno
Titolo: string Altezza: int Larghezza: int Stampa Ruota(gradi: int) - 11 2000 - Software Engineering Area
WINDOW
WINDOW {abstract}
+ size: Area =(100, 100) # visibility: Bool - xptr: Xwindow
+ display() - attachXWin(xwin:Xwindow)
E possibile in ogni momento decidere il livello di visibilit: Classi degli attributi Classi dei parametri e dei valori restituiti dai metodi di una classe Qualificatori di attributi ed operazioni
Unified Modeling Language - 12 2000 - Software Engineering Area
Classi: Implementazione
Esiste una corrispondenza tra la rappresentazione UML di una classe e limplementazione con un linguaggio O-O (Es. Java)
Fattura
+ importo: Real + data: Date + cliente: String - fatture_emesse : int = 0 Fattura() nome-operazione-1 (lista-argomenti-1): tipo-reso-1 nome-operazione-2 (lista-argomenti-2): tipo-reso-2
public class Fattura { public double importo; public Date data = new Date(); public String cliente; static private int fatture_emesse = 0; public Fattura() { fatture_emesse++; } // Altri metodi // ... }
- 13 -
Un oggetto unistanza di una classe Per rappresentare un oggetto si utilizza lo stesso simbolo usato per rappresentare le classi Il nome viene sottolineato per evidenziare che si tratta di un oggetto Analogamente a quanto accade per le classi possibile decidere il livello di visibilita per attributi e valori Classe
Order : Order
Istanze
MyOrder: Order number=0 amount=10000
MyOrder: Order
Unified Modeling Language - 14 -
Relazioni in UML
In un Class Diagram vengono rappresentate relazioni oltre alle classi:
Associazioni (semplici, aggregazioni, composizioni) Relazioni di generalizzazione Relazioni di dipendenza Relazioni di raffinamento
- 15 -
Associazioni
Una Associazione individua una connessione logica tra classi si traduce in una connessione fra oggetti istanze delle classi coinvolte nellassociazione Il concetto di associazione presente anche nella modellazione concettuale di database (Entity-Relationship)
Citt
Nome: string
CapoluogoDi
Regione
Nome: string
- 17 -
Linea
Nome: string 0..*
Punto
2 Nome: string
- 18 -
Auto
Modello: string
Ogni persona pu possedere zero o al pi un'auto (magari in compropriet) Ogni auto ha 1, 2, 3 o 5 (ma non 4) comproprietari 0..1 1
Auto Auto
... zero o un'auto ... esattamente un'auto ... zero o pi auto ... zero, da 3 a 5 oppure 7 auto e oltre
- 19 2000 - Software Engineering Area
0..*
Auto
0, 3..5, 7..*
Unified Modeling Language
Auto
Persona
Nome: string
Possiede
Auto
0..* Modello: string
Nota: Il class diagram indica che una persona pu possedere un numero qualsiasi di auto Quanti sono i proprietari di una singola auto? Il diagramma non fornisce questa informazione, dato che la cardinalit della partecipazione di Persona allassociazione risulta non specificata! Inoltre, dato che lassociazione navigabile in una sola direzione, data unauto non mai possibile risalire ai suoi (o al suo) proprietario
Unified Modeling Language - 20 2000 - Software Engineering Area
Associazioni n-arie
Alcune associazioni con cardinalit maggiore di due non sono riducibili a semplici associazioni binarie.
Persona UsaPer Progetto
Corretto
Linguaggio
Persona 0..*
2..*
LavoraIn
Progetto 0..*
Sbagliato
LavoraCon 0..* Linguaggio 1..* UsatoIn
Se ogni persona conosce C e C++ e ogni progetto usa entrambi i linguaggi, anche se so chi ha lavorato in ciascun progetto perdo la nozione di che linguaggio ha usato in quel progetto.
- 21 -
1..* Persona
Lavora per
0..1
Impiegato
Azienda
DatoreDiLavoro
- 22 -
contenente
0..1
Qui il ruolo serve a distinguere due associazioni diverse tra le stesse due classi
Unified Modeling Language - 23 -
Associazioni: Implementazione
In generale non esiste un mapping diretto su un costrutto di un linguaggio di programmazione Possono essere implementate introducendo degli attributi ad hoc che contengono dei riferimenti (o puntatori) alle istanze delle classi associate Il riferimento a pi istanze di una classe pu essere modellato con liste, array, etc. Direzionalit In fase di implementazione si pu decidere di codificarla solo in una delle due direzioni (con un puntatore), perdendo per cos la possibilit di percorrere il link nella direzione opposta! Nota: Una associazione va modellata come tale in UML!! Nascondere le associazioni nelle classi (ad es. come attributi puntatori) porta alla costruzione di diagrammi contenenti dipendenze nascoste difficili da gestire
Unified Modeling Language - 24 2000 - Software Engineering Area
0..*
contratto
Contratto
public class Compagnia_Assicurazioni { private Vector contratti; /* In alternativa si pu usare un array: Contratto[] contratti */ /* Metodi */ ... } public class Contratto { private Compagnia_Assicurazioni compagnia; /* Metodi */ ... }
Unified Modeling Language - 25 2000 - Software Engineering Area
Studente
Corso
Frequenza
anno_accademico profitto
Questa la notazione per indicare che una associazione possiede alcuni attributi
Non si tratta di attributi dello studente perch cambiano da corso a corso. N sono attributi del corso (ad es. ogni corso frequentato da studenti diversi in anni diversi)
- 26 2000 - Software Engineering Area
Modello consigliato
Lavoro Salario Incarico
Modello sconsigliato
- 27 -
Anno
*
Squadra
Stagione
*
Squadra
*
Portiere
Giocatore
Ruolino
Goal fatti Goal subiti Vinte Perse Pari
- 28 -
Associazioni esclusive
Talvolta unassociazione pu esistere verso una classe o verso unaltra (non verso entrambe)
- 29 -
Il qualificatore
E` un attributo dellassociazione
per associazioni uno a molti e molti a molti distingue un oggetto tra i molti pu abbassare la molteplicit
Show
Nome
Ticket
1 0..*
Senza qualificatore
Rappresentazione Data : Date Posto: SeatNumber
qualificatore
Ticket 0..1
Il qualificatore: significato
E un attributo il cui valore consente di selezionare un singolo oggetto tra tutte le istanze di oggetti interessati dalla stessa associazione
Persona
Senza qualificatore
Incarico
0..*
Con qualificatore
Unified Modeling Language - 31 -
1..*
2000 - Software Engineering Area
- 32 -
Italia: Repubblica
cittadino_di
- 33 -
Linea
Nome: string 0..*
Punto
Situazione da descrivere
S1: Linea P1: Punto P2: Punto S2: Linea P3: Punto S3: Linea P4: Punto Diagramma degli oggetti
Unified Modeling Language - 34 2000 - Software Engineering Area
P5: Punto
Aggregazione
E un caso particolare di associazione molto comune che significa: un insieme di".
Il rombo vuoto si legge " un insieme di" 1..* Essendo un tipo particolare di associazione sempre possibile specificare la cardinalit
Poligono
Punto
1..*
Punto
Poligono
- 35 -
Composizione
E un caso particolare di aggregazione che significa: composto da". i componenti non possono esistere senza il contenitore la propriet da parte del contenente esclusiva la molteplicit dal lato dellaggregato deve essere <=1
Pu essere qualsiasi per gli elementi componenti
Aggregazione e Composizione
Per evitare di riempire il diagramma di linee di aggregazione possibile usare un "albero
PC
1..4 HardDisk
1..2 FloppyDisk
1..4 ModuloRAM
1..2 CPU
0..1 Coprocessore
- 37 -
dipendente
indipendente
0..1
esclusiva
Propriet
condivisa
1..*
Varianti
1
propagazione
Unified Modeling Language
Ciclo di vita
Loggetto composito deve gestire la creazione e la distruzione delle parti Non c dipendenza esistenziale tra le parti nellassociazione
- 39 -
Associazioni riflessive
Una associazione o aggregazione si dice riflessiva ( o ricorsiva) se coinvolge oggetti della stessa classe una associazione ricorsiva indica che pi oggetti della stessa classe interagiscono e collaborano in qualche modo
Corso 0..* precedenza 0..*
Programma
- 40 -
Generalizzazione ed ereditariet
Generalizzazione = relazione "is-a"
Ogni istanza di una classe anche istanza di tutte le superclassi La relazione di generalizzazione pu essere utilizzata anche fra altri elementi del linguaggio UML (packages, use cases, etc.)
Ereditariet
Meccanismo attraverso il quale elementi specializzati incorporano la struttura ed il comportamento di elementi pi generali
- 41 -
Persona una generalizzazione di Uomo e di Donna Attributi, operazioni e associazioni vengono ereditati dalle sottoclassi generalizzazione
Studente - int matricola - String esami[ ] - int voti[ ] + Studente(String nome, String ind, int mat) + aggiungiEsame(String nome, int voto) + int mediaVoti()
- 43 -
Rettangolo
+ float diagonale()
Triangolo
VeicoloCommerciale
+ int pesoCarico + int pesoVuoto + boolean articolato
Autoveicolo
+ String targa + String modello + stampaLibretto()
VeicoloPrivato
+ int numeroPorte + int numeroPosti
- 44 -
Classi astratte
Una classe astratta una classe che non pu essere direttamente istanziata Pu (anzi deve) avere delle sottoclassi concrete e queste possono essere istanziate (se non sono astratte a loro volta)
Figura {abstract}
Classi astratte
Poligono {abstract} Cerchio
Classi concrete
Triangolo
Unified Modeling Language
Quadrato
- 45 2000 - Software Engineering Area
- 46 -
Gruppo_Figure 1
Poligono
Linea
* +lineaPart 1
Unified Modeling Language - 47 2000 - Software Engineering Area
Esempio (Implementazione)
public abstract class Figura { public abstract void draw(); protected Pos position; } public class Gruppo_Figure extends Figura { /* Una specializzazione di Vector contenente solo istanze di Figura */ public FiguraVector figuraPart; public void draw() { for(int i=0; i< figuraPart.size(), i++) figuraPart.get(i).draw(); } }
public class Poligono extends Figura { public LineaVector lineaPart; public void draw() { for(int i=0; i< figuraPart.size(), i++) lineaPart.get(i).draw(); }; }
- 48 -
Le associazioni i cui legami sono calcolabili in base ad altri legami o ai valori degli attributi sono identificati da una barra trasversale
Azienda /impiega
Gli attributi i cui valori sono calcolati in base agli altri sono identificati da una barra ( / )
Unified Modeling Language
1 1..* Divisione 1
- 49 -
lavora_per 1..*
Persona
Impiegato Stipendio
Capo
Questo vincolo pi che sui valori un vincolo sulla evoluzione dei valori nel tempo
Ordine Priorit
{la Priorit pu solo crescere}
Una freccia puntinata collega le associazioni soggette al vincolo e una etichetta fra parentesi graffe indica quale sia il vincolo
Unified Modeling Language - 52 2000 - Software Engineering Area
impiegato 1..*
0..1 Azienda
Persona.datore_di_lavoro = Persona.capo.datore_di_lavoro
- 53 -
Interfaccia
Linterfaccia descrive il comportamento esterno di una classe. applicabile anche ad altri elementi, oltre le classi. Evidenzia ci che viene fornito dalla classe. Pu servire a indicare linsieme minimo di servizi richiesti da una classe dipendente.
Hashable String ... IsEqual(String):Boolean Hash():Integer 0..* HashTable
<<use>>
Realization Relationship
Unified Modeling Language
Stereotipi
Rappresentano uno dei meccanismi attraverso i quali possibile estendere la notazione UML Vengono utilizzati per specializzare la semantica di elementi predefiniti in UML ( classi, associazioni, etc.) uno stereotipo rappresenta una sottoclasse di un elemento esistente (classe, associazione, package, use case ) ed individua un particolare uso per lelemento un elemento stereotipato pu essere utilizzato in tutte le situazioni in cui pu essere usato lelemento originale Uno stereotipo pu essere descritto in modo testuale (<<StereotypeName>>) o grafico
- 55 -
Stereotipi: Esempi
Alcuni stereotipi standard per le classi
<<entity>>
EntityClass
Entity
Classe passiva: le sue istanze non sono mai iniziatori di interazioni.
<<control>>
ControlClass
Control
Classe le cui istanze controllano le interazioni fra collezioni di altri oggetti.
<<boundary>>
BoundaryClass
Boundary
Classe posta alla periferia del sistema (comunque allinterno del sistema). Svolge il ruolo di Intermediario tra gli attori e le altre parti del sistema
- 56 2000 - Software Engineering Area
Dipendenza
Relazione che indica una dipendenza di varia natura tra elementi di un modello UML
Si pu avere dipendenza tra classi, packages, use cases, etc.
Individua una connessione semantica tra due elementi, uno dei quali dipendente dallaltro
Una modifica nellelemento indipendente ha effetti su quello dipendente
- 57 -
- 58 -
Dipendenza: Esempio
Classe C
- 59 -
<<calls>>
Indica che un metodo di una classe chiama un metodo di unaltra classe
<<friend>>
Indica la possibilit di accesso al contenuto di unaltra classe indipendentemente dalla visibilit prevista dalla classe target
<<usage>>
Indica che un elemento richiede la presenza di un altro per il suo corretto funzionamento (comprende <<calls>>, <<instantiates>>)
- 60 -
Costrutti di raggruppamento
Modulo: raggruppa classi, associazioni e generalizzazioni
fornisce una vista del problema diminuisce la complessit del problema
- 61 -
Packages
Forniscono un costrutto di raggruppamento per gli elementi definiti in un modello UML A volte si utilizza il termine subsystem per indicare un package E possibile definire delle relazioni (tipicamente di dipendenza, raffinamento, generalizzazione) tra packages diversi
A
A B A1 A2 B1
- 62 -
Dipendenza
Esiste almeno una relazione di dipendenza tra elementi appartenenti a package diversi
Unified Modeling Language - 63 2000 - Software Engineering Area
- 64 -
<<import>> e <<access>>
Dipendenza con stereotipo <<access>> Gli elementi contenuti nel package target possono essere referenziati dagli elementi contenuti nel package client (o dai sub-package in esso contenuti) Una dipendenza di tipo <<access>> non modifica il namespace del client e non crea riferimenti di alcun tipo
Garantisce solo la possibilit di creare refrences
Dipendenza con stereotipo <<import>> I nomi degli elementi presenti nel namespace del package target vengono aggiunti al namespace del package client (con le stesse regole di visibilit valide per <<access>>) Se ci sono conflitti fra i nomi importati e nomi gi presenti nel namespace del client, il modello mal formato (ill formed)
Unified Modeling Language - 65 2000 - Software Engineering Area
- 66 -
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 67 2000 - Software Engineering Area
Interaction diagram e comportamento dinamico del sistema Sono diagrammi che descrivono come gruppi di oggetti collaborano nel mostrare un certo comportamento. Tipicamente rappresentano il comportamento di uno specifico use case
in termini di specifici oggetti e messaggi scambiati
- 68 -
Sequence diagram
Mostra una interazione tra oggetti come sequenza temporale di azioni.
oggetti partecipanti sequenze (temporali) di messaggi scambiati non si vedono le associazioni tra oggetti
La forma generica mostra tutte le possibili sequenze La forma distanza mostra solo una sequenza specifica (consistente con quella generica)
- 69 -
Sequence diagram
In ascissa sono disposti vari oggetti (istanze specifiche) Lordinata rappresenta il tempo
in genere la scala non importa
interessa solo la sequenza cio il rapporto di precedenza tra eventi, non la loro distanza.
- 70 -
c c
Esempio 1
Caller Exchange Receiver
a b c
...
This call is routed d through the network route
ringing tone
stop tone
stop ringing
- 72 -
Esempio 2: testo
The physician powers up the ECG machine. The physician sets up for four waveforms at 25 mm/sec sweep speed. The physician sets the bradycardia alarm at 40 bpm and the tachycardia alarm at 110 bpm. The patient undergoes an asystole event. The system detects the asystole and raises the alarm. The physician provides therapy to correct the problem (external to the system boundary). The system detects the restarted heart rate to be 45 bpm and lowers the alarm. ...
Unified Modeling Language - 73 2000 - Software Engineering Area
physician
waveform controller
alarm manager
alarm display
patient
Rate=50 Rate=47
Rate=0 raise bradycardia alarm alarm text Rate=45 lower bradycardia alarm
clear alarm
- 74 -
Agente
Obj4:C4
op()
Obj2:C2
doit(z) doit(w)
more()
- 76 -
Obj4:C4
Distruzione delloggetto
Unified Modeling Language - 77 -
- 78 -
Collaboration diagram
Collaboration: interazione tra parti di un sistema per un certo scopo
si isolano parti di sistema e si trascurano le interazioni non essenziali allo scopo
Linterazione descritta in rapporto agli oggetti e alle relazioni che li legano. Non c una dimensione precisa per il tempo
le sequenze temporali sono descrivibili numerando i messaggi in modo progressivo
- 79 -
Esempio di interazione
oggetto messaggio
: OrderEntryWindow
auto-delega
1: prepare() : Order
5: NeedToReorder()
: DeliveryItem
: ReorderItem
- 80 -
1: prepare() : Order
Ad esempio,Order::prepare() chiama check, remove e new(), remove a sua volta chiama NeedToReorder e new.
1.1.2.1: NeedToReorder()
: DeliveryItem
Unified Modeling Language - 81 -
: ReorderItem
2000 - Software Engineering Area
Oggetti attivi
{local} job CurrentJob
: TransferJob
job
: FactoryScheduler
1: start(job) A2,B2 / 2: completed(job)
: FactoryManager
: Factory JobManager
1/B1: start(job) B2: completed(job) A2: completed(job) 1/A1: start(job)
: Robot
Unified Modeling Language - 82 -
: Oven
2000 - Software Engineering Area
I collaboration diagram
indicano la connessione tra oggetti NB: non proprio statica: ad es. tra Stock e ReorderItem la relazione si crea perch Stock crea una nuova istanza di ReorderItem.
- 83 -
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 84 2000 - Software Engineering Area
State diagram
Rappresentano il comportamento di una classe di oggetti, descrivendone i possibili stati e la reazione ad eventi esterni, in termini di cambiamenti di stato e/o azioni svolte. I diagrammi di stato danno un'astrazione di stati, eventi e transizioni Gli stati dei diversi oggetti evolvono concettualmente in parallelo (sincronizzati dagli eventi comuni).
- 85 -
State diagram
Similitudini
Automi a Stati Finiti
Il modello dinamico una estensione degli automi a stati finiti. Unifica il modello "output nelle transizioni" e "output negli stati (macchine di Moore e di Mealy). Introduce una nidificazione negli stati.
Reti di Petri
Permette di modellare la concorrenza. Permette di modellare gli scambi di eventi fra molti automi concorrenti.
- 88 -
Se due eventi sono legati da relazione causa/effetto sono ordinati nel tempo. Pu causare nell'oggetto destinatario un cambio di valore, di stato o la produzione di ulteriori eventi. Si intende che un evento ha una individualit ben definita
raggruppabili in classi di eventi (con attributi caratterizzanti)
La risposta ad uno stimolo dipende dallo stato, e pu implicare una transizione di stato
esempio del versamento su CC
Unified Modeling Language - 89 2000 - Software Engineering Area
Esempi
Classe di eventi Attributi della classe di eventi
ParteVoloAereo(Alitalia, ParteVoloAereo(Alitalia,AZ521, AZ521,Milano) Milano) MouseButtonDown(<124,234>, 0xFF) MouseButtonDown(<124,234>, 0xFF) ParteVoloAereo(Quantas, ParteVoloAereo(Quantas,Q1245, Q1245,Sydney) Sydney) ParteVoloAereo(TWA, ParteVoloAereo(TWA,TW874, TW874,Roma) Roma) MouseButtonDown(<078,230>, MouseButtonDown(<078,230>,0xA0) 0xA0) ParteVoloAereo(Alitalia, ParteVoloAereo(Alitalia,AZ520, AZ520,Roma) Roma) MouseButtonDown(<120,007>, 0x0F) MouseButtonDown(<120,007>, 0x0F)
Eventi e relativi valori
Unified Modeling Language - 90 2000 - Software Engineering Area
- 92 -
- 93 -
Lo scenario
Uno scenario una sequenza di eventi occorsi durante una specifica esecuzione del sistema. D unidea dellordine degli eventi talune coppie indicano un ordinamento necessario, altre un ordine casuale
IlIlchiamante chiamantealza alzala lacornetta cornetta Inizia Iniziaililtono tonopronto pronto IlIlchiamante chiamantecompone componeuno uno Smette Smetteililtono tonopronto pronto IlIlchiamante chiamantecompone componequattro quattro IlIlchiamante compone quattro chiamante compone quattro IlIlchiamante chiamantecompone componeuno uno IlIlchiamante chiamantecompone componeuno uno ... ... IlIltelefono telefonochiamato chiamatoinizia iniziaa asquillare squillare Inizia il tono di libero Inizia il tono di libero IlIltelefono telefonochiamato chiamatoviene vienesganciato sganciato IlIltelefono telefonochiamato chiamatosmette smettedi disquillare squillare Smette Smetteililtono tonodi dilibero libero ... ...
- 94 -
InizioSquilli
Ad esempio, in uno scenario il chiamante riaggancia per primo, in un altro scenario il ricevente riaggancia: occorre rappresentare la reazione delloggetto ad entrambi questi eventi.
- 96 -
Chiamante.Aggancia
Inattivo
Chiamante.Aggancia
Chiamante.Sgancia T Tono Tono Pronto TimeOut Compone(n) Compone(n) Compos. Numero Tono Occupato Occupato T
Connesso
Ricevente.Sgancia
- 97 -
Inizio
VinceIlNero
Patta
AlNero Muovere
VinceIlBianco
- 98 -
Condizioni
Sono funzioni booleane sui valori degli oggetti. Sono valide in un intervallo di tempo Sono utili come guardie delle transizioni di stato (non basta l'evento, deve essere verificata la condizione).
Evento
Condizione
Pronto
Verde [incrocio.stato=libero]
InCorsa
- 99 -
Operazioni
Durante la loro vita gli oggetti eseguono operazioni.
associate allo stato o alle transizioni
- 100 -
Operazioni
Azioni Sono operazioni che hanno durata istantanea (rispetto alla granularit del tempo). Tipicamente produzione di eventi. Sono associate alle transizioni di stato oppure all'ingresso o all'uscita da uno stato. Attivit Sono operazioni con durata significativa. Sono associate ad uno stato
Continue o sequenziali
Transizioni automatiche Se uno stato ha una attivit associata e una freccia senza eventi esce da questo, la freccia indica la transizione svolta automaticamente al completamento della attivit.
- 101 -
Notazione generale
StatoA In caso di ricezione dell'evento1 nello stato A viene eseguito azione3 senza cambio di stato (e quindi senza azioni di entry ed exit)
attributo1: tipo1 = val.iniziale attributo2: tipo2 = val.iniziale do: attivit1 entry / azione1 exit / azione2 event1 / azione3 event2 / azione4
Transizione causata dall'evento evento3 sotto condizione condizione1. Vengono eseguite azione2 e azione5
event3 [condizione1] / azione5
Pseudo transizione causata dall'evento evento4 nell'ordine vengono eseguiti: azione2, azione6, azione1
- 102 2000 - Software Engineering Area
No object selected
- 103 -
Invio di eventi
Gli eventi possono avere attributi Il destinatario pu essere unico o un intero set di oggetti. Tutti gli oggetti riceventi che riconoscono l'evento possono accettarlo e reagire in parallelo. Attenzione alle corse critiche
- 104 -
Il segnale accende o spegne Il VCR a seconda dello stato corrente power button /send VCR.togglePower
- 105 -
Folle Questa transizione, risposta all'evento ferma, viene ereditata da tutti i sottostati di MarciaAvanti Cambio Automatico
levaF levaN levaN
RetroMarcia
MarciaAvanti
ferma accelera accelera
Prima
decelera
Seconda
decelera
Terza
- 107 -
- 108 -
Login Read name entry: name prompt Name read Read password entry: password prompt Password read Verification Incorrect name or password
Connection
- 109 -
Aggregazione e concorrenza
Un modello descrive un insieme di oggetti concorrenti, ciascuno col suo stato e col suo diagramma a stati. Lo stato dell'intero sistema dato dal complesso degli stati degli oggetti componenti (il cui numero pu anche cambiare dinamicamente). Il diagrammi a stati di un oggetto complesso l'aggregazione dei diagrammi di ciascun componente. L'aggregazione la "and-relationship": lo stato complessivo (aggregato) dato dallunione degli stati dei vari diagrammi.
Unified Modeling Language - 110 2000 - Software Engineering Area
scintilla
- 111 -
Aggregazione e concorrenza
Interazioni tra oggetti
Gli stati dei componenti possono interagire (la guardia che regola le transizioni di un oggetto dipende dallo stato di un altro oggetto).
- 112 -
Sottostati concorrenti
- 113 -
Distratto Naturalmente Attento do: appunti noia do: sbadiglia richiamo Forzatamente Attento do: ghirigori
do: gratta
richiamo
Transazione complessa
Unified Modeling Language - 114 -
Sincronizzazione
2000 - Software Engineering Area
Suggerimenti
Rappresentare solo classi con dinamica significativa Usare "scenari" e "tracce degli eventi" Solo attributi ed eventi rilevanti Livello di astrazione adeguato
granularit di eventi e stati adatta allapplicazione
Distinguere tra attivit ed azioni Usare diagrammi strutturati dove appropriato Verificare la consistenza incrociata
attenzione agli eventi condivisi
Diagrammi delle sottoclassi indipendenti da quelli delle superclassi Occhio alle corse critiche
Unified Modeling Language - 115 2000 - Software Engineering Area
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 116 2000 - Software Engineering Area
- 117 -
Un Activity Graph
- 118 -
Swimlanes (corsie)
Indicano come sono distribuite le responsabilit delle diverse operazioni in una classe (unit organizzative) ogni corsia pu essere implementata da uno o pi oggetti
- 119 -
- 120 -
- 121 -
Stereotipi opzionali
Rappresentano esplicitamente linvio e la ricezione di segnali
eventi differiti
- 122 -
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 123 2000 - Software Engineering Area
Implementation diagram
Component diagram
mostrano la struttura del codice
Deployment diagram
mostrano la struttura del sistema run-time
- 124 -
Componenti
- 125 -
Component diagram
Mostra le dipendenze tra componenti software
sorgenti, binari, eseguibili esistenti a compile-time, a link-time, a run-time
- 126 -
Component diagram
dipendenze
- 127 -
Deployment diagram
Mostrano la configurazione a run-time degli elementi attivi a run-time (e dei componenti, processi e oggetti che vi vivono). Istanze di componenti software rappresentano le attivazioni a run-time delle unit di codice. Componenti che non esistono a run-time non appaiono in questi diagrammi.
- 128 -
Deployment diagram
Un grafo nodi = risorsa computazionale
possono contenere istanze di componenti e/o oggetti
archi = comunicazione
tipicamente indicano una relazione di utilizzo
- 129 -
- 130 -
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 131 2000 - Software Engineering Area
Use Case
Descrive una particolare funzionalit fornita dal sistema (= un particolare uso) o da una sua parte dal punto di vista dellutilizzatore del sistema Mostra le entit coinvolte nella fornitura della funzionalit (attori e sistema) Uno use case rappresenta una funzione visibile dallutente (un servizio offerto dal sottosistema considerato ai suoi utilizzatori) pu avere granularit diverse rappresenta un obiettivo specifico (discreto, atomico) per lutente Nei casi pi semplici, gli use case sono identificati parlando con lutente e discutendo dellutilizzo che si intende fare del sistema.
Unified Modeling Language - 132 2000 - Software Engineering Area
- 133 -
Acquisizione Ordine
Attore
Extension Points:
Richieste Addizionali: Dopo la creazione dellordine
Venditore
Livello di dettaglio
Gli use case sono per loro natura scevri di dettagli
use case = panorama
I dettagli possono essere sempre aggiunti dopo. Comunque importante esplorare subito le eventuali ramificazioni. Certi dettagli possono nascondere importanti funzionalit del sistema, con rilevanti implicazioni architetturali.
- 135 -
- 136 -
Actor (attori)
Attore = Entit esterna al sistema che interagisce con il sistema assumendo un particolare ruolo
non c necessariamente corrispondenza tra attori e individui precisi possono esserci diversi utenti con lo stesso ruolo, e diversi ruoli possono essere ricoperti dallo stesso utente possono esserci diversi attori che esercitano lo stesso use case, e diversi use case possono essere esercitati dallo stesso attore non detto che un attore corrisponda a uno o pi persone: pu essere un sistema esterno
nonostante la rappresentazione iconografica
- 137 -
- 138 -
Quali attori?
Quando gli attori sono sistemi esterni, non sempre facile capire quando essi vadano considerati.
interazioni esterne iniziatori di interazioni richieste di funzionalit dallesterno utenti indiretti
Criterio guida:
gli use case devono indicare funzionalit fruibili dallesterno ( ai morsetti del sottosistema considerato)
- 139 -
- 140 -
- 141 -
Ogni ruolo pu contribuire alla definizione dello use case, tuttavia la cosa fondamentale individuare lo use case e capirne il significato essenziale.
- 142 -
Venditore
Generalizzazione: Il supervisore pu partecipare a tutti gli use cases cui partecipa il Venditore
Attribuzione credito
Supervisore
- 143 -
- 144 -
Evidenziano le relazioni esistenti tra attori e use cases (relativamente al sottosistema considerato)
- 145 -
Acquisizione Ordine
Attribuzione credito
Supervisore
Evasione ordine
Addetto al magazzino
- 146 -
- 147 -
Scenari
Uno scenario individua e descrive esplicitamente una particolare istanza di uno use case, ovvero una delle possibili varianti
Ad es. un ordine pu essere elaborato regolarmente, o pu mancare la merce ordinata o pu mancare il credito nei confronti dellordinante, Ciascuno di questi casi uno scenario specifico dello use case gestione ordini.
Ogni Use Case caratterizzato da uno scenario base (sequenza tipica di eventi) e da un numero, imprecisato a priori, di varianti Le varianti possono essere aggiunte nei successivi raffinamenti dello use case
Unified Modeling Language - 148 2000 - Software Engineering Area
- 149 -
E opportuno corredare la descrizione di ogni scenario con Precondizioni: descrizione di ci che deve essere vero nel sistema (o nel sottosistema considerato) affinch lo scenario possa avere inizio Postcondizioni: descrizione di ci che vero nel sistema (o nel sottosistema) al termine dello svolgimento dello scenario
Unified Modeling Language - 150 2000 - Software Engineering Area
- 151 -
RealizationParticipant2
RealizationParticipant1
UseCase
(from Use Case View)
UseCase Realization
(from Use Case View)
- 152 -
Tuttavia, un livello di dettaglio eccessivo pu rendere troppo complessa la descrizione, col rischio di perdere di vista il quadro complessivo e le priorit.
- 153 -
Inclusione
Estensione
<<include>> Il comportamento individuato dallo use case target viene incluso nella sequenza di azioni svolta dalle istanze dello use case base Rel. Dipendenza <<extend>> Le funzionalit individuate da uno use case base vengono estese, al verificarsi di opportune condizioni, con funzionalit definite in un altro use case
Nota: E possibile definire relazioni soltanto tra use cases associati alla stessa entit semantica (intero sistema, sottosistema, package, classe)
Unified Modeling Language - 154 2000 - Software Engineering Area
Relazione di generalizzazione
Lo use case figlio
eredita tutti gli attributi, scenari, extension points definiti nello use case padre partecipa e tutte le relazioni in cui coinvolto lo use case padre Lo use case figlio pu prevedere nuovi scenari non previsti nello use case padre o ridefinire scenari presenti nello use case padre
- 155 -
Relazione <<include>>
Esistono degli use case che rappresentano attivit ricorrenti, condivise da diversi use case pi complessi. Anzich ripetere in ogni use case la descrizione dellattivit comune, la si mette a fattor comune, indicando che questa viene inclusa negli use case pi complessi. La relazione di inclusione di uno use case pu essere assimilata alla chiamata di subroutine in un linguaggio di programmazione. In UML 1.1 lo stereotipo utilizzato era <<uses>>
- 156 -
- 158 -
Extension points
Vengono utilizzati nelle relazioni <<extend>> Individuano in uno use case i possibili punti in corrispondenza dei quali lo use case stesso pu essere esteso Esempio:
Acquisizione Ordine
Extension Points:
Richieste Addizionali: Dopo la creazione dellordine
- 159 -
Relazione <<extend>>
Connette uno uno use case estensione ad uno use case base e specifica in che modo e sotto quali condizioni il comportamento individuato dallo use case estensione deve essere incorporato nello use case base La relazione di estensione richiede lindicazione di una condizione che deve essere verificata affinch lestensione possa avere luogo il riferimento ad uno o pi extension points definiti nello use case che viene esteso Lo use case estensione pu essere un semplice frammento di use case (non autonomamente istanziabile) in generale consiste semplicemente in uno pi segmenti che descrivono sequenze di azioni addizionali che modificano in modo incrementale il comportamento dello use case base
ciascun segmento nello use case estensione pu essere Unified Modeling inserito Language in un punto distinto - 160 - dello use case 2000 - Software Engineering Area base
- 161 -
Esempi
A
Extension Points:
B
Extension Points:
<<extend>> (x)
C
<<extend>> (y)
Place Order
Customer
Extension Points:
P1: After order creation <<include>> <<include>>
<<include>>
Indice
Introduzione Caratteristiche di UML Diagrammi UML Class e Object Diagram Interaction Diagram
Sequence Diagram Collaboration Diagram
Statechart Diagram Activity Diagram Component Diagram Deployment Diagram Use Case Diagram Alcuni strumenti CASE di supporto
Unified Modeling Language - 163 2000 - Software Engineering Area
Freeware
Argo/UML
- 164 -
Rational Rose
Rose originariamente concepito per supportare la metodologia di Booch, si sta (lentamente) convertendo ad UML. non del tutto consistente con la definizione UML/OMG, tuttavia un ottimo strumento Rational Software Corporation www.rational.com produce un insieme notevolissimo di strumenti CASE Versioni demo disponibili demo 4.0 (limiti sul numero di classi, stati, use case, ecc.) demo 98 e 98i (limite temporale di utilizzo) demo 2000 (limiti temporali di utilizzo)
- 165 -
Telelogic
http://www.telelogic.com
- 166 -
Paradigm plus
Paradigm plus
uno dei tool pi diffusi supporta UML, OMT, Fusion, Booch, Martin/Odell, Shlaer/Mellor, Coad/Yourdon
Demo disponibili
versione di valutazione utilizzabile per 30 gg.
- 167 -
Owis Software
www.otw.de
Demo disponibili
Disponibile una Private Edition Free e non timelimited
- 168 -
Object Domain
Object Domain
nato come tool shareware si poi trasformato in un prodotto commerciale
Versioni disponibili
disponibile la versione 3.0 (beta) anche in valutazione per 30 gg. scritta completamente in Java la versione 1.19 (shareware) ancora disponibile in valutazione per 30 gg.
- 169 -
Argo/UML
Argo/UML
Tool freeware Open Source: chiunque pu collaborare con idee, bugreports, codice ancora incompleto e instabile (tenendo conto che si tratta di una versione beta): supporta class, use case, state, activity, collaboration diagrams
Tigris
http://argouml.tigris.org/
Versioni disponibili
attualmente disponibile la versione 0.8 (beta) scritta completamente in Java
Unified Modeling Language - 170 2000 - Software Engineering Area
- 171 -
- 172 -
Bibliografia: Libri
Terry Quatrani, Visual Modeling with Rational Rose and UML, Addison-Wesley Unified Modeling Language User Guide Unified Modeling Language Reference Manual H. Eriksson, M. Penker, UML Toolkit, J. Wiley M. Fowler, UML distilled, Addison-Wesley
- 173 -
URL
Rational http://www.rational.com Rational UML Resource Center http://www.rational.com/uml/index.html Object Management Group http://www.omg.org
- 174 -