Transformación de UML 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 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 a 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 Transformar > Ejecutar transformación > UML2 a 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 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 origen de la transformación modelos, paquetes, clases no anidadas, interfaces no anidadas y enumeraciones 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
(Clase a interfaz) Realizació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
Enumeración
Interfaz Java con el mismo nombre* y la misma visibilidad
EnumerationLiteral
Campo Java con el mismo nombre* y la misma visibilidad
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 a 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 Recopilación UML
Tipo Java generado
Verdadero Verdadero Establecimiento solicitado
java.util.SortedSet
Verdadero Falso Secuencia
java.util.List
Falso Verdadero Establecer
java.util.Set
Falso Falso Conjunto
java.util.Collection

Observe que los tipos generados que se enumeran arriba son valores establecidos por omisión.  Es posible alterarlos temporalmente en la pestaña Avanzada de una configuración de transformación.

Avanzada
La pestaña Avanzada proporciona algunas opciones de generación de código.   Pulse Modelado > Transformación > Configurar transformaciones, seleccione una configuración de UML en Java y seleccione la pestaña Avanzada .  La pestaña contiene el recuadro de selección Generar métodos get y set y el grupo Recopilaciones

Cuando está seleccionado el recuadro Generar métodos get y set, la transformación se genera en un campo privado con métodos get y set para cada propiedad de UML.  Si las propiedades isLeaf (final) o isReadOnly se establecen en verdadero, no se genera ningún método set.  Si la propiedad isDerived se establece en verdadero, la implementación del método set estará vacía. 

En el grupo Recopilaciones es posible especificar recopilaciones generadas por la transformación de UML en Java.  Por ejemplo, seleccione "java.util.Vector" en el recuadro desplegable Secuencia y la transformación generará vectores en lugar de listas.  También puede especificar clases de recopilación personalizadas especificando el nombre de clase en el recuadro desplegable.  Si especifica "custom.Bag" en el recuadro desplegable Conjunto , la transformación generará conjuntos en lugar de recopilaciones. 

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

3.1 Integración con el soporte a equipos

La transformación a 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 Modelado > Transformación > Configurar transformaciones.
4. Cree una transformación de UML2 a 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 a 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 Modelado > Transformación > Configurar transformaciones.
4. Cree una transformación de UML2 a 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 de UML y sustituirlos por elementos Java generados utilizando métodos abreviados. Para configurar la transformación para suprimir los elementos del modelo UML, en la ventana Configurar transformaciones, de la página Común, pulse Reemplazar elementos de UML. La transformación no sustituye los elementos si la sustitución provoca la pérdida de datos. Por ejemplo, si los elementos de UML contienen diagramas, la transformación suprime los diagramas, por lo que no sustituye estos elementos.
 

3.4 Volver a aplicar

La transformación a Java fusiona los cambios realizados en el modelo de origen y el código fuente 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 a 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 a 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.