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
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
3. 3
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
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
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
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
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. 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
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
Conceptos Básicos
Patrón de Transformación [1]
conforme
conforme conforme conforme
conforme conforme conforme
Metametamodelo
Metamodelo A Metamodelo B
Metamodelo T
Modelo A Modelo B
Programa
:M3
:M2
:M1
12. 12
Conceptos Básicos
Patrón de Transformación [1]
basado basado
entrada ejecución salida
Metametamodelo
Metamodelo A Metamodelo B
Metamodelo T
Modelo A Modelo B
Programa
proceso
:M3
:M2
:M1
13. 13
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
14. 14
ATLAS Transformation Language
Lenguaje de transformación de modelos
Metamodelo de ATL [2] define sintaxis abstracta
Transformación ATLmodelo
Inspirado en OCL 2.0
QVTUnits
QVTOperations
TransformationDescriptions
Context
Action
CreateInstance
PropertyOperation
AddTransientLink
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
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
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
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
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
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
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
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
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
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
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
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. 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
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
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
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
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
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
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
38. 38
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
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
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
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
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
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
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
Índice de Contenidos
Introducción
Conceptos Básicos
ATLAS Transformation Language
Herramientas ATL
Caso de Estudio
Conclusiones
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
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
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
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
Muchas Gracias
Óliver Centeno Álvarez
Arquitecturas Dirigidas por Modelos
Master en Ciencia y Tecnología Informática
Curso 2008/09 (Universidad Carlos III Madrid)