Trasformazione da UML 2.0 a Java


La trasformazione da UML a Java trasforma le specifiche UML 2.0 in classi Java. E' possibile utilizzare la trasformazione per produrre un progetto Java dalle specifiche UML 2.0. Inoltre, è possibile applicare la trasformazione dopo la produzione iniziale per unire i modelli UML aggiornati al codice Java esistente.
 

1. Informazioni preliminari

Prima di utilizzare la trasformazione da UML 2.0 a Java, è necessario conoscere la creazione e la modifica dei modelli UML 2.0 e dei progetti Java.

La procedura di seguito riportata illustra il modo più semplice per utilizzare la trasformazione Java.

Per trasformare un modello UML in Java:
1. Passare alla prospettiva di modellamento.
2. Nella vista Esplora modello, fare clic con il tastino destro del mouse su un classe UML (ad esempio, Class1).
3. Fare clic su Trasforma > Esegui trasformazione > da UML2 a Java.
4. Viene aperta la finestra di dialogo Esegui trasformazione. Fare clic sul pulsante Crea contenitore di destinazione.
5. Viene aperta la finestra di dialogo Nuovo progetto Java. Immettere nel campo il Nome progetto, quindi fare clic su Fine.
6. Nella finestra di dialogo Esegui trasformazione, fare clic su Fine.

Il nuovo progetto Java contiene un pacchetto predefinito, contenente la nuova classe Java: Class1.

Inoltre, la trasformazione può eseguire altre varie funzioni più complesse, come ad esempio la sovrascrittura dei nomi senza modificare il modello di origine, la sostituzione dell'oggetto UML con una visualizzazione, l'unione delle modifiche nel modello UML e l'origine Java, oltre alla convalida del modello UML per eventuali problemi di trasformazione.
 

2. Dettagli sulla trasformazione

2.1 Origine della trasformazione

E' possibile selezionare i modelli UML 2.0, i pacchetti, oltre alle classi e le interfacce non nidificate, come origine per la trasformazione. La trasformazione procede se si selezionano altri elementi come origine, ma non trasforma tali elementi. Quando la trasformazione trasforma un modello, un pacchetto, una classe o un'interfaccia, trasforma anche tutte le covi contenute in tali oggetti. Ad esempio, quando la trasformazione trasforma una classe, vengono trasformate anche tutte le operazioni e le proprietà di tale classe.
 

2.2 Destinazione della trasformazione

E' possibile selezionare qualunque progetto Java che dispone di almeno una cartella di origine come destinazione della trasformazione.
 

2.3 Interpretazione degli oggetti di origine UML

UML Java 
Pacchetto Pacchetto Java con lo stesso nome*
Pacchetto stereotipato <<prospettiva>> Ignorato
Pacchetto con la parola chiave <<Analisi>> o <<analisi>> Ignorato
Classe Classe Java con lo stesso nome* e visibilità
(Classe) proprietà isLeaf  La classe Java è "final" se vera
(Classe) proprietà isAbstract La classe Java è "abstract" se vera
(Classe) Generalizzazione La classe Java "estende" la classe superiore specificata
Implementazione La classe Java "implementa" l'interfaccia specificata
Interfaccia Interfaccia Java con lo stesso nome* e visibilità 
(Interfaccia) Generalizzazione L'interfaccia Java "estende" l'interfaccia specificata
Operazione Metodo Java con lo stesso nome* e visibilità
(Operazione) proprietà isStatic Il metodo Java è "static" se vero
(Operazione) proprietà isAbstract Il metodo Java è "abstract" se vero
(Operazione) proprietà isLeaf Il metodo Java è "final" se vero
(Operazione) con lo stesso nome della classe Costruttore Java
(Operazione) stereotipata <<create>> Costruttore Java
Parametro Parametro Java con lo stesso nome*
(Parametro) Immetti proprietà Il parametro Java dispone del tipo specificato, che può essere un'altra classe o un tipo primitivo.
(Parametro) Proprietà di orientamento Il metodo Java ha "return <param type>" se impostato su "return", altrimenti aggiunge "<param type> <param name>" alla firma del metodo
(Parametro) Proprietà molteplicità  Consultare la tabella di seguito riportata contenente le informazioni sulla molteplicità
Proprietà  Campo Java con lo stesso nome* e visibilità
(Proprietà) proprietà isStatic Il campo Java è "static" se vero
(Proprietà) proprietà isLeaf Il campo Java è "final" se vero
(Proprietà) proprietà tipo Il campo Java dispone del tipo specificato, che può essere un'altra classe o un tipo primitivo.
(Proprietà) proprietà Molteplicità  Consultare la tabella di seguito riportata contenente le informazioni sulla molteplicità

*  Alcuni caratteri non sono validi negli identificatori Java (come ad esempio lo spazio). La trasformazione Java sostituisce automaticamente i caratteri non validi con un trattino basso (_) per creare un identificatore valido. Questa sostituzione può causare conflitti di nome che impediscono alla trasformazione di generare classi e interfacce duplicate. E' possibile utilizzare la funzione di convalida per rilevare questi problemi. Per evitare queste problematiche di sostituzione, ridenominare gli elementi o utilizzare la funzione di mappatura per specificare un nome alternativo che non modifica il modello di origine.

Tipo Java per le proprietà e i parametri
Molteplicità UML Tipo Java generato
0..1 Attributo, indicatore o riferimento (ad esempio String)
1 Attributo (ad esempio, String)
N (N > 1)  Matrice (ad esempio, String[])
1..*, *, o x..y  Raccolta, consultare la seguente tabella

Raccolte Java per 1..*, * o x..y molteplicità
Proprietà isOrdered Proprietà isUnique Tipo Java generato
True True java.util.SortedSet
True False java.util.List
False True java.util.Set
False False java.util.Collection

3. Supporto per le tecnologie di trasformazione comuni

3.1 Integrazione con il supporto del team

La trasformazione Java consente l'integrazione con il supporto del team, quindi con possibilità di verifiche e l'aggiunta di nuovi file nei sistemi di controllo di origine.
 

3.2 Mappatura trasformazione

E' possibile specificare nomi alternativi per gli elementi di destinazione della trasformazione se non si desidera modificare un modello di origine per una trasformazione. Inoltre, è possibile specificare nomi alternativi se si desidera includere dettagli specifici per Java (come ad esempio le limitazioni di denominazione) in modelli indipendenti dalle piattaforme oppure le l'organizzazione logica del modello di origine non è appropriata come pacchetto di destinazione. Per supportare nomi di destinazione alternativi senza modificare il modello di origine, utilizzare la funzione di mappatura della trasformazione.
Per utilizzare la funzione di mappatura della trasformazione:
1. Passare alla prospettiva di modellamento.
2. Nella vista Esplora modello, fare clic su un modello UML.
3. Sulla barra dei menu, fare clic su Modellamento > Trasformazioni > Configura trasformazioni.
4. Creare una nuova trasformazione da UML2 a Java (ad esempio, denominare la trasformazione Crea mappatura).
5. Nella pagina Mappatura, fare clic su Crea solo modello di mappatura (nessuna trasformazione).
6. Specificare un nome file, quindi fare clic su Esegui.

Facendo clic su Crea modello di mappatura, la trasformazione Java crea un modello di mappatura, che è  un modello a parte che si trova in una risorsa per ciascun elemento trasformabile. La risorsa fa riferimento all'elemento trasformabile di origine e fa riferimento ad esso. Per specificare un nome alternativo per l'elemento di origine, immettere un nuovo nome nella proprietà del nome file della risorsa. Se non si modifica la proprietà del nome del file della risorsa, la trasformazione genera l'elemento con il nome predefinito della risorsa. Se si specificano nomi alternativi per i pacchetti, tali nomi condizionano tutti i classificatori nel pacchetto (se il classificatore non specifica un nome completo). LA tabella di seguito riportata elenca degli esempi di nomi alternativi.
 
Origine UML Mappatura del nome file della risorsa Java generato
"Package1" ""  "Package1"
"Package2" "com.ibm.test" "com.ibm.test"
"Class1" in Package1  "" Package1.Class1
"Interface1" in Package2 "ITestable" com.ibm.test.ITestable
"Class2" in Package2 "com.ibm.test.Testable" com.ibm.test.Testable

Per utilizzare un modello di mappatura, completare la seguente procedura:
1. Passare alla prospettiva di modellamento.
2. Nella vista Esplora modello, fare clic su un modello UML.
3. Sulla barra dei menu, fare clic su Modellamento > Trasformazioni > Configura trasformazioni.
4. Creare una nuova trasformazione da UML2 a Java (ad esempio, denominare la trasformazione Utilizza mappatura).
5. Nella pagina Mappatura, fare clic su Utilizza modello di mappatura.
6. Fare clic sul modello di mappatura creato in precedenza, quindi fare clic su Esegui.
Una volta eseguita la trasformazione, quest'ultima utilizza nomi alternativi che sono stati specificati nel modello di mappatura.
 

3.3 Supporto di visualizzazione interno

Se non si desidera conservare il modello UML di origine, è possibile utilizzare le funzioni di visualizzazione della trasformazione per eliminare gli elementi UML e sostituirli con i collegamenti agli elementi Java generati. Per configurare la trasformazione per eliminare gli elementi del modello UML, nella finestra Configura trasformazioni, nella pagina Comune, fare clic su Sostituisci elementi UML. La trasformazione non sostituisce gli elementi se tale operazione causa una perdita di dati. Ad esempio, se gli elementi UML contengono diagrammi, la trasformazione elimina i diagrammi, in modo che non questi elementi non vengono sostituiti.
 

3.4 Riapplica

La trasformazione Java unisce le modifiche al modello di origine e il codice di origine modificato utilizzando i tag "@generated" nei javadoc generati. La trasformazione dispone di elementi Java contrassegnati con "@generated" e li sovrascrive durante la ritrasformazione o li elimina se sono stati rimossi dal modello di origine. E' possibile reclamare la "appartenenza" degli elementi, rimuovendo il tag "@generated", che impedisce alla trasformazione di sovrascrivere o eliminare gli elementi.
 

3.5 Convalida

Il plug-in di trasformazione Java fornisce un profilo UML che è possibile utilizzare per convalidare modelli per potenziali problemi di trasformazione. Ad esempio, più eredità, generalizzazioni circolari e conflitti di denominazione causano errori di compilazione nel codice Java generato. Per visualizzare un elenco dei potenziali problemi che possono verificarsi nel codice generato, applicare il profilo al modello di origine ed eseguire la funzione di convalida.
 

3.6 Traccia

La trasformazione Java può creare relazioni derivate dagli elementi Java generati alla relativa origine UML. Per creare relazioni derivate, nella finestra Configura trasformazioni, nella pagina Comune, fare clic su Crea relazioni da origine a destinazione. Quando il sistema visualizza l'elemento Java generato, quest'ultimo ha una relazione derivata con il relativo elemento di origine.
 
Termini di utilizzo | Feedback
(C) Copyright IBM Corporation 2004. Tutti i diritti riservati.