Title: Real World UML
1Real World UML
- Omid Ehsani
- Senior Consultant and Trainer
- oehsani_at_lightcode.net
2Sponsor
3Parliamo di
- Limportanza della modellazione
- UML in 21 minuti
- Design Pattern e UML
- Unapplicazione reale
- Agile UML!
4Limportanza della modellazione
5Limportanza della modellazione
- Spesso i team di sviluppo non fanno progettazione
- Molti sviluppano applicazioni come costruirebbero
la cuccia del cane - Manca la definizione di unarchitettura
- Dai requisiti si passa subito alla codifica
- Si lavora più tempo e si scrive più codice
Software is often treated as a SOFT
science Modeling helps make it a HARD science
6Limportanza della modellazione
- Costruiamo modelli (o blueprints) per comprendere
meglio il sistema che stiamo sviluppando - La modellazione
- Ci aiuta a visualizzare il sistema come dovrebbe
essere - Ci permette di specificare la struttura e il
comportamento del sistema. - Ci fornisce una linea guida nella costruzione del
sistema - Documenta le decisioni che prendiamo
- Scompone il problema
- Controlla la complessità
- E un punto di partenza
- Costruiamo modelli dei sistemi complessi perchè
non siamo in grado di comprendere tali sistemi
nella loro interezza
7Cosa è UML?
- UML è un linguaggio per ...
- Visualizzare
- Specificare
- Costruire
- Documentare
- ... gli artefatti di un sistema software
UML è il blueprint per la costruzione del
software
8Cosa è UML?
- UML è Il Linguaggio per lanalisi e la
progettazione Object Oriented
9Contributi allUML
Booch
Rumbaugh
Jacobson
Fusion
Fusion
Meyer
Meyer
Operation descriptions,
Operation descriptions,
Before and after
Before and after
Message numbering
Message numbering
conditions
conditions
Embley
Embley
Harel
Harel
Singleton classes,
Singleton classes,
State charts
State charts
High
-
level view
High
-
level view
Gamma, et.al
Gamma, et.al
Wirfs
-
Brock
Wirfs
-
Brock
Frameworks, patterns,
Frameworks, patterns,
Responsibilities
Responsibilities
Odell
Odell
notes
notes
Shlaer
-
Mellor
Shlaer
-
Mellor
Classification
Classification
Object Lifecycles
Object Lifecycles
10Breve storia di UML
- Inizio progetto ottobre 1994
- Proposta a OMG (Object Management Group) gennaio
1997 - Accettazione, da parte di OMG, della versione
1.1 novembre 1997 - Attualmente UML versione 1.5
- Alle porte UML 2.0
11Panoramica su UML
- UML è un linguaggio
- Un linguaggio fornisce un vocabolario e le regole
per combinare le parole allo scopo di comunicare - Non è una metodologia, ma è utilizzato da molti
processi di sviluppo del software
12Panoramica su UML
- UML è un linguaggio per visualizzare
- La visualizzazione facilita la comunicazione e
favorisce un adeguato livello di astrazione - Unimmagine vale mille parole
13Panoramica su UML
- UML è un linguaggio per stendere specifiche
- Stendere specifiche significa costruire modelli
che siano precisi, non ambigui e completi - I simboli UML hanno una sintassi e una semantica
ben definite
14Panoramica su UML
- UML è un linguaggio per costruire
- UML non è un ambiente di programmazione visuale
ma i suoi modelli sono nati per essere tradotti
in linguaggi Object Oriented
15Panoramica su UML
- UML è un linguaggio per documentare
- le specifiche funzionali
- larchitettura generale
- la scomposizione strutturale del sistema
- le interazioni tra i componenti
- la distribuzione e il deployment
16UML in 21 minuti...
- I modelli di UML sono espressi attraverso una
serie di diagrammi - Esistono diverse tipologie di diagrammi
- Ogni tipologia coglie un aspetto diverso del
sistema
17I Diagrammi di UML
- Use Case Diagram
- Sequence Diagram
- Collaboration Diagram
- Statechart (STD) Diagram
- Activity Diagram
- Component Diagram
- Deployment Diagram
- Class Diagram
18Use Cases Diagram
- Un sistema risponde ai bisogni dei suoi utenti
- Questi bisogni sono catturati come Use Cases
- Uno Use Case è un modo di usare il sistema
- Uno Use Case è uno schema di comportamento
esibito dal sistema - La collezione degli Use Cases specifica tutti i
modi di usare il sistema
19Actors
- Un Actor è qualcuno o qualcosa che deve
interagire con il sistema - Gli Actors rappresentano qualunque cosa che deve
scambiare informazioni con il sistema
20Actors e Use Cases
Perform Card Transaction
Process Customer Bill
Retail Institution
Reconcile Transactions
Customer
Sponsoring Financial Institution
Manage Customer Account
21Actors e Use Cases
22Realizziamo gli Use Cases
- Gli Interaction Diagrams permettono di ottenere
il modello di come interagiscono Actors e oggetti
per realizzare uno Use Case - Sono realizzati tramite due diverse, e
complementari, modalità - i Collaboration Diagrams
- i Sequence Diagrams
23Sequence Diagrams
- Un Sequence Diagram mette in evidenza
- la sequenza temporale dei messaggi
- la lifetime degli oggetti
- il focus of control
24Sequence Diagrams
sCaller
Switch
rCaller
cConversation
25Collaboration Diagrams
- Un Collaboration Diagram mette in evidenza
- lorganizzazione degli oggetti che partecipano in
una interazione - la lifetime degli oggetti
- il focus of control
26Collaboration Diagrams
routeCall(s,n)
1 liftReceiver
3dialDigit(d)
Switch
sCaller
2 setDialTone()
8 connect(r,s)
10 connect(r)
5 create
6 ring()
9 connect(s)
rCaller
cConversation
7 liftReceiver
27Statechart (STD) Diagram
- Una macchina a stati è usata per ottenere il
modello di un singolo oggetto - Una macchina a stati descrive la sequenza degli
stati attraverso i quali transita un oggetto
durante il suo ciclo di vita in risposta a
eventi, assieme alle sue risposte a tali eventi - Il diagramma che descrive la macchina a stati è
detto State Transition Diagram (STD)
28Statechart (STD) Diagram
- Uno stato è una condizione o situazione durante
la vita di un oggetto nella quale loggetto
soddisfa qualche condizione, esegue qualche
attività, o aspetta per qualche evento - Un evento è la specifica di un qualcosa la cui
durata è trascurabile rispetto alla durata del
ciclo di vita delloggetto - Una transizione è una relazione fra due stati che
indica che un oggetto passerà dalluno allaltro
come effetto di un evento o quando una specifica
condizione è verificata - Una azione è una operazione atomica il cui
effetto è o un cambiamento di stato o il ritorno
di un valore
29STD per una Linea Telefonica
30STD per una Linea Telefonica
31STD per una Linea Telefonica
32STD per una Linea Telefonica
33STD per una Linea Telefonica
34STD per una Linea Telefonica
on-hook
off-hook
on-hook
on-hook
time-out
on-hook
digit(n)
invalid number
digit(n)
valid number
message done
number busy
routed
on-hook
called phone answers
on hook/disconnect line
called phone hangs up
on-hook
35STD per la partita degli Scacchi
36Component Diagram
- Un Component Diagram mostra un insieme di
componenti e le loro relazioni - Un Component Diagram comunemente contiene
- Componenti
- Interfacce
- Relazioni di dipendenza, generalizzazione,
associazione e realizzazione
37Un Component Diagram
find.html
index.html
find.exe
hyperlink
dbacs.dll
nateng.dll
38Deployment Diagram
- Un deployment diagram è un diagramma che
documenta la configurazione al run time dei nodi
che partecipano al processo e i componenti che
vivono in essi - Tipicamente un deployment diagram è usato per
avere il modello di - Sistemi embedded
- Client/server
- Sistemi distribuiti
39Il Modello di un Sistema Client/Server
servers
clients
2..
4..
processor caching server Deploys
processor server Deploys
http.exe rting.exe
dbadmin.exe tktmstr.exe logexec.exe
40Il Modello di un Sistema Distribuito
Internet
41Class Diagrams
- Un Class Diagram è un diagramma che mostra un
insieme di classi, interfacce, e collaborazioni e
le loro dipendenze - Un Class Diagram è un modello statico del sistema
utilizzato per - ottenere un dizionario del sistema
- avere un modello di collaborazione fra gli
oggetti (p.e. per specificare quali oggetti
partecipano a una transazione) - avere un modello logico dello schema del database
42Class Diagram
Company
Headquarters
Office
Department
PersonelRecord
Person
ContactInformation
43Class Diagram
Company
1
1..
1..
Headquarters
Location
0..1
manager
member
subset
1..
1
ISecureInformation
44Packages
- Un Package è un meccanismo di uso generale per
- organizzare in gruppi gli elementi che sono
semanticamente simili o funzionalmente correlati - I package possono essere utilizzati oer creare
gerarchie di contenitori (come i folder per il
file-system)
45Packages e Servizi
46Design Pattern e UML
- Impariamo a leggere i Design Pattern
- Per capire meglio i Pattern li visualizziamo
con diagrammi UML - Anche quando conosciamo un Pattern non sempre ne
ricordiamo la struttura, un colpo docchio al
Class Diagram ci rinfresca la memoria - I Pattern costituiscono un vocabolario comune per
la comunicazione dei concetti - Anche lUML è un vocabolario comune, ma è
disegnato invece che scritto o parlato
47Esempi di Design Pattern
48Esempi di Design Pattern
49Esempi di Design Pattern
50Unapplicazione reale
- Utilizziamo lUML per documentare lapplicazione
Northwind - Manutenere i diagrammi UML in sincronia con il
codice sorgente non è una sfida da poco - Molti tool di modellazione UML fanno il
Reverse-Engineering, il Forward-Engineering e il
Round-Trip modeling
51DEMO
- Reverse Engineering di Northwind
- Individuazione dei pattern sui diagrammi UML
- Progettazione e realizzazione di un DataProvider
aggiuntivo
52Agile UML!
- Non correte il rischio di over-designing
- Utilizzate UML con dosi sostenibili
- Trovate il giusto livello di dettaglio da
applicare ai diagrammi - Dal punto di vista di artefatti
UMLDocumentazione - Ricordatevi del manifesto
- Software funzionante invece che documentazione
esaustiva
53Agile UML!
- Non diventate schiavi dei vostri diagrammi
- Molti diagrammi possono servire per pensare
prima di scrivere, poi possono essere gettati
via! - Lobiettivo finale non è costruire modelli, ma
sistemi software - Se decidete di mantenere i diagrammi dotatevi di
un tool che li sincronizzi al meglio con il
codice - I diagrammi di più alto livello (architetturali o
concettuali) hanno un valore che giustifica la
loro manutenzione nel tempo
54Agile UML!
- Non ve la sentite di fare pair-programming?
- Provate il pair-designing!
- Il rendimento è garantito
- La condivisione delle conoscenze è più immediata
sui diagrammi che sul codice - La memoria visiva è più duratura nel tempo, le
righe di codice si dimenticano
55Questions Answers
- Sito ufficiale
- http//www.uml.org/
- Libri
- UML Distilled (Martin Fowler, Kendall Scott)
Addison Wesley - The Unified Modeling Language Reference (James
Rambaugh, Ivar Jacobson, Grady Booch) - Addison
Wesley - Writing Effective Use Cases (Alistair Cockburn) -
Addison Wesley
- Omid Ehsani
- Senior Consultant and Trainer
- oehsani_at_lightcode.net