Evoluzione di UML
Andrea Bencini
[email protected]
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.
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 (ObjectOriented Software Engineering) di Jacobson.
UML 1.1
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

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
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” ).
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.
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
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.
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.
If factor = 2 then…
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.

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
UML
UML
UML
2.0
2.0
2.0
2.0
Infrastructure
Superstructure
Object Constraint Language
Diagram Interchange.
Queste quattro parti, dovranno essere
completamente adeguate per formare un
solo standard UML 2.0.
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
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 “OnLine 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
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 postcondizioni come note attaccate alla azione. Una precondizione 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.
UML 2.0: Azioni
UML 2.0: Le eccezioni
UML 2.0: Regione di Espansione
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.
UML 2.0: Gruppi di Generalizzazione
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.
UML 2.0: Corsie
UML 2.0: Corsie
UML 2.0: Interfacce
UML 2.0: Componenti
UML 2.0: Componenti
UML 2.0: Diagrammi di Comunicazione
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.
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
UML 2.0: Frammenti Combinati
UML 2.0: Diagrammi Temporali
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.
Scarica

Le novità di UML 2.0