mda aplicado: una gramática de grafos para la transformación de relaciones de asociación. javier...

26
MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz 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 I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04)

Upload: pilar-abrigo

Post on 11-Apr-2015

112 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de

Asociación.

Javier MuñozJavier Muñoz, Marta Ruiz, Manoli Albert, Vicente Pelechano

Grupo OO-MethodDepartamento de Sistemas Informáticos y Computación

Universidad Politécnica de Valencia

I Taller sobre Desarrollo de Software Dirigido por

Modelos, MDA y Aplicaciones (DSDM'04)

Page 2: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 3: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

SourceCode

PIM Model to ModelTransformation

PSM Model to CodeTransformation

Page 4: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 5: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Introducción

Aplicación TransformacionesAplicación Transformaciones

+Crear()+Destruir()

-DNI-Nombre-Puesto

Empleado

+Crear()+Destruir()

-CIF-Nombre

EmpresaTrabajaPara

+constructor()+destructor()

-ObjetoRelacionado1-ObjetoRelacionado2-RF-AS

MediadorAsociacion

+desconectar_enlace()+conectar_enlace()

-coleccionEnlaces-Min-Max-CT-PB-V-PI

DecoradorColega

+comprobar_reflexividad()+comprobar_antisimetria()

MediadorAsociacionTrabajaPara

Empleado

+constructor()+destructor()+crear_enlace()+borrar_enlace()+comprobar_multiplicidad_maxima()+comprobar_multiplicidad_minima()+comprobar_caracteristicas_temporales()

-objetoDecorado

DecoradorColegaEmpleado

Empresa

* 2

1

1

*

1

+constructor()+destructor()+crear_enlace()+borrar_enlace()+comprobar_multiplicidad_maxima()+comprobar_multiplicidad_minima()+comprobar_caracteristicas_temporales()

-objetoDecorado

DecoradorColegaEmpresa

1

1*

1

class Empleado{

String Nombre;

...

}

class Empresa {

String Nombre;

...

}

PIM

Modelado Conceptual Orientado a Objetos

Clases de Diseño

PSM

Page 6: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 7: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Marco conceptual para relaciones de asociación 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

Page 8: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 9: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Implementación de relaciones de asociación

+Crear()+Destruir()

-DNI-Nombre-Puesto

Empleado

+Crear()+Destruir()

-CIF-Nombre

EmpresaTrabajaPara

+constructor()+destructor()

-ObjetoRelacionado1-ObjetoRelacionado2-RF-AS

MediadorAsociacion

+desconectar_enlace()+conectar_enlace()

-coleccionEnlaces-Min-Max-CT-PB-V-PI

DecoradorColega

+comprobar_reflexividad()+comprobar_antisimetria()

MediadorAsociacionTrabajaPara

Empleado

+constructor()+destructor()+crear_enlace()+borrar_enlace()+comprobar_multiplicidad_maxima()+comprobar_multiplicidad_minima()+comprobar_caracteristicas_temporales()

-objetoDecorado

DecoradorColegaEmpleado

Empresa

* 2

1

1

*

1

+constructor()+destructor()+crear_enlace()+borrar_enlace()+comprobar_multiplicidad_maxima()+comprobar_multiplicidad_minima()+comprobar_caracteristicas_temporales()

-objetoDecorado

DecoradorColegaEmpresa

1

1*

1

Clases decoradoras

Clasemediadora

Clases abstractas

(template method)

Page 10: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 11: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

a : Integer = ???b : Boolean = ???

??? : A

c : String = ???

??? : B

a : Integer = >=10b : Boolean = ???

??? : A

c : String = match(2).c

match(2).name : B

x : Integer = match(3).a - 10

match(3).name : C

c : String = ''

match(1).name+match(2).name : B

:=

1)

4)

3')

2)

3)

2)

Page 12: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Gramáticas de Grafosa : Integer = ???b : Boolean = ???

??? : A

c : String = ???

??? : B

a : Integer = >=10b : Boolean = ???

??? : A

c : String = match(2).c

match(2).name : B

x : Integer = match(3).a - 10

match(3).name : C

c : String = ''

match(1).name+match(2).name : B

:=

1)

4)

3')

2)

3)

2)

a : Integer = 12b : Boolean = false

Objeto1 : A

c : String = 'hello'

Objeto2 : B

x : Integer = 3

Objeto3 : C

a : Integer = 7b : Boolean = true

Objeto4 : A

c : String = bye

Objeto5 : Ba : Integer = 2b : Boolean = true

Objeto6 : A

c : String = summer

Objeto7 : B

x : Integer = 2

Objeto1 : C

c : String = hello

Objeto2 : B

c : String = bye

Objeto15 : B

x : Integer = 3

Objeto3 : C

c : String = ''

Objeto1Objeto2 : B

a : Integer = 2b : Boolean = true

Objeto6 : A

c : String = summer

Objeto7 : B->

Page 13: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Transformación de Relaciones de Asociación

Estrategia a seguir:

1. Definir el metamodelo origen (metamodelo de análisis)

2. Definir el metamodelo destino (metamodelo de diseño)

3. Especificar la gramática para la transformación entre

metamodelos

Page 14: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Metamodelo de Análisis

Basado en el marco conceptual

-name : String

Analysis::Class

-CT : String-Min : Integer-Max : String-PB : String-V : Boolean-PI : Boolean

Analysis::AssociationEnd

-name : String-RF : Boolean-AS : Boolean

Analysis::Association

1

0..n

2 1-name : String-type : String

Analysis::Property

Analysis::StructuralFeature

Analysis::KeyProperty

Page 15: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Metamodelo análisis (ejemplo)

-NombreCompleto : String-Edad : Integer

Empleado

-CIF : String

Empresa

1..n 0..n

TrabajaPara

name : String = Empleado

Empleado : Analysis::Class

name : String = Empresa

Empresa : Analysis::Class

CT : String = dinamicaMin : Integer = 1Max : String = nPB : String = enlaceV : Boolean = falsoPI : Boolean = falso

Empl2Empr : Analysis::AssociationEnd

CT : String = dinamicaMin : Integer = 0Max : String = nPB : String = enlaceV : Boolean = ciertoPI : Boolean = falso

Empr2Empl : Analysis::AssociationEnd

name : String = TrabajaParaRF : Boolean = falseAS : Boolean = false

TrabajaPara : Analysis::Association

name : String = NombreCompletotype : String = String

NombreCompleto : Analysis::Property

name : String = Edadtype : String = Integer

Edad : Analysis::Propertyname : String = CIFtype : String = String

CIF : Analysis::Property

Page 16: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Metamodelo de Diseño

Elementos básicos de cualquier lenguaje orientado a objetos

Usando nomenclatura de C#

-name : String-abstract : Boolean

Design::Class

-name : String-visibility : String

Design::Attribute

Design::Reference Design::CollectionBase

10..n

1

0..n 0..n

1Design::DataType

0..n

1

Design::InitialValue

-name : String

Design::Atom

-content : String

Design::AtomicValue Design::CollectionBaseValue

1

0..n

-id : Long

Design::ObjectDesign::ReferenceValue

10..n

1

0..n

1

1

-specializes

1

-is_specialized

0..n

1

0..n

-name : String-body : String-visibility : String-override : Boolean-abstract : Boolean

Design::Operation-name : String

Design::Argument

Design::ReturnValue

1

0..n 1

0..n

1 0..1

0..n

1

0..n

1

Page 17: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Metamodelo de Diseño (ejemplo)

public class Persona

{

public String Nombre;

private Integer Edad;

private Persona Vecino;

public String [] Telefonos;

 

public void fijarEdad(Integer nueva_edad)

{

Edad = nueva_edad;

}

}

name : String = Personaabstract : Boolean = false

Persona : Design::Class

: Design::Reference

name : String = String

String : Design::Atom

name : String = Integer

Integer : Design::Atom

name : String = Nombrevisibility : String = public

Nombre : Design::Attribute

name : String = Edadvisibility : String = private

Edad : Design::Attribute

name : String = Vecinovisibility : String = private

Vecino : Design::Attribute

name : String = Telefonosvisibility : String = public

Telefonos : Design::Attribute

VString : Design::CollectionBase

name : String = fijarEdadbody : Stringvisibility : String = publicoverride : Boolean = falseabstract : Boolean = false

fijarEdad : Design::Operation

name : String = nueva_edad

nueva_edad : Design::Argument

body: Edad = nueva_edad;

Page 18: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 19: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

R1. Creación de tipos de datos atómicos

name : String = ???

??? : Design::Atom

1)

:=

name : String = String

String : Design::Atom

name : String = Integer

Integer : Design::Atom

name : String = Boolean

Boolean : Design::Atom4)

3)

2)

name : String = Object

Object : Design::Atom5)

Page 20: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

R3. Creación de la estructura de clases base

name : String = DecoradorColegaabstract : Boolean = ???

DecoradorColega : Design::Class

name : String = DecoradorColegaabstract : Boolean = true

DecoradorColega : Design::Class

name : String = DecoradorColegaabstract : Boolean = true

MediadorAsociacion : Design::Class

name : String = String

String : Design::Atom

name : String = Integer

Integer : Design::Atom

name : String = Boolean

Boolean : Design::Atom

name : String

String : Design::Atom

name : String = Integer

Integer : Design::Atom

name : String = Boolean

Boolean : Design::Atom

name : String = Minvisibility : String = protected

Min : Design::Attribute

name : String = Maxvisibility : String = protected

Max : Design::Attribute

name : String = CTvisibility : String = protected

CT : Design::Attribute

name : String = PBvisibility : String = protected

PB : Design::Attribute

name : String = Vvisibility : String = private

V : Design::Attributename : String = RFvisibility : String = private

RF : Design::Attribute

name : String = ASvisibility : String = private

AS : Design::Attribute

: Design::Reference : Design::Reference

name : String = coleccionEnlacesvisibility : String = private

coleccionEnlaces : Design::Attribute

name : String = ObjetoRelacionado1visibility : String = private

ObjetoRelacionado1 : Design::Attribute

name : String = ObjetoRelacionado2visibility : String = private

ObjetoRelacionado2 : Design::Attribute

name : String = Estadovisibility : String = protected

Estado : Design::Attribute

1)

2)

3)

4)

:=

1)

2)

3)

6)

7) 8)9)

10)

11)

12)

13)

14)

15)

16)

17)

18)

19)

name : String = Object

Object : Design::Atomname : String = ObjetoDecoradovisibility : String = public

ObjetoDecorado : Design::Attribute4)

21)

20)

name : String = Object

Object : Design::Atom

5)

Page 21: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

R6. Transformación de los extremos de la asociación

CT : String = ???Min : Integer = ???Max : String = ???PB : String = ???V : Boolean = ???PI : Boolean = ???

??? : Analysis::AssociationEndname : String = DecoradorColegaabstract : Boolean = ???

DecoradorColega : Design::Class

name : String = Minvisibility : String = ???

Min : Design::Attribute

name : String = Maxvisibility : String = ???

Max : Design::Attribute

name : String = Vvisibility : String = ???

V : Design::Attribute

name : String = CTvisibility : String = ???

CT : Design::Attribute

name : String = PBvisibility : String = ???

PB : Design::Attribute

name : String = DecoradorColega+match(4).nameabstract : Boolean = false

DecoradorColega+match(4).name : Design::Class

name : String = DecoradorColegaabstract : Boolean = true

DecoradorColega : Design::Class

-specializes-is_specialized

name : String = Minvisibility : String = match(3).name

Min : Design::Attribute

name : String = Maxvisibility : String = match(4).name

Max : Design::Attribute

name : String = Vvisibility : String = match(5).name

V : Design::Attribute

name : String = CTvisibility : String = match(6).name

CT : Design::Attribute

name : String = PBvisibility : String = match(7).name

PB : Design::Attribute

content : String = match(2).Min

: Design::AtomicValue

content : String = match(2).Max

: Design::AtomicValue

content : String = match(2).V

: Design::AtomicValue

content : String = match(2).CT

: Design::AtomicValue

content : String = match(2).PB

: Design::AtomicValue

1)

3)

4) 5)

6)

7)

8)

1')

17)

2')

4)5)

6)

7)

8)

9)

3)

11)

12)

14)

:=

name : String = PIvisibility : String = ???

PI : Design::Attribute

2)

name : String = PIvisibility : String = match(8).name

PI : Design::Attribute

content : String = match(2).PI

: Design::AtomicValue

name : String = ???RF : Boolean = ???AS : Boolean = ???

??? : Analysis::Association

CT : String = ???Min : Integer = ???Max : String = ???PB : String = ???V : Boolean = ???PI : Boolean = ???

??? : Analysis::AssociationEnd

10)

9)

name : String = ???abstract : Boolean = ???

??? : Design::Class

name : String = ???abstract : Boolean = ???

??? : Design::Class

12)

11)

name : String = match(3).nameRF : Boolean = match(3).RFAS : Boolean = match(3).AS

match(3).name : Analysis::Association

name : String = DecoradorColega+match(5).nameabstract : Boolean = false

DecoradorColega+match(5).name : Design::Class

content : String = match(1).Min

: Design::AtomicValue

content : String = matc(1).Max

: Design::AtomicValue

content : String = match(1).V

: Design::AtomicValue

content : String = match(1).CT

: Design::AtomicValue

content : String = match(1).PB

: Design::AtomicValue

content : String = match(1).PI

: Design::AtomicValue

name : String = match(4).nameabstract : Boolean = match(4).abstract

match(4).name : Design::Class

name : String = match(5).nameabstract : Boolean = match(5).abstract

match(5).name : Design::Class

-specializes -is_specialized

24)

23)

22)

21)

20)

19)

18)

16)

15)

4

Page 22: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

R6. Transformación de los extremos de la asociación

CT : String = ???Min : Integer = ???Max : String = ???PB : String = ???V : Boolean = ???PI : Boolean = ???

??? : Analysis::AssociationEndname : String = DecoradorColegaabstract : Boolean = ???

DecoradorColega : Design::Class

name : String = Minvisibility : String = ???

Min : Design::Attribute

name : String = Maxvisibility : String = ???

Max : Design::Attribute

name : String = Vvisibility : String = ???

V : Design::Attribute

name : String = CTvisibility : String = ???

CT : Design::Attribute

name : String = PBvisibility : String = ???

PB : Design::Attribute

name : String = DecoradorColega+match(4).nameabstract : Boolean = false

DecoradorColega+match(4).name : Design::Class

name : String = DecoradorColegaabstract : Boolean = true

DecoradorColega : Design::Class

-specializes-is_specialized

name : String = Minvisibility : String = match(3).name

Min : Design::Attribute

name : String = Maxvisibility : String = match(4).name

Max : Design::Attribute

name : String = Vvisibility : String = match(5).name

V : Design::Attribute

name : String = CTvisibility : String = match(6).name

CT : Design::Attribute

name : String = PBvisibility : String = match(7).name

PB : Design::Attribute

content : String = match(2).Min

: Design::AtomicValue

content : String = match(2).Max

: Design::AtomicValue

content : String = match(2).V

: Design::AtomicValue

content : String = match(2).CT

: Design::AtomicValue

content : String = match(2).PB

: Design::AtomicValue

1)

3)

4) 5)

6)

7)

8)

1')

17)

2')

4)5)

6)

7)

8)

9)

3)

11)

12)

14)

:=

name : String = PIvisibility : String = ???

PI : Design::Attribute

2)

name : String = PIvisibility : String = match(8).name

PI : Design::Attribute

content : String = match(2).PI

: Design::AtomicValue

name : String = ???RF : Boolean = ???AS : Boolean = ???

??? : Analysis::Association

CT : String = ???Min : Integer = ???Max : String = ???PB : String = ???V : Boolean = ???PI : Boolean = ???

??? : Analysis::AssociationEnd

10)

9)

name : String = ???abstract : Boolean = ???

??? : Design::Class

name : String = ???abstract : Boolean = ???

??? : Design::Class

12)

11)

name : String = match(3).nameRF : Boolean = match(3).RFAS : Boolean = match(3).AS

match(3).name : Analysis::Association

name : String = DecoradorColega+match(5).nameabstract : Boolean = false

DecoradorColega+match(5).name : Design::Class

content : String = match(1).Min

: Design::AtomicValue

content : String = matc(1).Max

: Design::AtomicValue

content : String = match(1).V

: Design::AtomicValue

content : String = match(1).CT

: Design::AtomicValue

content : String = match(1).PB

: Design::AtomicValue

content : String = match(1).PI

: Design::AtomicValue

name : String = match(4).nameabstract : Boolean = match(4).abstract

match(4).name : Design::Class

name : String = match(5).nameabstract : Boolean = match(5).abstract

match(5).name : Design::Class

-specializes -is_specialized

24)

23)

22)

21)

20)

19)

18)

16)

15)

4

Page 23: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 24: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Implementación de la Gramática

Page 25: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

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

Page 26: MDA Aplicado: Una Gramática de Grafos para la Transformación de Relaciones de Asociación. Javier Muñoz Javier Muñoz, Marta Ruiz, Manoli Albert, Vicente

Gracias