Download Desarrollo de un Modelo Computacional basado en Arquitectura

Document related concepts
no text concepts found
Transcript
Escuela Académico Profesional de Informática
Facultad de Ciencias Físicas y Matemáticas
Universidad Nacional de Trujillo
Desarrollo de un Modelo Computacional basado en
Arquitectura Orientada a Modelos para la Transformación
de un Diagrama de Clases en Código Fuente Java
TRABAJO DE GRADUACION
INFORME N°3
Díaz Fernández Pedro Pablo
Pastor Cruzado Javier Eduardo
Índice
Lista de Tablas o Cuadros .................................................................................................................... 5
Lista de Figuras .................................................................................................................................... 6
INTRODUCCION .............................................................................................................................. 7
PLANTEAMIENTO DEL ESTUDIO ............................................................................................... 8
1.1.
Realidad Problemática ........................................................................................................ 8
1.2.
Formulación del Problema .................................................................................................. 9
1.3.
Hipótesis .............................................................................................................................. 9
1.4.
Objetivos ............................................................................................................................. 9
1.4.1.
Objetivo General ......................................................................................................... 9
1.4.2.
Objetivos Específicos ................................................................................................. 10
1.5.
Justificación del Problema................................................................................................. 10
1.6.
Limitaciones del Estudio.................................................................................................... 10
MARCO TEÓRICO......................................................................................................................... 11
2.1.
Modelo .............................................................................................................................. 11
2.2.
Modelo Computacional ..................................................................................................... 12
2.3.
Arquitectura Orientada a Modelos – MDA ....................................................................... 12
2.3.1.
CIM ............................................................................................................................ 13
2.3.2.
PIM ............................................................................................................................ 13
2.3.3.
PSM ........................................................................................................................... 14
2.4.
Transformación en MDA a Código Fuente: ....................................................................... 16
2.5.
Metámodelos: ................................................................................................................... 22
2.6.
OMG: ................................................................................................................................. 22
2.6.1.
Capa M0: Instancias .................................................................................................. 23
2.6.2.
Capa M1: Modelo del Sistema .................................................................................. 24
2.6.3.
Capa M2: Metamodelo ............................................................................................. 25
2.6.4.
Capa M3: Meta-metamodelo .................................................................................... 25
2.7.
Lenguaje Modelado de Proceso – UML: ........................................................................... 27
2.7.1.
Diagrama de Clases ................................................................................................... 28
2.7.2.
Diagrama de Casos de Uso ........................................................................................ 28
2.7.3.
Diagrama de Estados ................................................................................................. 29
2
2.7.4.
Diagrama de Secuencias............................................................................................ 29
2.7.5.
Diagrama de Actividades ........................................................................................... 30
2.8.
Diagrama de Clases: .......................................................................................................... 31
2.8.1.
Clase .......................................................................................................................... 33
2.8.2.
Relaciones ................................................................................................................. 35
2.9.
Herramientas de Transformación ..................................................................................... 39
2.9.1.
Herramienta OptimalJ de Compuware ..................................................................... 39
2.9.2.
Herramienta ArcStyler.................................................. ¡Error! Marcador no definido.
2.9.3.
Otras Herramientas: ............................................................................................... 44
2.10.
Java ................................................................................................................................ 45
MATERIALES Y MÉTODOS ........................................................................................................ 48
3.1.
Diseño de la Investigación ................................................................................................. 48
3.2.
Población y muestra .......................................................................................................... 48
3.2.1.
Población ................................................................................................................... 48
3.2.2.
Muestra ..................................................................................................................... 48
3.3.
Variables de estudio .......................................................................................................... 50
3.3.1.
Variable Dependiente ............................................................................................... 50
3.3.2.
Variable Independiente ............................................................................................. 50
3.3.3.
Factor de Medición de Mejora del Tiempo ............................................................... 50
3.4.
Técnicas e Instrumentos ................................................................................................... 50
3.4.1.
Técnicas ..................................................................................................................... 50
3.4.2.
Instrumentos ............................................................................................................. 51
RESULTADOS................................................................................................................................ 52
4.1. Análisis de las Modelos de Transformaciones: .............................................................. 52
4.1.8 Análisis Comparativo de los Modelos Referidos: .................................................... 59
4.2. Diseño Modelo Computacional para la Transformación de diagramas: .................. 61
4.2.1. Arquitectura del modelo de Transformación: .......................................................... 62
4.2.2. Definición del Modelo de Transformación: .................................................................. 63
4.2.3. Descripción del Modelo de Transformación: ............................................................... 63
4.2.4.
Formalización del Modelo Computacional: ....................................................... 69
4.2.5. Reglas de transformación: ......................................................................................... 70
4.3. Desarrollo de Casos de Estudio: ...................................................................................... 76
3
DISCUSIÓN DE RESULTADOS. ............................................................................................... 79
CONCLUSIONES Y RECOMENDACIONES: ............................................................................ 80
BIBLIOGRAFÍA ............................................................................................................................... 81
4
Lista de Tablas o Cuadros
Tabla 1. Tabla de las Capas de Modelado …………………………………………………………………… 25
Tabla.2 Arquitectura de OptimalJ………………………………………………………………………………… 43
Tabla.3 Tabla comparativa de modelos MDA………………………………………………………………. 60
Tabla 4.Operaciones del Metamodelo…………………………………………………………………………. 78
5
Lista de Figuras
Ilustración 1 Fig. N° 1. Pasos en el desarrollo con MDA................................................................... 12
Ilustración 2 Fig. N° 2. Tecnologías PIM ............................................................................................ 13
Ilustración 3 Fig. N° 3. Ejemplo de PIM ............................................................................................. 14
Ilustración 4 Fig. N° 4. Ejemplo de PSM ............................................................................................ 15
Ilustración 5 Fig. N° 5. Tipos de Modelos según abstracción. ........................................................... 15
Ilustración 6 Fig. N° 6. Transformación MDA .................................................................................... 16
Ilustración 7 Fig. N° 7. Funcionalidad en un entorno de desarrollo MDA ........................................ 21
Ilustración 8 Fig. N° 8. Entidades de MOF – Capa M0....................................................................... 24
Ilustración 9 Fig. N° 9. Entidades de MOF – Capa M1....................................................................... 24
Ilustración 10 Fig. N° 10. Entidades de MOF – Capa M2................................................................... 25
Ilustración 11 Fig. N° 11. Entidades de MOF – Capa M3 ................................................................... 25
Ilustración 12 Fig. 12. Relación entre las Capas de Modelado.......................................................... 26
Ilustración 13 Fig. N° 13. Transformaciones de un Modelo UML ............................................. 27
Ilustración 14 FIG. 14. Modelo de una Clase. .................................................................................... 28
Ilustración 15 FIG. 15. Modelo de un Caso de Uso. .......................................................................... 28
Ilustración 16 Fig. 16. Modelo de un Diagrama de estado. .............................................................. 29
Ilustración 17 Fig. 17. Modelo de un Diagrama de Secuencia. ......................................................... 30
Ilustración 18 Fig. 18. Modelo de un Diagrama de Actividades. ....................................................... 31
Ilustración 19 Fig. N° 19. Diagrama de Clases ................................................................................... 32
Ilustración 20 Fig. 20: Representación Estructural de una Clase. ..................................................... 33
Ilustración 21 Fig. 21. Modelo de un Clase en UML. ......................................................................... 33
Ilustración 22 Fig. 22. Modelo de Herencia de Clases....................................................................... 36
Ilustración 23 Fig. 23. Representación de Agregación de Clases en UML......................................... 37
Ilustración 24 Fig. 24. Representación de Asociaciones de Clases en UML. ..................................... 38
Ilustración 25 Fig. 25. Representación de Dependencia de Clases en UML. .................................... 39
Ilustración 26 Fig.26 ArcStyler........................................................................................................... 41
Ilustración 27 Fig.27 Arquitectura de ArcStyler ................................................................................ 44
Ilustración 28 Fig.28 Plataformas de JAVA ........................................................................................ 45
Ilustración 29 Fig.29 Elementos de la plataforma Java ..................................................................... 47
Ilustración 30 Fig. 30 Arquitectura del Modelado ............................................................................ 62
Ilustración 31 Fig. 31 Metamodelo del diagrama de Clases ............................................................. 66
Ilustración 32 Fig. 32 Instancia de una Clase..................................................................................... 68
Ilustración 33 Fig. 33 Sintaxis de una clase ....................................................................................... 70
Ilustración 34 Fig. 34 Relación entre un modelo de usuario y una instancia del metamodelo ........ 73
Ilustración 35 Fig. 35 Diagrama de clases de ventas del caso ........................................................... 76
Ilustración 36 Fig. 36 Instancia de Metamodelo del caso ................................................................. 77
6
INTRODUCCION
En un proceso de desarrollo de software, una de las tareas más relevantes para el éxito
de un proyecto de diseño e implementación de un Modelo Computacional es garantizar,
de una forma apropiada, la representación y el modelado de los requisitos de usuario.
A pesar de la relación estrecha que existe entre el Modelado Estándar de la Plataforma
(PSM) y la plataforma, existen diversas causas de inconsistencias que dificultan la
generación de código a partir del PSM. Algunas tienen que ver con modelos mal
planteados, desarrolladores incapaces de interpretar los modelos, o que no se acogen a
estos para generar el código.
Actualmente, la interpretación es un problema a la hora de elaborar software por parte de
los programadores, esto se produce por
la carencia de experiencia y el mal
modelamiento de modelos de análisis produciendo confusión y retraso al proceso de
elaboración e implementación del software.
En este trabajo de investigación se desarrollara un proceso único de fácil comprensión y
didáctico de cómo interpretar un modelo de clases a su implementación en código fuente,
sin duda lo que se pretende con todo esto es agilizar este proceso, para eso este
Proyecto de Investigación utiliza conceptos de MDA, mediante la aplicación de reglas de
transformación que establecen una relación unívoca entre los elementos del diagrama y
patrones de código, que se ejemplifica en JAVA.
7
PLANTEAMIENTO DEL ESTUDIO
1.1. Realidad Problemática
A pesar de la relación estrecha que existe entre el PSM y la plataforma, existen
diversas causas de inconsistencias que dificultan la generación de código a partir
del PSM. Algunas tienen que ver con modelos mal planteados, desarrolladores
incapaces de interpretar los modelos, o que no se acogen a estos para generar el
código. [2]
Se han realizado diversos trabajos tendientes a dictaminar cómo se están viendo
afectadas las comunidades de software con la adopción de MDD. En dichas
investigaciones se pone en evidencia que, a pesar de las alentadoras fortalezas,
existen falencias que deben subsanarse. La compañía de investigación de
mercado Forrester Research Inc. (2008) ha realizado estudios en los cuales
resalta algunas fortalezas del MDD y afirma que ayuda a las organizaciones de
desarrollo a obtener el control de la documentación y otros artefactos existentes,
mejora la productividad e, incluso, después de un período de lanzamiento inicial,
se hace más fácil para los equipos de desarrollo actualizar y mantener
aplicaciones. Todo esto se logra una vez ha sido introducida suficiente
información acerca de los tipos de desarrollo y las plataformas en las
herramientas MDD, de tal forma que se le permita al usuario desarrollador
describir el tipo de detalles que deben aplicarse.[6]
En la actualidad, la interpretación es un problema a la hora de elaborar software
por parte de los programadores, esto se produce por la carencia de experiencia
y el mal modelamiento de modelos de análisis produciendo confusión y retraso al
proceso de elaboración e implementación del software, en este trabajo se
desarrollara un proceso único de fácil comprensión y didáctico de cómo
interpretar un modelo de clases a su implementación en código fuente, sin duda
lo que se pretende con todo esto es agilizar este proceso, para eso este Proyecto
de Investigación utiliza conceptos de MDA, mediante la aplicación de reglas de
transformación que establecen una relación unívoca entre los elementos del
diagrama y patrones de código, que se ejemplifica en JAVA.
8
Características:
 Falta de flexibilidad y configuración en el código generado.
 No uso de plantillas y ficheros de definición de estructuras.
 Falta de pruebas de código generado (compilación).
 No hay integración con diferentes lenguajes de programación.
 Demora en el proceso de transformación del diseño al código.
1.2. Formulación del Problema
Considerando lo expresado en la sección anterior, se deduce que es de utilidad
diseñar un Modelo Computacional basado en Arquitectura Orientada a Modelos
para la Transformación de un Diagrama de Clases en Código Fuente Java. Esto
nos lleva al planteamiento del problema:
¿Cómo mejorar la transformación de un diagrama de clases a
código fuente Java?
1.3. Hipótesis
Un modelo computacional basado en arquitectura orientada a modelos permitirá
mejorar la transformación de un diagrama de clases a código fuente java.
1.4. Objetivos
1.4.1. Objetivo General
Desarrollar un Modelo Computacional basado en Arquitectura Orientada a
Modelos para la Transformación de un Diagrama de Clases en Código
Fuente Java.
9
1.4.2. Objetivos Específicos

Realizar una investigación bibliográfica para recolectar datos
referentes al tema de investigación.

Analizar la información recopilada para determinar el modelo
computacional.

Reducir
el
Tiempo
y
Espacio
mediante
el
modelo
de
Transformación.
1.5. Justificación del Problema
 Desde el punto de vista de la Ciencias de la Computación:
El Trabajo de Investigación se enfoca en el Área de la Ingeniería de
Software y al tema Arquitectura Orientada a Modelos, el cual aporta un
modelo computacional que permite:

La transformación (Algoritmo) desde un diagrama de clases a
código fuente Java.

Reducción de tiempo (Análisis algorítmico).

Una propuesta de CASE (lower) para pasar del diseño a
implementación.
1.6.Limitaciones del Estudio
El Modelo está enfocado para los programadores que desean realizar transformaciones de
clases a código fuente java, asimismo las personas que se interesen o deseen innovar con este
nuevo modelo computacional.
10
MARCO TEÓRICO
Con el objetivo d mejorar la calidad de imágenes digitales es necesario conocer
cuáles son los factores de control de los que depende dicha transformación. Esta
investigación está centrada en la Transformación de Diagramas de Clases a Código
Fuente Java, basándose en Arquitectura Orientada a Modelos, en donde
estudiaremos algunos conceptos básicos para lograr esta meta y analizaremos los
diferentes Modelos de Transformación existentes.
2.1. Modelo
Es una representación o abstracción de una situación u objeto real, que muestra
las relaciones (directas o indirectas) y las interrelaciones de la acción y reacción
en términos de causa y efecto.
Un modelo es una descripción de todo o parte de un sistema escrito en un
lenguaje bien definido. El hecho de que un modelo esté escrito en un lenguaje
bien definido tiene una gran importancia para MDA, ya que supone que el modelo
tiene asociadas una sintaxis y una semántica bien definidas. Esto permite la
interpretación automática por parte de transformadores o compiladores de
modelos, fundamentales en MDA.
Tipos:

Mentales

Físicos idealizados

Explícitos
 Físicos Materiales
 Matemáticos
o
Deterministas
o
Estocásticos
11
2.2. Modelo Computacional
Es un modelo matemático en las ciencias de la computación que requiere
extensos recursos computacionales para estudiar el comportamiento de un
sistema complejo por medio por medio de la simulación por computadora.
El sistema bajo estudio es a menudo un sistema complejo no lineal para el cual
las soluciones analíticas simples e intuitivas no están fácilmente disponibles. En
lugar de derivar una solución analítica matemática para el problema, la
experimentación es hecha con el modelo cambiando los parámetros del sistema
en la computadora, y se estudian las diferencias en el resultado de los
experimentos.
2.3. Arquitectura Orientada a Modelos – MDA
Se trata de un framework de desarrollo de software que define una nueva forma
de construir software en la que se usan modelos del sistema, a distintos niveles
de abstracción, para guiar todo el proceso d desarrollo, desde el análisis y diseño
hasta el mantenimiento del sistema y su integración con futuros sistemas. [1]
Las principales ventajas de la arquitectura dirigida por modelos en la ingeniería
de software con modelos independientes de plataformas son dos:
 Durante la fase de diseño los desarrolladores no tienen que preocuparse
por los detalles y las diferencias entre lenguajes de programación.
 Se puede transformar un proyecto de un lenguaje a otro.
La directiva MDA del Object Management Group (OMG) propone dos tipos de
modelos, uno para la fase de análisis y otro para la fase de diseño, este último
derivado del primero. [3]
Ilustración 1
Fig. N° 1. Pasos en el desarrollo con MDA.
12
2.3.1. CIM
Representa
los
modelos
independientes
de
la
computación
(Computationally - Independent Model) que caracterizan el dominio del
problema.
Este tipo de modelos surge ante todo en procesos de modelado de negocio
e idealmente se conciben antes del levantamiento de requisitos para una
aplicación particular.
transformaciones.
Los lenguajes de transformación populares y
[1]
2.3.2. PIM
Es un modelo de sistema que muestra mayormente el proceso de análisis y
detalles que generales de la plataforma que será implementado.
El modelo de la fase de análisis es el PIM (Platform Independent Model),
que es un modelo independiente de la plataforma, lo cual significa que los
diagramas que lo componen son vistas del sistema construidas
específicamente en términos del dominio.
Ilustración 2
Fig. N° 2. Tecnologías PIM
El PIM es la base para la construcción del modelo de la fase de diseño, que
se conoce como PSM (Platform Specific Model), el cual está compuesto por
diagramas construidos siguiendo los lineamientos no sólo de estructura y
comportamiento del sistema, sino también de una plataforma específica.[1]
13
Como podemos ver en la siguiente Figura N° 3, muestra un ejemplo de un
PIM sencillo con tres clases interrelacionadas. El PIM se modela mediante
el diagrama de clases de UML.
Ilustración 3
Fig. N° 3. Ejemplo de PIM
2.3.3. PSM
Es un modelo de sistema con detalles específicos de la plataforma en la
que será implementado. Se genera a través de un PIM así que representa
el mismo sistema pero a distinto nivel de abstracción. Podemos decir que
un PSM es un PIM al que se le añaden detalles específicos para ser
implementados en otra plataforma.
En MDA se utiliza el lenguaje unificado de modelado UML para especificar
los modelos.
Según OMG, MDA proporciona una solución para los cambios de
tecnología.
Permitiendo
construir
aplicaciones
independientes
dela
plataforma e implementarlas en plataformas como CORBA, J2EE o
Servicios Web. [1]
En la Figura 4 muestra un PSM construido a partir del PIM de la Figura 3,
representado también mediante un diagrama de clases UML. Este sencillo
ejemplo muestra un posible PSM para la plataforma EJB (Enterprise Java
Beans. Ejm. La herramienta Javadoc para Java). Como vemos, en el paso
del PIM al PSM se han producido varias transformaciones:
14

Se ha añadido el estereotipo <<EJEBEntity>> a cada clase, para
indicar que la clase representa un EJB de tipo Entity.

Se ha modificado la visibilidad de los atributos del PIM de público a
privado.

Se han generado métodos públicos de lectura y modificación (get y
set) para cada atributo.
Ilustración 4
Fig. N° 4. Ejemplo de PSM
De un mismo PIM pueden generarse varios PSMs; cada uno describiendo
el sistema desde una perspectiva diferente.
Ilustración 5
Fig. N° 5. Tipos de Modelos según abstracción.
15
2.4. Transformación en MDA a Código Fuente:
Son reglas o secuencia de pasos que permiten relacionar cada instancia del
metamodelo, se utilizan para producir desde una meta modelado propuesto por
un estándar MDA hacia un Código para la implementación que puede obtenerse
a partir de éste. [5]
Una definición de transformación o mapping MDA proporciona la especificación
de un PIM en un PSM para una plataforma determinada.
Ilustración 6
Fig. N° 6. Transformación MDA
Tipos:
Según [5], podemos distinguir dos tipos de definiciones de transformación:
 Transformaciones de Tipos (Model Type Mapping)
Un mapping de tipos especifica un mapping para transformar cualquier
modelo construido con tipos del PIM a otro modelo expresado con tipos
del PSM. Es decir, a cada tipo de elemento del PIM se le aplica una regla
determinada para transformarlo en uno o varios elementos del PSM. En
el caso de UML, estas reglas pueden estar asociadas a tipos del
metamodelo (clase, atributo, relación, etc) o a nuevos tipos definidos
mediante estereotipos. También pueden definirse reglas en función de
valores de instancias en el PIM.
16
 Transformaciones de instancias (Model Instante Mapping)
Identifica elementos específicos del PIM que deben ser transformados de
una manera particular, dada una plataforma determinada. Esto se puede
conseguir mediante marcas.
Una marca representa un concepto del PSM, y se aplica a un elemento
del PIM para indicar cómo debe ser transformado. Las marcas, al ser
específicas de la plataforma, no son parte del PIM. El desarrollador
marca el PIM para dirigir o controlar la transformación a una plataforma
determinada.
Características Deseables de las Transformaciones:
 Ajustar las transformaciones
El requisito principal que debería cumplir toda herramienta de
transformación es permitir que el desarrollador tenga cierto control sobre
el proceso de transformación. Se puede lograr de varias maneras:
 Control manual.
 Condiciones en las transformaciones.
 Parámetros de transformación.
 Trazabilidad
La trazabilidad implica que pueda conocerse el elemento origen a partir
del cual se ha generado cualquier elemento del modelo destino.
Es útil para el cambio de nombre de una operación del PSM generada a
partir del PIM, el cambio debe reflejarse también en el PIM; esto no es
posible si la herramienta no dispone de un mecanismo para conocer el
origen en el PIM de la operación modificada.
También es útil en la búsqueda y corrección de errores. Las partes de
código erróneas pueden encontrarse buscando los elementos del PIM
que presentan la funcionalidad defectuosa y siguiendo su traza hasta el
código.
17
 Consistencia incremental
Cuando se genera un modelo destino, este necesita algún trabajo extra,
como rellenar el código de una operación o refinar la interfaz de usuario.
Si regeneramos de nuevo el modelo destino, debido a cambios en el
modelo origen, queremos que el trabajo extra se conserve. Esto es lo
que se llama Consistencia incremental.
Cuando se produce un cambio en el modelo origen, el proceso de
transformación sabe que elementos en el modelo destino necesitan
cambiarse también. Un proceso de transformación incremental puede
reemplazar los elementos viejos con los nuevos, mientras mantiene la
información extra del modelo destino en su sitio. Esto significa que
cambios en el modelo origen tienen el mínimo impacto en el modelo
Destino.
 Bidireccionalidad
La bidireccionalidad implica que las transformaciones puedan operar en
ambas direcciones. Esta propiedad tiene menor prioridad que las
anteriores,
a
pesar
de
ser
interesante.
Las
transformaciones
bidireccionales pueden lograrse de dos formas:
 Ambas transformaciones se ejecutan de acuerdo con una única
definición de transformación.
 Una transformación y su inversa se especifican mediante dos
definiciones de transformación diferentes.
Transformación de PIM a PSM:
La transformación de PIM a PSM puede llevarse a cabo de varias formas:

Construyendo manualmente el PSM a partir del PIM.

De forma semiautomática, generando un PSM esqueleto que es
completado a mano.

De forma totalmente automática, generando un PSM completo a partir del
PIM.
18
Para las transformaciones automáticas se usan herramientas especializadas.
Estas herramientas tienen implementados distintos algoritmos para pasar de un
tipo de modelo a otro, y suponen uno de los pilares de MDA. Las herramientas de
transformación de modelos se verán a continuación:
 Herramientas de Transformación de PIM a PSM
Permiten transformar un PIM de alto nivel en uno o varios PSMs. En la
actualidad no hay disponibles muchas herramientas de este tipo, ya alas
que existen ofrecen escasa funcionalidad.
 Herramientas de Transformación de PSM a Código
El soporte más popular para MDA lo encontramos en las herramientas
que transforman PSM a código. Poseen una definición de transformación
integrada que toman un tipo predefinido de modelo de entrada (PSM) y
producen otro tipo predefinido como salida (modelo de código). Las
herramientas CASE tradicionales siguen este patrón para la generación
de código.
Muchas de estas herramientas mantienen la relación entre el PSM y el
código permitiendo que los cambios realizados en cualquiera de los
modelos (PSM y código) se reflejen inmediatamente en el otro. Esto es
posible porque el PSM y código están muy cerca el uno del otro, y
poseen casi el mismo nivel de abstracción.
 Herramientas de Transformación de PIM a Código
Otro tipo de herramienta es aquella que soporta las dos transformaciones
anteriores, de PIM a PSM y de PSM a Código. En ocasiones el usuario
simplemente verá una transformación directa de PIM a código, quedando
implícito el PSM. La herramienta ArcStyler podría enmarcarse en este
grupo, ya que no existe PSM explícito, sino que se usa un PIM con
marcas para generar directamente el código.
 Herramientas de Transformación Ajustables
Las herramientas de MDA deberían permitir “refinar” o “ajustar” las
transformaciones. Normalmente no se permite acceder a las definiciones
19
de las transformaciones para ajustarlas a tus propios requisitos. En el
mejor de los casos, las herramientas proporcionan sus definiciones de
transformaciones en lenguaje de script específicos de la herramienta, y
resulta muy engorroso hacer cambios en dichos lenguajes. Mientras no
se estandarice un lenguaje de definición de transformaciones, estas
seguirán siendo específicas de cada herramienta.
 Herramientas de Definición de Transformaciones
Un último tipo de herramientas lo constituirían aquellas herramientas que
nos permiten crear y modificar transformaciones sobre modelos,
imprescindibles si necesitamos usar transformaciones distintas a las
disponibles en las herramientas. Las únicas herramientas disponibles de
este tipo usan lenguajes de script específicos. La complejidad de la
definición de transformaciones nos lleva de nuevo a la necesidad de un
lenguaje estándar de definición de transformaciones (QTV) y a disponer
de herramientas mejor preparadas para esta tarea. Por desgracia,
todavía queda algo de tiempo para que esto se convierta en realidad.
 Otras herramientas
 Editor de código. Realiza las tareas comunes proporcionadas
por un Entorno de Desarrollo Interactivo (IDE), como depuración,
compilación y edición de código.
 Ficheros de código. Aunque podemos considerar el código
como un modelo, usualmente se almacena en forma de ficheros
de texto; los cuales no son un formato que otras herramientas
pueden entender. Se necesitan los siguientes dos elementos:
o
Analizador gramatical de ficheros de texto, que lea un
fichero de texto y almacene el código en forma de modelo
en el repositorio de modelos, de manera que otras
herramientas lo puedan usar.
o
Generador de ficheros de texto, que lea el código del
repositorio de modelos y produzca un fichero de código
basado en texto.
20
 Repositorio de modelos. Es la base de datos para modelos,
donde los modelos se almacenan y se recuperan usando XMI,
JMI o IDL.
 Editor de modelos. Herramienta CASE para construir y modificar
modelos.
 Verificador de modelos. Los modelos usados para la generación
de otros modelos deben estar extremadamente bien definidos.
Estas
herramientas
pueden
chequear
los
modelos
para
comprobar que cumplan unas determinadas reglas y asegurarse
así que puedan ser transformados.
 Editor de definiciones de transformaciones. Para permitir crear
y modificar definiciones de transformaciones.
 Repositorio de definiciones de transformaciones.
Para
almacenar las definiciones de transformaciones.
En la Figura 7 muestra un diagrama que resume la funcionalidad
deseable en un entorno completo de desarrollo con MDA.
Ilustración 7
Fig. N° 7. Funcionalidad en un entorno de desarrollo MDA
21
2.5. Metamodelos:
Son un mecanismo que permite definir formalmente lenguajes de modelado.
Básicamente se trata de modelos para describir otros modelos.
Una meta-modelo que define el lenguaje para la siguiente capa, que es la meta
modelo Suena complicado, pero la idea es más simple de lo que parece: esta
capa consiste de un modelo compacto que sirve de cimentación para el conjunto
de la arquitectura. El meta-modelo es común al MOF y a UML, lo que asegura
que compartan una base común. El meta-meta-modelo asegura, por ejemplo,
que los tipos de datos manejados por el lenguaje de modelado y el servicio MOF
sea totalmente compatible.
Importancia del meta modelado en MDA:
En primer lugar, el meta modelado es importante en MDA porque actúa como
mecanismo para definir lenguajes de modelado, de forma que su definición no
sea ambigua. Esta no ambigüedad permite que una herramienta pueda leer,
escribir y entender modelos como los construidos con UML.
Por otro lado, las reglas de transformación, usadas para transformar un modelo
en lenguaje A en otro modelo en lenguaje B, usan la meta modelos de los
lenguajes A y B para definir las transformaciones.
2.6. OMG:
El Object Management Group [OMG] es un consorcio internacional abierto y sin
ánimo de lucro de la industria de la informática creada en 1989. En él están
incluidas cientos de organizaciones dedicadas al desarrollo de software para
usuarios finales, especializados en docenas de mercados de negocio diferentes y
organizaciones dedicadas a la industria de los computadores.[6]
En sus orígenes [Watson 2008], OMG se constituyó para especificar elementos
middleware que ayudaran a resolver los problemas de integración entre sistemas
de información multiplataforma.
22
Con esta idea surgió la especificación de CORBA (Common Object Request
Broker Architecture) y otros estándares como el Interface Definition Language
(IDL) [OMG 2002], que permite definir las interfaces de los servicios que se van
a utilizar en la comunicación entre las distintas plataformas a integrar. Hace casi
una década, OMG decidió dar el salto desde una aproximación basada en
servicios de integración a una aproximación independiente de la plataforma, que
definiera situaciones y aspectos estructurales de la interoperabilidad mediante
modelos. Estos modelos independientes de la plataforma podrían ser
convertidos, mediante reglas de transformación, a cualquier plataforma
específica. Un poco antes, a mediados de los años 90, basándose en un
incipiente modelado orientado a objetos, OMG crea el lenguaje de modelado
UML que permite representar aspectos dinámicos y estáticos de un sistema de
información software. Aplicando UML y MOF (Meta Object Facility), el Meta
modelo que define UML, al problema de la creación de modelos independientes
de la plataforma, permite la creación de la aproximación MDA.
OMG desarrolla estándares de integración para un amplio rango de tecnologías:
tiempo real, sistemas empotrados, entre otros y una amplia variedad de
industrias
diferentes:
modelado
e
integración
de
negocios,
finanzas,
administración pública, salud, etc.
Arquitectura:
OMG usa una arquitectura de cuatro niveles o capas de modelado para sus
estándares. En la terminología del OMG estas capas se llaman M0, M1, M2 y M3:
2.6.1. Capa M0: Instancias
En el nivel M0 están todas las instancias “reales” del sistema, es decir, los
objetos de la aplicación. Aquí no se habla de clases ni atributos, sino de
entidades físicas que existen en el sistema.
Ejemplo:
Supongamos un sistema que debe manejar clientes de un videoclub. En
la Figura 8 vemos las entidades que almacenan los datos (nombre,
23
dirección y teléfono) de los clientes David Aguilar y Miguel Martínez.
Estas entidades son instancias pertenecientes a la capa M0.
Ilustración 8
Fig. N° 8. Entidades de MOF – Capa M0
2.6.2. Capa M1: Modelo del Sistema
Por encima de la capa M0 se sitúa la capa M1, que representa el modelo
de un sistema software. Los conceptos del nivel M1 representan categoría
de las instancias de M0. Es decir, cada elemento de M0 es una instancia de
un elemento de M1.
Ejemplo:
Como vemos en la Figura 9, en el nivel M1, aparecería la entidad Cliente
con los atributos nombre, dirección y teléfono, que representa a todos
los clientes de la aplicación. La entidad Articulo, que representa a todos
los artículos que pueden alquilarse en el videoclub, también pertenecen
al nivel M1.
Ilustración 9
Fig. N° 9. Entidades de MOF – Capa M1
Los modelos creados usando UML pertenecen a este nivel M1.
24
2.6.3. Capa M2: Metamodelo
Análogamente a como ocurría con M0 y M1, los elementos del nivel M1 son
a su vez instancias del nivel M2. Esta capa recibe el nombre de capa de
metamodelo. En este nivel aparecerán conceptos como Clase, Atributo o
Relación.
Ejemplo:
La entidad Cliente mostrada en el apartado anterior sería una instancia
de la metaclase UML Class del metamodelo de UML que aparece en la
Figura 10, junto a la metaclase UML Attribute.
Ilustración 10
Fig. N° 10. Entidades de MOF – Capa M2
El metamodelo de UML estaría situado en este nivel M2 y gracias a él
podemos construir modelos de nivel M1 en UML.
2.6.4. Capa M3: Meta-metamodelo
En la misma línea, podemos ver los elementos de M2 como instancias de otra capa
superior M3, la capa de meta-modelo. Dentro del OMG, MOF es el lenguaje
estándar de la capa M3. Esto supone que todos los metamodelos de la capa M2,
por ejemplo, el metamodelo de UML, son instancias de MOF. O lo que es lo
mismo, UML se define usando MOF.
Ejemplo:
La Figura 11 muestra un ejemplo de entidades de la capa M3. La clase de M2
UML Class es una instancia de la clase de M3 MOF Class.
Ilustración 11
Fig. N° 11. Entidades de MOF – Capa M3
25
Una visión completa de las capas:
La Tabla N° 1 muestra la relación entre capas de modelado definidas por el OMG.
CAPA
CONTENIDOS
M0 – Instancias
Instancias reales del sistema
EJEMPLOS
Cliente con nombre=“David
Aguilar” y DNI=48491673
M1 – modelo
M2 – Metamodelo
M3 – Meta-metamodelo
Entidades del modelo del
Clase “Cliente” con atributos
sistema
“nombre” y “DNI”
Entidades de un lenguaje de
Entidad “UML Class” del
modelado
metamodelo de UML
Entidades para definir lenguajes
Entidad “MOF Class” de MOF
de modelado
Tabla N° 1. Tabla de las Capas de Modelado
Ilustración 12
Fig. 12. Relación entre las Capas de Modelado
26
2.7. Lenguaje Modelado de Proceso – UML:
Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified
Modeling Language) es el lenguaje de modelado de sistemas de software más
conocido y utilizado en la actualidad; está respaldado por el OMG (Object
Management Group). [6]
UML es un lenguaje estándar para visualizar, especificar, construir y documentar
los artefactos de un sistema de software. Puede usarse en las diferentes etapas
del ciclo de vida del desarrollo y en diferentes tecnologías de implementación. Es
independiente del proceso de desarrollo de software.
UML está compuesto por diversos elementos gráficos que se combinan para
conformar diagramas.
Al ser UML un lenguaje, existen reglas para combinar dichos elementos. En
conjunto, los diagramas UML brindan diversas perspectivas de un sistema, por
ende el modelo. Ahora bien, el modelo UML describe lo que hará el sistema y no
como será implementado. [6]
Ilustración 13
Fig. N° 13. Transformaciones de un Modelo UML
27
2.7.1. Diagrama de Clases
Los diagramas de clases representan las clases intervinientes en el
sistema, destacando con que otras clases se relacionan y como lo hacen.
Ilustración 14
FIG. 14. Modelo de una Clase.
2.7.2. Diagrama de Casos de Uso
Describen las acciones de un sistema desde el punto de vista del usuario.
Si la finalidad es crear un sistema que pueda ser usado por la gente en
general,
es
importante
este
diagrama,
ya
que
permite
a
los
desarrolladores (programadores) obtener los requerimientos desde el
punto de vista del usuario. [6]
Ilustración 15
FIG. 15. Modelo de un Caso de Uso.
28
2.7.3. Diagrama de Estados
Muestra las transiciones de un objeto en sus cambios de estados.
Por ejemplo, una persona es recién nacida, niña, adolecente o adulta.
Una lavadora puede estar en las fases de remojo, lavado, enjuague,
centrifugado o apagada. Un elevador se puede mover hacia abajo, hacia
arriba o estar en esta de reposo. [6]
El símbolo de la parte superior indica el estado inicial y el de la parte
inferior el estado final (apagado).
Ilustración 16
Fig. 16. Modelo de un Diagrama de estado.
2.7.4. Diagrama de Secuencias
Representan información dinámica ya que los objetos interactúan entre si
mientras el tiempo transcurre. En definitiva, los diagramas de secuencias,
visualizan la mecánica de interacciones
tiempos. [6]
29
entre objetos con base en
Sobre nuestro ejemplo de la lavadora, encontramos los componentes
manguera, tambor y drenaje como objetos que interactúan mientras
transcurre el tiempo de funcionamiento.
Ilustración 17
Fig. 17. Modelo de un Diagrama de Secuencia.
2.7.5. Diagrama de Actividades
En un caso de uso como en el comportamiento de objetos en un sistema,
siempre hay actividades que generalmente son secuenciales.
30
Sin importar el tiempo, podemos reflejar en el diagrama de actividades, la
secuencia de acciones que desarrollan los objetos. [6]
Ilustración 18
Fig. 18. Modelo de un Diagrama de Actividades.
2.8. Diagrama de Clases:
Son modelos de diseño creado para ver la interactividad de todas las clases del
sistema y sus detalles de implementación.
Un diagrama de clases es un tipo de diagrama estático que describe la estructura
de un sistema mostrando sus clases, atributos y las relaciones entre ellos. Los
diagramas de clases son utilizados durante el proceso de análisis y diseño de los
sistemas, donde se crea el diseño conceptual de la información que se manejará
en el sistema, y los componentes que se encargaran del funcionamiento y la
relación entre uno y otro. [3]
Presenta las siguientes características:
 Proporciona una visión general de todas las clasificaciones que se
encuentran en un sistema.
 Presenta las clases del sistema con sus relaciones estructurales.
31
 La
herencia
de
propiedades
de
otro
objeto,
conjuntos
de
operaciones/propiedades que son implementadas para una interfaz
gráfica. [4]
Un diagrama de clases está compuesto por los siguientes elementos:
 Clase: atributos, métodos, visibilidad.
 Relaciones: Herencia, Composición, Agregación, Asociación y Uso.
Ilustración 19
Fig. N° 19. Diagrama de Clases
32
2.8.1. Clase
Es la unidad básica que encapsula toda la información de un Objeto (un
objeto es una instancia de una clase). A través de ella podemos modelar el
entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).
En UML, una clase es representada por un rectángulo que posee tres
divisiones:
Ilustración 20
Fig. 20: Representación Estructural de una Clase.
En donde:

Zona superior: Contiene el nombre de la Clase.

Zona intermedio: Contiene los atributos (o variables de instancia)
que caracterizan a la Clase (pueden ser private, protected o public).

Zona inferior: Contiene los métodos u operaciones, los cuales son
la forma como interactúa el objeto con su entorno (dependiendo de
la visibilidad: private, protected o public).
Ejemplo:
Una cuenta corriente que posee como característica:
Ilustración 21
Fig. 21. Modelo de un Clase en UML.
33
Atributos y Métodos:

Atributos:
Los atributos o características de una Clase pueden ser de tres
tipos, los que definen el grado de comunicación y visibilidad de ellos
con el entorno, estos son:
Public: Indica que el atributo será visible tanto dentro como
fuera de la clase, es decir, es accesible desde todos lados.
Private: Indica que el atributo sólo será accesible desde
dentro de la clase (sólo sus métodos lo pueden accesar).
Protected: Indica que el atributo no será accesible desde
fuera de la clase, pero si podrá ser accesado por métodos de
la clase además de las subclases que se deriven.

Métodos:
Los métodos u operaciones de una clase son la forma en como ésta
interactúa con su entorno, éstos pueden tener las características:
Public: Indica que el método será visible tanto dentro como
fuera de la clase, es decir, es accesible desde todos lados.
Private: Indica que el método sólo será accesible desde
dentro de la clase (sólo otros métodos de la clase lo pueden
accesar).
Protected: Indica que el método no será accesible desde
fuera de la clase, pero si podrá ser accesado por métodos de
la clase además de métodos de las subclases que se
deriven.
34
2.8.2. Relaciones
La Relación es el enlace o interactividad lógica que se le da a cada uno de
los Objetos con Otros objetos en un Diagrama de Clases.
Cardinalidad de Relaciones:
En UML, la Cardinalidad de las relaciones indica el grado y nivel de
dependencia, se anotan en cada extremo de la relación y éstas pueden ser:
 Uno o muchos: 1..* (1..n)
 0 o muchos: 0..* (0..n)
 Número fijo: m (m denota el número).
Herencia:
Indica que una subclase hereda los métodos y atributos especificados por
una Súper Clase, por ende la Subclase además de poseer sus propios
métodos y atributos, poseerá las características y atributos visibles de la
Súper Clase (public y protected).
Ejemplo:
35
Ilustración 22
Fig. 22. Modelo de Herencia de Clases.
En la figura 22 se especifica que Auto y Camioneta heredan de Vehículo,
es decir, Auto posee las Características de Vehículo (Precio, VelMax, etc)
además posee algo particular que es Descapotable, en cambio Camioneta
también hereda las características de Vehiculo (Precio, VelMax, etc) pero
posee como particularidad propia Acoplado, Tara y Carga.
Cabe destacar que fuera de este entorno, lo único "visible" es el método
Características aplicable a instancias de Vehículo, Auto y Camión, pues
tiene definición pública, en cambio atributos como Descapotable no son
visibles por ser privados. [6]
Agregación:
Para modelar objetos complejos, n bastan los tipos de datos básicos
que proveen los lenguajes: enteros, reales y secuencias de
caracteres. Cuando se requiere componer objetos que son instancias
de clases definidas por el desarrollador de la aplicación, tenemos dos
posibilidades:
 Por valor: Es un tipo de relación estática, en donde el tiempo
de vida del objeto incluido está condicionado por el tiempo de
36
vida del que lo incluye. Este tipo de relación es comúnmente
llamada Composición (el Objeto base se construye a partir del
objeto incluido, es decir, es "parte/todo").
 Por referencia: Es un tipo de relación dinámica, en donde el
tiempo de vida del objeto incluido es independiente del que lo
incluye. Este tipo de relación es comúnmente llamada
Agregación (el objeto base utiliza al incluido para su
funcionamiento).
Ejemplo:
Ilustración 23
Fig. 23. Representación de Agregación de Clases en UML.
En donde se destaca que:
 Un almacén posee Clientes y Cuentas (los rombos van en el
objeto que posee las referencias).
 Cuando se destruye el Objeto Almacén también son
destruidos los objetos Cuenta asociados, en cambio no son
afectados los objetos Cliente asociados.

La composición (por Valor) se destaca por un rombo relleno.
 La agregación (por Referencia) se destaca por un rombo
transparente.
La flecha en este tipo de relación indica la navegabilidad del objeto
referenciado. Cuando no existe este tipo de particularidad la flecha se
elimina.
37
Asociación:
La relación entre clases conocida como Asociación, permite asociar
objetos que colaboran entre sí. Cabe destacar que no es una relación
fuerte, es decir, el tiempo de vida de un objeto no depende del otro.
Ejemplo:
Ilustración 24
Fig. 24. Representación de Asociaciones de Clases en UML.
Un cliente puede tener asociadas muchas Órdenes de Compra, en
cambio una orden de compra solo puede tener asociado un cliente.
Dependencia o Instalación (uso):
Representa un tipo de relación muy particular, en la que una clase es
instanciada (su instanciación es dependiente de otro objeto/clase). Se
denota por una flecha punteada.
El uso más particular de este tipo de relación es para denotar la
dependencia que tiene una clase de otra, como por ejemplo una
aplicación grafica que instancia una ventana (la creación del Objeto
Ventana está condicionado a la instanciación proveniente desde el
objeto Aplicación):
38
Ilustración 25
Fig. 25. Representación de Dependencia de Clases en UML.
Cabe destacar que el objeto creado (en este caso la Ventana gráfica)
no se almacena dentro del objeto que lo crea (en este caso la
Aplicación). [3]
2.9. Herramientas de Transformación
2.9.1. Herramienta OptimalJ de Compuware
Se trata de un entorno de desarrollo de aplicaciones empresariales que
permite generar con rapidez aplicaciones J2EE completas directamente a
partir de un modelo de alto nivel (PIM), utilizando patrones para codificar
adecuadamente las especificaciones de J2EE y haciendo uso de
estándares de MDA.
Arquitectura:
OptimalJ implementa el framework MDA haciendo uso de tecnologías
estándares MOF, UML, XML, WSDL y J2EE.
Se distinguen 3 tipos de Modelos:
 Modelo de Dominio:
Modelo de alto nivel que muestra la
arquitectura general del
sistema. Contiene los PIM de la aplicación. Este Modelo a su vez
usa dos tipos de modelos, el Modelo de Clases u el Modelo de
Servicios.
39

Modelo de Clases:
Se definen la estructura de la información con la que se
trabaja la aplicación mediante un diagrama de clases UML.
Este Modelo es el PIM de la aplicación.

Modelo de Servicios:
Permite definir vistas sobre las clases definidas en el modelo
de clases. Básicamente, la funcionalidad disponible en este
modelo consiste en limitar el acceso a las acciones de crear,
leer, modificar o eliminar instancias y ocultar la aparición de
determinados atributos en la interfaz de la aplicación
generada.
 Modelo de Aplicación:
Modelo del sistema desde el punto de vista de una tecnología
determinada (J2EE). Contiene los PSM de la aplicación.
 Modelo de Código:
Código de aplicación, generado a partir de modelo de la aplicación.
Así mismo, OptimalJ usa 2 tipos de transformaciones entre modelos:
 Patrones de transformación entre modelos:

Patrones de Tecnología:
Transforman el Modelo de Dominio (PIM) en el modelo de
Aplicación (PSM).

Patrones de Implementación:
Transforman el modelo de aplicación (PSM) en Código.
40
 Patrones
funcionales
para
transformaciones
dentro
de
modelos:

Patrones de Dominio:
Patrones definidos por el usuario que permiten a los
desarrolladores capturar, reutilizar y distribuir modelos del
dominio.

Patrones de Aplicación:
Usan el mismo principio que los patones del dominio pero
aplicados a modelos de aplicación.

Patrones de Código:
Patrones de bajo nivel aplicados al Código.
Ilustración 26
Fig.26 ArcStyler
¡Error! No se encuentra el origen de la referencia.
ArcStyler permite la transformación de modelos a otros modelos, a código
fuente y ficheros relacionados con las pruebas y despliegue, así como
ficheros de proyecto para editores de código como JBuilder. Las
transformaciones en ArcStyler están ligadas a los llamados MDA
Cartriedges como una de sus principales características, permitiéndole
definir nuestras propias reglas de transformación a modelos. Actualmente
existen muchos numerosos MDA-Cartriedges para diferentes arquitecturas
o plataformas como J2EE, EJB, NET, aplicaciones web, etc.
41
ArcStyler permite definir y administrar potentes transformaciones de
modelos y también permite controlar el proceso completo de desarrollo de
software mediante múltiples perspectivas integradas dentro de la misma
herramienta.
ArcStyler integra numerosas herramientas en el mismo entorno de
desarrollo, incluidas:
o
Una completa herramienta de modelado UML.
o
Una Herramienta de ingeniería inversa que transforma ficheros
fuente de Java y ficheros JAR y FAR en modelos UML.
o
Un explorador genérico basado en MOF que puede usarse para
modelos de cualquier metamodelo.
o
Una herramienta ANT para administrar reglas de construcción y
despliegue.
Componentes:
 UML:
Software UML que proporciona crear modelos de modelamiento de
objetos.
 MDA Profiles:
ArcStyler usa el mecanismo de Perfiles UML descrito en el aparato
Perfiles UML para proporcionar extensiones extandares que
soportan el modelado de MDA. Los cuales contiene los siguientes
elementos:

Estereotipos.

Tipos de datos.

Marcas.
 MOF y XMI:
ArcStyler usa MOF internamente para dar soporte entre otros a
UML, XMI y JMI.
42
XMI es la parte del estándar MOF que define como representar los
modelos de un determinado metamodelo usando XML.
De esta manera podemos exportar modelos a otras herramientas
con soporte XMI.
 JMI (Java Metadata Interface):
Es un estándar sugerido por Java Community Process (JCP) de
SUN. ArcStyler se basa íntegramente en JMI. Es la base común
para el acceso a cualquier modelo a través de herramientas. El
principal beneficio de esto es que un gran número de repositorios
son conformes a JMI, con lo que solo es necesario un pequeño
esfuerzo para integrar esos repositorios en ArcStyler. En otras
herramientas también basadas en interfaces JMI.
Funciones de Transformación de Modelos:
Las funciones de transformación que transforman modelos en otros
modelos o en código fuente constituyen el núcleo de MDA. Una función de
Transformación puede usar uno o más modelos como entrada y producir un
modelo de salida. Un tipo especial de Modelo de salida es un conjunto de
ficheros de texto que cumplen un conjunto escrito de reglas, por ejemplo la
definición sintáctica de un lenguaje de programación.
ArcStyler usa los MDA- Cartridges como componentes desplegables que
encapsulan una función de transformación
43
Ilustración 27
Fig.27 Arquitectura de ArcStyler
2.9.2. Otras Herramientas:
MODELOS
Entrada
Lenguaje de Salida
Estándares
ArcStyler
UML
TODOS
XMI, UML, MOF, JMI
OptimalJ
XMI V1.1
EN, J2EE
XMI, UML, MOF,
XML, WSDL, J2EE
AndroMDA
XMI V1.1
TODOS
Struct, NetBeans
MDR,ant
Mybernate,Velocity,
xDoclet y Maven
Codogen Architect
XMI V1.1, MDD
de Rational,
Visio, Together
XMI
Java, C#, C++,
Visual Basic
Struct
Java, C#, C++,
Corba, Visual
Basic 6, Visual
Basic.net
XMI
Together Architect
Tabla.2 Arquitectura de OptimalJ
44
2.10.
Java
Java es toda una tecnología orientada a la programación de software con el cual
podemos realizar cualquier tipo de programas. Una de las principales
características es su capacidad de que el código fuente funcione sobre cualquier
plataforma de software y hardware, es decir, un mismo programa puede
ejecutarse en varios sistemas sin tocar el código fuente. Además es un lenguaje
orientado a objetos que resuelve los problemas en la complejidad de los
sistemas, entre otras. [4]
Plataforma de Java:
Los programas Java se compilan a un lenguaje intermedio, denominado
Bytecode. Este código es interpretado por la máquina virtual de Java del entorno
de ejecución (JRE) y así se consigue la portabilidad en distintas plataformas. El
JRE es una pieza intermedia entre el código Bytecode y los distintos sistemas
operativos existentes en el mercado.
Ilustración 28
Fig.28 Plataformas de JAVA
45
Un programa Java compilado en Bytecode se puede ejecutar en sistemas
operativos como Windows, Linux, Mac Os, Solaris, BlackBerry OS, iOs o Android
utilizando el entorno de ejecución de Java (JRE) apropiado.
Una de las características más importantes de los lenguajes de programación
modernos es la portabilidad. Un programa es portable cuando es independiente
de la plataforma y puede ejecutarse en cualquier sistema operativo y dispositivo
físico. Los programas Java son portables porque se ejecutan e cualquier
plataforma.
La portabilidad de Java ha contribuido a que muchas empresas hayan
desarrollado sus sistemas de comercio electrónico y sus sistemas de información
en Internet con Java. El proceso de desarrollo y de mantenimiento de los
sistemas resulta menos costoso y las aplicaciones son compatibles con distintos
sistemas operativos.
La evolución del lenguaje de programación Java ha sido muy rápida. La
plataforma de desarrollo de Java, denominada Java Development Kit (JDK), se
ha ido ampliando y cada vez incorpora a un número mayor de programadores en
todo el mundo.
En la realidad Java no solo es un lenguaje de programación, Java es un lenguaje,
una plataforma de desarrollo, un entorno de ejecución y un conjunto de librerías
para desarrollo de programas sofisticados. Las librerías para desarrollo se
denominan Java Application Programming Interface (Java API).
La Figura 27 muestra los elementos de la plataforma Java, desde el código
fuente, el compilador, el API de Java, los programas compilados en Bytecode y el
entorno de ejecución de Java. Este entorno de ejecución (JRE) y la máquina
virtual (JVM) permiten que un programa compilado Java se ejecute en distintos
sistemas operativos.
46
Ilustración 29
Fig.29 Elementos de la plataforma Java
.
47
MATERIALES Y MÉTODOS
3.1. Diseño de la Investigación
Para dicho análisis se aplicara el diseño Pre-Experimental el cual se encuentra
representado por el gráfico:
Dónde:
: Un algoritmo de transformación realizado con arquitectura orientada a
modelos.
: Grupo de prueba.
Medición aplicando
a
Medición sin aplicar
a
3.2. Población y muestra
3.2.1. Población
Todas las transformaciones existentes de un diagrama de clases a código
fuente Java.
3.2.2. Muestra
Para poder conocer la muestra se una población de más de 100000
ejemplares de clases se utiliza la siguiente formula:
48
Dónde:
: Número de elementos de la muestra.
Probabilidad con las que se presenta el fenómeno.
Valor crítico correspondiente al nivel de confianza elegido; siempre se
opera con
Margen de error permitido (determinado por el responsable del
estudio).
Observaciones:

El valor de
es mayor a
clases de las cuales se utilizara la
población de muestra infinita.

El valor de

Como valor del fenómeno de transformación se presenta siempre
es
ya que la confianza de éxito es muy alta.
entonces el valor de
es
; este
restante, representa
aquellas transformaciones en las que no es necesario usar técnicas
ya que solamente hay clases unitarias.

Pongamos un margen de error del
, es común poner
ya que
se desconoce los resultados esperados.
Esto nos da un resultado de
muestras de diagrama de clases
que hay que tomar para aplicar los métodos de transformación a
código fuente Java.
49
3.3. Variables de estudio
3.3.1. Variable Dependiente
Mejorar la transformación de un Diagrama de Clases a Código Fuente
Java.
3.3.2. Variable Independiente
Desarrollo de un algoritmo de transformación de diagrama de clases a
código fuente Java.
3.3.3. Factor de Medición de Mejora del Tiempo
Disminuir el tiempo de desarrollo, así mismo el grado de complejidad.
3.4. Técnicas e Instrumentos
3.4.1. Técnicas
El presente trabajo de investigación consistirá en:

La investigación bibliográfica de búsqueda de artículos en la web,
libros y casos de estudio en relación con el tema de investigación.

El análisis sobre los distintos modelos de transformación de
diagramas de clases a código fuente java.

El diseño del modelo que se realizara a partir del análisis realizado
en la fase anterior.

La implementación del algoritmo de transformación teniendo en
cuenta el modelo realizado.

La aplicación de pruebas sobre el modelo computacional.

El análisis de mejora de la usabilidad según los resultados
obtenidos en las pruebas, y del tiempo de desarrollo del algoritmo.
50
3.4.2. Instrumentos
Para la recolección de datos utilizaremos los datos producidos a través de
técnicas de pruebas del software para los 10 modelos de diagramas de
clases; además de la búsqueda de artículos, casos de estudio y libros
referentes al tema.
51
RESULTADOS
4.1. Análisis de las Modelos de Transformaciones:
En este capítulo se analizara los siete modelos que relacionan el estándar
MDA con respecto a la transformación de Modelos.
Se presentara una
comparación con respecto a otros modelos para permitirnos observar las
diferencias que tiene cada uno de los modelos con respecto a otros.
Los criterios que se utilizaran son los siguientes

Diagramas UML. Utiliza diagramas UML para el modelado.

Consistencia. Es importante para mantener la información adicional
que se requiere para transformar un modelo en otro, de manera que
pueda reutilizarse cuando se requiera una modificación o actualización
del modelo fuente para volver a realizar su transformación al modelo
objetivo.

Trazabilidad. Implica conocer el elemento origen a partir del cual se ha
generado cualquier elemento del modelo destino.

Especificación. Define la información requerida del modelo, para CIM,
PIM, PSM o todos.

Transformaciones. Soporte a transformaciones entre diferentes niveles
de abstracción como: CIM-PIM, PIM-PSM y de PSM-IM (Modelo de
Implementación)
52
4.1.1. Modelo de Generación Automática de Código:
La generación automática de código a partir de modelos ha sido una
de las promesas parcialmente cumplidas en el desarrollo de software.
La experiencia de las herramientas CASE, aún distante del
automatismo absoluto, se complementa con algunos trabajos teóricos
que se alejan de los estándares de modelamiento.
Se propone reglas para la generación de código a partir de
metamodelo de diagramas de clases, secuencias y máquina de
estados de UML. Las reglas están definidas en lógica de primer orden,
permitiendo una especificación donde se evitan las ambigüedades y la
necesidad de aprender un lenguaje de programación específico.
Mediante un caso de estudio se representa la aplicación de las reglas
de transformación, generando el código fuente de una clase en el
lenguaje orientado a objetos Java.
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: Aplica la propiedad automática de
consistencia de una manera efectiva, ya que por su uso de la definición
metamodelos que utiliza puede saber el diagrama origen (diagrama de
clases).
Trazabilidad: Por consecuencia de lo anterior también posee la
propiedad de trazabilidad.
Especificación: Maneja Modelos PIM a PSM, del diagrama de clases
al código fuente java.
Transformación: La representación de los modelos que utiliza es con
los estereotipos de UML teniendo en cuenta los modelos PIM y PSM.
Los objetivos que cubre son: lograr una transformación a partir (lógica
de un lenguaje formal como el de la lógica de primer orden, y de eso
un metamodelo de clases que permita obtener código.
53
4.1.2. Modelos reflexivos en MDA:
Propone aplicar el enfoque MDA a sí mismo, con las nociones de PIT
(Transformaciones
Independientes
de
Plataforma)
y
PST
(Transformaciones de Plataforma Especifica) que dan a MDA dos
pasos nuevos en el ciclo de vida de transformaciones de modelos.
PIT expresa las transformaciones de modelo de una manera
independiente del
instrumento (herramienta) y PST marca esta
expresión independiente del instrumento sobre un instrumento actual.
Cuando
se
habla
de
plataformas
son
entendidas
como
los
instrumentos que permiten la especificación, el diseño y la ejecución de
transformaciones. Con el objetivo de transformar de PIM-PIM, PIMPSM y PSM-PSM se utilizan PIT y PST. Se basa en el enfoque
orientado a objetos y toma a UML como un metamodelo que define
lenguajes de transformación de tipo PIT y PST.
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: No hay información de la propiedad de
consistencia en el modelo dado.
Trazabilidad: Como los modelos se enfocan a sí mismos, estos
modelos no tienen forma de buscar y solucionar errores al tratar de
cambiar el modelo origen ya que es el mismo modelo.
Especificación: No Se encontró solo información única referente a un
solo modelo.
Transformación: La representación de los modelos que utiliza es con
modelos de PIM-PIM, PIM-PSM o PSM-PSM.
54
4.1.3. Una propuesta de Modelo de V&V en el marco de MDA
Presenta un proceso V&V (Validación & Verificación) genérico para ser
aplicado en el ámbito de metodologías basadas en MDA o MDD usado
para detectar errores e inconsistencias en las etapas tempranas del
desarrollo, evitando así la propagación de esos errores a las etapas
posteriores, ya que un error en el PIM se arrastra a un PSM hasta
llegar al código. Además el proceso sugerido sirve para identificar
funciones importantes que deberían cumplir las herramientas de
soporte de MDA respecto a realizar modelos correctos por medio de la
verificación y validación. Para pasar al modelado del PSM el proceso
de verificación y validación debe ser realizado tanto para el análisis de
requisitos como para el modelado del PIM.
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: No hay información de la propiedad de
consistencia en el modelo dado.
Trazabilidad: No posee ninguna propiedad de trazabilidad.
Especificación: Se encontró solo información referente a los modelos
PIM.
Transformación: No se han descubierto un uso de una transformación
existente propio en este modelo. Ya que es un modelo de verificación y
validación.
55
4.1.4. AspectMDA:
Modelo de desarrollo incremental consistente
integrando MDA y orientación a aspectos
Se basa en la idea de especificar diferentes modelos que
corresponden con distintos aspectos del sistema (como seguridad,
restricciones de tiempo real,…), este integra a MDA, DSOA (Desarrollo
de Software Orientado a Aspectos) xlinkit de una forma adecuada y
beneficiosa para el MDD. Los objetivos de este artículo son: modelar
esos aspectos (artefactoso propiedades de un sistema) por cada
equipo de trabajo desde el CIM hasta el PSM con el mínimo de
comunicación, verificarla consistencia, mejorar la trazabilidad entre los
diferentes niveles de abstracción y controlar el impacto al cambio. De
este modo, los niveles MDA se especifican en diferentes facetas de
sistema que modela los aspectos y los mantienen separados durante
todo el marco (MDA).
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: El modelamiento de aspectos hace que el
modelado posea la propiedad de consistencia tanto como la
trazabilidad
Trazabilidad: La trazabilidad del Modelo se afirma a través de la
tecnología orientada a aspectos
Especificación: No se especifica en ninguno de los 3 tipos de
modelos ya que abarca todos ellos.
Transformación: La representación de los modelos que utiliza es con
los estereotipos de UML para especificar las vistas de CIM, PIM y
PSM. Los objetivos que cubre son: lograr una separación de aspectos
(lógica del negocio, requerimientos,…) en el nivel (se utilizan casos de
uso) y eliminar los Crosscutting Concerns que aparecen dentro de cada
punto de vista que modela el sistema, esto hace que sea posible los 3
niveles de transformación.
56
4.1.5. Modelos de descripción de PIM
Presenta un enfoque de Ingeniería Dirigida por Modelos (MDE por sus
siglas en inglés), que utiliza la visión MDA. El MDE toma en
consideración dos aspectos importantes: la separación de aspectos
funcionales (ejemplo requerimientos) de los no funcionales (ejemplo
calidad) de un sistema y los aspectos de plataforma independiente de
los de plataforma específica. Se definen las partes que conforman a
un PIM como: Contexto (el alcance del sistema a ser desarrollado),
Requerimientos, Análisis (especifica la vista interna del sistema) y
Diseño del componente (solución independiente de plataforma
expresada en términos de componentes de software).
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: No hay información de la propiedad de
consistencia en el modelo dado.
Trazabilidad: No hay información de la propiedad de trazabilidad en el
modelo dado.
Especificación: Se encontró solo información referente a los modelos
PIM.
Transformación: No se especifica en ninguno de los 3 tipos de
transformación.
57
4.1.6. Conceptos y técnicas de PSM y Técnicas de mapeo de PIM a PSM
Proyectos de MASTER (Model-driven Architecture Instrumentation,
Enhancement and Refinement) que es el nombre de un proyecto cuyo
objetivo es realizar una revisión de los conceptos de MDA. En el
concepto y Técnicas se mencionan las características que debe tener
un PSM para ser construido de acuerdo al perfil de la plataforma,
librerías, conjunto de reglas, patrones y meta modelos. En las Técnicas
de mapeo de PIM a PSM se centra en las transformaciones de PIM a
PSM que deben considerar las características de trazabilidad,
bidireccionalidad, consistencia y simplicidad (para facilitar las pruebas
o verificación en la transformación). Utilizan separación de aspectos
para el mapeo de PIM a PSM, refiriéndose a que el PSM aborda tanto
cuestiones tecnológicas como de negocios, por lo que se deben
separar y a esta separación le llama separación de aspectos, para que
la parte del negocio no se disperse en la tecnología, sino que el
modelo PIM del negocio se enriquezca de la tecnología.
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: No hay información de la propiedad de
consistencia en el modelo dado.
Trazabilidad: No hay información de la propiedad de trazabilidad en el
modelo dado.
Especificación: Se encontró solo información referente a los modelos
PIM a PSM.
Transformación: La representación de los modelos a través de
mapeos hace que utiliza es con los estereotipos de UML para
especificar las vistas de, PIM y PSM.
58
4.1.7. Enfoque basado en componente orientado a características para la
transformación de CIM a PIM
Presenta un enfoque
de transformaciones de CIM a PIM,
considerando
como
(características)
al
CIM
y
al
PIM
un
como
modelo
la
de
arquitectura
características
de
software
(componentes). Se resuelven parcialmente 2 problemas con respecto a
la transformación de CIM a PIM: el seguimiento de CIM a PIM (como
los elementos en el CIM pueden ser remontados a elementos en el
modelo PIM) y la construcción de PIM basado en CIM (como formar los
elementos del PIM en la transformación).
Diagramas UML: La diagramación UML está presente en cada uno de
los modelos propuestos.
Consistencia incremental: No hay información de la propiedad de
consistencia en el modelo dado.
Trazabilidad: como los elementos en el CIM pueden ser remontados a
elementos en el modelo PIM, este cumple con la propiedad de
trazabilidad.
Especificación: No se encontró información a ningún modelo referente
a los modelos.
Transformación: Presenta un enfoque de transformaciones de CIM a
PIM, considerando al CIM como un modelo de características.
4.1.8 Análisis Comparativo de los Modelos Referidos:
En este capítulo hemos analizado siete modelos que nos representan
diversas formas de transformación de diagramas.
Todas presentan ventajas y desventajas, debido a eso no podemos
decir cuál es la mejor.
Si evaluamos las distintas características que tiene cada uno
obtendremos la siguiente tabla.
59
Cuadro Comparativo:
MODELOS
Modelos de Generación Automática de Código
Modelos Reflexivos basados en MDA
Procesos V&V en el marco MDA
AspectMDA
Modelo basado en PIM
Conceptos PSM y técnicas de Mapeo de PIM a
PSM
Modelo orientado a características
a. Diagramas UML
b. Consistencia
c. Trazabilidad
A
B
C





















Especificación
CIM PIM PSM
 

 

  
 

 

 




Transformaciones
CIM-PIM
PIM-PSM PSM-IM





















: Significa que cumple las características
: No cumple las características
:
Cumplen las características pero no a totalidad, es decir que tiene
deficiencia en ese aspecto.
Tabla.3 Tabla comparativa de modelos MDA
De lo hablado se obtiene lo siguiente:
Que las características de un modelo de Vistas en Ing. Aspectos, trabaja con
el modelo de UML tiene una definición de trazabilidad, pero no posee una
función de consistencia que permite obtener modificaciones si se ha
equivocado u omitido algo del diagrama origen, además solo se puede ir de
diagrama independiente a la computadora (CIM) a un diagrama independiente
del Modelado (PIM).
Los diagramas reflexivos solo en diagramas UML, pero al tener poca validez
no ha conseguido ninguna característica importante, dependiendo de la
herramienta que utilices este método obtendrá los beneficios.
El Proceso V&V detectar errores e inconsistencias en las etapas tempranas
del desarrollo, pero no puede regresar a solucionar dichos errores una vez
transformado el diagrama.
El más estable dicho hasta ahora con una metodología orientada a aspectos
este método no se basa en ningún diagrama origen, esto hace que no sea
preciso enfocarse en una sola transformación.
4.2. Diseño Modelo Computacional para la Transformación de diagramas:
Un Análisis del modelo Computacional (Herramienta) proporciona una
especificación de trasformaciones
de un PIM
en un PSM, en este caso
vamos a ir desde el diagrama de clases de un modelado PIM a un Código
JAVA PSM. Es decir cada tipo de elementos en la PIM se le aplica una regla
predeterminada para transformarlo en uno o varios elementos del PSM.
Para eso vamos a utilizar el prototipo del primer modelo junto con los
conceptos de PSM y mapeo de datos.
La solución propuesta comienza con un enfoque de Metamodelo del Diagrama
de Clases con los estándares en UML.
4.2.1. Arquitectura del modelo de Transformación:
Esta formación se basada en 3 partes:
- Realizar procesos mediante modelado con técnicas y propiedades de
transformaciones MDA para obtener el metamodelo de diagrama de
clases comprimido de UML.
- Realizar operaciones de Lógica de Predicados, para ordenar y
generalizar el proceso de clasificación y demás elementos que se
encuentran en el metamodelo generado.
- Instanciar sobre lo anterior a los parámetros para poder generar el
código requerido en JAVA.
Modelado
Instancia
Operación
Ilustración 30
Fig. 30 Arquitectura del Modelado
Modelado: Parte donde el proceso usa una transformación de
diagrama de clases a un código intermedio por medio de una meta
modelado del diagrama de clases que se mostrara a continuación.
Instancia: Es la parte se instancia el diagrama de clases, una vez
obtenido ese diagrama se utiliza para poder obtener los datos para
ver si cada uno de las operaciones cumple con el modelo dado.
62
Operación: Utilizar los diversas Reglas de Transformación definidas
del Modelo a cada una de las clases y relaciones de las clases que
se tienen en el diagrama original. A través de metamodelos del
diagrama de clases.
4.2.2. Definición del Modelo de Transformación:
El
Modelo
de
transformación
representa
una
forma
de
transformación orientada a MDA que dispone de formas de
transformaciones específicas de uso de lenguajes formales como la
lógica proposicional para obtener ciertos resultados que luego serán
utilizados en un enfoque de transformación en un estándar de MDA.
4.2.3. Descripción del Modelo de Transformación:
El Modelo computacional aporta a extraer distintas características
del proceso de MDA combinados con trabajos previos de
transformación con lógica de predicados proponiendo una forma de
modelado de transformación que aporta nuevo estándares de
calidad a los usuarios.
La generación automática de código ha sido parte de la historia de
la programación. El primer compilador significó el inicio de la carrera
en la búsqueda de herramientas para posibilitar la programación de
computadores, en un nivel de abstracción cada vez más asequible a
la interpretación humana. De esta forma, el ensamblador permitió la
transición de los unos y ceros del lenguaje de máquina, a la
manipulación de registros mediante operaciones identificadas con
palabras de fácil recordación para el programador. A su vez, no
siendo suficientemente sencillo de utilizar, el ensamblador dio paso
a los lenguajes de alto nivel y por ende a herramientas que
permitieron la transformación automática de los programas escritos
con estos lenguajes en un programa interpretable por la máquina.
63
Adicional a los lenguajes de alto nivel, actualmente los equipos de
desarrollo cuentan con lenguajes de modelado, los cuales posibilitan
la construcción de modelos que, a diferencia del código, se
convierten en herramientas de comunicación de fácil interpretación.
Estos lenguajes de modelado son serios candidatos a contribuir en
la evolución de la generación de código.
UML es el lenguaje de modelado de mayor uso en la actualidad.
Con UML es posible modelar los aspectos estáticos y dinámicos de
un sistema, y en diferentes niveles de detalle, como puede suceder
con MDA y sus modelos PIM y PSM.
Ya que el PSM tiene una fuerte relación con la plataforma, puede
ser un modelo de considerable utilidad en la generación automática
de código a partir de un lenguaje de una abstracción superior, como
lo es UML, a los lenguajes de alto nivel de la actualidad.
Si se pretende generar código fuente a partir de modelos PSM,
entonces tanto el PSM como el código, siendo éste el modelo de la
fase de implementación, deben representar el sistema bajo estudio,
en sus aspectos estáticos y dinámicos. Adicionalmente, las reglas
de transformación de modelo a código deben estar definidas en una
especificación que no dé lugar a ambigüedades y deben poder ser
programables para su uso. El uso de elementos por fuera del
estándar, ocasiona que el equipo de desarrollo dependa únicamente
de la herramienta que implemente estos elementos y que se deba
adaptar a los cambios sintácticos ocasionados en el lenguaje debido
a estas adiciones (la migración a otra herramienta podría implicar la
repetición de todos los modelos), lo cual puede complicar la
comunicación con los miembros del equipo de desarrollo o
miembros externos de apoyo al proyecto.
Se propondrán reglas de transformación para PSMs compuestos de
diagramas de carácter estructural, como el diagrama de clases.
64
Las reglas están definidas sobre el metamodelo de UML, con lo
cual se dispone de una estructura abstracta, independiente de
cualquier modelo de usuario, y que además ofrece vínculos entre
los diferentes diagramas utilizados en la generación de código.
Estas reglas se especifican en cálculo de predicados de primer
orden (Morgan, 1998), lo que las hace fáciles de entender y
suficientemente genéricas para ser programadas y útiles en la
generación de código en diferentes lenguajes de programación.
4.2.3.1.
Metamodelo del diagrama de Clases
La Figura presenta el metamodelo comprimido del
diagrama de clases de UML.
Los elementos más comunes de este diagrama son
las clases, con sus atributos y operaciones, y las
relaciones
entre
clases,
que
incluyen
la
generalización y la asociación, con las variaciones
que ésta puede tener como es la composición y la
agregación.
65
Ilustración 31
Fig. 31 Metamodelo del diagrama de Clases
66
4.2.3.2. Instancia de un Diagrama de Clases
Es
importante
tener
en
cuenta
los
atributos
(multiplicidad y rol) de las relaciones entre las
metaclases, y así se verá más adelante en las reglas
de transformación. Por el momento, es necesario
considerar que:
1. Toda instancia de la metaclase Class tiene asociado un
conjunto de atributos y otro de operaciones, a los
cuales se puede acceder utilizando los atributos de
Class
ownedAttributes
y
ownedOperations
respectivamente.
2. Si una clase es la especialización de otra, la relación
entre ambas clases se dará mediante una instancia de
la metaclase Generalization. Por la navegabilidad de
las relaciones, una clase general (véase rol general en
la Figura 2) no puede tener acceso a las clases que la
especializan
pero,
en
cambio,
las
clases
especializadas pueden tener acceso a la clase general
utilizando los atributos generalization y general de la
relación entre instancias del metamodelo así:
ClaseGeneral = self.generalization.general
Donde self es la clase especializada que desea saber
cuál es su clase madre.
Si hay más de una clase especializada, la metaclase
GeneralizationSet
permite identificar el conjunto de
clases que hacen parte de una misma generalización.
67
El metamodelo de UML no establece una relación de
generalización directa entre las meta clases Type y
Class, pero se presenta acá como tal, dando a
entender que el tipo de un atributo o una operación
puede ser una clase.
La siguiente Figura
presenta una instancia del
metamodelo del diagrama de clases. La instancia a1
de la metaclase Association representa la relación
entre las clases Customer y Order. Nótese que la
asociación no se relaciona directamente con las clases
sino con propiedades cuyos tipos son las clases de la
relación. Estas propiedades, p5 y p6, equivalen a los
roles en el diagrama de clases.
Ilustración 32
Fig. 32 Instancia de una Clase
68
4.2.4.
Formalización del Modelo Computacional:
Aquí el código general de como proponer este tema.
Pseudocódigo del Problema:
A continuación se dará un pseudocódigo que permite realizar
este proceso de una manera general.
Entrada: Diagrama de Clases
Salida: Pseudocódigo del Diagrama de Clases
Primer Paso: Meta Modelado del problema del diagrama de
clases en JAVA
Segundo Paso: Traducir el Meta modelado por los distintas
Operaciones
INICIO
Para cada CLASE de diagrama de clases
Para cada PARTE DEL METAMODELO DE
LA CLASE
SI CUMPLE LA REGLA
ENTONCES
Tercer Paso: Instanciar en el
Meta modelado para dar su
equivalente en Código JAVA.
Fin
Fin
FIN
69
4.2.5. Reglas de transformación:
Utilizando las reglas de transformación de los modelos anteriores se
han escogido entre dos modelos, reglas que se acomodan para el
proceso de transformación, utilizando la notación de una lógica de
primer orden.
Las reglas de transformación se definen a partir de las clases. Se
presenta una única clase, sin asociaciones con otras clases,
considerando que las asociaciones son modificadoras de la definición
de las clases que vinculan. [2]
Así, la relación de herencia modifica la definición de la clase y una
relación de asociación con otra clase implica la aparición de un nuevo
atributo en alguna o todas las clases relacionadas. [2]
[Abstract] ClassName [::GeneralClassName]
visibility name : type multiplicity = default
visibility name {parameter-list} : return-type
Ilustración 33
Fig. 33 Sintaxis de una clase
Cada casilla está compuesta por elementos sintácticos. La primera
casilla, por ejemplo, indica que el nombre de una clase tiene un
identificador llamado ClassName que puede estar acompañado de la
palabra Abstract si la clase es abstracta, y/o del símbolo: seguido del
nombre de la clase general de la clase actual, en caso de existir una
relación de generalización. [2]
Las reglas que permiten obtener, para un diagrama de clases dado, la
estructura sintáctica presentada en la figura son las siguientes:
70
Regla NombreClase: El atributo name de las instancias de la
metaclase Class, será el nombre de la clase.
∀c∈Class ⇒ c.name
Regla esAbstracta: Todas las instancias de la metaclase Class cuyo
atributo isAbstract sea verdadero, serán clases abstractas.
∀c∈Class (c.isAbstract ⇒ ‘ abstract’ )
Regla ClaseGeneral: Si la clase c es el extremo specific de una
relación de generalización g, entonces c tiene una clase general y
esta clase es el extremo general de la generalización g.
∀c∈Class ((∃g∈Generalization ∙ g.specific = c) ⇒ g.general)
Regla atributos propios de la clase: Los atributos propios de una
clase son aquellos que se obtienen por la relación entre las
superclases Class y Property. Una propiedad p, instancia de la
metaclase Property, es atributo de una clase c si el atributo Class de
p es igual a c. La multiplicidad, visibilidad, tipo y nombre de p están
dados por sus atributos upper, visibility, type y name respectivamente.
Si la multiplicidad es mayor que 1, la clase c tendrá un conjunto de
atributos p. Si la multiplicidad es igual a 1, entonces la clase c tendrá
un sólo atributo p. [2]
∀c∈Class∀p∈Property ∙ p.class = c ⇒
(
//si la multiplicidad es 1, el tipo permanece sin cambios
71
p.upper=1 ⇒ (p.visibility p.type.name p.name ‘ ; ’ )
∨
//si la multiplicidad es mayor que 1, el tipo es un conjunto de
elementos de Type
p.upper>1 ⇒ (p. visibility (p.type.name) ℙ p.name ‘ ; ’
)
Regla atributos por asociación:
La relación entre las clases Pedido y Cliente indica que la clase
Remisión tendrá un atributo de tipo Cliente cuyo nombre es cliente, y
de igual forma, la clase Cliente tendrá un atributo de tipo Pedido cuyo
nombre es pedido. Sin embargo, nótese en la parte inferior de la
Figura, que no hay relación entre la clase de un extremo de la
asociación y el atributo del otro extremo. La especificación UML, por
lo tanto, no considera ni gráficamente, ni mediante restricciones sobre
las clases, la relación acá señalada; por ello, se deben obtener los
atributos de una clase derivados de una relación, indirectamente
navegando sobre las relaciones entre las instancias que forman la
relación. [2]
72
Ilustración 34
Fig. 34 Relación entre un modelo de usuario y una instancia del metamodelo
Utilizando la relación entre las propiedades y la asociación, es posible
obtener para cada clase un atributo cuyo tipo es la clase del extremo
contrario. Por ejemplo, el atributo cliente de la clase Pedido se
obtendrá a partir de la asociación a y su relación con la propiedad p2
llamada ownedEnd. Teniendo p2 es posible tener su nombre, tipo
(relación Type), visibilidad, y demás elementos requeridos para
obtener atributos de una clase. Esto se representa de forma general
así:
∀c∈Class (∃a∈Association ∙ (∃p∈ a. OwnedAttributes).type =
cÙ
|a. ownedAttributes|=2)
⇒
(
//si la multiplicidad es 1, el tipo permanece sin cambios
73
p’ .upper=1 ⇒ (p’ .visibilidad p’ .Type.name p’ .name ‘ ; ’ )
∨
//si la multiplicidad es mayor que 1, el tipo es un conjunto de
elementos de Type
p’ .upper>1 ⇒ (p’ .visibilidad (p’ .Type.name) ℙ p’ .name ‘ ; ’
) ∙ (p’ = ownedAttributes - {p})
En la regla anterior, se selecciona una asociación en la cual al menos
uno de sus dos extremos tiene como tipo la clase actual. Luego, para
obtener la visibilidad, tipo, nombre y valor por defecto del atributo, se
obtiene el otro extremo de la asociación mediante la especificación p‟
= ownedAttributes - {p}, donde ownedAttributes es el conjunto de
propiedades relacionadas con la asociación.
En esta regla no se consideran las clases de asociación, motivo por el
cual se evalúa inicialmente que la asociación tenga dos extremos.
Regla operaciones propias de la clase: Las operaciones de una
clase se obtienen a partir de la relación entre las metaclases Class y
Operation. El tipo de la operación se obtiene de la relación entre las
metaclases Operation y Type; y los parámetros se obtienen de la
relación entre Operation y Parameter.
Una operación o, instancia de la metaclase Operation, es operación
de la clase c si el atributo Class de o es igual a c. La visibilidad, tipo y
nombre de la operación o está dado por sus atributos visibility, type y
name respectivamente.
Un parámetro ownedParameter, instancia de la metaclase Parameter,
es parámetro de la operación o si el atributo Operation de
ownedParameter es igual a o. El tipo y nombre de ownedParameter
están dados por sus atributos type y name respectivamente.
74
Para todas las operaciones o de c, se selecciona la visibilidad, tipo y
nombre de la operación.
Además, se seleccionan todos los
parámetros de la operación o.
∀c∈Class∀o∈Operation ∙ o.class = c ⇒
(
//visibilidad tipo nombre (parámetros)
o.visibility o.type.name o.name ‘ (‘
∀ownedParameter Parameter ∙ ownedParameter. Operation
=o⇒
//tipo parámetro nombreParámetro
ownedparameter.type.name
ownedparameter.name„)
„})‟
75
{„
4.3. Desarrollo de Casos de Estudio:
Vamos a utilizar un caso de Estudio para la implementación de la
presente investigación se tiene lo siguiente:
Base de Datos: Tienda de productos.
Rubro: Comercio
Lenguaje de Programación: JAVA.
La fuente utilizada por el sistema nos proporcionara el anterior
software de gestión de ventas y compras que tiene la empresa junto
a los requerimientos obtenidos de entrevistas y métodos
complementarios de requerimientos.
Inicialmente, se obtiene la estructura del sistema en código, lo
cual se hace utilizando el diagrama de clases.
Paso 1 Modelado:
Para lograr esto, se utiliza un modelado con la sintaxis del
lenguaje, la cual se completa con los resultados de las reglas
de transformación. En el modelado se combinan elementos
propios del lenguaje y los consecuentes de las reglas de
transformación, estos últimos reemplazados por sus
equivalentes en los modelos UML.
Ilustración 35
Fig. 35 Diagrama de clases de ventas del caso
76
El Modelo para las clases Java es:
Public class $c.name {
//atributos
$p.visibility $.type.name $p.name;
//operaciones
$o.visibility $o.type.name $o.name
($ownedParameter.type.name $ownedParameter.name)
{
//método
}
}
Paso 2: Instancia.
La siguiente figura es la representación del diagrama de
clases como instancia del metamodelo del diagrama de
clases, correspondiente a las clases Pedido y Cliente.
Ilustración 36
Fig. 36 Instancia de Metamodelo del caso
77
Paso 3:
Al aplicar las reglas de transformación para el diagrama de
clases sobre la instancia c3 de la metaclase Class, la cual
hace referencia a la clase Pedido, el código generado para
esta clase, de acuerdo a la plantilla y las relaciones
presentadas en la Tabla1 es:
En la Siguiente tabla veremos cada uno de las operaciones
que hay q usar en cada uno de los casos.
$c.Name
$p.visibility $p.type.name
$p.visibility
$p.type.name($ownedParameter.type.nam
e $ownedParameter.type.name)
Regla Nombre Clase
Regla atributos propios de la
clase
Regla atributos por asociación
Regla operaciones propias de la
clase
Tabla 4.Operaciones del Metamodelo
Después de haber obtenido cada uno de las instancias y las
trasformaciones se coloca en la plantilla
Código en Java de La clase Pedido
Public class Pedido {
//atributos
Private String number;
Private Cliente cliente;
//operaciones
Public void agregarDetalle () {
//método
}
}
78
DISCUSIÓN DE RESULTADOS.
A continuación se hará una serie de datos de tiempo a través de pruebas hechas para
ejecución de tiempo a través de aproximaciones de tiempo.
Según el algoritmo:
Entrada: Diagrama de Clases
Salida: Pseudocódigo del Diagrama de Clases
Primer Paso: Meta Modelado del problema del diagrama de clases en
JAVA……… TA
Segundo
Paso:
Traducir
el
Meta
modelado
por
los
distintas
Operaciones………TB
INICIO
Para cada CLASE de diagrama de clases……………TC
Para cada PARTE DEL METAMODELO DE LA CLASE…. TM
SI CUMPLE LA REGLA
ENTONCES
Tercer Paso: Instanciar en el Meta modelado para
dar su equivalente en Código JAVA. T1
Fin
Fin
FIN
Como el tiempo de a y B son indiferentes para el uso de operaciones entre
metamodelos.
O (T)=MAX(A, B, C*M, 1)
O (T)=O(C*M)
79
La solución que proponemos nos da un resultado exponencial, en siguientes
trabajos se obtendrá información de cómo obtener los tiempos del algoritmo
previamente implementado, por el momento el resultado nos da que es un
algoritmo, el tiempo depende de un producto de cuantas clases se tenga
“O(C)” y dentro de cada clase cuantas partes del metamodelo obtenido se
obtendrá a partir de cada clase generada. “O (M)”.
CONCLUSIONES Y RECOMENDACIONES:
6.1. Conclusiones:
El Presente trabajo habla sobre una propuesta computacional que para la
transformación de diagramas de clases a código fuente a través de
modelados MDA.
Se ha tomado lo mejor de 2 algoritmos “Modelos de Generación Automática
de Código” y “Conceptos PSM y técnicas de Mapeo de PIM a PSM” de cada
uno se han analizado enfocado para extraer las técnicas de transformación y
la forma de modelado de MDA respectivamente para así poder crear una
nueva propuesta que se vino desarrollando en el presente trabajo.
Lo complejo del lenguaje unificado de Modelado UML ha hecho que se
presente una propuesta de metamodelo para la simplificación del proceso.
6.2. Recomendaciones:
Se recomienda el uso de restricciones a cada uno de los modelos dados,
estos se utilizan para saber dónde se originó cada uno de las partes del
diagrama, para poder modelar la consistencia solo así se creara una
herramienta confiable y capaz rehacer cada uno de los errores previos de los
diagramas.
6.1. Trabajos futuros:
En los siguientes trabajo futuro, se pretende desarrollar una herramienta
CASE que incluya el algoritmo generado, los metamodelos comprimidos y las
reglas de transformación.
Como se ve solamente al tener el diagrama de clases uno no peude saber
cómo actúa el sistema y que relación se tenga para poder convertir todo eso a
código. Es por eso que se desea también aplicar lo mismos proceso para los
diversos diagramas complementarios del sistema para UML como el diagrama
de estados, el diagrama de procesos, máquinas de estados, etc.
80
BIBLIOGRAFÍA
[1] Jonathan, ECU RED, ARQUITECTURA DIRIGIDA POR MODELOS Universidad
Central de Ecuador (2009),
[2] ANDRÉS MUÑETÓN, CARLOS M. ZAPATA, FERNANDO ARANGO. REGLAS
PARA LA GENERACIÓN AUTOMÁTICA DE CÓDIGO DEFINIDAS SOBRE
METAMODELOS
SIMPLIFICADOS
DE
LOS
DIAGRAMAS
DE
CLASES,
SECUENCIAS Y MÁQUINA DE ESTADOS DE UML 2.0, DYNA, 267-283. Mayo 05
de 2007, Escuela de Sistemas, Facultad de Minas, Universidad Nacional de
Colombia.
[3] Ing. EDUARDO PERALTA SALINAS, MODELADO DE CLASES UML,
http://users.dcc.uchile.cl/~psalinas/uml/modelo.html
[4] JUAN PABLO GARCIA BENITEZ, MARCO PARA LA TRANSFORMACIÓN DE
MODELOS BASADO EN GRAMÁTICAS DE ATRIBUTOS (Madrid 21 de Junio de
2010).
[5] Rodríguez Vicente, J. (Junio de 2004). Ingeniería de Modelos con MDA. Murcia.
[6] UBALDO JOSÉ BONAPARTE, Proyectos UML Diagramas de clases y
aplicaciones JAVA en NetBeans 6.9.1, Editorial de la Universidad Tecnológica
Nacional – edUTecNe, Facultad Regional Tucumán Universidad Tecnológica
Nacional – U.T.N. Argentina
[7] GERMAN SALAZ, EVALUACIÓN Y MEJORA DE LA CALIDAD DE
LOSPROCESOS DE MODELOS MDA -> ADMPROCESOS DE MODELOS MDA.
ADM BASADOS EN REINGENIERÍA,
[8] Pedro
Antonio
Fernández
Sáez,
UN
ANÁLISIS
CRÍTICO
DE
LA
APROXIMACIÓN MODEL-DRIVEN ARCHITECTURE, Facultad de Informática
Universidad Complutense de Madrid. (2009)
81
[9] Luís Eduardo Agudelo González. MARCO DE REFERENCIA PARA LA
EVALUACIÓN DE HERRAMIENTAS
DE TRANSFORMACIÓN DE MODELOS,
UNIVERSIDAD EAFIT MEDELLÍN 2006.
[10]
JORGE
MARTÍNEZ
LADRÓN
DE
GUEVARA.
FUNDAMENTOS
DE
PROGRAMACIÓN EN JAVA. Editorial EME. ISBN 978-84-96285-36-2. Facultad de
Informática. Universidad Complutense de Madrid.
[11]
HUGO ALBERTO KOFMAN. MODELOS Y SIMULACIONES EN LA
ENSEÑANZA DE LA FISICA. Santiago del Estero 2829, Santa Fe, República
Argentina. Facultad de Ingeniería Química de la universidad Nacional del Litoral.
82