real world uml omid ehsani senior consultant and trainer [email protected] omid ehsani senior...

55
Real World UML Real World UML Omid Ehsani Omid Ehsani Senior Consultant and Trainer Senior Consultant and Trainer [email protected]

Upload: adamo-sanna

Post on 01-May-2015

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Real World UMLReal World UMLReal World UMLReal World UML

Omid EhsaniOmid EhsaniSenior Consultant and TrainerSenior Consultant and [email protected]

Page 2: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

SponsorSponsor

Page 3: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Parliamo di…Parliamo di…Parliamo di…Parliamo di…

• L’importanza della L’importanza della modellazionemodellazione

• UML in 21 minuti…UML in 21 minuti…

• Design Pattern e UMLDesign Pattern e UML

• Un’applicazione realeUn’applicazione reale

• ““Agile” UML!Agile” UML!

• L’importanza della L’importanza della modellazionemodellazione

• UML in 21 minuti…UML in 21 minuti…

• Design Pattern e UMLDesign Pattern e UML

• Un’applicazione realeUn’applicazione reale

• ““Agile” UML!Agile” UML!

Page 4: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

L’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazione

Page 5: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

L’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazione

• Spesso i team di sviluppo non fanno progettazioneSpesso i team di sviluppo non fanno progettazione

• Molti sviluppano applicazioni come costruirebbero la Molti sviluppano applicazioni come costruirebbero la

“cuccia del cane”“cuccia del cane” – Manca la definizione di un’architetturaManca la definizione di un’architettura– Dai requisiti si passa subito alla codificaDai requisiti si passa subito alla codifica– Si lavora più tempo e si scrive più codiceSi lavora più tempo e si scrive più codice

• Spesso i team di sviluppo non fanno progettazioneSpesso i team di sviluppo non fanno progettazione

• Molti sviluppano applicazioni come costruirebbero la Molti sviluppano applicazioni come costruirebbero la

“cuccia del cane”“cuccia del cane” – Manca la definizione di un’architetturaManca la definizione di un’architettura– Dai requisiti si passa subito alla codificaDai requisiti si passa subito alla codifica– Si lavora più tempo e si scrive più codiceSi lavora più tempo e si scrive più codice

Software is often treated as a SOFT science

Modeling helps make it a HARD science

Software is often treated as a SOFT science

Modeling helps make it a HARD science

Page 6: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

L’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazione

• Costruiamo modelli (o blueprints) per comprendere Costruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppandomeglio il sistema che stiamo sviluppando

• La modellazione:La modellazione:– Ci aiuta a visualizzare il sistema come dovrebbe essereCi aiuta a visualizzare il sistema come dovrebbe essere– Ci permette di specificare la struttura e il comportamento del Ci permette di specificare la struttura e il comportamento del

sistema.sistema.– Ci fornisce una linea guida nella costruzione del sistemaCi fornisce una linea guida nella costruzione del sistema– Documenta le decisioni che prendiamoDocumenta le decisioni che prendiamo– Scompone il problemaScompone il problema– Controlla la complessitàControlla la complessità– E’ un punto di partenzaE’ un punto di partenza

• Costruiamo modelli dei sistemi complessi perchè non Costruiamo modelli dei sistemi complessi perchè non siamo in grado di comprendere tali sistemi nella loro siamo in grado di comprendere tali sistemi nella loro interezzainterezza

• Costruiamo modelli (o blueprints) per comprendere Costruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppandomeglio il sistema che stiamo sviluppando

• La modellazione:La modellazione:– Ci aiuta a visualizzare il sistema come dovrebbe essereCi aiuta a visualizzare il sistema come dovrebbe essere– Ci permette di specificare la struttura e il comportamento del Ci permette di specificare la struttura e il comportamento del

sistema.sistema.– Ci fornisce una linea guida nella costruzione del sistemaCi fornisce una linea guida nella costruzione del sistema– Documenta le decisioni che prendiamoDocumenta le decisioni che prendiamo– Scompone il problemaScompone il problema– Controlla la complessitàControlla la complessità– E’ un punto di partenzaE’ un punto di partenza

• Costruiamo modelli dei sistemi complessi perchè non Costruiamo modelli dei sistemi complessi perchè non siamo in grado di comprendere tali sistemi nella loro siamo in grado di comprendere tali sistemi nella loro interezzainterezza

Page 7: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Cosa è UML?Cosa è UML?Cosa è UML?Cosa è UML?

• UML è un linguaggio per ...UML è un linguaggio per ...– VisualizzareVisualizzare– SpecificareSpecificare– CostruireCostruire– DocumentareDocumentare

... gli artefatti di un sistema software... gli artefatti di un sistema software

• UML è un linguaggio per ...UML è un linguaggio per ...– VisualizzareVisualizzare– SpecificareSpecificare– CostruireCostruire– DocumentareDocumentare

... gli artefatti di un sistema software... gli artefatti di un sistema software

UML è il “blueprint” per la costruzione del software

UML è il “blueprint” per la costruzione del software

Page 8: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Cosa è UML?Cosa è UML?Cosa è UML?Cosa è UML?

• UML è “Il UML è “Il Linguaggio” per Linguaggio” per l’analisi e la l’analisi e la progettazione progettazione Object OrientedObject Oriented

• UML è “Il UML è “Il Linguaggio” per Linguaggio” per l’analisi e la l’analisi e la progettazione progettazione Object OrientedObject Oriented

Page 9: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Contributi all’UMLContributi all’UMLContributi all’UMLContributi all’UML

Fusion

Operation descriptions,Message numbering

Fusion

Operation descriptions,Message numbering

Meyer

Before and after conditions

Meyer

Before and after conditions

Harel

State charts

Harel

State charts

Wirfs-Brock

Responsibilities

Wirfs-Brock

Responsibilities

Embley

Singleton classes, High-level view

Embley

Singleton classes, High-level view

Odell

Classification

Odell

Classification

Shlaer - Mellor

Object Lifecycles

Shlaer - Mellor

Object Lifecycles

Gamma, et.al

Frameworks, patterns,notes

Gamma, et.al

Frameworks, patterns,notes

BoochRumbaugh Jacobson

Page 10: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Breve storia di UMLBreve storia di UMLBreve storia di UMLBreve storia di UML

• Inizio progetto: ottobre 1994Inizio progetto: ottobre 1994

• Proposta a OMG (Object Proposta a OMG (Object Management Group): gennaio 1997Management Group): gennaio 1997

• Accettazione, da parte di OMG, della Accettazione, da parte di OMG, della versione 1.1: novembre 1997versione 1.1: novembre 1997

• Attualmente: UML versione 1.5Attualmente: UML versione 1.5

• Alle porte: UML 2.0Alle porte: UML 2.0

• Inizio progetto: ottobre 1994Inizio progetto: ottobre 1994

• Proposta a OMG (Object Proposta a OMG (Object Management Group): gennaio 1997Management Group): gennaio 1997

• Accettazione, da parte di OMG, della Accettazione, da parte di OMG, della versione 1.1: novembre 1997versione 1.1: novembre 1997

• Attualmente: UML versione 1.5Attualmente: UML versione 1.5

• Alle porte: UML 2.0Alle porte: UML 2.0

Page 11: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Panoramica su UMLPanoramica su UMLPanoramica su UMLPanoramica su UML

• UML è un linguaggioUML è un linguaggio– Un linguaggio fornisce un vocabolario e le Un linguaggio fornisce un vocabolario e le

regole per combinare le parole allo scopo di regole per combinare le parole allo scopo di comunicarecomunicare

– Non è una metodologia, ma è utilizzato da Non è una metodologia, ma è utilizzato da molti processi di sviluppo del softwaremolti processi di sviluppo del software

• UML è un linguaggioUML è un linguaggio– Un linguaggio fornisce un vocabolario e le Un linguaggio fornisce un vocabolario e le

regole per combinare le parole allo scopo di regole per combinare le parole allo scopo di comunicarecomunicare

– Non è una metodologia, ma è utilizzato da Non è una metodologia, ma è utilizzato da molti processi di sviluppo del softwaremolti processi di sviluppo del software

Page 12: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Panoramica su UMLPanoramica su UMLPanoramica su UMLPanoramica su UML

• UML è un linguaggio per visualizzareUML è un linguaggio per visualizzare– La visualizzazione facilita la comunicazione e La visualizzazione facilita la comunicazione e

favorisce un adeguato livello di astrazionefavorisce un adeguato livello di astrazione– Un’immagine vale mille paroleUn’immagine vale mille parole

• UML è un linguaggio per visualizzareUML è un linguaggio per visualizzare– La visualizzazione facilita la comunicazione e La visualizzazione facilita la comunicazione e

favorisce un adeguato livello di astrazionefavorisce un adeguato livello di astrazione– Un’immagine vale mille paroleUn’immagine vale mille parole

Page 13: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Panoramica su UMLPanoramica su UMLPanoramica su UMLPanoramica su UML

• UML è un linguaggio per stendere UML è un linguaggio per stendere specifichespecifiche– Stendere specifiche significa costruire modelli Stendere specifiche significa costruire modelli

che siano precisi, non ambigui e completiche siano precisi, non ambigui e completi– I simboli UML hanno una sintassi e una I simboli UML hanno una sintassi e una

semantica ben definitesemantica ben definite

• UML è un linguaggio per stendere UML è un linguaggio per stendere specifichespecifiche– Stendere specifiche significa costruire modelli Stendere specifiche significa costruire modelli

che siano precisi, non ambigui e completiche siano precisi, non ambigui e completi– I simboli UML hanno una sintassi e una I simboli UML hanno una sintassi e una

semantica ben definitesemantica ben definite

Page 14: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Panoramica su UMLPanoramica su UMLPanoramica su UMLPanoramica su UML

• UML è un linguaggio per costruireUML è un linguaggio per costruire– UML non è un ambiente di programmazione UML non è un ambiente di programmazione

visuale ma i suoi modelli sono nati per essere visuale ma i suoi modelli sono nati per essere tradotti in linguaggi Object Orientedtradotti in linguaggi Object Oriented

• UML è un linguaggio per costruireUML è un linguaggio per costruire– UML non è un ambiente di programmazione UML non è un ambiente di programmazione

visuale ma i suoi modelli sono nati per essere visuale ma i suoi modelli sono nati per essere tradotti in linguaggi Object Orientedtradotti in linguaggi Object Oriented

Page 15: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Panoramica su UMLPanoramica su UMLPanoramica su UMLPanoramica su UML

• UML è un linguaggio per documentareUML è un linguaggio per documentare– le specifiche funzionalile specifiche funzionali– l’architettura generalel’architettura generale– la scomposizione strutturale del sistemala scomposizione strutturale del sistema– le interazioni tra i componentile interazioni tra i componenti– la distribuzione e il deploymentla distribuzione e il deployment

• UML è un linguaggio per documentareUML è un linguaggio per documentare– le specifiche funzionalile specifiche funzionali– l’architettura generalel’architettura generale– la scomposizione strutturale del sistemala scomposizione strutturale del sistema– le interazioni tra i componentile interazioni tra i componenti– la distribuzione e il deploymentla distribuzione e il deployment

Page 16: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

UML in 21 minuti...UML in 21 minuti...UML in 21 minuti...UML in 21 minuti...

• I modelli di UML sono espressi attraverso I modelli di UML sono espressi attraverso una serie di diagrammiuna serie di diagrammi

• Esistono diverse tipologie di diagrammiEsistono diverse tipologie di diagrammi

• Ogni tipologia coglie un aspetto diverso Ogni tipologia coglie un aspetto diverso del sistemadel sistema

• I modelli di UML sono espressi attraverso I modelli di UML sono espressi attraverso una serie di diagrammiuna serie di diagrammi

• Esistono diverse tipologie di diagrammiEsistono diverse tipologie di diagrammi

• Ogni tipologia coglie un aspetto diverso Ogni tipologia coglie un aspetto diverso del sistemadel sistema

Page 17: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

I Diagrammi di UMLI Diagrammi di UMLI Diagrammi di UMLI Diagrammi di UML

• Use Case DiagramUse Case Diagram• Sequence DiagramSequence Diagram• Collaboration DiagramCollaboration Diagram• Statechart (STD) DiagramStatechart (STD) Diagram• Activity DiagramActivity Diagram• Component DiagramComponent Diagram• Deployment DiagramDeployment Diagram• Class DiagramClass Diagram

• Use Case DiagramUse Case Diagram• Sequence DiagramSequence Diagram• Collaboration DiagramCollaboration Diagram• Statechart (STD) DiagramStatechart (STD) Diagram• Activity DiagramActivity Diagram• Component DiagramComponent Diagram• Deployment DiagramDeployment Diagram• Class DiagramClass Diagram

Page 18: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Use Cases DiagramUse Cases DiagramUse Cases DiagramUse Cases Diagram

• Un sistema risponde ai bisogni dei suoi utentiUn sistema risponde ai bisogni dei suoi utenti• Questi bisogni sono catturati come Questi bisogni sono catturati come Use CasesUse Cases• Uno Uno Use CaseUse Case è un modo di usare il sistema è un modo di usare il sistema• Uno Uno Use CaseUse Case è uno schema di comportamento è uno schema di comportamento

esibito dal sistemaesibito dal sistema• La collezione degli La collezione degli Use CasesUse Cases specifica tutti i specifica tutti i

modi di usare il sistemamodi di usare il sistema

• Un sistema risponde ai bisogni dei suoi utentiUn sistema risponde ai bisogni dei suoi utenti• Questi bisogni sono catturati come Questi bisogni sono catturati come Use CasesUse Cases• Uno Uno Use CaseUse Case è un modo di usare il sistema è un modo di usare il sistema• Uno Uno Use CaseUse Case è uno schema di comportamento è uno schema di comportamento

esibito dal sistemaesibito dal sistema• La collezione degli La collezione degli Use CasesUse Cases specifica tutti i specifica tutti i

modi di usare il sistemamodi di usare il sistema

Page 19: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

ActorsActorsActorsActors

• Un Actor è qualcuno o qualcosa che deve Un Actor è qualcuno o qualcosa che deve interagire con il sistemainteragire con il sistema

• Gli Actors rappresentano qualunque cosa che Gli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistemadeve scambiare informazioni con il sistema

• Un Actor è qualcuno o qualcosa che deve Un Actor è qualcuno o qualcosa che deve interagire con il sistemainteragire con il sistema

• Gli Actors rappresentano qualunque cosa che Gli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistemadeve scambiare informazioni con il sistema

Page 20: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

ActorsActors e e Use CasesUse CasesActorsActors e e Use CasesUse Cases

Customer

Perform Card Transaction

Retail Institution

Sponsoring Financial Institution

Reconcile Transactions

Process Customer Bill

Manage Customer Account

Page 21: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

ActorsActors e e Use CasesUse CasesActorsActors e e Use CasesUse Cases

Customer

Perform Card Transaction

Retail Institution

Sponsoring Financial Institution

Reconcile Transactions

Process Customer Bill

Manage Customer Account

Page 22: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Realizziamo gli Realizziamo gli Use CasesUse CasesRealizziamo gli Realizziamo gli Use CasesUse Cases

• Gli Interaction Diagrams permettono di Gli Interaction Diagrams permettono di ottenere il modello di come interagiscono ottenere il modello di come interagiscono Actors e oggetti per realizzare uno Use Actors e oggetti per realizzare uno Use CaseCase

• Sono realizzati tramite due diverse, e Sono realizzati tramite due diverse, e complementari, modalità:complementari, modalità:– i i Collaboration DiagramsCollaboration Diagrams– i i Sequence DiagramsSequence Diagrams

• Gli Interaction Diagrams permettono di Gli Interaction Diagrams permettono di ottenere il modello di come interagiscono ottenere il modello di come interagiscono Actors e oggetti per realizzare uno Use Actors e oggetti per realizzare uno Use CaseCase

• Sono realizzati tramite due diverse, e Sono realizzati tramite due diverse, e complementari, modalità:complementari, modalità:– i i Collaboration DiagramsCollaboration Diagrams– i i Sequence DiagramsSequence Diagrams

Page 23: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Sequence DiagramsSequence DiagramsSequence DiagramsSequence Diagrams

• Un Sequence Diagram mette in evidenza:– la sequenza temporale dei messaggila sequenza temporale dei messaggi– la la lifetimelifetime degli oggetti degli oggetti– il il focus of controlfocus of control

• Un Sequence Diagram mette in evidenza:– la sequenza temporale dei messaggila sequenza temporale dei messaggi– la la lifetimelifetime degli oggetti degli oggetti– il il focus of controlfocus of control

Page 24: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Sequence DiagramsSequence DiagramsSequence DiagramsSequence Diagrams

s:Caller :Switch

c:Conversation

r:Caller

setDialTone()

«create» ring()

liftReceiver

routeCall(s,n)

connect(s)connect(r)

liftReceiver

*dialDigit(d)

dialing

{dialing.executionTime<30 sec}

connect(r,s)

Page 25: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Collaboration DiagramsCollaboration DiagramsCollaboration DiagramsCollaboration Diagrams

• Un Collaboration Diagram mette in evidenza:Un Collaboration Diagram mette in evidenza:• l’organizzazione degli oggetti che l’organizzazione degli oggetti che

partecipano in una interazionepartecipano in una interazione• la lifetime degli oggettila lifetime degli oggetti• il focus of controlil focus of control

• Un Collaboration Diagram mette in evidenza:Un Collaboration Diagram mette in evidenza:• l’organizzazione degli oggetti che l’organizzazione degli oggetti che

partecipano in una interazionepartecipano in una interazione• la lifetime degli oggettila lifetime degli oggetti• il focus of controlil focus of control

Page 26: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Collaboration DiagramsCollaboration DiagramsCollaboration DiagramsCollaboration Diagrams

s:Caller :Switch

c:Conversation r:Caller

1: liftReceiver

2: setDialTone()

3:*dialDigit(d)

routeCall(s,n)

5: «create»

7: liftReceiver

6: ring()9: connect(s)

10: connect(r)8: connect(r,s)

Page 27: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Statechart (STD) DiagramStatechart (STD) DiagramStatechart (STD) DiagramStatechart (STD) Diagram

• Una macchina a stati è usata per ottenere il Una macchina a stati è usata per ottenere il modello di un singolo oggetto modello di un singolo oggetto

• Una macchina a stati descrive la sequenza degli Una macchina a stati descrive la sequenza degli stati attraverso i quali transita un oggetto stati attraverso i quali transita un oggetto durante il suo ciclo di vita in risposta a eventi, durante il suo ciclo di vita in risposta a eventi, assieme alle sue risposte a tali eventiassieme alle sue risposte a tali eventi

• Il diagramma che descrive la macchina a stati è Il diagramma che descrive la macchina a stati è detto detto State Transition DiagramState Transition Diagram (STD) (STD)

• Una macchina a stati è usata per ottenere il Una macchina a stati è usata per ottenere il modello di un singolo oggetto modello di un singolo oggetto

• Una macchina a stati descrive la sequenza degli Una macchina a stati descrive la sequenza degli stati attraverso i quali transita un oggetto stati attraverso i quali transita un oggetto durante il suo ciclo di vita in risposta a eventi, durante il suo ciclo di vita in risposta a eventi, assieme alle sue risposte a tali eventiassieme alle sue risposte a tali eventi

• Il diagramma che descrive la macchina a stati è Il diagramma che descrive la macchina a stati è detto detto State Transition DiagramState Transition Diagram (STD) (STD)

Page 28: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Statechart (STD) DiagramStatechart (STD) DiagramStatechart (STD) DiagramStatechart (STD) Diagram• Uno Uno statostato è una condizione o situazione durante la è una condizione o situazione durante la

vita di un oggetto nella quale l’oggetto soddisfa vita di un oggetto nella quale l’oggetto soddisfa qualche condizione, esegue qualche attività, o qualche condizione, esegue qualche attività, o aspetta per qualche aspetta per qualche eventoevento

• Un Un eventoevento è la specifica di un “qualcosa” la cui è la specifica di un “qualcosa” la cui durata è trascurabile rispetto alla durata del ciclo di durata è trascurabile rispetto alla durata del ciclo di vita dell’oggettovita dell’oggetto

• Una Una transizionetransizione è una relazione fra due è una relazione fra due statistati che che indica che un oggetto passerà dall’uno all’altro indica che un oggetto passerà dall’uno all’altro come effetto di un come effetto di un eventoevento o quando una specifica o quando una specifica condizione è verificatacondizione è verificata

• Una Una azioneazione è una operazione atomica il cui effetto è una operazione atomica il cui effetto è o un cambiamento di stato o il ritorno di un valoreè o un cambiamento di stato o il ritorno di un valore

• Uno Uno statostato è una condizione o situazione durante la è una condizione o situazione durante la vita di un oggetto nella quale l’oggetto soddisfa vita di un oggetto nella quale l’oggetto soddisfa qualche condizione, esegue qualche attività, o qualche condizione, esegue qualche attività, o aspetta per qualche aspetta per qualche eventoevento

• Un Un eventoevento è la specifica di un “qualcosa” la cui è la specifica di un “qualcosa” la cui durata è trascurabile rispetto alla durata del ciclo di durata è trascurabile rispetto alla durata del ciclo di vita dell’oggettovita dell’oggetto

• Una Una transizionetransizione è una relazione fra due è una relazione fra due statistati che che indica che un oggetto passerà dall’uno all’altro indica che un oggetto passerà dall’uno all’altro come effetto di un come effetto di un eventoevento o quando una specifica o quando una specifica condizione è verificatacondizione è verificata

• Una Una azioneazione è una operazione atomica il cui effetto è una operazione atomica il cui effetto è o un cambiamento di stato o il ritorno di un valoreè o un cambiamento di stato o il ritorno di un valore

Page 29: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

Dial Tonedo: sound dial tone

off-hookon-hook

Dial Tonedo: sound dial tone

Page 30: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

Dial Tonedo: sound dial tone

off-hook

Connectingdo: find connection

valid number

Ringingdo: ring bell

routed

Connected

called phone answers

Disconnected

called phone hangs up

Dialing

digit(n)

digit(n)

on-hook

Page 31: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

Dial Tonedo: sound dial tone

off-hook

Timed-outdo: sound loud beeptime-out

on-hook

Page 32: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

Dial Tonedo: sound dial tone

off-hook

Receiving Recorded Messagedo: play message

invalid numberDialing

digit(n)

digit(n)

Disconnected

message done

on-hook

on-hook

Page 33: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

Dial Tonedo: sound dial tone

off-hook

Connectingdo: find connection

valid number

Dialing

digit(n)

digit(n)

Busydo: sound busy tone

number busy

on-hook

Page 34: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaSTD per una Linea TelefonicaIdle

on-hook

Dial Tonedo: sound dial tone

off-hook

Connectingdo: find connection

valid number

Ringingdo: ring bell

routed

Connected

called phone answers

Disconnected

called phone hangs up

Receiving Recorded Messagedo: play message

invalid numberDialing

digit(n)

digit(n)

on-hook

message done

Timed-outdo: sound loud beeptime-out

on-hook

on hook/disconnect line

Busydo: sound busy tone

number busy

on-hook

on-hook

on-hook

Page 35: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

STD per la partita degli ScacchiSTD per la partita degli ScacchiSTD per la partita degli ScacchiSTD per la partita degli Scacchi

black moves

Black’s turndo: think

white moves

White’s turndo: think

checkmateBlack wins

Drawstalemate

stalemate

White winscheckmate

Page 36: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Component DiagramComponent DiagramComponent DiagramComponent Diagram

• Un Un Component DiagramComponent Diagram mostra un mostra un insieme di componenti e le loro relazioniinsieme di componenti e le loro relazioni

• Un Un Component DiagramComponent Diagram comunemente comunemente contiene:contiene:– ComponentiComponenti– InterfacceInterfacce– Relazioni di dipendenza, generalizzazione, Relazioni di dipendenza, generalizzazione,

associazione e realizzazioneassociazione e realizzazione

• Un Un Component DiagramComponent Diagram mostra un mostra un insieme di componenti e le loro relazioniinsieme di componenti e le loro relazioni

• Un Un Component DiagramComponent Diagram comunemente comunemente contiene:contiene:– ComponentiComponenti– InterfacceInterfacce– Relazioni di dipendenza, generalizzazione, Relazioni di dipendenza, generalizzazione,

associazione e realizzazioneassociazione e realizzazione

Page 37: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Un Un Component DiagramComponent DiagramUn Un Component DiagramComponent Diagram

____________________________________________

index.html

____________________________________________

find.html

find.exe

«hyperlink»

dbacs.dll nateng.dll

Page 38: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Deployment DiagramDeployment DiagramDeployment DiagramDeployment Diagram

• Un Un deployment diagramdeployment diagram è un diagramma è un diagramma che documenta la configurazione al che documenta la configurazione al run run timetime dei nodi che partecipano al processo dei nodi che partecipano al processo e i componenti che vivono in essie i componenti che vivono in essi

• Tipicamente un Tipicamente un deployment diagramdeployment diagram è è usato per avere il modello diusato per avere il modello di– Sistemi Sistemi embeddedembedded– Client/serverClient/server– Sistemi distribuitiSistemi distribuiti

• Un Un deployment diagramdeployment diagram è un diagramma è un diagramma che documenta la configurazione al che documenta la configurazione al run run timetime dei nodi che partecipano al processo dei nodi che partecipano al processo e i componenti che vivono in essie i componenti che vivono in essi

• Tipicamente un Tipicamente un deployment diagramdeployment diagram è è usato per avere il modello diusato per avere il modello di– Sistemi Sistemi embeddedembedded– Client/serverClient/server– Sistemi distribuitiSistemi distribuiti

Page 39: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Il Modello di un Sistema Il Modello di un Sistema Client/ServerClient/Server

Il Modello di un Sistema Il Modello di un Sistema Client/ServerClient/Server

console

«processor»caching server

Deploys

clients

http.exerting.exe

2..*«processor»

server

Deploysdbadmin.exetktmstr.exelogexec.exe

4..*

servers

Page 40: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Il Modello di un Sistema DistribuitoIl Modello di un Sistema DistribuitoIl Modello di un Sistema DistribuitoIl Modello di un Sistema Distribuito

:console

:console

:console

:Internet

:regionalserver

:regionalserver

:regionalserver

:countryserver

:loggingserver

Note: country serversare reachable to one another via the company’sprivate network

Page 41: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Class DiagramsClass DiagramsClass DiagramsClass Diagrams

• Un Class Diagram è un diagramma che mostra Un Class Diagram è un diagramma che mostra un insieme di classi, interfacce, e collaborazioni un insieme di classi, interfacce, e collaborazioni e le loro dipendenzee le loro dipendenze

• Un Class Diagram è un modello statico del Un Class Diagram è un modello statico del sistema utilizzato persistema utilizzato per– ottenere un dizionario del sistemaottenere un dizionario del sistema– avere un modello di collaborazione fra gli oggetti avere un modello di collaborazione fra gli oggetti

(p.e. per specificare quali oggetti partecipano a una (p.e. per specificare quali oggetti partecipano a una transazione)transazione)

– avere un modello logico dello schema del database avere un modello logico dello schema del database

• Un Class Diagram è un diagramma che mostra Un Class Diagram è un diagramma che mostra un insieme di classi, interfacce, e collaborazioni un insieme di classi, interfacce, e collaborazioni e le loro dipendenzee le loro dipendenze

• Un Class Diagram è un modello statico del Un Class Diagram è un modello statico del sistema utilizzato persistema utilizzato per– ottenere un dizionario del sistemaottenere un dizionario del sistema– avere un modello di collaborazione fra gli oggetti avere un modello di collaborazione fra gli oggetti

(p.e. per specificare quali oggetti partecipano a una (p.e. per specificare quali oggetti partecipano a una transazione)transazione)

– avere un modello logico dello schema del database avere un modello logico dello schema del database

Page 42: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Class DiagramClass DiagramClass DiagramClass DiagramCompany

Person

Department Office Headquarters

ContactInformationPersonelRecord

ISecureInformation

dependency interface

class

(class) name

member manager

Location

role{subset}

constraintassociation

1

* *

1..*

11..* 1..*

0..1

multiplicityaggregation

generalization

Page 43: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Class DiagramClass DiagramClass DiagramClass DiagramCompany

Personname: NameemployeeID: Integertitle: StringgetPhoto(p: Photo)getSoundByte()getContactInformation()getPersonalRecords()

Departmentname: Name

Officeaddress: Stringvoice: Number

Headquarters

ContactInformationaddress: String

PersonelRecordtaxIDemploymentHistoryPersonelRecord

{subset}member manager1..* 1

11..* 1..*

* *0..1

ISecureInformation

Location

operations

attributes

Page 44: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

PackagesPackagesPackagesPackages

• Un Package è un meccanismo di uso Un Package è un meccanismo di uso generale pergenerale per– organizzare in gruppi gli elementi che sono organizzare in gruppi gli elementi che sono

semanticamente simili o funzionalmente semanticamente simili o funzionalmente correlaticorrelati

– I package possono essere utilizzati oer creare I package possono essere utilizzati oer creare gerarchie di contenitori (come i folder per il gerarchie di contenitori (come i folder per il file-system)file-system)

• Un Package è un meccanismo di uso Un Package è un meccanismo di uso generale pergenerale per– organizzare in gruppi gli elementi che sono organizzare in gruppi gli elementi che sono

semanticamente simili o funzionalmente semanticamente simili o funzionalmente correlaticorrelati

– I package possono essere utilizzati oer creare I package possono essere utilizzati oer creare gerarchie di contenitori (come i folder per il gerarchie di contenitori (come i folder per il file-system)file-system)

Page 45: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

User Services

Business Services

Data Services

Packages e ServiziPackages e ServiziPackages e ServiziPackages e Servizi

Page 46: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Design Pattern e UMLDesign Pattern e UMLDesign Pattern e UMLDesign Pattern e UML

• Impariamo a leggere i Design PatternImpariamo a leggere i Design Pattern– Per capire meglio i Pattern li “visualizziamo” con Per capire meglio i Pattern li “visualizziamo” con

diagrammi UMLdiagrammi UML– Anche quando conosciamo un Pattern non sempre ne Anche quando conosciamo un Pattern non sempre ne

ricordiamo la struttura, un colpo d’occhio al Class ricordiamo la struttura, un colpo d’occhio al Class Diagram ci rinfresca la memoriaDiagram ci rinfresca la memoria

• I Pattern costituiscono un vocabolario comune I Pattern costituiscono un vocabolario comune per la comunicazione dei concettiper la comunicazione dei concetti– Anche l’UML è un vocabolario comune, ma è Anche l’UML è un vocabolario comune, ma è

“disegnato” invece che scritto o parlato“disegnato” invece che scritto o parlato

• Impariamo a leggere i Design PatternImpariamo a leggere i Design Pattern– Per capire meglio i Pattern li “visualizziamo” con Per capire meglio i Pattern li “visualizziamo” con

diagrammi UMLdiagrammi UML– Anche quando conosciamo un Pattern non sempre ne Anche quando conosciamo un Pattern non sempre ne

ricordiamo la struttura, un colpo d’occhio al Class ricordiamo la struttura, un colpo d’occhio al Class Diagram ci rinfresca la memoriaDiagram ci rinfresca la memoria

• I Pattern costituiscono un vocabolario comune I Pattern costituiscono un vocabolario comune per la comunicazione dei concettiper la comunicazione dei concetti– Anche l’UML è un vocabolario comune, ma è Anche l’UML è un vocabolario comune, ma è

“disegnato” invece che scritto o parlato“disegnato” invece che scritto o parlato

Page 47: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern

FactoryFactoryFactoryFactory

Page 48: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern

AdapterAdapterAdapterAdapter

Page 49: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern

ObserverObserverObserverObserver

Page 50: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Un’applicazione realeUn’applicazione realeUn’applicazione realeUn’applicazione reale

• Utilizziamo l’UML per documentare Utilizziamo l’UML per documentare l’applicazione Northwindl’applicazione Northwind

• Manutenere i diagrammi UML in sincronia Manutenere i diagrammi UML in sincronia con il codice sorgente non è una sfida da con il codice sorgente non è una sfida da pocopoco– Molti tool di modellazione UML fanno il Molti tool di modellazione UML fanno il

Reverse-Engineering, il Forward-Engineering Reverse-Engineering, il Forward-Engineering e il Round-Trip modelinge il Round-Trip modeling

• Utilizziamo l’UML per documentare Utilizziamo l’UML per documentare l’applicazione Northwindl’applicazione Northwind

• Manutenere i diagrammi UML in sincronia Manutenere i diagrammi UML in sincronia con il codice sorgente non è una sfida da con il codice sorgente non è una sfida da pocopoco– Molti tool di modellazione UML fanno il Molti tool di modellazione UML fanno il

Reverse-Engineering, il Forward-Engineering Reverse-Engineering, il Forward-Engineering e il Round-Trip modelinge il Round-Trip modeling

Page 51: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

DEMODEMODEMODEMO

• Reverse Engineering di NorthwindReverse Engineering di Northwind

• Individuazione dei pattern sui diagrammi Individuazione dei pattern sui diagrammi UMLUML

• Progettazione e realizzazione di un Progettazione e realizzazione di un DataProvider aggiuntivoDataProvider aggiuntivo

• Reverse Engineering di NorthwindReverse Engineering di Northwind

• Individuazione dei pattern sui diagrammi Individuazione dei pattern sui diagrammi UMLUML

• Progettazione e realizzazione di un Progettazione e realizzazione di un DataProvider aggiuntivoDataProvider aggiuntivo

Page 52: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

““Agile” UML!Agile” UML!““Agile” UML!Agile” UML!

• Non correte il rischio di “over-designing”Non correte il rischio di “over-designing”– Utilizzate UML con dosi sostenibiliUtilizzate UML con dosi sostenibili– Trovate il giusto livello di dettaglio da Trovate il giusto livello di dettaglio da

applicare ai diagrammiapplicare ai diagrammi

• Dal punto di vista di artefatti Dal punto di vista di artefatti UML=DocumentazioneUML=Documentazione

• Ricordatevi del manifesto:Ricordatevi del manifesto:““Software funzionante invece che Software funzionante invece che

documentazione esaustiva”documentazione esaustiva”

• Non correte il rischio di “over-designing”Non correte il rischio di “over-designing”– Utilizzate UML con dosi sostenibiliUtilizzate UML con dosi sostenibili– Trovate il giusto livello di dettaglio da Trovate il giusto livello di dettaglio da

applicare ai diagrammiapplicare ai diagrammi

• Dal punto di vista di artefatti Dal punto di vista di artefatti UML=DocumentazioneUML=Documentazione

• Ricordatevi del manifesto:Ricordatevi del manifesto:““Software funzionante invece che Software funzionante invece che

documentazione esaustiva”documentazione esaustiva”

Page 53: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

““Agile” UML!Agile” UML!““Agile” UML!Agile” UML!

• Non diventate schiavi dei vostri diagrammiNon diventate schiavi dei vostri diagrammi– Molti diagrammi possono servire per “pensare” prima Molti diagrammi possono servire per “pensare” prima

di scrivere, poi possono essere gettati via!di scrivere, poi possono essere gettati via!– L’obiettivo finale non è costruire modelli, ma sistemi L’obiettivo finale non è costruire modelli, ma sistemi

softwaresoftware– Se decidete di mantenere i diagrammi dotatevi di un Se decidete di mantenere i diagrammi dotatevi di un

tool che li sincronizzi al meglio con il codicetool che li sincronizzi al meglio con il codice– I diagrammi di più alto livello (architetturali o I diagrammi di più alto livello (architetturali o

concettuali) hanno un valore che giustifica la loro concettuali) hanno un valore che giustifica la loro manutenzione nel tempomanutenzione nel tempo

• Non diventate schiavi dei vostri diagrammiNon diventate schiavi dei vostri diagrammi– Molti diagrammi possono servire per “pensare” prima Molti diagrammi possono servire per “pensare” prima

di scrivere, poi possono essere gettati via!di scrivere, poi possono essere gettati via!– L’obiettivo finale non è costruire modelli, ma sistemi L’obiettivo finale non è costruire modelli, ma sistemi

softwaresoftware– Se decidete di mantenere i diagrammi dotatevi di un Se decidete di mantenere i diagrammi dotatevi di un

tool che li sincronizzi al meglio con il codicetool che li sincronizzi al meglio con il codice– I diagrammi di più alto livello (architetturali o I diagrammi di più alto livello (architetturali o

concettuali) hanno un valore che giustifica la loro concettuali) hanno un valore che giustifica la loro manutenzione nel tempomanutenzione nel tempo

Page 54: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

““Agile” UML!Agile” UML!““Agile” UML!Agile” UML!

• Non ve la sentite di fare pair-programming?Non ve la sentite di fare pair-programming?

Provate il pair-designing!Provate il pair-designing!

Il rendimento è garantitoIl rendimento è garantito• La condivisione delle conoscenze è più La condivisione delle conoscenze è più

immediata sui diagrammi che sul codiceimmediata sui diagrammi che sul codice• La memoria visiva è più duratura nel tempo, le La memoria visiva è più duratura nel tempo, le

righe di codice si dimenticano righe di codice si dimenticano

• Non ve la sentite di fare pair-programming?Non ve la sentite di fare pair-programming?

Provate il pair-designing!Provate il pair-designing!

Il rendimento è garantitoIl rendimento è garantito• La condivisione delle conoscenze è più La condivisione delle conoscenze è più

immediata sui diagrammi che sul codiceimmediata sui diagrammi che sul codice• La memoria visiva è più duratura nel tempo, le La memoria visiva è più duratura nel tempo, le

righe di codice si dimenticano righe di codice si dimenticano

Page 55: Real World UML Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net Omid Ehsani Senior Consultant and Trainer oehsani@lightcode.net

Questions & AnswersQuestions & AnswersQuestions & AnswersQuestions & Answers

Omid EhsaniOmid EhsaniSenior Consultant and TrainerSenior Consultant and [email protected]

Sito ufficiale:Sito ufficiale:

http://www.uml.org/http://www.uml.org/

Libri:Libri:• UML Distilled (Martin Fowler, Kendall Scott) – Addison WesleyUML Distilled (Martin Fowler, Kendall Scott) – Addison Wesley• The Unified Modeling Language Reference (James Rambaugh, Ivar The Unified Modeling Language Reference (James Rambaugh, Ivar

Jacobson, Grady Booch) - Addison WesleyJacobson, Grady Booch) - Addison Wesley• Writing Effective Use Cases (Alistair Cockburn) - Addison WesleyWriting Effective Use Cases (Alistair Cockburn) - Addison Wesley

Sito ufficiale:Sito ufficiale:

http://www.uml.org/http://www.uml.org/

Libri:Libri:• UML Distilled (Martin Fowler, Kendall Scott) – Addison WesleyUML Distilled (Martin Fowler, Kendall Scott) – Addison Wesley• The Unified Modeling Language Reference (James Rambaugh, Ivar The Unified Modeling Language Reference (James Rambaugh, Ivar

Jacobson, Grady Booch) - Addison WesleyJacobson, Grady Booch) - Addison Wesley• Writing Effective Use Cases (Alistair Cockburn) - Addison WesleyWriting Effective Use Cases (Alistair Cockburn) - Addison Wesley