ATL

1,091 views

Published on

ATL, Atlas Transformation Language es un lenguaje de transformación de modelos inspirado en OCL 2.0 y QVT

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,091
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

ATL

  1. 1. 1 ATL, A model transformation tool by F. Jouault, F. Allilaire, J. Bézivin, and I. Kurtev Science of Computer Programming 72 (2008) 31–39 Óliver Centeno Álvarez Arquitecturas Dirigidas por Modelos Master en Ciencia y Tecnología Informática Curso 2008/09 (Universidad Carlos III Madrid)
  2. 2. 2 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  3. 3. 3 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  4. 4. 4 Introducción  Motivación  Desarrollo de aplicaciones  modelos  Que requieren transformaciones  La gestión de modelos pretende automatizar el proceso y proveer herramientas para tratamiento y transformación de modelos  Se emplean Sistemas de Transformación  Awk, XSLT, Modelo a Modelo (ATL)  G1, G2, G3
  5. 5. 5 Introducción  Con MDE se dedicará más tiempo a definir modelos de transformación  Lenguajes específicos de dominio (DSL) permitirán transformaciones habituales  ATL es uno de ellos  Lenguaje híbrido declarativo-imperativo  Parte de la plataforma AMMA  Inspirado en QVT y OCL  http://www.sciences.univ-nantes.fr/lina/atl/
  6. 6. 6 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  7. 7. 7 Conceptos Básicos  MDE: Ingeniería Dirigida por Modelos  Considera los modelos como los artefactos primarios para guiar el desarrollo  Modelo: Representación de un sistema expresada en un lenguaje preciso  Metamodelo: Fundamento conceptual de un lenguaje de modelado expresado como modelo  Conformidad: Relación entre un modelo expresado en un lenguaje y el metamodelo del lenguaje  Metametamodelo: Fundamento conceptual del lenguaje de metamodelado en que se expresa el metamodelo
  8. 8.  Arquitectura en 3 niveles  M1, M2, M3  MOF (Meta Object Facility)  Metamodelo estándar propuesto por OMG  Ejemplo: Metamodelo de UML  AMMA (ATLAS Model Management Architecture)  Plataforma adaptada a los principios de MDE  4 bloques: ATL, AMW, AM3 y ATP *Adaptado de [3] 8 Conceptos Básicos
  9. 9.  Arquitectura en 3 niveles  M1, M2, M3 9 Conceptos Básicos
  10. 10. 10 Conceptos Básicos  Proceso de Desarrollo MDE  Transformaciones entre modelos  Refinamiento de modelos  Bajar el nivel de abstracción  Refactorización  Ingeniería inversa  Transformación de datos entre orígenes heterogéneos  …  Conseguir suficiente detalle para generar código automáticamente  Sigue un patrón de transformación de modelos
  11. 11. 11 Conceptos Básicos Patrón de Transformación [1] conforme conforme conforme conforme conforme conforme conforme Metametamodelo Metamodelo A Metamodelo BMetamodelo T Modelo A Modelo BPrograma :M3 :M2 :M1
  12. 12. 12 Conceptos Básicos Patrón de Transformación [1] basado basado entrada ejecución salida Metametamodelo Metamodelo A Metamodelo BMetamodelo T Modelo A Modelo BPrograma proceso :M3 :M2 :M1
  13. 13. 13 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  14. 14. 14 ATLAS Transformation Language  Lenguaje de transformación de modelos  Metamodelo de ATL [2] define sintaxis abstracta  Transformación ATLmodelo  Inspirado en OCL 2.0  QVTUnits  QVTOperations  TransformationDescriptions  Context  Action  CreateInstance  PropertyOperation  AddTransientLink
  15. 15. 15 ATLAS Transformation Language  Lenguaje de transformación de modelos
  16. 16. 16 ATLAS Transformation Language  ATL se aplica a patrones de transformación  Permite  Especialización y composición de transformaciones  Transformaciones atómicas, secuenciales, pre y post condiciones,…  Un modelo A se transforma en un modelo B según una definición de transformación ATL  mma2mmb.atl  Conforme al metamodelo de ATL  Unidireccional
  17. 17. 17 ATLAS Transformation Language  ATL: Lenguaje híbrido basado en OCL 2.0  ATL declarativo:  Especifica transformaciones  Reglas que relacionan patrones de A y B  Parte derecha: conjunto de tipos de elementos de B  Oculta ordenación, disparo de reglas, trazabilidad,…
  18. 18. 18 ATLAS Transformation Language  ATL: Lenguaje híbrido basado en OCL 2.0  ATL imperativo:  Apoya a la parte declarativa  Cuando ésta no permite una solución completa  Algoritmos de transformación complejos  Inicialización correcta de elementos de B  Regla invocada: llamada a procedimiento  Bloque de acciones: asignaciones, bucles, condiciones
  19. 19. 19 ATLAS Transformation Language  Las transformaciones se agrupan en módulos  Cada módulo contiene:  Una cabecera con el nombre del módulo y los modelos de origen y destino tipados por sus metamodelos module NombreModulo; create OUT : MetamodeloSalida from IN : MetamodeloEntrada;  Una sección de importaciones library Libreria; -- en el fichero auxiliar uses Libreria; -- en el fichero del módulo  Un conjunto de ayudantes (helpers)  Un conjunto de reglas de transformación
  20. 20. 20 ATLAS Transformation Language  Ayudantes (helpers)  Especificados sobre un contexto OCL o sobre el metamodelo de entrada  Ayudante de operaciones  Define operaciones para un elemento del modelo o para un módulo  Admite parámetros y recursión  Ayudante de atributos  Asocia valores de solo lectura a elementos del modelo  No admite parámetros pero sí recursión  Ambos tienen nombre, contexto y tipo
  21. 21. 21 ATLAS Transformation Language  Ayudantes (helpers)  Especificados sobre un contexto OCL o sobre el metamodelo de entrada  Ayudante de operaciones  Define operaciones para un elemento del modelo o para un módulo  Admite parámetros y recursión  Ayudante de atributos  Asocia valores de solo lectura a elementos del modelo  No admite parámetros pero sí recursión  Ambos tienen nombre, contexto y tipo helper context String def: firstToLower() : String = self.substring(1, 1).toLower() + self.substring(2, self.size()); helper def: historico : Sequence(TupleType( e:TypeB!ElementB, s:String)) = Sequence{};
  22. 22. 22 ATLAS Transformation Language  Reglas de transformación  Expresan la lógica de la transformación  Declarativas (matched rules)  Patrón origen especifica tipos OCL y de metamodelo origen y condición de guarda  Patrón destino conjunto de elementos tipados y vinculaciones con su valor de inicialización  Al encajar un patrón origen se generan los patrones destino en la salida  Y un enlace de trazabilidad en la estructura interna del motor de transformación  Que se empleará para resolver inicializaciones
  23. 23. 23 ATLAS Transformation Language  Reglas de transformación  Expresan la lógica de la transformación  Declarativas (matched rules) rule RootA2RootB { from rtA : TypeA!RootA, rtBIN : TypeB!RootB to rtB : TypeB!RootB ( defs <- rtBIN.defs, elms <- rtA.elms ) } rule Definition { from s : TypeB!DefinitionB to t : TypeB!DefinitionB( name <- s.name ) }
  24. 24. 24 ATLAS Transformation Language  Reglas de transformación  Declarativas (tipos)  Standard: se aplican una vez para todas las veces que encaje un patrón origen  Lazy: las disparan otras reglas, se pueden aplicar varias veces cuando encaja un patrón  Unique lazy: las disparan otras reglas pero sólo se aplican una vez  Subreglas: heredan de una regla padre y se aplican a un subconjunto del patrón padre
  25. 25. 25 ATLAS Transformation Language  Reglas de transformación  Imperativas (called rules)  Procedimientos  do  Control de flujo  if-then-else  for  foreach  Condiciones de ejecución  entrypoint  endpoint
  26. 26. 26 ATLAS Transformation Language  Reglas de transformación  Imperativas (called rules) rule RootA2RootB { from rtA : TypeA!RootA to rtB : TypeB!RootB ( defs <- defBLst ), defBLst : distinct TypeB!DefinitionB foreach(defName in rtA.getDefNameSet ())( name <- defName ) }
  27. 27. 27 ATLAS Transformation Language  Reglas de transformación  Imperativas (called rules) rule NameToAssign (e : TypeB!ElementB, s : String) { do { thisModule.nameToAssignHistory <- thisModule.historico->append( Tuple {e = e, s = s}); } } rule Element { from s : TypeA!ElementA to t : TypeB!ElementB( ) do { thisModule.NameToAssign(t, s.name); } }
  28. 28. endpoint rule EndRule() { do { for(dta in thisModule.historico) { dta.e.definition <- TypeB!DefinitionB.allInstancesFrom('b')-> any(e | e.name = dta.s); } } } 28 ATLAS Transformation Language  Reglas de transformación  Imperativas (called rules)
  29. 29. 29 ATLAS Transformation Language  ATL Framework  Motor de transformaciones que opera a 7 niveles distintos de complejidad  Nivel 1: Formato serializable a formato serializable  Nivel 2: Transformaciones endógenas  Nivel 3: Transformaciones exógenas  Nivel 4: Metamodelos contenidos  Nivel 5: Metamodelos heredados  Nivel 6: Transformaciones generales  Nivel 7: Transformaciones especiales  Primera versión escrita en MIA (Model-In-Action), subsiguientes en ATL
  30. 30. 30 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  31. 31. 31 Herramientas ATL  ATL viene acompañado de un conjunto de herramientas ejecutables en Eclipse (ADT)  ATL engine  Máquina virtual que permite ejecutar código ATL  Basada en pila de instrucciones  Instrucciones para manejo de elementos  Instrucciones de control  Instrucciones de manejo de pila  Implementada primeramente en NetBeans/MDR  Ejecutable en Eclipse/EMF
  32. 32. 32 Herramientas ATL  ATL IDE [1]  Entorno de desarrollo para Eclipse que facilita la implementación de procesos de transformación  Incluye un editor con reconocimiento de sintaxis  Sincronizado con una vista del metamodelo instanciado  Incluye Wizard de creación de proyectos ATL  Y compilador ATL invocado automáticamente
  33. 33. 33 Herramientas ATL  ATL IDE [1]
  34. 34. 34 Herramientas ATL  Configurador de lanzamiento de ATL [1]  Permite indicar el modelo de entrada y de salida  Y los metamodelos asociados a cada uno  Permite especificar del ATL a ejecutar (ATL Configuration)  Se puede ejecutar en modo normal y debug  Permite ejecución paso a paso y breakpoints
  35. 35. 35 Herramientas ATL  Configurador de lanzamiento de ATL [1]
  36. 36. 36 Herramientas ATL  ATLAS Model Weaver (AMW) [3]  Permite vincular elementos de 2 o más (meta)modelos  Definiendo enlaces semánticos entre ellos  Los enlaces se basan en decisiones humanas  No se pueden autogenerar pero se pueden automatizar por medio de heurísticas  Este proceso implica un modelo WM conforme a WMM  El modelo origen se denomina Left Model y el destino se denomina Right Model
  37. 37. 37 Herramientas ATL  ATLAS Model Weaver (AMW) [3]
  38. 38. 38 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  39. 39. 39 Caso de Estudio  Transformación de Modelo de Clases a Modelo Relacional  Metamodelos asociados Metamodelo Relacional parcial [1] Metamodelo de Clases parcial [1]
  40. 40. 40 Caso de Estudio  Modelo de clases  Una clase tiene cero o más atributos  Una clase puede especializar otra clase  El tipo de un atributo es un tipo primitivo u otra clase  Modelo relacional  Una tabla tiene cero o más columnas  Algunas columnas son clave  Cada columna tiene un tipo primitivo
  41. 41. 41 Caso de Estudio  Módulo de transformación module Class2Relational; create OUT : Relational from IN : Class;  Importaciones uses strings;  Ayudantes  Tipos para las columnas ID suponiendo que esté definido como ‘Integer’ en el modelo origen helper def: objectIdtype : Relational!Type = Class!DataType.allInstances()->select( e | e.name = 'Integer')->first();
  42. 42. 42 Caso de Estudio  Reglas de transformación 1. Para cada clase se generará una tabla con el mismo nombre que la clase rule Class2Table { from c : Class!Class to out : Relational!Table ( name <- c.name, col <- Sequence {key}->union( c.attr->select(e | not e.multiValued)), key <- Set {key} ), key : Relational!Column ( name <- 'id', type <- thisModule.objectIdType ) }
  43. 43. 43 Caso de Estudio  Reglas de transformación 2. Para cada atributo de tipo primitivo se generará una columna en el modelo destino 3. Para cada tipo de dato se genera un tipo en destino rule DataTypeAttribute2Column { from a : Class!Attribute( a.type.oclIsKindOf(Class!DataType) ) to out : Relational!Column ( name <- a.name, type <- a.type ) } rule DataType2Type { from dt : Class!DataType to out : Relational!Type ( name <- dt.name ) }
  44. 44. 44 Caso de Estudio  Reglas de transformación 4. Para cada atributo de tipo clase se generará una columna de clave foránea en el modelo destino rule ClassAttribute2Column { from a : Class!Attribute( a.type.oclIsKindOf(Class!Class) and not a.multiValued ) to foreignKey : Relational!Column ( name <- a.name + 'Id', type <- thisModule.objectIdType ) }
  45. 45. 45 Índice de Contenidos  Introducción  Conceptos Básicos  ATLAS Transformation Language  Herramientas ATL  Caso de Estudio  Conclusiones
  46. 46. 46 Conclusiones  ATL es un lenguaje de transformación de modelos soportado por un conjunto de herramientas ejecutables en Eclipse  Estas herramientas ya permiten resolver problemas no triviales  Permite definir transformaciones declarativas e imperativas según el problema a tratar  Existe un conjunto de librerías open source disponibles en el proyecto M2M de Eclipse  El interés en ATL es creciente
  47. 47. 47 Conclusiones  En los últimos años han surgido varias propuestas de lenguajes de transformación  Muchas responden a la especificación QVT  ATL es aplicable a estos escenarios y a otros con artefactos de distintas tecnologías  Las herramientas ATL permiten realizar muchas tareas de transformación donde las herramientas QVT aún están sin madurar  ATL declarativo permite formalizar semánticas ATL aplicables a transformación de grafos
  48. 48. 48 Conclusiones Personales  Lenguaje poco complicado  Derivado del estándar OCL  Con potencia para implementar lógicas complejas (control de flujo)  Compilador y máquina virtual disponible  Herramientas implementadas en Eclipse  ¿Futuro estándar?
  49. 49. 49 Referencias 1. F. Jouault, F. Allilaire, J. Bézivin, I. Kurtev, “ATL: A model transformation tool” Science of Computer Programming 72 (2008) 31–39. 2. J. Bézivin, E. Breton, G. Dupé, P. Valduriez, “The ATL Transformation-based Model Management Framework”. IRIN Université de Nantes, Nº03.08, September 2003. 3. J. Bézivin, F. Jouault, D. Touzet, “An introduction to the ATLAS Model Management Architecture” Laboratoire D’informatique de Nantes-Atlantique, Nº05.01, February 2006. 4. http://www.eclipse.org/m2m/atl/atlTransformations/
  50. 50. 50 Muchas Gracias Óliver Centeno Álvarez Arquitecturas Dirigidas por Modelos Master en Ciencia y Tecnología Informática Curso 2008/09 (Universidad Carlos III Madrid)

×