Pontificia universidad javeriana



Descargar 236.39 Kb.
Página1/10
Fecha de conversión18.11.2018
Tamaño236.39 Kb.
  1   2   3   4   5   6   7   8   9   10


PI153-02

MIGRACIÓN DE ESQUEMAS DE ROUND-TRIP ENGINEERING A ESQUEMAS DE MODELO CENTRAL BASADA EN PLANTILLAS DE GENERACIÓN DE CÓDIGO

ARIEL ARTURO LÓPEZ LESMES

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERÍA

MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

BOGOTÁ, D.C.

2015
PI153-02

MIGRACIÓN DE ESQUEMAS DE ROUND-TRIP ENGINEERING A ESQUEMAS DE MODELO CENTRAL BASADA EN PLANTILLAS DE GENERACIÓN DE CÓDIGO

Autor:

Ariel Arturo López Lesmes

MEMORIA DEL TRABAJO DE GRADO REALIZADO PARA CUMPLIR UNO DE LOS REQUISITOS PARA OPTAR AL TÍTULO DE

Magíster en Ingeniería de Sistemas y Computación

Director

Ing. Jaime Andrés Pavlich Mariscal Ph.D.



Comité de Evaluación del Trabajo de Grado

Ing. Maria Consuelo Franky Ph.D

Ing. José Joaquín Bocanegra García

Página web del Trabajo de Grado

http://pegasus.javeriana.edu.co/~PI153-02-CMCTL

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERÍA

MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

BOGOTÁ, D.C.

Noviembre, 2015

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERÍA
MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

Rector Magnífico

Jorge Humberto Peláez Piedrahita, S.J.



Decano Académico Facultad de Ingeniería

Ingeniero Jorge Luis Sánchez Téllez



Decano del Medio Universitario Facultad de Ingeniería

Padre Sergio Bernal Restrepo S.J.



Director Maestría en Ingeniería de Sistemas y Computación

Ingeniera Ángela Cristina Carrillo Ramos



Director Departamento de Ingeniería de Sistemas

Ingeniero Rafael Andrés González Rivera


Artículo 23 de la Resolución No. 1 de Junio de 1946

“La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Solo velará porque no se publique nada contrario al dogma y la moral católica y porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la justicia”
AGRADECIMIENTOS

Quiero manifestar mi más profundo agradecimiento a mi madre Alicia, a mi padre Ariel, a mi hermano Eduardo, a mi novia Natalia, al Ing. Jaime y a mi compañero William, por todo su apoyo, comprensión y motivación en el desarrollo de esta etapa.




Contenido

Introducción 13

I – Descripción general del trabajo 14

1. Oportunidad, Problemática, Antecedentes 14

2. Descripción del proyecto 15

3. Objetivos 17



3.1 Objetivo General 17

3.2 Objetivos Específicos 18

4. Metodología 18



II – Estado del arte 21

1. Marco teórico 21



1.1. Ingeniería Dirigida por Modelos 21

1.2 Round Trip Engineering 22

1.3 Transformación de modelos 23

1.4 Definición de lenguajes de programación 27

1.5 View Based Modeling y Modelo Central 28

2. Trabajos relacionados 30



2.1 Análisis de plantillas de generación de código 31

2.2 Relaciones de correspondencia 32

2.3 Trazabilidad de modelos 33

2.4 Definición del Modelo Central 38

III. Contribuciones 39

1. Especificación del proceso de generación de relaciones de correspondencia 40



1.1 Plantillas de generación de código 41

1.2 Relaciones de correspondencia 42

1.3 Proceso de obtención de relaciones de correspondencia 47

2. Desarrollo del framework de generación de relaciones de correspondencia 50



2.1 Lenguaje de plantillas de generación de código 51

2.2 Lenguaje de plantillas de generación de código con trazabilidad sintáctica 56

2.3 Modulo de generación de gramáticas compuestas 61

2.4 Generador de relaciones de correspondencia a partir de plantillas de generación de código 62

2.5 Limitaciones actuales del framework 66



3 Validación del generador a través de un caso de estudio 67

3.1 Lenguaje de programación destino 68

3.2 Metamodelo del modelo de diseño de entrada 69

3.3 Plantillas de generación de código 69

3.4 Generación de relaciones de correspondencia 70

3.5 Relaciones de correspondencia y Modelo Central 72

IV. Conclusiones y trabajo futuro 74

V. Referencias 77

VI. Anexos 83

Anexo 1: Propuesta del trabajo de grado 83

Anexo 2: Especificación del lenguaje de plantillas CmctlTemplate 83

Anexo 3: Especificación del lenguaje de plantillas Cmctl 83

Anexo 4: Especificación del módulo de composición de gramáticas CmctlGenerator 83

Anexo 5: Casos de validación CmctlToCorrespondence 83

Lista de figuras

ABSTRACT

In Round-Trip Engineering (RTE) environments, information may be lost setting the models involved in the software development process in an inconsistent state, mainly because of the mappings from models to code and vice versa are not 1:1. A Central Model, is an artifact that integrates the programing language and the design model, removing the use of model transformation since model and code can be obtained as a projections or viewpoints of the Central Model. This research proposes that the software development process driven by RTE can be migrated to one driven by Central Model through the identification of correspondence relationships among elements of the programing language grammar and elements of the metamodel of the design model. These correspondence relationships can be identified by the processing of code generation templates, a common artifact used in RTE environments. This approach allows developers to continue the software development process using a Central Model driven environment.

RESUMEN

En entornos de Round-Trip Engineering (RTE), existe perdida de información que deja en estados inconsistentes los modelos involucrados en el proceso de desarrollo de software, principalmente porque las transformaciones de modelos a código no son 1:1. Un Modelo Central es un artefacto que se compone de elementos del lenguaje de programación y del modelo de diseño, permitiendo eliminar los procesos de transformación, ya que el código o el modelo se obtienen como proyecciones del Modelo Central, llamados vistas. El presente trabajo propone que el proceso de desarrollo basado en esquemas de RTE puede ser migrado a esquemas de Modelo Central a través de la identificación de relaciones de correspondencia entre la gramática del lenguaje de programación y elementos del metamodelo del modelo de diseño. Estas relaciones de correspondencia se pueden identificar a través de plantillas de generación de código a partir de modelos de diseño, artefactos comúnmente usados en RTE, permitiendo a los desarrolladores continuar los procesos de desarrollo de software en esquemas de Modelo Central.

RESUMEN EJECUTIVO

Con el objetivo de materializar la visión de la Ingeniería Dirigida por Modelos (MDE por sus siglas en Inglés), las herramientas involucradas en los procesos de desarrollo de software deben soportar transformación automática de modelos [1] [2]. Particularmente, los procesos de desarrollo de software basados en Round Trip Engineering se caracterizan por incorporar una transformación de modelos de diseño a código, en la cual los modelos de entrada, definidos según un metamodelo, son transformados a código expresado en un lenguaje de programación [3][4]. Después de permitir a los desarrolladores modificar el código generado, con el objetivo de completar y evolucionar el software en desarrollo, los modelos iniciales son actualizados a través de un proceso de Ingeniería inversa a partir del código modificado [3] [5]. Al cumplir estas transformaciones, el ciclo vuelve a iniciar y el proceso de evolución del software puede continuar hasta lograr el cumplimiento total de los requerimientos del sistema en desarrollo.

Sin embargo, en estos procesos de transformación, tanto de modelos a código, como de código a modelos, es posible que los artefactos involucrados presenten un estado de inconsistencia debido a la pérdida de información que se puede presentar en las transformaciones [3] [6]. Una de las razones para que esta pérdida de información se presente, es que en muchos casos la transformación entre modelos y código no es 1:1 [6] [7].

Una solución a este problema, es hacer uso de View Based Modeling [8] [9]. En este enfoque las vistas son el componente principal en el proceso de desarrollo de software. Este enfoque se basa en el uso de un artefacto llamado Modelo Central [7] [8] [9], el cual describe un superconjunto de elementos esenciales en el desarrollo de software. Las vistas habilitan a los ingenieros a entender partes del Modelo Central y modificarlo de manera indirecta. Las vistas pueden ser obtenidas en tiempo real como una proyección del Modelo Central, en forma análoga a las vistas en bases de datos relacionales [10]. Componer código y modelos de diseño en un modelo de mayor nivel de abstracción como el Modelo Central permite ejecutar las operaciones que modifican tanto el código como el modelo de diseño directamente a nivel del Modelo Central, lo que tiene como resultado la eliminación de las transformaciones entre modelos y código típicas de RTE.

Para desarrollar software basado en Modelo Central, es necesario contar con un mecanismo que permita realizar una migración automática o semiautomática de los esquemas de desarrollo de software basados en RTE a esquemas de desarrollo basados en Modelo Central. Contar con este mecanismo de migración facilitará la adopción de los procesos de desarrollo de software basados en Modelo Central por parte de los programadores, así mismo, reducirá los tiempos de desarrollo ya que permitirá aprovechar los avances realizados previamente en RTE.

Un proceso de migración de esquemas de RTE a Modelo Central requiere hacer uso de un artefacto típico de RTE que contenga la información suficiente, y que pueda ser extraída, con el objetivo de construir un artefacto típico del Modelo Central. Este elemento típico del proceso de RTE son los mappings de modelos de diseño a código. Estos mappings, expresados en plantillas de generación de código, permiten transformar modelos de entrada (definidos según un metamodelo) en un código de salida (definidos según una gramática de un lenguaje de programación). La estructura de las plantillas de generación de código tiene en cuenta la sintaxis del lenguaje de programación destino y reciben como entrada un elemento del modelo de diseño. Esta característica, permite establecer una relación entre un elemento del modelo de diseño con un elemento del código que lo implementará. La relación entre estos elementos se denomina relación de correspondencia, la cual es una declaración en la que, un término en la especificación de un dominio está asociado (e.g. describen la misma clase) con un término en la especificación de otro dominio [11] [12]. Las relaciones de correspondencia son un elemento base para la construcción de un Modelo Central y lograr identificarlas es suficiente para continuar el proceso de desarrollo usando un Modelo Central [7]. Adicionalmente, permite garantizar la trazabilidad entre los elementos del modelo, el código destino, las plantillas de generación de código, y posteriormente, con el Modelo Central.

Para lograr identificar las relaciones de correspondencia a partir de mappings, expresados en plantillas de generación de código, es necesario contar con: a) una gramática de un lenguaje de especificación de relaciones de correspondencia; b) un lenguaje de plantillas de generación de código, c) un lenguaje de plantillas de generación de código con trazabilidad sintáctica, el cual es una composición de las gramáticas usadas en (a) y (b); d) un mecanismo de generación de un lenguaje de plantillas de generación de código con trazabilidad sintáctica, el cual recibirá como entrada una gramática de un lenguaje de programación (a) y una gramática de un lenguaje de plantillas de generación de código (b), y después de un proceso de transformación, entregará una gramática de un lenguaje de plantillas de generación de código con trazabilidad sintáctica (c); y e) un generador de relaciones de correspondencia,

Las gramáticas de lenguajes de plantillas de generación de código fueron construidas usando Xtext [14] y están basadas en el lenguaje de transformación de modelos a texto Acceleo [15].

Como parte del proceso de validación del framework generado, se seleccionó el lenguaje de programación Featherweight Java [13], esta gramática contiene un subconjunto de los elementos del lenguaje Java. Adicionalmente, se usó el metamodelo del lenguaje de modelado MiniUml, [91] el cual es un subconjunto del metamodelo del lenguaje de modelado UML. Teniendo en cuenta estos dos lenguajes, se construyó una serie de plantillas de generación de código, usando el lenguaje de plantillas de generación de código con trazabilidad sintáctica desarrollado, que reciben como entrada un modelo de diseño definido según el metamodelo de UML, y generan código en el lenguaje Featherweight Java. Posteriormente, se aplicó el generador de relaciones de correspondencia para analizar dichas plantillas y generar una especificación de las relaciones de correspondencia encontradas entre los elementos del metamodelo de diseño y los elementos de la gramática del lenguaje de programación.

Es importante aclarar que la generación del Modelo Central a partir de las relaciones de correspondencia no se encuentra dentro del alcance del presente trabajo. Sin embargo es uno de los temas abarcados en otro trabajo enmarcado dentro de la misma investigación [7].





Compartir con tus amigos:
  1   2   3   4   5   6   7   8   9   10


La base de datos está protegida por derechos de autor ©composi.info 2017
enviar mensaje

    Página principal