Evoluzione di UML Andrea Bencini [email protected] 24-03-2004.

34
Evoluzione di UML Andrea Bencini [email protected] 24-03-2004

Transcript of Evoluzione di UML Andrea Bencini [email protected] 24-03-2004.

Page 1: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

Evoluzione di UML

Andrea [email protected]

24-03-2004

Page 2: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

Scopo della Tesi Questa tesi ha lo scopo di approfondire i

cambiamenti che sono stati fatti durante gli anni su UML.

La tesi si propone di essere un utile strumento per chi, conoscitore di una versione di UML, volesse conoscere ed apprendere le più importanti novità introdotte nelle versioni successive.

La particolare attenzione riservata ai cambiamenti grafici permette all’osservatore di un modello di risalire velocemente alla versione di UML utilizzata per lo sviluppo dello stesso e di conoscerne quindi in anticipo le eventuali limitazioni espressive.

Page 3: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

Origine di UML I primi linguaggi di modellazione orientati agli oggetti

cominciarono ad apparire tra la metà degli anni 70 e la fine degli anni 80 con vari esperimenti che adottavano approcci differenti all’analisi e alla progettazione Object-Oriented.

Tra il 1989 e il 1994 il numero di linguaggi di modellazione passò da 10 a più di 50, ma nessuno di questi riusciva a soddisfare pienamente le esigenze degli utenti.

I metodi più diffusi erano comunque il metodo Booch’93 di Booch, il metodo OMT-2 (Object Modelling Technique) di Rumbaugh e il metodo OOSE (Object-Oriented Software Engineering) di Jacobson.

Page 4: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.1

Page 5: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.2 La versione 1.2 venne resa disponibile

dalla OMG nel Luglio del 1998. Apportò modifiche editoriali, tese a

migliorare l’organizzazione del documento e a eliminare errori grammaticali e di stampa, ma non sostituì la versione 1.1 che rimase lo standard ufficiale di UML.

La versione 1.2 non è stata ufficialmente approvata, poiché non apporta cambiamenti di alcun tipo

Page 6: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.3 Dopo l’adozione di UML 1.1 nel novembre 1997, la OMG

istituì una “Revisions Task Force (RTF)” per valutare i commenti del pubblico e provvedere a una revisione della specifica tesa all’eliminazione di bug, incoerenze, ambiguità, ed omissioni.

I membri della RTF emisero diversi rapporti preliminari, che terminarono nel 1999 con la proposta di una nova specifica: UML 1.3.

La versione 1.3 di UML va considerata come una versione interna e non standard ufficiale della OMG.

Aggiunti gli stati di sync per la sincronizzazione di attività concorrenti

Ridefinite le relazioni dei casi d’uso: generalizzazione, include ed estende

Viene aggiunta la specifica di XMI 1.0. Vengono definiti gli stati di sottoattività Nei diagrammi di collaborazione e di sequenza, vengono

distinte due forme: la forma descrittore e la forma istanza

Page 7: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.4 Rilasciato nel 2001 Nei diagrammi di collaborazione è ora possibile

contenere anche vincoli Diagrammi di Sequenza spezzati Cambia leggermente la notazione grafica dei

componenti Definiti anche gli artefatti per specificare i componenti

fisici (file sorgenti, file eseguibili, e script) che implementano i componenti.

Aggiunta la visibilità di package (simbolo “ ~ ”) adatta ai modelli riguardanti l’implementazione Java.

Aggiunta la proprietà di ordinamento per gli attributi (“ordinati” o “non ordinati” ).

Page 8: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.5 Il principale cambiamento nella specifica della versione

1.5 è stata l’aggiunta della semantica delle Azioni. Un passo necessario per rendere UML un linguaggio di programmazione in attesa di UML 2.0.

Una azione primitiva è una azione che non può essere decomposta in altre azioni. Le azioni primitive comprendono funzioni matematiche, azioni che lavorano su oggetti in memoria, e azioni riguardanti l'interazione tra oggetti, come lo scambio di messaggi.

Una procedura è gruppo di azioni con un input e un output.

Per adattarsi alle elaborazioni concorrenti, la semantica di UML definisce le azioni come elementi eseguiti tutti in maniera concorrente, se non altrimenti specificato da un flusso di dati o da flusso di controllo.

Page 9: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.5: Azioni Gruppi di Azioni: raggruppano azioni in unità

più larghe per essere usate in procedure, condizioni, e cicli

Azioni Condizionali: prevedono l’esecuzione condizionata di sotto-azioni a seconda di un risultato di un test eseguito a tempo di esecuzione

Azioni Cicliche: permettono l’esecuzione ripetuta di una sotto-azione in base al risultato di un test eseguito ripetutamente a tempo di esecuzione. L’output di una iterazione è usato come input per la successiva iterazione

Page 10: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.5: Azioni Azioni di lettura e azioni di scrittura. Le

prime prendono valori mentre le seconde modificano valori o creano e distruggono oggetti e collegamenti.

Azioni computazionali trasformano un insieme di valori di input per produrre un insieme di valori di output

Azione di Mappatura: applica una sottoazione in parallelo ad ogni elemento di una collezione di dati, restituendo un output che è una collezione di dati della stessa dimensione e forma.

Page 11: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 1.5: Azioni Azione Filtro: sceglie un sottoinsieme degli

elementi della collezione di ingresso e restituisce una nuova collezione della stessa forma, in base al risultato “booleano” di una sottoazione applicata ad ogni elemento.

Azione Iterata: applica una sottoazione in maniera ripetuta ad ogni elemento della collezione, accumulando i risultati in variabili del ciclo "loop".

Azione di Riduzione: applica ripetutamente una sottoazione a coppie di elementi adiacenti sostituendoli col risultato della operazione. L'azione continua fino a che il risultato finale non è composto da un singolo elemento.

Page 12: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

If factor = 2 then…

Page 13: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0 UML 2.0 rappresenta la più grande novità

da quando l’UML è stato originariamente approvato. La specifica ufficiale dell’ Unified Modeling Language versione 2.0 è attesa per il 30 Aprile 2004.

Non si tratta di una semplice correzione e evoluzione delle specifiche precedenti, ma di una vera e propria nuova specifica con novità importanti in ogni sua parte.

Page 14: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Le Request For Proposals Per la definizione di UML 2.0, la OMG ha

creato quattro Request For Proposals (RFP) complementari: UML 2.0 Infrastructure UML 2.0 Superstructure UML 2.0 Object Constraint Language UML 2.0 Diagram Interchange.

Queste quattro parti, dovranno essere completamente adeguate per formare un solo standard UML 2.0.

Page 15: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Novità Potenziata l’estensione nei casi d’uso Potenziati i diagrammi di classe Nuova visualizzazione delle interfacce Definiti i Gruppi di Generalizzazioni Definite Corsie gerarchiche e a più dimensioni Aggiunti i Frammenti Combinati nei Diagrammi di Sequenza Nuovi vincoli temporali nei Diagrammi di Sequenza Aggiunti i Diagrammi Temporali Diagrammi di Collaborazione vengono rinominati in

Diagrammi di Comunicazione Nuova grafica per i Componenti Le azioni vengono integrate nei diagrammi di attività Nuova gestione delle Eccezioni Aggiunte le Regioni di Espansione per raggruppare le azioni

Page 16: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Estensione nei Casi d’uso

Il caso d’uso “Perform ATM Transaction” ha un punto di estensione Selection”. Questo caso d’uso è esteso attraverso questo punto di estensione dal caso d’uso “On-Line Help” ogni volta che l’esecuzione di “Perform ATM Transaction” si trova nella posizione indicata dal punto di estensione “Selection” e l’utente seleziona il tasto HELP

Page 17: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

Azioni nei Diagrammi di Attività

UML 2.0 effettua una fusione tra i diagrammi di attività e le azioni, e le attività vengono separate dalla semantica dei diagrammi di stato.

Le azioni prendono il posto degli stati di azione e degli stati di sottoattività.

Le attività sono una struttura di ordine superiore composte da una sequenza di azioni

L’attività gestisce la coordinazione della esecuzione delle azioni, utilizzando metodi di controllo di flusso e dei dati.

Le azioni possono ora visualizzare le pre e le post- condizioni come note attaccate alla azione. Una pre-condizione a una azione indica cosa deve essere verificato prima che inizi l’azione. Una post-condizione è una restrizione che diventa vera dopo che l’azione è stata completata.

Page 18: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Azioni

Page 19: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Le eccezioni

Page 20: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Regione di Espansione

Page 21: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Regione di Espansione Il modo parallelo permette a una regione di espansione di

eseguire le interazioni in modo indipendente, sovrapponendole nel tempo. Se la collezione degli elementi in ingresso è ordinata, gli elementi vengono fatti eseguire alla regione in base a questo ordine.

Nel modo iterativo, l’esecuzione della regione avviene in modo sequenziale, ogni esecuzione comincia solo dopo che la precedente è terminata. Se la collezione degli elementi in ingresso è ordinata, gli elementi vengono fatti eseguire alla regione in base a questo ordine.

Nel modo stream, tutti gli elementi di ingresso entrano nella regione di espansione nello stesso momento come un flusso. La regione viene quindi eseguita una sola volta; gli elementi, se ordinati, mantengono il loro ordine nella esecuzione.

Page 22: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Gruppi di Generalizzazione

Page 23: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Gruppi di Generalizzazione

La classe “persona” può essere specializzata o da “persona di sesso femminile”, o da “persona di sesso maschile”. Questo gruppo di generalizzazione è “{completo, disgiunto}” visto che una persona è necessariamente o uomo o donna. Inoltre una persona può essere impiegata. In questo caso il vincolo è {incompleto, disgiunto} poiché esistono anche persone che non rientrano nella categoria di impiegati.

E’ possibile raggruppare gli oggetti per categorie o per classi, permettendo importanti e potenti tecniche di organizzazione.

Page 24: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Corsie

Page 25: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Corsie

Page 26: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Interfacce

Page 27: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Componenti

Page 28: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Componenti

Page 29: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Diagrammi di Comunicazione

Page 30: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Tempo nei Diagrammi di Sequenza

L’utente “:User” manda un messaggio Code e la cui durata viene misurata e memorizzata in “d”. “:ACSystem” manderà indietro due messaggi all’utente: CardOut è vincolato a durare tra 0 e 13 unità di tempo. In aggiunta, l’intervallo tra l’invio di Code e la ricezione di OK è vincolato a durare tra “d” e “3*d”. Si può notare anche l’osservazione del tempo “t” all’invio del segnale di OK e di come questo sia usato per vincolare il tempo di ricezione di CardOut.

Page 31: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Frammenti Combinati Uno dei cambiamenti più evidenti nei diagrammi

di sequenza, è l’aggiunta dei Frammenti Combinati per gestire comportamenti iterativi, condizionali.

Questo permette di esprimere algoritmi abbastanza completi nei diagrammi di sequenza. Sono stati quindi eliminati i vecchi sistemi per marcare le iterazioni.

Un frammento combinato è composto da un operatore di iterazione e da un corrispondente operando di iterazione.

La semantica varia a seconda dell’operatore di iterazione

Page 32: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Frammenti Combinati

Page 33: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

UML 2.0: Diagrammi Temporali

Page 34: Evoluzione di UML Andrea Bencini bencini@cs.unibo.it 24-03-2004.

Conclusioni L’UML si muove rapidamente per fornire un ambiente di

modellazione visuale capace di esprimere le attuali tecnologie software.

L’evoluzione di UML è stata sempre guidata dalla comunità degli utenti utilizzatori.

Le modifiche di UML 2.0 apportano un grande cambiamento alla semantica e alla visualizzazione grafica dei modelli. UML 2.0 acquisisce una maggiore capacità di modellare graficamente gli algoritmi dei linguaggi di programmazione.

Vengono inseriti anche nuovi e più potenti forme per il riuso dei modelli.

La strada seguita permette comunque ad UML di adattarsi direttamente alle necessità dell’industria e di rimanere il linguaggio di modellazione visuale standard anche per i prossimi anni.