Unified Modeling Language Rosario Culmone
Obiettivi del corso Acquisire competenze sulla modellazione di sistemi informatici Acquisire competenze sullâuso di strumenti per la progettazione (UML) Acquisire competenze sulla modellazione mediante lâuso di strumenti automatici CASE (ArgoUML) Rosario Culmone UNICAM
Programma del corso Ocl Introduzione Storia Constraint Invarianti Precondizioni Postconditioni Vantaggi Bibliografia Meccanismi di Estensione di UML Design Pattern Concetti Cataloghi Esempi Ingegneria del software Introduzione LâIngegneria del Software Uml Storia Architettura I 9 diagrammi Sintesi UML Bibliografia Indice Provvisorio Rosario Culmone UNICAM
Prerequisiti Aver sostenuto esame di Programmazione e Laboratorio di Programmazione Buono conoscenza del paradigma ad oggetti Rosario Culmone UNICAM
Strumenti ArgoUML (http://argouml.tigris.org/) Compilatore OCL (http://dresden-ocl.sourceforge.net/) Compilatore Java (http://java.sun.com/) Editore di testi Rosario Culmone UNICAM
Metodologia Ogni argomento trattato viene seguito da esercizi Vengono proposti esercizi che lo studente dovrà svolgere in gruppo o singolarmente Le esercitazioni sono svolte in laboratorio La frequenza non è obbligatorio ma consigliata Rosario Culmone UNICAM
Esame Progetto proposto dal docente o studenti assegnato a metĂ corso Sviluppo del progetto anche in gruppo (max 3 componenti) Esame orale sostenuto da tutti i componenti del gruppo che consiste nella discussione del progetto Rosario Culmone UNICAM
Progetto Ha validità annuale (da inizio corso a inizio corso successivo) Consiste nella realizzazione di un documento con determinate caratteristiche Mette in evidenza le capacità di utilizzare le conoscenze e le competenze acquisiste durante il corso Ha una struttura predefinita Ha un complessità predefinita La produzione del codice è facoltativa Rosario Culmone UNICAM
Testi âIntroduzione a UMLâ, Simon Bennett, John Skelton, Ken Lunn, McGraw-Hill, pagine 355, Euro 24,50 âFondamenti di UMLâ, Roff Jason T, McGraw-Hill, pagine 295, Euro 23,50 âUML Distilled Guida rapida al linguaggio di modellazione standardâ, Fowler Martin, Pearson Education Italia, pagine 162, Euro 25,00 Rosario Culmone UNICAM
Metodologia Descrizione Analisi Esempi di uso Confronto Rosario Culmone UNICAM
Ingegneria del Software
Introduzione La progettazione dei sistemi software è una disciplina giovane ed immatura Una indagine della Standish Group, basata su un campione di 28.000 progetti e pubblicata da Computer Weekly il 9 luglio 1998, fornisce questi risultati: progetti riusciti: 26% progetti chiusi con notevole ritardo sui tempi, e/o costi imprevisti, e/o funzionalità inadeguate: 46% progetti falliti: 28% Rosario Culmone UNICAM
Introduzione Esempio di produzione del software: Il programmatore ascolta le esigenze del cliente Il programmatore scrive il codice che soddisferĂ le varie esigenze Rosario Culmone UNICAM
Introduzione Questo metodo di produzione del software è valido se: Il problema è molto semplice Il cliente formuli il problema in modo chiaro Il programmatore capisca esattamente cosa il cliente si aspetta Il programmatore lavora senza la collaborazione di altri colleghi Rosario Culmone UNICAM
Introduzione Questo metodo è diventato inadatto quando: Le esigenze dei clienti sono aumentate La complessità del problema è aumentata Un unico programmatore non era sufficiente per la completa produzione del software Rosario Culmone UNICAM
Introduzione Ingegneria del Software La produzione del software quindi deve: Supportare un processo industriale Rispettare i requisiti e le aspettative richieste dal committente Evitare ambiguitĂ ed inconsistenze Offrire un valido metodo per la corretta comunicazione delle intuizioni Fornite validi metodi per la riusabilitĂ del codice Dare un supporto veloce e sicuro per le attivitĂ di manutenzione del codice Ingegneria del Software Rosario Culmone UNICAM
Ingegneria del Software Ă una tecnologia stratificata per il rispetto della qualitĂ Strumenti Metodi Processo QualitĂ Rosario Culmone UNICAM
Ingegneria del Software Processo Lo strato fondamentale dellâingegneria del software Forma la base del controllo gestionale dei progetti software Stabilisce il contesto in cui si applicano i livelli tecnologici (metodi e strumenti) Si creano prodotti intermedi Si stabiliscono punti di controllo Si controlla la qualitĂ Si gestiscono le modifiche Rosario Culmone UNICAM
Ingegneria del Software Metodi Comprendono una vasta gamma di attivitĂ Analisi dei requisiti Progettazione Scrittura del Codice Collaudo Manutenzione Rosario Culmone UNICAM
Ingegneria del Software Analisi dei requisiti Si definiscono i domini delle informazioni le varie funzionalitĂ i comportamenti le prestazioni le interfacce richieste Rosario Culmone UNICAM
Ingegneria del Software Progettazione Si definiscono le strutture dati Le funzioni ed i comportamenti in modo da rispettare i requisiti ed i vincolo richiesti Si definiscono i protocolli di comunicazione tra le parti che compongono il software Rosario Culmone UNICAM
Ingegneria del Software Scrittura del Codice Si costruisce il codice pensando ad un suo successivo riuso Si adeguano parti riutilizzabili per il nuovo uso Si integrano tutti gli elementi Rosario Culmone UNICAM
Ingegneria del Software Collaudo Si esegue il test del comportamento del software Si verifica il rispetto di tutto i requisiti richiesti Si verifica il raggiungimento di tutti i vincoli Si controlla lâintegrazioni dei vari componenti nuovi e riutilizzati Rosario Culmone UNICAM
Ingegneria del Software Manutenzione Si modifica il software allo scopo di eliminare i difetti Si adatta il software per un nuovo ambiente (diverso sistema operativo, cambiamenti esterni al prodotto, adattamento a nuove regole) Si introducono nuove funzionalitĂ oltre i requisiti originari Si modifica il software per rendere piĂš semplici le correzioni, gli adattamenti e le migliorie Rosario Culmone UNICAM
Ingegneria del Software Strumenti Forniscono al processo e ai metodi un supporto semi-automatico o automatico Vari strumenti possono essere combinati per integrare i risultati (sistema di supporto allo sviluppo di software CASE) CASE è costituito da: Software Hardware Database (archivio di informazioni relative ad analisi, progettazione, costruzione e collaudo dei programmi) Rosario Culmone UNICAM
UML â Unified Modeling Language Eâ un linguaggio (standard OGM tra poco ISO) formale per specificare, visualizzare, costruire e documentare astrazioni Eâ applicabile a differenti tipi di sistema, di domini e di modelli di processo Eâ uno strumento basato sulla descrizione di architetture per sistemi component-oriented e object-oriented Definisce una notazione prevalentemente grafica contenente simboli e concetti (sintassi e semantica) Rosario Culmone UNICAM
UML Eâ indipendente da qualsiasi linguaggio di programmazione Eâ applicabile a qualsiasi livello di astrazione Può coprire lâintero processo di produzione del software Eâ altamente estendibile per modellare meglio le diverse realtĂ Rosario Culmone UNICAM
UML - Storia Grady Booch Jim Rumbaugh Ivar Jacobson Rosario Culmone OOD 91 OOAD94 Rumbaugh OMT 91 Jacobson (Objectory /OOSE) 92 94 RATIONAL Ott. 95 Unified Method Notation (v 0.8) Ott. 95 RATIONAL Lug. 95 Unified Modeling Language (v 0.9) Microsoft, HP, Oracle e altri (consorzio) Gen. 97 UML 1.0 IBM, Platinum e altri (consorzio) Nov. 97 UML 1.1 Dic. 98 UML 1.2 Giu. 99 UML 1.3 Mag. 01 UML 1.4 Rosario Culmone UNICAM
UML - Utilizzo Per visualizzare un sistema Per specificare la struttura ed il comportamento di un sistema Per definire le linee guida per la costruzione di un sistema Per documentare le decisioni prese Rosario Culmone UNICAM
UML - Architettura Si basa su una struttura composta da quattro livelli di metamodelli Rosario Culmone UNICAM
UML - Architettura Meta-Metamodel: Eâ il padre di tutti gli elementi Viene usato per formalizzare la notazione e definire le specifiche di linguaggio per il metamodel Rosario Culmone UNICAM
UML - Architettura Metamodel: Ogni oggetto del metamodel è una istanza dei concetti del meta-metamodel Qui si descrivono astrazioni di modelli object-oriented e component-oriented Si definiscono linguaggi per definire domini e modelli Rosario Culmone UNICAM
UML - Architettura Model: Qui si definiscono i domini, i problemi e le soluzioni di sistemi Rosario Culmone UNICAM
UML - Architettura User object: Eâ composto da elementi che semplificano i modelli UML Qui si descrivono le specifiche informazioni del dominio Rosario Culmone UNICAM
UML - Notazione La notazione grafica rappresenta i diversi aspetti del proprio sistemi attraverso le cosiddette âvisteâ Esistono nove tipi di diagrammi, alcuni rivolti allâaspetto statico del sistema (che non evolve nel tempi), altri a quello dinamico. Rosario Culmone UNICAM
UML - Notazione Vista Strutturale Vista di Implementazione Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Rosario Culmone UNICAM
Vista di Implementazione Vista Comportamentale UML - Notazione Vista di Implementazione Vista Strutturale Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Vista Utente: Descrizione del comportamento del sistema dal punto di vista degli utenti Rosario Culmone UNICAM
Vista di Implementazione Vista Comportamentale UML - Notazione Vista di Implementazione Vista Strutturale Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Vista Strutturale: Requisiti funzionali e servizi che il sistema deve supportare Rosario Culmone UNICAM
Vista di Implementazione Vista Comportamentale UML - Notazione Vista di Implementazione Vista Strutturale Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Vista di Implementazione: Configurazione dei componenti che costituiscono il sistema fisico Rosario Culmone UNICAM
Vista di Implementazione Vista Comportamentale UML - Notazione Vista di Implementazione Vista Strutturale Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Vista Comportamentale: Descrizione del comportamento interno del sistema da un punto di vista strutturale Rosario Culmone UNICAM
Vista di Implementazione Vista Comportamentale UML - Notazione Vista di Implementazione Vista Strutturale Class diagrams Object diagrams Vista Utente Component diagrams Use case diagrams Vista Comportamentale Vista di Ambiente Sequence diagrams Collaboration diagrams Statechart diagrams Activity diagrams Deployment diagrams Vista di Ambiente: Topologia degli host del sistema, la loro interazione su rete e la distribuzione dei processi Rosario Culmone UNICAM
UML - Notazione Viste Statiche Use Case Diagrams Class Diagrams Object Diagrams Component Diagrams Deployment Diagrams Viste Dinamiche Sequence Diagrams Collaboration Diagrams Statechart Diagrams Activity Diagrams Rosario Culmone UNICAM
Elementi comuni a tutti i diagrammi Nota Eâ un commento espresso attraverso il linguaggio naturale Eâ molto utile per integrare e aumentare la comprensione della notazione Rosario Culmone UNICAM
Elementi comuni a tutti i diagrammi Associazione con la Nota Una nota può essere agganciata ad ogni elemento o relazione del diagramma Rosario Culmone UNICAM
Use Case Diagrams Rappresentano le modalitĂ di utilizzo del sistema da parte di uno o piĂš utilizzatori (attori) Descrivono lâinterazione tra attori e sistema, senza rivelare lâorganizzazione interna del sistema Sono espressi in forma testuale, comprensibile anche per i non âaddetti ai lavoriâ Possono essere definiti a livelli diversi (sistema o parti del sistema) Rosario Culmone UNICAM
Use Case Diagrams Servono, nelle fasi iniziali di progettazione, per chiarire cosa dovrĂ fare il sistema Servono per colloquiare con il cliente e per scoprire ed analizzare i requisiti del sistema Una volta definiti guidano lâintero sviluppo del progetto Sono il riferimento primario per la definizione, la progettazione, lâesecuzione dei test per la verifica dei requisiti Rosario Culmone UNICAM
Use Case Diagrams Esempio: Un videoregistratore Vista del progettista: Allâinterno vi sono dei componenti Ogni componente svolge funzioni particolari Ogni componente deve essere utilizzato correttamente e rispettare dei requisiti Vista dellâutente Nel manuale câeâ la descrizione di come può essere utilizzato Come si inserisce una cassetta Come si effettua il fermo immagine EccâŚecc.. Rosario Culmone UNICAM
Use Case Diagrams - Elementi Casi dâuso Sono le funzionalitĂ che il sistema mette a disposizione dei suoi utilizzatori Descrivono il sistema da un punto di vista esterno (black box) Eâ rappresentato con unâicona a forma di ellisse Rosario Culmone UNICAM
Use Case Diagrams - Elementi Esempi Casi dâUso: Rosario Culmone UNICAM
Use Case Diagrams - Elementi Attori Sono i soggetti (esterni) che interagiscono con il sistema Possono rappresentare: esseri umani, sistemi HW o SW Ogni attore corrisponde ad un insieme coerente di ruoli che i soggetti possono assumere interagendo con il sistema Rosario Culmone UNICAM
Use Case Diagrams - Elementi Esempi Attori: Rosario Culmone UNICAM
Use Case Diagrams - Elementi Sistema Contiene un insieme di casi dâuso riguardanti un particolare sistema Descrive in modo completo gli utilizzi del sistema dallâesterno Non rileva la struttura interna del sistema Gli attori sono esterni al sistema Rosario Culmone UNICAM
Use Case Diagrams - Elementi Esempio Sistema: Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Attori e casi dâuso Ha il significato di comunicazione Ogni caso dâuso è collegato agli attori (uno o piĂš) Per evidenziare la direzione della comunicazione lâassociazione può essere orientata Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Esempio associazione Attore - Caso dâUso: Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Associazioni tra Attori Lâunica associazione ammessa tra attori è la specializzazione Lâattore specializzato eredita la partecipazione a tutti i casi dâuso con i quali comunica lâattore generico Lâattore specializzato può partecipare ad ulteriori casi dâuso ai quali lâattore generico non eâ collegato Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Esempio associazione Attore - Attore: Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Tra Casi dâUso Non è ammessa in UML una associazione di comunicazione tra i casi dâuso (un caso dâuso descrive un utilizzo completo del sistema) Non è ammessa la suddivisione di una funzionalitĂ completa in casi dâuso distinti Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Tra Casi dâUso - Specializzazione Ogni caso dâuso specializzato eredita le caratteristiche, i passi, i punti di estensione e le associazioni del caso dâuso generale Il caso dâuso specializzato può aggiungere nuovi passi o ridefinire i passi ereditati da quello generale Ogni caso dâuso generale può avere piĂš figli Ogni caso dâuso specializzato può avere piĂš padri Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Esempio associazione di specializzazione Caso dâuso â Caso dâuso: Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Tra Casi dâUso - <<include>> Casi dâuso diversi possono avere in comune una sequenza di passi da svolgere La sequenza comune può essere esportata e definita come un caso dâuso a sè stante Il caso dâuso che si ripete verrĂ poi incluso in altri casi dâuso In questo modo si evidenziano le parti in comune Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Esempio associazione <<include>> Caso dâuso â Caso dâuso: Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Tra Casi dâUso - <<extend>> Permette di definire che un caso dâuso âbaseâ può venire âestesoâ con il comportamento definito da un altro caso dâuso Lâestensione riguarda un comportamento opzionale del caso dâuso base (lâestensione eâ soggetta ad una condizione di attivazione) La direzione dellâassociazione di estensione va dal caso dâuso âdi estensioneâ al caso dâuso âbaseâ Rosario Culmone UNICAM
Use Case Diagrams - Associazioni Esempio associazione <<extend>> Caso dâuso â Caso dâuso: Rosario Culmone UNICAM
Use Case Diagrams - Sistemi Sottosistemi Ogni sistema può essere strutturato in parti distinte Ogni parte distinta interagisce con lâaltra per fornire le funzionalitĂ complessive di tutto il sistema Rosario Culmone UNICAM
Use Case Diagrams - Sistemi Esempio Sottosistemi: Rosario Culmone UNICAM
Use Case Diagrams Esempio Rosario Culmone UNICAM
Use Case Diagrams Esempio Rosario Culmone UNICAM
Class Diagram Rappresenta il sistema attraverso una visione statica Eâ il modello piĂš importante in UML perchĂŠ definisce gli elementi base del sistema Rappresenta gli oggetti che compongono il sistema, ed i relativi attributi e comportamenti Specifica, mediante le associazioni, i vincoli che legano tra loro le classi Rosario Culmone UNICAM
Class Diagram - Elementi Classe Una classe modella un insieme di oggetti omogenei ai quali sono associate proprietà statiche e dinamiche Ogni classe è descritta da: Nome Attributi (lo stato) Metodi (il comportamento) Rosario Culmone UNICAM
Class Diagram - Elementi Esempio Classe: Rosario Culmone UNICAM
Class Diagram - Elementi Classe - Visibilità Ogni attributo e metodo può avere varie caratteristiche: Pubblico Protetto Privato Rosario Culmone UNICAM
Class Diagram - Elementi Esempio VisibilitĂ : Rosario Culmone UNICAM
Class Diagram - Elementi Classe Astratta Eâ una classe che non ha una concreta implementazione ma ha solo la dichiarazione delle operazioni Rosario Culmone UNICAM
Class Diagram - Elementi Esempio Classe astratta: Rosario Culmone UNICAM
Class Diagram - Elementi Classe Interfaccia Eâ una classe solitamente implementata come astratta Una classe provvede una particolare implementazione ma le altre classi potranno interagire con essa usando una interfaccia Si aumenta notevolmente lâindipendenza tra le classi Rosario Culmone UNICAM
Class Diagram - Elementi Esempio Classe interfaccia: Rosario Culmone UNICAM
Class Diagram - Elementi Package I package sono contenitori di classi Aiutano a modellare sistemi complessi Possono esistere Package e sottopackage Si tende ad inserire nel package classi che hanno un comportamento e scopo comune nel sistema Eâ possibile definire relazioni tra package Rosario Culmone UNICAM
Class Diagram - Elementi Esempio Package: Rosario Culmone UNICAM
Class Diagram - Associazioni Associazione Una associazione definisce un canale di comunicazione tra due classi Definisce una relazione tra classi Una associazione può avere un nome Il nome è solitamente un verbo Può avere una direzione per distinguere meglio in verso della comunicazione Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Associazione: Rosario Culmone UNICAM
Class Diagram - Associazioni Associazione con Molteplicità Definisce il numero di istanze che prendono parte alla relazione Definisce se la relazione è obbligatoria o no Definisce il numero minimo e massimo di oggetti che possono essere relazionati ad un altro oggetto Rosario Culmone UNICAM
Class Diagram - Associazioni Associazione con Molteplicità La molteplicità può essere: 1 : esattamente uno 0..1 : zero o uno 0..* : zero a molti 1..* : uno a molti 7 : un numero specifico 2..4 : un intervallo specifico 1..3, 5..* : una lista di intervalli Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Associazione con molteplicitĂ : Rosario Culmone UNICAM
Class Diagram - Associazioni Ruolo Definisce un nome specifico per ogni ruolo che ha lâassociazione con la classe Eâ utile per auto associazioni Eâ utile per associazioni multiple tra due classi Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Ruolo: Rosario Culmone UNICAM
Class Diagram - Associazioni Classi di associazioni Definiscono delle proprietĂ che appartengono alla associazione e non alle classi coinvolte Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Classe di Associazione: Rosario Culmone UNICAM
Class Diagram - Associazioni Aggregazione Le aggregazioni sono una forma particolare di associazione Definisce una associazione del tipo âparte diâ Eâ una associazione asimmetrica Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Aggregazione: Rosario Culmone UNICAM
Class Diagram - Associazioni Composizione Eâ una forma di associazione piĂš stringente di aggregazione La loro esistenza ha senso solo in relazione al contenitore Se si cancella il contenitore si cancellano anche le parti Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Composizione: Rosario Culmone UNICAM
Class Diagram - Associazioni Generalizzazione Esplicita particolari comportamenti comuni Eâ una associazione tra una âsuperclasseâ ed una o piĂš versioni piĂš rifinite Le sottoclassi ereditano gli attributi e le operazioni della superclasse Una sottoclasse può ridefinire operazioni Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Generalizzazione: Rosario Culmone UNICAM
Class Diagram - Associazioni Realizzazione Eâ una particolare associazione tra due descrizioni dello stesso elemento ma con un livello differente di astrazione Eâ una associazione tra una interfaccia e la sua implementazione Indica che una classe implementa il comportamento specificato da unâaltra Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Realizzazione: Rosario Culmone UNICAM
Class Diagram - Associazioni Dipendenza Lâassociazione dipendenza indica che il cambiamento della classe âmasterâ implica un cambiamento nella classe âslaveâ Eâ importante ridurre al minimo le dipendenza per supportare al meglio i cambiamenti Rosario Culmone UNICAM
Class Diagram - Associazioni Esempio Dipendenza: Rosario Culmone UNICAM
Class Diagram Esempio: Rosario Culmone UNICAM
Class Diagram Esempio: Rosario Culmone UNICAM
Class Diagram Esempio: Rosario Culmone UNICAM
Class Diagram Esercizio: come rappresentare attraverso un class diagram la struttura dati lista Rosario Culmone UNICAM
Class Diagram Esercizio: come rappresentare attraverso un class diagram la struttura dati lista Rosario Culmone UNICAM
Class Diagram Esercizio: si vuole modellare un salotto che ha a disposizione un televisore oppure un impianto stereo, ma non tutti e due Rosario Culmone UNICAM
Class Diagram Esercizio: si vuole modellare un salotto che ha a disposizione un televisore oppure un impianto stereo, ma non tutti e due Rosario Culmone UNICAM
Class Diagram Esercizio: si vuole modellare un salotto che ha a disposizione un televisore oppure un impianto stereo, ma non tutti e due Rosario Culmone UNICAM
Class Diagram Esercizio: si vuole modellare un salotto che ha a disposizione un televisore oppure un impianto stereo, ma non tutti e due Rosario Culmone UNICAM
Class Diagram Esercizio: si vuole modellare un salotto che ha a disposizione un televisore oppure un impianto stereo, ma non tutti e due 1 Rosario Culmone UNICAM
Object Diagram Rappresenta una particolare configurazione del sistema Eâ composto da un insieme di oggetti (istanze) e le rispettive relazioni in un preciso istante di tempo Viene usato per rappresentare una particolare vista del sistema a run-time Può essere anche visto come un collaboration diagram senza lâutilizzo di messaggi Rosario Culmone UNICAM
Object Diagram - Elementi Rappresenta una singola entitĂ In un ambiente object-oriented rappresenta una istanza Mostra lo stato dellâoggetto in un particolare istante Rosario Culmone UNICAM
Object Diagram - Elementi Esempio Object: Rosario Culmone UNICAM
Object Diagram - Relazioni Link Rappresenta la relazione tra gli oggetti in un particolare istante di tempo Eâ una particola istanza delle associazioni del class diagram Rosario Culmone UNICAM
Object Diagram - Relazioni Esempio Link: Rosario Culmone UNICAM
Object Diagram Esempio: Rosario Culmone UNICAM
Object Diagram Esercizio: rappresentare attraverso unâobject diagram il seguente class diagram Rosario Culmone UNICAM
Object Diagram Esercizio: rappresentare attraverso unâobject diagram il seguente class diagram Rosario Culmone UNICAM
Object Diagram Esercizio: rappresentare attraverso unâobject diagram il seguente class diagram Rosario Culmone UNICAM
Sequence Diagram Descrive il comportamento dinamico di un gruppo di oggetti Evidenzia il modo in cui uno scenario (uno specifico percorso in un caso dâuso) viene risolto dalla collaborazione tra un insieme di oggetti Non vengono rappresentate le relazioni ed associazioni tra gli oggetti Rosario Culmone UNICAM
Sequence Diagram - Elementi Object Rappresenta una singola entità In un ambiente object-oriented rappresenta una istanza Può rappresentare una particolare istanza di un oggetto o di un attore Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Object: Rosario Culmone UNICAM
Sequence Diagram - Elementi Messaggio Rappresenta la comunicazione tra due oggetti La comunicazione può essere: Sincrona Asincrona I messaggi vengono spesso numerati per meglio mostrare la sequenza temporale delle azioni Rosario Culmone UNICAM
Sequence Diagram - Elementi Activation Rappresenta il tempo durante il quale un oggetto esegue unâoperazione Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Messaggi: Rosario Culmone UNICAM
Sequence Diagram - Elementi Messaggio di Ritorno Indica uno stimolo di ritorno dopo lâinvio di un messaggio Non rappresenta un nuovo messaggio Si commette lâerrore di utilizzarlo ogni volta che si invia un nuovo messaggio Deve essere utilizzato solamente per aggiungere informazioni e per aumentare la comprensione del sistema Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Messaggio di Ritorno: Rosario Culmone UNICAM
Sequence Diagram - Elementi Messaggio Ricorsivo Indica un messaggio inviato a se stesso Eâ utile quando si voglio rappresentare comportamenti ricorsivi Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Messaggio Ricorsivo: Rosario Culmone UNICAM
Sequence Diagram - Elementi Create e Destroy: Indica quando una particolare istanza cessa di esistere Un oggetto può morire da solo o grazie allâinvio di un messaggio da parte di un altro oggetto Eâ utile quando si rappresentano contesti multithread Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Destroy: Rosario Culmone UNICAM
Sequence Diagram - Elementi Esecuzione Concorrente: Indica quando alcune condizioni possono generare cammini diversi Rosario Culmone UNICAM
Sequence Diagram - Elementi Esempio Esecuzione concorrente: Rosario Culmone UNICAM
Sequence Diagram - Esempi Esempio: Rosario Culmone UNICAM
Sequence Diagram - Esempi Esempio: Rosario Culmone UNICAM
Collaboration Diagram Eâ simile al sequence diagram ma: Evidenzia le interazione tra le parti Rivolge maggiore attenzione allo scambio dei messaggi Non vi è una particolare dimensione per rappresentare il tempo La sequenza temporale viene rappresentata dalla sola rappresentazione numerica La sequenza dei messaggi è meno evidente che nel Sequence Diagram, mentre sono piĂš evidenti i legami tra gli oggetti Rosario Culmone UNICAM
Collaboration Diagram - Elementi Object: Rappresenta una singola entità In un ambiente object-oriented rappresenta una istanza Può rappresentare una particolare istanza di un oggetto o di un attore Rosario Culmone UNICAM
Collaboration Diagram - Elementi Esempio Object: Rosario Culmone UNICAM
Collaboration Diagram - Relazioni Link: Rappresenta la relazione tra gli oggetti in un particolare istante di tempo Eâ una particola istanza delle associazioni del class diagram Rosario Culmone UNICAM
Collaboration Diagram - Relazioni Esempio Link: Rosario Culmone UNICAM
Collaboration Diagram - Relazioni Link a se stesso: Rappresenta una particolare istanza di associazione Inizia e finisce nello stesso oggetti Rappresenta una interazione con se stesso Rosario Culmone UNICAM
Collaboration Diagram - Elementi Messaggio: Rappresenta la comunicazione tra due oggetti La comunicazione puoâ essere: Sincrona Asincrona I messaggi vengono numerati per mostrare la sequenza temporale delle azioni I messaggi si applicano ai link tra i diversi oggetti Rosario Culmone UNICAM
Collaboration Diagram - Esempi Esempio Messaggi: Rosario Culmone UNICAM
Collaboration Diagram - Elementi Esercizio: implementare un collaboration diagram per la descrizione delle dipendenze e dei messaggi scambiati durante la cancellazione di un progetto Rosario Culmone UNICAM
Collaboration Diagram - Elementi Esercizio: Rosario Culmone UNICAM
Sequence Diagram e Collaboration Diagram Esprimono informazioni simili ma le evidenziano in modo differente Spesso non eâ necessario descrivere il sistema utilizzando entrambi i diagrammi Rosario Culmone UNICAM
Statechart Diagram Rappresenta il comportamento dei singoli oggetti di una classe in termini di Eventi a cui gli oggetti sono sensibili Azioni prodotte Transizioni di stato Eâ possibile grazie a questo diagramma descrivere evoluzioni parallele In particolare descrivono il ciclo di vita degli oggetti di una classe, attraverso modifiche causate da eventi che li interessano Rosario Culmone UNICAM
Statechart Diagram - Elementi Stato Iniziale Stato Finale: Rappresentano i punti iniziali e finali di uno statechart Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Inizio Fine: Rosario Culmone UNICAM
Statechart Diagram - Elementi Stato: Rappresenta la situazione nel tempi di un oggetto che esegue una attivitĂ o aspetta qualche stimolo esterno Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Stato: Rosario Culmone UNICAM
Statechart Diagram - Elementi Transizione: Rappresenta la relazione tra due differenti stati di un oggetto Ogni transizione potrĂ avere una etichetta Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Transizione: Rosario Culmone UNICAM
Statechart Diagram - Elementi Sintassi transizione: Una transizione può essere associata a funzioni booleane su valori degli oggetti Sono utili quando non basta lâevento, ma si vuole aggiungere un predicato Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Transizione: Rosario Culmone UNICAM
Statechart Diagram - Elementi Stato con Azione: Ă spesso chiamato âattivitĂ â Eâ uno stato che ha azioni di entrata e di uscita Eâ usato per rappresentare uno stato che produce risultati Eâ utile per descrivere lâimplementazione di una operazione Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Stato con Azioni: Rosario Culmone UNICAM
Statechart Diagram - Elementi Macro stato: Un Macro stato aiuta a comprendere meglio azioni comuni di tutti i sotto stati Separa le transizioni comuni Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Macro Stato: Rosario Culmone UNICAM
Statechart Diagram - Elementi Stato concorrente: Eâ utile quando un oggetto ha diversi ed indipendenti comportamenti Non bisogna esagerare con gli stati concorrenti Se sono presenti numerosi stati concorrenti è utile dividere lâoggetto in parti piĂš semplici In breve eâ una decomposizione AND Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Stato Concorrente: Rosario Culmone UNICAM
Statechart Diagram - Elementi History: History può essere associato solo a stati non foglia Quando lâesecuzione lascia uno stato con history viene salvato lâultimo stato Quando lâesecuzione ritorna in uno stato con history si riparte dallo stato salvato Rosario Culmone UNICAM
Statechart Diagram - Elementi Esempio Stato con History: Rosario Culmone UNICAM
Statechart Diagram - Esempi Esempio: Rosario Culmone UNICAM
Statechart Diagram - Esempi Esempio: Rosario Culmone UNICAM
Statechart Diagram - Esempi Esempio: Rosario Culmone UNICAM
Statechart Diagram - Esempi Esempio: Rosario Culmone UNICAM
Activity Diagram Rappresenta sistemi di Workflow o la logica interna di un processo Può essere usato in livelli di astrazione molto differenti Eâ un caso particolare di Statechart Diagram Permette di rappresentare processi paralleli e la loro sincronizzazione Eâ molto utile quando è importante definire il comportamento dinamico degli oggetti Rosario Culmone UNICAM
Activity Diagram - Elementi Stato Iniziale Stato Finale: Come nel Statechart Diagram rappresentano i punti iniziali e finali di uno statechart Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio Inizio Fine: Rosario Culmone UNICAM
Activity Diagram - Elementi Attività : Una attività è uno stato in cui è in corso una specifica azione Esempio: Digitare un tasto Eseguire una routine O un metodo di una classe Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio AttivitĂ : Rosario Culmone UNICAM
Activity Diagram - Elementi Action flow: Rappresenta le relazioni tra differenti action state Puoâ avere una label contenente condizioni booleane o descrizioni Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio Action Flow: Rosario Culmone UNICAM
Activity Diagram - Elementi Branch: Ha un solo punto di ingresso e molti di output Solo un cammino di uscita può essere preso Può essere usato come un âif then elseâ Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio Branch: Rosario Culmone UNICAM
Activity Diagram - Elementi Fork e Join: Fork ha un solo ingresso e piĂš uscite Join piĂš ingressi ed una sola uscita Rappresentano lâevoluzione parallela del sistema Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio Fork e Join: Rosario Culmone UNICAM
Activity Diagram - Elementi Swimlanes: Indicano chi sta eseguendo quella attivitĂ Rappresenta attraverso zone verticali la responsabilitĂ di una particolare classe o di un particolare sottosistema Rosario Culmone UNICAM
Activity Diagram - Elementi Esempio Swimlanes: Rosario Culmone UNICAM
Activity Diagram - Esempi Esempio: Rosario Culmone UNICAM
Activity Diagram - Esempi Esempio: Rosario Culmone UNICAM
Activity Diagram - Esempi Esempio: Rosario Culmone UNICAM
Component Diagram Rappresenta lâorganizzazione dei vari componenti del sistema Può rappresentare unitĂ fisiche, codici sorgenti, librerie, file, etcâŚetc Rappresenta le varie dipendenze tra i componenti Rosario Culmone UNICAM
Component Diagram - Elementi Componente: Rappresenta un singolo modulo del sistema Spesso un componente rappresenta un package del class diagram Rosario Culmone UNICAM
Component Diagram - Elementi Esempio Componente: Rosario Culmone UNICAM
Component Diagram - Elementi Interfaccia: Rappresenta lâinterfaccia di un componente Un componente può avere piĂš interfacce Rosario Culmone UNICAM
Component Diagram - Elementi Esempio Interfacce: Rosario Culmone UNICAM
Component Diagram - Relazioni Dipendenze: Mostra come il cambiamento di un compomente causa il cambiamento di altri Eâ utile per mostrare quali sono i componenti che comunicano con un altro Rosario Culmone UNICAM
Component Diagram - Relazioni Esempio Dipendenze: Rosario Culmone UNICAM
Component Diagram - Esempi Esempio: Rosario Culmone UNICAM
Deployment Diagram Rappresenta la relazione fisica tra i componenti software e quelli hardware Eâ utile quando si ha la necessitĂ di mostrare componenti e oggetti in un sistema distribuito Rosario Culmone UNICAM
Deployment Diagram - Elementi Nodo: Ogni nodo rappresenta una unitĂ computazionale Mote volte viene usato per rappresentare un componente hardware Es: Un semplice device Un sensore Un server Un mainframe Rosario Culmone UNICAM
Deployment Diagram - Elementi Esempio Nodo: Rosario Culmone UNICAM
Deployment Diagram - Elementi Istanza di Nodo: Rappresenta un particolare oggetto del sistema In un contesto object-oriented rappresenta lâistanza di una classe Rosario Culmone UNICAM
Deployment Diagram - Elementi Esempio Istanza di Nodo: Rosario Culmone UNICAM
Deployment Diagram - Relazioni Connection: Rappresenta il percorso di comunicazione tra piÚ nodi Può rappresentare il protocollo di comunicazione utilizzato Rosario Culmone UNICAM
Deployment Diagram - Relazioni Esempio Connection: Rosario Culmone UNICAM
Deployment Diagram - Esempi Esempio: Rosario Culmone UNICAM
Component e Deployment Diagram Spesso è utile integrare i due diagrammi Lâintegrazione rappresenta la distribuzione dei vari componenti nei nodi del sistema Rosario Culmone UNICAM
Component e Deployment Diagram Esempio: Rosario Culmone UNICAM
Component e Deployment Diagram Esempio: Rosario Culmone UNICAM
Benefici portati da UML Superamento della guerra dei metodi Prima di UML vi erano decine di metodi di analisi e disegno object-oriented Oggi, UML ha standardizzato la notazione e la semantica a livello internazionale Risponde le aspettative degli sviluppatori PossibilitĂ di descrivere sistemi molto complessi Maggiore attenzione alla modellazione degli aspetti architetturali del sistema Maggiore facilitĂ di utilizzo e comprensione Lâarchitettura a meta-modello favorisce lâintegrazione dei vari strumenti di supporto allo sviluppo utilizzati dai progettisti Rosario Culmone UNICAM
UML Intende rappresentare qualsiasi tipo di sistema software e non, a livelli di astrazione differenziati Il numero di elementi elevato e la possibilitĂ di rappresentarli in modi diversi rende lo strumento molto flessibile ma anche complesso UML non suggerisce una sequenza prestabilita di realizzazione dei propri sistemi UML offre unâampia gamma di possibilitĂ e modalitĂ di utilizzo, i progettisti sono liberi di scegliere Rosario Culmone UNICAM
UML va adattato alle proprie esigenze Tra i fattori da considerare: Tipologia di progetto ComplessitĂ Rischio Esigenze di conformitĂ a norme e standard Comunicazione con i committenti Comunicazione con i fornitori Composizione, distribuzione e organizzazione dei gruppi di lavoro Eâ importante capire che non ha senso che tutti utilizzino UML nello stesso modo Rosario Culmone UNICAM
UML in breve Eâ uno standard: uniformitĂ nei concetti e nelle notazioni utilizzate, interoperabilitĂ tra strumenti di sviluppo, indipendenza dai produttori, dalle tecnologie Eâ articolato: può rappresentare qualunque sistema software a diversi livelli di astrazione Eâ complesso: va adattato e ritagliato in base alle specifiche esigenze dei progettisti e progetti, utilizzando solo ciò che serve nello specifico contesto Rosario Culmone UNICAM
UML - Bibliografia Jonathan P.Browen e Michael G. Hinchey, Ten Commandments of Formal Methods. Oxford Univeristy, Cambridge Booch, Jacobson e Rumbaught, The Unifed Modeling Language for Object Oriented Development. Rational Software Corp.1999 Booch,Rumbaugh e Jacobson,The Unified Modeling Language User Guide Addison Wesley, 1998 Rumbaugh,Jacobson e Booch, The Modeling Language Reference Manual, Addison Wesley, 1999 M. Fowler e K. Scott, UML Distilled, Addison Wesley, 1999 J. Warmer e A. Kleppe,The Object Constraint Language, Addison Wesley, 1999 Rosario Culmone UNICAM
UML - I tool piĂš famosi Embarcadero Rhapsody Together J Rational Rose MagicDraw UML Suite ArgoUML MetaEdit+ Rosario Culmone UNICAM
UML - Siti Web http://www.cetus-links.org http://www.rational.com http://www.omg.org Rosario Culmone UNICAM
Esercizio Progettare attraverso i vari diagrammi UML un sistema informatico per lâapertura di un cancello tramite una tessera magnetica 1:Introduco la tessera magnetica 2:Il sistema riconosce la presenza della tessera 3:Il sistema accede allâarchivio informatico 4:Il sistema confronta i dati presenti sulla tessera con quelli presenti in archivio 5:Il sistema riconosce la validitĂ della tessera 5 a:Il sistema non riconosce la validitĂ della tessera 6: Il sistema fa aprire il cancello 6 a :Il sistema lascia il cancello chiuso Rosario Culmone UNICAM
OCL Object Constraint Language
OCL - Introduzione I modelli grafici talvolta non sono sufficienti per una precisa e non ambigua specificazione Si ha la necessitĂ di aggiungere nuove regole a quelle grafiche Queste regole vengono solitamente descritte attraverso linguaggi naturali (inadatti, ambigui e inconsistenti) Rosario Culmone UNICAM
OCL - Storia I linguaggi formali basati su regole matematiche per molto tempo furono impiegati per la descrizione formale di modelli OCL nasce nel 1995 da Jos Warmer (IBM) sotto lâinfluenza di Syntropy (basato su Z) Nel 1996 OCL diviene uno standard e parte vitale di UML Rosario Culmone UNICAM
OCL Eâ un linguaggio formale di facile lettura e scrittura Eâ stato pensato per eliminare le difficoltĂ dei linguaggi formali basati su modelli matematici Eâ basato sulle espressioni, ognuna delle quali è no side-effect Le sue espressioni sono atomiche Si ispira alla programmazione per contratto di Meyer (Eiffel) Rosario Culmone UNICAM
OCL e UML Può arricchire lâespressivitĂ di UML Può definire attraverso una sintassi chiara e non ambigua dei vincoli Può utilizzare gli elementi definiti allâinterno dei diagrammi UML (classi, associazioni..) Rosario Culmone UNICAM
OCL - Sintassi OCL utilizza la dot notation comune hai linguaggi object-oriented Ha un operatore freccia (->) per far riferimento a collezione di oggetti Rosario Culmone UNICAM
OCL â Constraint Eâ una restrizione di uno o piĂš valori di un modello Vengono applicati alle relazioni o ai singoli elementi del modello per restringere il loro uso Le espressioni definite allâinterno di un Constraint devono essere vere per poter utilizzare lâelemento Un contraint è composto da: Invariante Preconditione Postconditione Rosario Culmone UNICAM
OCL â Constraint Esempio: context TypeName inv: expression Context: introduce il contesto dellâespressione TypeName: il nome della classe o lâassociazione Inv: il tipo di constraint (invariante preconditione o postconditione) Rosario Culmone UNICAM
OCL â Constraint Expression: si possono utilizzare varie parole chiave self : è usata per definire lâistanza del contesto --commento : per i commenti self.property : è il valore della proprietĂ di nome property di self self.attribute : è il valore dellâattributo atribute di una particolare istanza identificata da self. self.operation(argument,..) : per riferire unâoperazione di un contesto object.rolename : partendo da uno specifico oggetto di potrĂ navigare attraverso le associazioni (se la molteplicitĂ dellâassociazione è â0..1â o â1â il valore dellâespressione è un oggetto altrimenti un insieme Rosario Culmone UNICAM
OCL â Invariante Ă sempre accoppiata ad una classe o interfaccia Unâinvariante è un vincolo che definisce una condizione che deve sempre risultare vera Eâ composta da espressioni che controllano lâesatto uso dellâoggetto Rosario Culmone UNICAM
OCL â Invariante Esempio: Rosario Culmone UNICAM
OCL â Invariante Tramite lâOCL è possibile navigare attraverso i rolename Se lâassociazione ha molteplicitĂ â0..*â..â*â il risultato sara un insieme: Set: un insieme non ordinato privo di duplicati Bag: un insieme non ordinato con duplicati Sequence: un insieme ordinato con duplicati Se non è specificata una particolare situazione per default lâinsieme è un Set Rosario Culmone UNICAM
OCL â Invariante Esempio: Rosario Culmone UNICAM
OCL â Invariante Esempio invarianti nelle associazioni: Rosario Culmone UNICAM
OCL â Invariante Esempio invariante nella molteplicitĂ dellâassociazione: Rosario Culmone UNICAM
OCL â Invariante Esempio invariante nella molteplicitĂ dellâassociazione: Rosario Culmone UNICAM
OCL â Pre Postcondition Vengono associati ad operazioni e metodi del modello object-oriented Preconditione: è un constraint che deve essere validato allâinizio dellâesecuzione dellâoperazione Postconditione: è un constraint che deve essere validato al termine dellâoperazione Rosario Culmone UNICAM
OCL â Pre Postcondition Esempio: Rosario Culmone UNICAM
OCL â Pre Postcondition Esempio: Rosario Culmone UNICAM
OCL â Pre Postcondition Esempio uso di pre e postcondition: Rosario Culmone UNICAM
OCL â Pre Postcondition Esempio uso di result: Rosario Culmone UNICAM
OCL â Pre Postcondition Esempio uso di @pre: Rosario Culmone UNICAM
OCL - Vantaggi Migliore Documentazione i constraints aggiungono al modello grafico maggiori informazioni I constraints possono essere fusi graficamente nella stessa descrizione Rosario Culmone UNICAM
OCL - Vantaggi Migliore Precisione I constraints non possono essere interpretati differentemente da diverse persone Sono non ambigui e consistenti Rosario Culmone UNICAM
OCL - Vantaggi Migliore Comunicazione La comunicazione attraverso linguaggi naturali è spesso responsabile di fallimenti o aumenti di budget Con OCL la comunicazione delle intuizioni avviene in modo non ambiguo e preciso Attraverso lâOCL i fraintendimenti nasceranno nelle prime fasi del ciclo di vita dellâapplicazione con risparmio di soldi e tempo Rosario Culmone UNICAM
OCL - Vantaggi Generazione automatica del codice Alcuni CASE generano automaticamente controlli da espressioni OCL Eâ possibile controllare la consistenza delle componenti del sistema in modo automatico Maggiori vincoli implicano minori errori di progettazione Rosario Culmone UNICAM
OCL - Bibliografia Object Constraint Language Specification, version 1.1, OMG document ad970808, 1997 The Object Constraint Language Precise Modeling with UML, Jos Warmer, Anneke Kleppe, Addison-Wesley 2000 Rosario Culmone UNICAM
OCL - Siti Web http://www.klasse.nl/ocl/ http://www.ibm.com/software/ad/library/standards/ocl.html Rosario Culmone UNICAM
Meccanismi di Estensione di UML
Meccanismi di Estensione di UML UML con lâattuale notazione prevede elementi per la modellazione di classi, associazioni, collaborazioni, task, stati⌠Qualche estensione è giĂ definita come ad esempio gli attori. La modellazione di applicazioni in certi particolari domini richiede elementi basati su concetti specializzati Rosario Culmone UNICAM
Meccanismi di Estensione di UML UML di per sĂŠ offre strumenti molto generali e completi. UML viene spesso scelto come base per modellare elementi specifici perchĂŠ è altamente estendibile. Usando questi meccanismi il livello metamodel dellâUML può essere facilmente esteso, perfezionato e adattato per uno specifico dominio o processo. Rosario Culmone UNICAM
Meccanismi di Estensione di UML UML definisce tre meccanismi di estensione: Tagged Value, Constraint, e Stereotype. Rosario Culmone UNICAM
Meccanismi di Estensione di UML Tagged Value: Aggiunge informazioni ad un elemento giĂ esistente. Queste nuove informazioni sono secondarie rispetto alle regole semantiche dellâelemento. Rosario Culmone UNICAM
Meccanismi di Estensione di UML Constraint: Aggiunge regole semantiche o condizioni che devono essere mantenute vere per forzare e restringere il corretto uso dellâelemento. Hanno una prioritĂ maggiore rispetto ad i Tagged Value Rosario Culmone UNICAM
Meccanismi di Estensione di UML Stereotype: à il metodo piÚ flessibile per estendere UML. à un meccanismo che definisce un nuovo e piÚ specializzato elemento basato su uno già esistente. Uno Stereotype può essere estensione di tutti i tipi di elementi inclusi classes, packages, components e notes. Può anche basarsi su relazioni come associations, generalizations, e dependencies. Rosario Culmone UNICAM
Meccanismi di Estensione di UML Stereotype: Uno Stereotype eredita tutte le proprietĂ base di un elemento generico aggiungendo e perfezionando la semantica per il suo corretto utilizzo. Rosario Culmone UNICAM
Meccanismi di Estensione di UML Rosario Culmone UNICAM
Meccanismi di Estensione di UML Rosario Culmone UNICAM
Design Pattern
Design Pattern - Introduzione Eâ una nuova tecnica per lo sviluppo di applicazioni riusabili orientate agli oggetti Viene impiegata per la realizzazione di componenti e per la definizione del loro corretto uso Eâ comunemente integrato allâinterno dei tool di supporto allo sviluppo Rosario Culmone UNICAM
Design Pattern - Introduzione PerchĂŠ? In un contesto ottimale uno sviluppatore non dovrĂ mai affrontare un nuovo problema dallâinizio Si devono cercare soluzioni valide giĂ applicate con successo Soluzioni giĂ testate aumentano la robustezza del software e velocizzano le fasi di testing Rosario Culmone UNICAM
Design Pattern - Indroduzione Un pattern è lâastrazione di una soluzione riusabile in contesti eterogenei Anche basando il proprio processo di produzione del software nella realizzazione di componenti integrabili bisogna trovare il giusto equilibrio: Rosario Culmone UNICAM
Design Pattern - Introduzione Rosario Culmone UNICAM
Design Pattern - Introduzione I vantaggi Notevole aumento della capacitĂ di produrre software riutilizzabile Si danno allo sviluppatore strumenti utili per la modellazione di nuovi sistemi Si aumenta la documentazione e la chiarezza Si aumenta la velocitĂ di sviluppo Si aumenta la robustezza del software Si aumenta la flessibilitĂ e lâeleganza del software Rosario Culmone UNICAM
Design Pattern - Storia Il termine âpatternâ fu introdotto dallâarchitetto austriaco Christopher Alexander negli anni â70 (per la pianificazione di costruzioni in ambienti urbani) Nel 1987 Cunningham e Beck adattarono lâidea di Alexander per guidare programmatori inesperti in Smalltalk Rosario Culmone UNICAM
Design Pattern - Storia Dal 1990 al 1992 la famosa Gang of Four (Gamma, Helm, Johnson e Vlissides) incominciarono la stesura di un catalogo di pattern Nel 1995 la Gang of Four pubblicarono Design Pattern, elements of reusable object-oriented software Rosario Culmone UNICAM
Design Pattern â Cosâè un Pattern Un pattern è lâastrazione di un problema che si verifica nel nostro dominio, rappresentandone la soluzione in modo che sia possibile riutilizzarla per numerosi altri contesti (Christofer Alexander) Rosario Culmone UNICAM
Design Pattern â Composizione Nome Il nome del pattern è molto utile per descrivere il problema, la sua soluzione ed il suo uso Composto da una o due parole Cercare di omogeneizzare i vocabolari personali di tutti i colleghi Rosario Culmone UNICAM
Design Pattern â Composizione Problema Descrive quando applicare un pattern definendo il contesto ed il dominio di appartenenza In generale include la lista di condizioni che devono essere valide per poter giustificare lâuso di un determinato pattern Rosario Culmone UNICAM
Design Pattern â Composizione Soluzione Descrive gli elementi che verranno usato durante la modellazione Descrive le relazioni e le responsabilitĂ degli elementi Eâ importante capire che la soluzione non rappresenta una specifica implementazione o caso dâuso ma un modello che si applica a differenti situazioni Rosario Culmone UNICAM
Design Pattern â Composizione Conseguenze Raccoglie lâelenco dei tempi e dei risultati Eâ importante quando si devono prendere decisioni di modellazione Descrive varie metriche, i costi ed i tempi in relazione ai benefici che il pattern introdurrebbe Rosario Culmone UNICAM
Design Pattern â La scelta Esistono numerosi cataloghi di pattern Solitamente sono descritti attraverso una notazione comune âDesign Languageâ Eâ importante reperire il pattern adeguato per il proprio specifico dominio Rosario Culmone UNICAM
Design Pattern â La scelta Considerare come un pattern risolve il problema: Ă utile considerare lâastrazione, le interfacce, gli oggetti che vengono utilizzati per raggiungere la soluzione Rosario Culmone UNICAM
Design Pattern â La scelta Considerare il suo intento: Capire lo scopo di ogni pattern è fondamentale per rilevare quelli adatti per lo specifico problema Rosario Culmone UNICAM
Design Pattern â La scelta Studiare le interazioni tra pattern: Conoscere le relazioni tra i pattern (grazie anche a notazioni grafiche come lâUML) aiuta senzâaltro a scegliere quello corretto Rosario Culmone UNICAM
Design Pattern â La scelta Studiare le varie famiglie di pattern: I pattern vengono solitamente divisi in famiglie Per aumentare la velocitĂ di ricerca è utile conoscere lo scopo di ogni famiglia Rosario Culmone UNICAM
Design Pattern â La scelta Considerare come deve variare il progetto: Valutare quali elementi del problema hanno la possibilitĂ di cambiare durante lo sviluppo Eâ bene cercare di incapsulare questi elementi cosĂŹ da aumentare la generale indipendenza, allontanando la necessitĂ di un ridisegno della struttura Rosario Culmone UNICAM
Design Pattern â Esempio Viste A B C A B C 60 30 10 50 30 20 80 10 10 A B C A=50% B=30% C=20% Modello Rosario Culmone UNICAM
Design Pattern â Pattern Observer Intento Definire una dipendenza uno-a-molti tra oggetti, in questo modo quando un oggetto cambia stato tutti gli ascoltatori collegati sono notificati ed aggiornati Rosario Culmone UNICAM
Design Pattern â Pattern Observer ApplicabilitĂ Quando lâastrazione è composta da due aspetti, uno dipendente dallâaltro Quando il cambiamento di un oggetto richiede il cambiamento di altri Quando non si conosce a priori il numero degli oggetti dipendenti Quando un oggetto deve notificare ad altri un cambiamento senza conoscere la struttura degli oggetti dipendenti Rosario Culmone UNICAM
Design Pattern â Pattern Observer Rosario Culmone UNICAM
Design Pattern â Pattern Observer Conseguenze Maggiore modularitĂ : Subject e opbservers possono cambiare Maggiore elasticitĂ : posso definire e aggiungere diversi observers Maggiore flessibilitĂ : posso agganciare diversi observers ognuno dei quali può implementare una differente vista Rosario Culmone UNICAM
Design Pattern â Definizione La descrizione di un pattern viene effettuata grazie ad uno sche ma introdotto dalla Gang of Four Oltre ad una notazione grafica è utile allegare anche una documentazione Rosario Culmone UNICAM
Design Pattern â Definizione Nome: la scelta del nome è vitale Intento: una breve descrizione che risponde alle domande âcosa fa il pattern?â âa quale problema è rivolto?â Motivazione: uno scenario che illustra il problema e come le classi e gli oggetto sono strutturati nel pattern Rosario Culmone UNICAM
Design Pattern â Definizione ApplicabilitĂ : una descrizione dei domini dove può essere applicato il pattern Struttura: una notazione grafica (UML) Partecipanti: lâelenco e le responsabilitĂ delle classi Rosario Culmone UNICAM
Design Pattern â Definizione Collaborazioni: una descrizione di come i partecipanti collaborino per svolgere le proprie responsabilitĂ Conseguenze: i risultati che lâuso del pattern genera Implementazione: una descrizione delle tecniche di programmazione e le specifiche del linguaggio che devono essere usate per lâimplementazione del pattern Rosario Culmone UNICAM
Design Pattern â Definizione Esempio: un breve esempio (C++ o Java) che illustra la corretta implementazione del pattern Pattern collegati: lâelenco dei pattern che devono essere affiancati a quello descritto, le differenze ed i possibili legami Rosario Culmone UNICAM
Design Pattern â Trovare e Scrivere Pattern I pattern non devono assolutamente essere soluzioni a problemi nuovi Un pattern non deve mostrare una soluzione ma deve raccontare lâesperienza catturata durante la sua individuazione Una singola soluzione ad un problema non costituisce un pattern Inizialmente un pattern è una soluzione che si verifica in situazioni multiple Rosario Culmone UNICAM
Design Pattern â In sintesi Un pattern aumenta la comunicazione tra team Lâuso dei pattern aumenta lâastrazione e lâeleganza della modellazione âLâingegneria del software senza la conoscenza dei pattern è programmazione tradizionaleâ Rosario Culmone UNICAM
Singleton Rosario Culmone UNICAM
State Rosario Culmone UNICAM
Iterarator Rosario Culmone UNICAM
Observer Rosario Culmone UNICAM
Observer Il pattern observer risolve un comune problema: cosa fare se un gruppo di oggetti necessitano di essere aggiornati quando altri oggetti cambiano stato? Il cambiamento di un oggetto provoca dinamicamente il cambiamento di altri oggetti. Un oggetto dovrebbe poter notificare ad altri oggetti il cambiamento del proprio stato senza conoscere nulla sulla loro identitĂ . Il meccanismo ad eventi di AWT eâ implementato addottando il pattern Rosario Culmone UNICAM
Observer public void update( Subject subject ) ; public interface Observer { Â Â Â Â Â Â Â public void update( Subject subject ) ; } public class Subject { Â Â Â Â Â Â Â protected Vector observers = new Vector() ; Â Â Â Â Â Â Â public void addObserver( Observer o ) { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â observers.addElement( o ) ; Â Â Â Â Â Â Â } Â Â Â Â Â Â Â public void removeObserver( Observer o ) { Â observers.removeElement( o ) ; Â Â Â Â Â Â Â public void notify() { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Enumeration e = observers.getElements() ; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â while ( e.hasMoreElements() ) { Â Â Â Â Â Â ((Observer)e.nextElement()).update( this ) ; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â } Â Â Â Â Â Â Â } Rosario Culmone UNICAM
Adapter Rosario Culmone UNICAM
Composite Rosario Culmone UNICAM
Factory Rosario Culmone UNICAM
Factory Il pattern Factory definisce una interfaccia per la creazione di un oggetto, ma lascia alle sottoclassi la decisione su che classe istanziare. Fornisce unâinterfaccia per la creazione di oggetti senza specificare la loro classe. Il pattern Factory eâ applicabile in tutti quei casi in cui si vuole centralizzare la decisione di quale classe istanziare. Rosario Culmone UNICAM
Factory public AbstractProductA createProductA(); public interface AbstractFactory { Â Â Â Â Â Â Â public AbstractProductA createProductA(); Â Â Â Â Â Â Â public AbstractProductB createProductB(); } public class ConcreteFactory1 implements AbstractFactory { Â Â Â Â Â Â Â public AbstractProductA createProductA() { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return (AbstractProductA ) new ProductA1(); Â Â Â Â Â Â Â } Â Â Â Â Â Â Â public AbstractProductB createProductB() { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return (AbstractProductB ) new ProductB1(); public class ConcreteFactory2 implements AbstractFactory { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return (AbstractProductA ) new ProductA2(); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return (AbstractProductB ) new ProductB2(); }Â Rosario Culmone UNICAM
Flyweight Rosario Culmone UNICAM
Decorator Rosario Culmone UNICAM
Progetto Il documento è composto da: Valutazione Titolo del progetto, componenti del gruppo Descrizione (max una pagina) Dizionario dei termini (max due pagine) Elenco dei diagrammi (max 20). Almeno un diagramma per tipo Valutazione Maggiore valutazione per uso estensivo di OCL Maggiore valutazione per migliore descrizione di componenti complessi Maggiore valutazione per descrizione chiara Rosario Culmone UNICAM
Bibliografia Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King, Shlomo Angel, A Pattern Language. Oxford University Press, New York, 1977. Ward Cunningham, Kent Beck, Using Pattern Languages for Object-Oriented Programs, OOPSLA Orlando, 1987. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissedes, Design Patterns Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. Rosario Culmone UNICAM