350 likes | 500 Views
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.
E N D
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.
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.
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.
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 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.
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 “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
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.
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 • 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: 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
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.