Real World UML Omid Ehsani Senior Consultant and Trainer Omid Ehsani Senior Consultant and Trainer

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

II INCONTRO Madre Teresa di Calcutta
Introduzione a UML (c) TECNET DATI.
Analisi e progettazione
Unified Modeling Language
Specifiche Algebriche
UML: Use Cases Corso IS I /03
Generalità Linguaggio e Macchina Astratta
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
Enrico Dellarciprete, PMP - Framework PMBOK – Linee guida CNIPA sulla qualità delle forniture ICT Linee guida CNIPA sulla qualità delle forniture ICT.
ECONOMIA E GESTIONE DELL INNOVAZIONE AZIENDALE Docente A.Federico Giua a.a / 2010 UNIVERSITA CARLO CATTANEO 8° Capitolo SELEZIONE DEL CONCEPT SPECIFICHE.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
DIFFICOLTA’ DEL LINGUAGGIO
Analisi dettagliata e design B. Pernici M.G. Fugini AA
Analisi dettagliata e design B. Pernici. Sommario Analisi dettagliata –Separazione interfaccia, controllo, entita Design –Logical view –Progettazione.
Il linguaggio UML Luca Lista. Metodi Object Oriented –Booch Method by Grady Booch –OMT by Jim Rumbaugh –Objectory (Use Cases) by Ivar Jacobson –CRC by.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 13 1 La Manipolazione Diretta Sensazione di interagire con un mondo di oggetti piuttosto.
Corso IS I /03 Esame Scritto - Parte generale 4 Febbraio 2003 Punteggio massimo totale punti 18; soglia superamento prova 10 Avvertenza Si vuole.
Ciclo di vita del software
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
LINGUAGGI DI PROGRAMMAZIONE
Introduzione alla modellazione di sistemi interattivi
Elementi di Informatica
Project Review Località Sciistica Novembrer 17th, 2011.
Progetto di Controllo dei Processi
Architettura di applicazioni enterprise Michele Aponte - DotNetCampania Team.
L’ingegneria del software
UML: Collaboration diagram Corso IS I /03 Gianna Reggio Versione 1.0.
La tecnologia CWM Alessandro Lorenzi A.A.2002/2003.
Seminario per il corso di Commercio Elettronico AA 2008 – 2009 tenuto dal Professore F. Dalla Libera A cura di: Boscariol Francesco Cosmo Luca
MODEL-DRIVEN DEVELOPMENT DI APPLICAZIONI WEB
Il linguaggio UML Luca Lista.
Project Review Località Sciistica 5 Dicembre 2011.
Project Review Località Sciistica Novembrer 17th, 2011.
Ingegneria dei Requisiti - e dei Sistemi - Giuseppe Berio DI-Unito 2007.
Scelta di un modello di processo: esempio
Commenti alle Attività Generiche. Attività Generiche (Pressman) Principali: Comunicazioni; Pianificazione; Modellazione; Costruzione, Dispiegamento Collaterali:
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche e/o attività operative che tipicamente costituiscono i passi.
Esercitazioni di Ingegneria del Software con UML
L’architettura a strati
Progettazione concettuale di SI basati su Web
1 Ontology languages. Strato dei modelli LA SCELTA DEL LINGUAGGIO Una volta selezionati i componenti dell’ontologia occorre esprimerli in maniera esplicita,
1 How to generate testing models into MDA approach to software development. A beginner’s point of view. Università degli Studi dell’Aquila Facoltà di Scienze.
Evoluzione di UML Andrea Bencini
Prog. applicazioni Web- 1 - Processo di sviluppo: Visione d’insieme.
Analisi dettagliata e design
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche e/o attività operative che tipicamente costituiscono i passi.
Linguaggi del corpo e delle immagini come mediatori
Analisi dei requisiti Il primo passo di “qualsiasi” processo di sviluppo è la definizione dei requisiti  Definizione del Business Model  Solitamente.
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 -Progettazione del software Ernesto Damiani Università degli Studi.
Corso di Laurea in Informatica
Corso IS I /03 Esame Scritto - Parte generale 18 Febbraio 2003 Punteggio massimo totale punti 18; soglia superamento prova 10 Avvertenza Si vuole.
UML: Sequence diagram Corso IS I /03 Gianna Reggio Versione 0.0.
UML: Statechart diagram Corso IS I /03
UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0.
Ingegneria del software Modulo 3 -Tecniche di implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
4/18/ :18 AM.
Problemi, algoritmi e programmazione
Fasi di sviluppo di un software
Progettazione concettuale di SI basati su Web B. Pernici.
DIT Department of Information and Communication Technology Information System Ingegneria del Software: un caso di studio.
Programmazione dei Calcolatori Elettronici
Standard e strumenti per lo sviluppo del software Marco Carezzano Andrea Andrenacci (ZEROPIU, Business Partner di Telecom Italia) Milano, 2 febbraio 2005.
Unified Modeling Language. –un linguaggio (e notazione) universale, per rappresentare qualunque tipo di sistema software –uno standard OMG (Object Management.
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Programmazione orientata agli Oggetti Introduzione a Java.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Real World UML Omid Ehsani Senior Consultant and Trainer Omid Ehsani Senior Consultant and Trainer

SponsorSponsor

Parliamo di… Limportanza della modellazioneLimportanza della modellazione UML in 21 minuti…UML in 21 minuti… Design Pattern e UMLDesign Pattern e UML Unapplicazione realeUnapplicazione reale Agile UML!Agile UML! Limportanza della modellazioneLimportanza della modellazione UML in 21 minuti…UML in 21 minuti… Design Pattern e UMLDesign Pattern e UML Unapplicazione realeUnapplicazione reale Agile UML!Agile UML!

Limportanza della modellazione

Spesso i team di sviluppo non fanno progettazioneSpesso i team di sviluppo non fanno progettazione Molti sviluppano applicazioni come costruirebbero la cuccia del caneMolti 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 Spesso i team di sviluppo non fanno progettazioneSpesso i team di sviluppo non fanno progettazione Molti sviluppano applicazioni come costruirebbero la cuccia del caneMolti 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 Software is often treated as a SOFT science Modeling helps make it a HARD science

Limportanza della modellazione Costruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppandoCostruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppando La modellazione: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 interezzaCostruiamo modelli dei sistemi complessi perchè non siamo in grado di comprendere tali sistemi nella loro interezza Costruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppandoCostruiamo modelli (o blueprints) per comprendere meglio il sistema che stiamo sviluppando La modellazione: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 interezzaCostruiamo modelli dei sistemi complessi perchè non siamo in grado di comprendere tali sistemi nella loro interezza

Cosa è UML? UML è un linguaggio per...UML è un linguaggio per... –Visualizzare –Specificare –Costruire –Documentare... gli artefatti di un sistema software UML è un linguaggio per...UML è un linguaggio per... –Visualizzare –Specificare –Costruire –Documentare... gli artefatti di un sistema software UML è il blueprint per la costruzione del software

Cosa è UML? UML è Il Linguaggio per lanalisi e la progettazione Object OrientedUML è Il Linguaggio per lanalisi e la progettazione Object Oriented

Contributi allUML 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 Booch Rumbaugh Jacobson

Breve storia di UML Inizio progetto: ottobre 1994Inizio progetto: ottobre 1994 Proposta a OMG (Object Management Group): gennaio 1997Proposta a OMG (Object Management Group): gennaio 1997 Accettazione, da parte di OMG, della versione 1.1: novembre 1997Accettazione, da parte di OMG, della versione 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 Management Group): gennaio 1997Proposta a OMG (Object Management Group): gennaio 1997 Accettazione, da parte di OMG, della versione 1.1: novembre 1997Accettazione, da parte di OMG, della versione 1.1: novembre 1997 Attualmente: UML versione 1.5Attualmente: UML versione 1.5 Alle porte: UML 2.0Alle porte: UML 2.0

Panoramica su UML UML è un linguaggioUML è 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 UML è un linguaggioUML è 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

Panoramica su UML UML è un linguaggio per visualizzareUML è un linguaggio per visualizzare –La visualizzazione facilita la comunicazione e favorisce un adeguato livello di astrazione –Unimmagine vale mille parole UML è un linguaggio per visualizzareUML è un linguaggio per visualizzare –La visualizzazione facilita la comunicazione e favorisce un adeguato livello di astrazione –Unimmagine vale mille parole

Panoramica su UML UML è un linguaggio per stendere specificheUML è 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 UML è un linguaggio per stendere specificheUML è 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

Panoramica su UML UML è un linguaggio per costruireUML è un linguaggio per costruire –UML non è un ambiente di programmazione visuale ma i suoi modelli sono nati per essere tradotti in linguaggi Object Oriented UML è un linguaggio per costruireUML è un linguaggio per costruire –UML non è un ambiente di programmazione visuale ma i suoi modelli sono nati per essere tradotti in linguaggi Object Oriented

Panoramica su UML UML è un linguaggio per documentareUML è un linguaggio per documentare –le specifiche funzionali –larchitettura generale –la scomposizione strutturale del sistema –le interazioni tra i componenti –la distribuzione e il deployment UML è un linguaggio per documentareUML è un linguaggio per documentare –le specifiche funzionali –larchitettura generale –la scomposizione strutturale del sistema –le interazioni tra i componenti –la distribuzione e il deployment

UML in 21 minuti... I modelli di UML sono espressi attraverso una serie di diagrammiI modelli di UML sono espressi attraverso una serie di diagrammi Esistono diverse tipologie di diagrammiEsistono diverse tipologie di diagrammi Ogni tipologia coglie un aspetto diverso del sistemaOgni tipologia coglie un aspetto diverso del sistema I modelli di UML sono espressi attraverso una serie di diagrammiI modelli di UML sono espressi attraverso una serie di diagrammi Esistono diverse tipologie di diagrammiEsistono diverse tipologie di diagrammi Ogni tipologia coglie un aspetto diverso del sistemaOgni tipologia coglie un aspetto diverso del sistema

I 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 Diagram Un sistema risponde ai bisogni dei suoi utentiUn sistema risponde ai bisogni dei suoi utenti Questi bisogni sono catturati come Use CasesQuesti bisogni sono catturati come Use Cases Uno Use Case è un modo di usare il sistemaUno Use Case è un modo di usare il sistema Uno Use Case è uno schema di comportamento esibito dal sistemaUno Use Case è uno schema di comportamento esibito dal sistema La collezione degli Use Cases specifica tutti i modi di usare il sistemaLa collezione degli Use Cases specifica tutti i modi di usare il sistema Un sistema risponde ai bisogni dei suoi utentiUn sistema risponde ai bisogni dei suoi utenti Questi bisogni sono catturati come Use CasesQuesti bisogni sono catturati come Use Cases Uno Use Case è un modo di usare il sistemaUno Use Case è un modo di usare il sistema Uno Use Case è uno schema di comportamento esibito dal sistemaUno Use Case è uno schema di comportamento esibito dal sistema La collezione degli Use Cases specifica tutti i modi di usare il sistemaLa collezione degli Use Cases specifica tutti i modi di usare il sistema

ActorsActors Un Actor è qualcuno o qualcosa che deve interagire con il sistemaUn Actor è qualcuno o qualcosa che deve interagire con il sistema Gli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistemaGli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistema Un Actor è qualcuno o qualcosa che deve interagire con il sistemaUn Actor è qualcuno o qualcosa che deve interagire con il sistema Gli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistemaGli Actors rappresentano qualunque cosa che deve scambiare informazioni con il sistema

Actors e Use Cases Customer Perform Card Transaction Retail Institution Sponsoring Financial Institution Reconcile Transactions Process Customer Bill Manage Customer Account

Actors e Use Cases Customer Perform Card Transaction Retail Institution Sponsoring Financial Institution Reconcile Transactions Process Customer Bill Manage Customer Account

Realizziamo gli Use Cases Gli Interaction Diagrams permettono di ottenere il modello di come interagiscono Actors e oggetti per realizzare uno Use CaseGli 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à:Sono realizzati tramite due diverse, e complementari, modalità: –i Collaboration Diagrams –i Sequence Diagrams Gli Interaction Diagrams permettono di ottenere il modello di come interagiscono Actors e oggetti per realizzare uno Use CaseGli 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à:Sono realizzati tramite due diverse, e complementari, modalità: –i Collaboration Diagrams –i Sequence Diagrams

Sequence Diagrams Un Sequence Diagram mette in evidenza: –la sequenza temporale dei messaggi –la lifetime degli oggetti –il focus of control Un Sequence Diagram mette in evidenza: –la sequenza temporale dei messaggi –la lifetime degli oggetti –il focus of control

Sequence 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 Diagrams Un Collaboration Diagram mette in evidenza:Un Collaboration Diagram mette in evidenza: lorganizzazione degli oggetti che partecipano in una interazionelorganizzazione degli oggetti che partecipano 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: lorganizzazione degli oggetti che partecipano in una interazionelorganizzazione degli oggetti che partecipano in una interazione la lifetime degli oggettila lifetime degli oggetti il focus of controlil focus of control

Collaboration 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) Diagram Una macchina a stati è usata per ottenere il modello di un singolo oggettoUna 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 eventiUna 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)Il diagramma che descrive la macchina a stati è detto State Transition Diagram (STD) Una macchina a stati è usata per ottenere il modello di un singolo oggettoUna 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 eventiUna 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)Il diagramma che descrive la macchina a stati è detto State Transition Diagram (STD)

Statechart (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 eventoUno 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 delloggettoUn 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 è verificataUna 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 valoreUna azione è una operazione atomica il cui effetto è o un cambiamento di stato o il ritorno di un valore 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 eventoUno 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 delloggettoUn 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 è verificataUna 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 valoreUna azione è una operazione atomica il cui effetto è o un cambiamento di stato o il ritorno di un valore

STD per una Linea Telefonica Idle Dial Tone do: sound dial tone off-hook on-hook Dial Tone do: sound dial tone

STD per una Linea Telefonica Idle Dial Tone do: sound dial tone off-hook Connecting do: find connection valid number Ringing do: ring bell routed Connected called phone answers Disconnected called phone hangs up Dialing digit(n) on-hook

STD per una Linea Telefonica Idle Dial Tone do: sound dial tone off-hook Timed-out do: sound loud beep time-out on-hook

STD per una Linea Telefonica Idle Dial Tone do: sound dial tone off-hook Receiving Recorded Message do: play message invalid number Dialing digit(n) Disconnected message done on-hook

STD per una Linea Telefonica Idle Dial Tone do: sound dial tone off-hook Connecting do: find connection valid number Dialing digit(n) Busy do: sound busy tone number busy on-hook

STD per una Linea Telefonica Idle on-hook Dial Tone do: sound dial tone off-hook Connecting do: find connection valid number Ringing do: ring bell routed Connected called phone answers Disconnected called phone hangs up Receiving Recorded Message do: play message invalid number Dialing digit(n) on-hook message done Timed-out do: sound loud beep time-out on-hook on hook/disconnect line Busy do: sound busy tone number busy on-hook

STD per la partita degli Scacchi black moves Blacks turn do: think white moves Whites turn do: think checkmate Black wins Draw stalemate White wins checkmate

Component Diagram Un Component Diagram mostra un insieme di componenti e le loro relazioniUn Component Diagram mostra un insieme di componenti e le loro relazioni Un Component Diagram comunemente contiene:Un Component Diagram comunemente contiene: –Componenti –Interfacce –Relazioni di dipendenza, generalizzazione, associazione e realizzazione Un Component Diagram mostra un insieme di componenti e le loro relazioniUn Component Diagram mostra un insieme di componenti e le loro relazioni Un Component Diagram comunemente contiene:Un Component Diagram comunemente contiene: –Componenti –Interfacce –Relazioni di dipendenza, generalizzazione, associazione e realizzazione

Un Component Diagram __________ ____ __________ index.html __________ ____ __________ find.html find.exe «hyperlink» dbacs.dll nateng.dll

Deployment 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 essiUn 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 diTipicamente un deployment diagram è usato per avere il modello di –Sistemi embedded –Client/server –Sistemi distribuiti Un deployment diagram è un diagramma che documenta la configurazione al run time dei nodi che partecipano al processo e i componenti che vivono in essiUn 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 diTipicamente un deployment diagram è usato per avere il modello di –Sistemi embedded –Client/server –Sistemi distribuiti

Il Modello di un Sistema Client/Server console «processor» caching server Deploys clients http.exe rting.exe 2..* «processor» server Deploys dbadmin.exe tktmstr.exe logexec.exe 4..* servers

Il Modello di un Sistema Distribuito :console :Internet :regional server :regional server :regional server :country server :logging server Note: country servers are reachable to one another via the companys private network

Class Diagrams Un Class Diagram è un diagramma che mostra un insieme di classi, interfacce, e collaborazioni e le loro dipendenzeUn 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 perUn 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 Un Class Diagram è un diagramma che mostra un insieme di classi, interfacce, e collaborazioni e le loro dipendenzeUn 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 perUn 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

Class Diagram Company Person Department Office Headquarters ContactInformation PersonelRecord ISecureInformation dependency interface class (class) name member manager Location role { subset } constraint association 1 * * 1..* multiplicity aggregation generalization

Class Diagram Company Person name: Name employeeID: Integer title: String getPhoto(p: Photo) getSoundByte() getContactInformation() getPersonalRecords() Department name: Name Office address: String voice: Number Headquarters ContactInformation address: String PersonelRecord taxID employmentHistory PersonelRecord { subset } member manager 1..*1 1 * * 0..1 ISecureInformation Location operations attributes

PackagesPackages Un Package è un meccanismo di uso generale perUn 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) Un Package è un meccanismo di uso generale perUn 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)

User ServicesBusiness ServicesData Services Packages e Servizi

Design Pattern e UML Impariamo a leggere i Design PatternImpariamo 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 concettiI Pattern costituiscono un vocabolario comune per la comunicazione dei concetti –Anche lUML è un vocabolario comune, ma è 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 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 concettiI Pattern costituiscono un vocabolario comune per la comunicazione dei concetti –Anche lUML è un vocabolario comune, ma è disegnato invece che scritto o parlato

Esempi di Design Pattern FactoryFactory

AdapterAdapter

ObserverObserver

Unapplicazione reale Utilizziamo lUML per documentare lapplicazione NorthwindUtilizziamo lUML per documentare lapplicazione Northwind Manutenere i diagrammi UML in sincronia con il codice sorgente non è una sfida da pocoManutenere 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 Utilizziamo lUML per documentare lapplicazione NorthwindUtilizziamo lUML per documentare lapplicazione Northwind Manutenere i diagrammi UML in sincronia con il codice sorgente non è una sfida da pocoManutenere 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

DEMODEMO Reverse Engineering di NorthwindReverse Engineering di Northwind Individuazione dei pattern sui diagrammi UMLIndividuazione dei pattern sui diagrammi UML Progettazione e realizzazione di un DataProvider aggiuntivoProgettazione e realizzazione di un DataProvider aggiuntivo Reverse Engineering di NorthwindReverse Engineering di Northwind Individuazione dei pattern sui diagrammi UMLIndividuazione dei pattern sui diagrammi UML Progettazione e realizzazione di un DataProvider aggiuntivoProgettazione e realizzazione di un DataProvider aggiuntivo

Agile UML! Non correte il rischio di over-designingNon 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 UML=DocumentazioneDal punto di vista di artefatti UML=Documentazione Ricordatevi del manifesto:Ricordatevi del manifesto: Software funzionante invece che documentazione esaustiva Non correte il rischio di over-designingNon 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 UML=DocumentazioneDal punto di vista di artefatti UML=Documentazione Ricordatevi del manifesto:Ricordatevi del manifesto: Software funzionante invece che documentazione esaustiva

Agile UML! Non diventate schiavi dei vostri diagrammiNon 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 Non diventate schiavi dei vostri diagrammiNon 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

Agile UML! Non ve la sentite di fare pair-programming?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 codiceLa condivisione delle conoscenze è più immediata sui diagrammi che sul codice La memoria visiva è più duratura nel tempo, le righe di codice si dimenticanoLa memoria visiva è più duratura nel tempo, le 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! Il rendimento è garantito La condivisione delle conoscenze è più immediata sui diagrammi che sul codiceLa condivisione delle conoscenze è più immediata sui diagrammi che sul codice La memoria visiva è più duratura nel tempo, le righe di codice si dimenticanoLa memoria visiva è più duratura nel tempo, le righe di codice si dimenticano

Questions & Answers Omid Ehsani Senior Consultant and Trainer Omid Ehsani Senior Consultant and Trainer Sito ufficiale: UML Distilled (Martin Fowler, Kendall Scott) – Addison WesleyUML Distilled (Martin Fowler, Kendall Scott) – Addison Wesley The Unified Modeling Language Reference (James Rambaugh, Ivar Jacobson, Grady Booch) - Addison WesleyThe Unified Modeling Language Reference (James Rambaugh, Ivar Jacobson, Grady Booch) - Addison Wesley Writing Effective Use Cases (Alistair Cockburn) - Addison WesleyWriting Effective Use Cases (Alistair Cockburn) - Addison Wesley Sito ufficiale: UML Distilled (Martin Fowler, Kendall Scott) – Addison WesleyUML Distilled (Martin Fowler, Kendall Scott) – Addison Wesley The Unified Modeling Language Reference (James Rambaugh, Ivar Jacobson, Grady Booch) - Addison WesleyThe Unified Modeling Language Reference (James Rambaugh, Ivar Jacobson, Grady Booch) - Addison Wesley Writing Effective Use Cases (Alistair Cockburn) - Addison WesleyWriting Effective Use Cases (Alistair Cockburn) - Addison Wesley