real world uml omid ehsani senior consultant and trainer [email protected] omid ehsani senior...
TRANSCRIPT
Real World UMLReal World UMLReal World UMLReal World UML
Omid EhsaniOmid EhsaniSenior Consultant and TrainerSenior Consultant and [email protected]
SponsorSponsor
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!
L’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazioneL’importanza della modellazione
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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)
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)
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
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
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
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
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
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
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
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
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
Un Un Component DiagramComponent DiagramUn Un Component DiagramComponent Diagram
____________________________________________
index.html
____________________________________________
find.html
find.exe
«hyperlink»
dbacs.dll nateng.dll
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
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
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
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
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
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
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)
User Services
Business Services
Data Services
Packages e ServiziPackages e ServiziPackages e ServiziPackages e Servizi
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
Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern
FactoryFactoryFactoryFactory
Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern
AdapterAdapterAdapterAdapter
Esempi di Design PatternEsempi di Design PatternEsempi di Design PatternEsempi di Design Pattern
ObserverObserverObserverObserver
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
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
““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”
““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
““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
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