260 likes | 468 Views
I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04) . MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz , Marta Ruiz, Manoli Albert, Vicente Pelechano Grupo OO-Method
E N D
I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04) MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente Pelechano Grupo OO-Method Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia
Agenda • Introducción • Caracterización de Relaciones de Asociación • Implementación de Relaciones de Asociación • Transformación de Relaciones de Asociación • Gramáticas de Grafos • Metamodelos • La Gramática • Implementación • Conclusiones
PIM PSM Model to Model Model to Code Transformation Transformation Source Code Introducción • MDA constituye un enfoque adecuado para realizar generación de código siguiendo una estrategia basada en modelos. • Las transformaciones entre modelos se convierten en un elemento clave
Introducción • MDA no propone una técnica estándar • Están trabajando en ello (RFP QVT) • Se están proponiendo y estudiando varias técnicas • Manipulación directa de los modelos • Enfoques relacionales • Gramáticas de grafos • XSLT
Introducción Aplicación Transformaciones PIM Modelado Conceptual Orientado a Objetos PSM class Empleado{ String Nombre; ... } class Empresa { String Nombre; ... } Clases de Diseño
Relaciones de asociación • Los métodos de Desarrollo de Software Dirigido por modelos necesitan primitivas conceptuales precisas • La descripción que realiza UML de las relaciones de asociación, agregación y composición es ambigua y no es aceptada por la mayoría de la comunidad OO • En este trabajo se parte del marco conceptual propuesto en [Albert2003] presentado en CAiSE2003
Características Temporales Dinámica/Estática Multiplicidad Número min y max conectados Propagación de Borrado Restrictivo/Cascada/Enlace Visibilidad Visible/No visible Proyección de Identificación Proyectado/No Proyectado Reflexividad Reflexivo/No Reflexivo Simetría Simétrica/Antisimética Marco conceptual para relaciones de asociación
Implementación de relaciones de asociación • A partir del marco conceptual se realiza una propuesta de implementación aplicando patrones de diseño ([Ruiz2004] en IDEAS’04) • Ideas básicas • Una relación de asociación tiene semántica propia • Patrón Mediator • Los objetos que participan tienen estructura y comportamiento adicional • Patrón Decorator • Las relaciones comparten estructura y estrategia de ejecución para la gestión de enlaces • Patrón Template Method
Clases abstractas (template method) Clases decoradoras Clase mediadora Implementación de relaciones de asociación
Transformación de modelos • Un modelo puede ser gestionado con un grafo • Elementos = nodos etiquetados • Relaciones = enlaces etiquetados entre nodos • Ventajas de las gramáticas de grafos • Base de conocimiento existente • Sintaxis gráfica • Naturaleza declarativa • Herramientas para su aplicación
Gramáticas de Grafos • Una gramática de grafos se compone de una serie de reglas • Cada regla define: • En la parte izquierda (LHS) un subgrafo Patrón • En la parte derecha (RHS) un subgrafo Sustitución
Transformación de Relaciones de Asociación • Estrategia a seguir: • Definir el metamodelo origen (metamodelo de análisis) • Definir el metamodelo destino (metamodelo de diseño) • Especificar la gramática para la transformación entre metamodelos
Metamodelo de Análisis • Basado en el marco conceptual
Metamodelo de Diseño • Elementos básicos de cualquier lenguaje orientado a objetos • Usando nomenclatura de C#
Metamodelo de Diseño (ejemplo) publicclass Persona { public String Nombre; privateInteger Edad; privatePersona Vecino; publicString [] Telefonos; publicvoid fijarEdad(Integer nueva_edad) { Edad = nueva_edad; } }
La Gramática para Transformación de Relaciones de Asociación • R1. Creación de tipos de datos atómicos • R2. Transformación de clases de análisis • R3. Creación de la estructura de las clases base • R4. Creación de las operaciones de DecoradorColega • R5. Creación de las operaciones de MediadorAsociacion • R6. Transformación de los extremos de la asociación • R7. Transformación de la asociación • R8. Transformación de las propiedades clave con PI • R9. Transformación de las propiedades clave sin PI • R10. Transformación de las propiedades • R11. Eliminación de enlaces innecesarios
Implementación de la Gramática • Utilizando la herramienta Atom3 (http://atom3.cs.mcgill.ca/) • Especificación de los metamodelos mediante ER • Obtención de editores gráficos para los MM • Especificación y aplicación de la gramática de grafos • Problemas encontrados • No soporta herencia en la definición de los MM • En la aplicación de la GG, el modelo debe validar siempre uno de los MM • No es muy estable y la usabilidad es baja
Conclusiones • Se han aplicado gramáticas de grafos para definir transformaciones entre modelos en el contexto de MDA • Conclusiones: • Es factible utilizar GG en MDA • Algunas reglas pueden resultar poco legibles • Las reglas con más elementos corresponden a la creación de la infraestructura del sistema • Trabajo futuro: • Implementar la GG con otras herramientas • Implementar la transformación con otras técnicas • Especificar transformaciones más complejas • Estudiar la separación de la infraestructura y la parte específica