Transformación de UML 2.0 en Java


La transformación de UML en Java transforma las especificaciones de UML 2.0 en clases Java. La transformación puede utilizarse para generar un proyecto Java a partir de las especificaciones de UML 2.0. También puede aplicarse la transformación con posterioridad a la creación inicial para fusionar los modelos UML actualizados con el código Java existente.
 

1. Cómo empezar

Antes de utilizar la transformación de UML 2.0 en Java, debe familiarizarse con la creación y edición de modelos UML 2.0 y de proyectos Java.

El procedimiento siguiente muestra el uso más sencillo de la transformación en Java.

Para transformar un modelo UML en Java:
1. Vaya a la perspectiva de modelado.
2. En la vista Explorador de modelos, pulse el botón derecho del ratón sobre una clase UML (por ejemplo, Clase1).
3. Pulse en Transformar > Ejecutar transformación > UML2 en Java.
4. Se abre el diálogo Ejecutar transformación. Pulse el botón Crear contenedor de destino.
5. Se abre el diálogo Proyecto Java nuevo. Especifique simple en el campo Nombre de proyecto y pulse en Finalizar.
6. En el diálogo Ejecutar transformación pulse en Finalizar.

El proyecto Java nuevo contiene un paquete por omisión que contiene la clase Java nueva: Clase1.

La transformación también puede realizar otras funciones, más complejas, como, por ejemplo, alterar temporalmente los nombres sin modificar el modelo de origen, sustituir el objeto UML por una visualización, fusionar los cambios del modelo UML y del origen de Java y validar el modelo UML para comprobar si existen problemas de transformación.
 

2. Detalles sobre la transformación

2.1 Origen de la transformación

Es posible seleccionar como el origen de la transformación modelos, paquetes, clases no anidadas e interfaces no anidadas de UML 2.0. Si se seleccionan otros elementos como origen, la transformación se realiza pero estos elementos no se transforman. Cuando la transformación transforma un modelo, paquete, clase o interfaz, también transforma todos los elementos que estos objetos contienen. Por ejemplo, cuando la transformación transforma una clase, también transforma todas las operaciones y las propiedades de esta clase.
 

2.2 Destino de la transformación

Puede seleccionarse cualquier proyecto Java que tenga como destino de la transformación por lo menos una carpeta de origen.
 

2.3 Interpretación de los objetos de origen de UML

UML Java 
Paquete Paquete Java con el mismo nombre*
Paquete <<perspectiva>> estereotipado Omitido
Paquete con palabra clave <<Análisis>> o <<análisis>> Omitido
Clase Clase Java con el mismo nombre* y la misma visibilidad
(Clase) Propiedad isLeaf  La clase Java es "final" si se establece como verdadero
(Clase) Propiedad isAbstract La clase Java es "abstracta" si se establece como verdadero
(Clase) Generalización La clase Java "amplía" la superclase especificada
Implementación La clase Java "implementa" la interfaz especificada
Interfaz Interfaz Java con el mismo nombre* y la misma visibilidad 
(Interfaz) Generalización La interfaz Java "amplía" la interfaz especificada
Operación Método Java con el mismo nombre* y la misma visibilidad
(Operación) Propiedad isStatic El método Java es "estático" si se establece como verdadero
(Operación) Propiedad isAbstract El método Java es "abstracto" si se establece como verdadero
(Operación) Propiedad isLeaf El método Java es "final" si se establece como verdadero
(Operación) con el mismo nombre que su clase Constructor de Java
(Operación) <<creación>> estereotipada Constructor de Java
Parámetro Parámetro Java con el mismo nombre*
(Parámetro) Propiedad de tipo El parámetro Java tiene el tipo especificado, que puede ser otra clase o un tipo primitivo
(Parámetro) Propiedad de dirección El método Java tiene un "tipo de <parámetro> de retorno" si se establece en "return"; en caso contrario, añade "<tipo de parámetro> <nombre de parámetro>" a la signatura del método
(Parámetro) Propiedad de multiplicidad  Consulte la tabla siguiente que contiene información sobre la multiplicidad
Propiedad  Campo Java con el mismo nombre* y la misma visibilidad
(Propiedad) Propiedad isStatic El campo Java es "estático" si se establece como verdadero
(Propiedad) Propiedad isLeaf El campo Java es "final" si se establece como verdadero
(Propiedad) Propiedad de tipo El campo Java tiene el tipo especificado que puede ser otra clase o un tipo primitivo
(Propiedad) Propiedad de multiplicidad  Consulte la tabla siguiente que contiene información sobre la multiplicidad

*  Algunos caracteres no son válidos en identificadores de Java (como, por ejemplo, los espacios). La transformación en Java sustituye automáticamente los caracteres no válidos por un subrayado (_) para crear un identificador válido. Esta sustitución puede provocar conflictos de nombres que impidan que la transformación genere clase e interfaces duplicadas. Puede utilizarse la característica de validación para detectar estos problemas. Para evitar estos temas de sustitución, cambie el nombre de los elementos o utilice la característica de correlación para especificar un nombre alternativo que no modifique el modelo de origen.

Tipos Java para propiedades y parámetros
Multiplicidad UML Tipo Java generado
0..1 Atributo, puntero o referencia (por ejemplo, cadena de caracteres)
1 Atributo (por ejemplo, cadena de caracteres)
N (N > 1)  Matriz (por ejemplo, cadena de caracteres[])
1..*, * o x..y  Recopilación, consulte la tabla siguiente

Recopilaciones Java para 1..*, * o multiplicidades x..y
Propiedad isOrdered Propiedad isUnique Tipo Java generado
Verdadero Verdadero java.util.SortedSet
Verdadero Falso java.util.List
Falso Verdadero java.util.Set
Falso Falso java.util.Collection

3. Soporte a las tecnologías de transformación comunes

3.1 Integración con el soporte a equipos

La transformación en Java proporciona integración con el soporte a equipos y permite la extracción automática y la adición de archivos nuevos en los sistemas de control de origen.
 

3.2 Correlación de transformaciones

Si no se desea modificar un modelo de origen para una transformación, pueden especificarse nombres alternativos para los elementos de destino de la transformación. También es posible que se deseen especificar nombres alternativos para incluir detalles específicos de Java (como, por ejemplo, restricciones de denominación) en modelos independientes de la plataforma o en caso de que la organización lógica del modelo de origen no sea adecuada como paquete de destino. Para proporcionar soporte a nombres de destino alternativos sin modificar el modelo de origen, utilice la característica de correlación de transformaciones.
Para utilizar la característica de correlación de transformaciones:
1. Vaya a la perspectiva de modelado.
2. En la vista Explorador de modelos, pulse sobre un modelo UML.
3. En la barra de menús, pulse en Modelado > Transformaciones > Configurar transformaciones.
4. Cree una transformación de UML2 en Java nueva (por ejemplo, denomine la transformación Crear correlación.
5. En la página de correlación, pulse en Crear sólo modelo de correlación (no transformación).
6. Especifique un nombre de archivo y pulse en Ejecutar.

Al pulsar en Crear modelo de correlación, la transformación en Java crea un modelo de correlación que es  un modelo independiente que tiene un artefacto para cada elemento transformable. El artefacto hace referencia al elemento transformable original y tiene el mismo nombre. Para especificar un nombre alternativo para el elemento original, escriba un nombre nuevo en la propiedad de nombre de archivo del artefacto. Si no se cambia la propiedad de nombre de archivo del artefacto, la transformación genera el elemento con el nombre por omisión del artefacto. Si se especifican nombres alternativos para un paquete, los nombres alternativos afectan a todos los clasificadores de este paquete (a menos que el clasificador especifique un nombre completo). La tabla siguiente muestra ejemplos de nombres alternativos.
 
Origen de UML Nombre de archivo del artefacto de correlación Java generado
"Paquete1" ""  "Paquete1"
"Paquete2" "com.ibm.test" "com.ibm.test"
"Clase1" en Paquete1  "" Paquete1.Clase1
"Interfaz1" en Paquete2 "ITestable" com.ibm.test.ITestable
"Clase2" en Paquete2 "com.ibm.test.Testable" com.ibm.test.Testable

Para utilizar un modelo de correlación, realice los pasos siguientes:
1. Vaya a la perspectiva de modelado.
2. En la vista Explorador de modelos, pulse sobre un modelo UML.
3. En la barra de menús, pulse en Modelado > Transformaciones > Configurar transformaciones.
4. Cree una transformación de UML2 en Java nueva (por ejemplo, denomine la transformación Utilizar correlación.
5. En la página de correlación, pulse en Utilizar modelo de correlación.
6. Pulse sobre el modelo de correlación que ha creado antes y pulse en Ejecutar.
Cuando se ejecuta la transformación, ésta utiliza los nombres alternativos que se hayan especificado en el modelo de correlación.
 

3.3 Soporte a la visualización in situ

Si no desea conservar el modelo UML original, puede utilizar las características de visualización de la transformación para suprimir los elementos UML y sustituirlos por elementos Java generados utilizando métodos abreviados. Para configurar la transformación de forma que se supriman los elementos de modelos UML, en la ventana Configurar transformaciones de la página común pulse en Reemplazar elementos UML. La transformación no sustituye los elementos si la sustitución provoca la pérdida de datos. Por ejemplo, si los elementos UML contienen diagramas, la transformación suprime los diagramas, por lo que no sustituye estos elementos.
 

3.4 Reaplicación

La transformación en Java fusiona los cambios realizados en el modelo de origen y el código de origen modificado utilizando las etiquetas "@generated" en javadocs generados. La transformación es la propietaria de los elementos Java marcados como "@generated" y los sobrescribe si se produce una nueva transformación o los suprime si éstos se habían eliminado del modelo de origen. Es posible reclamar la "propiedad" de los elementos eliminando la etiqueta "@generated", con lo que se impide que la transformación sobrescriba los elementos o los suprima.
 

3.5 Validación

El plug-in de transformación en Java proporciona un perfil UML que puede utilizarse con el propósito de validar los modelos para descubrir posibles problemas de transformación. Por ejemplo, las herencias múltiples, las generalizaciones circulares y los conflictos de nombres provocan errores de compilación en el código Java generado. Para ver una lista de los posibles problemas que pueden producirse en el código generado, aplique el perfil al modelo de origen y ejecute la característica de validación.
 

3.6 Rastreabilidad

La transformación en Java puede crear relaciones derivadas de los elementos Java generados respecto al origen de UML de los mismos. Para crear relaciones derivadas, en la ventana Configurar transformaciones de la página común pulse en Crear relaciones de origen a destino. Cuando el sistema visualiza el elemento Java generado, el elemento tiene una relación derivada respecto al elemento de origen.
 
Condiciones de uso | Información de retorno
(C) Copyright IBM Corporation 2004. Reservados todos los derechos.