SlideShare una empresa de Scribd logo
1 de 50
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
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
3
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
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
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
 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
 Arquitectura en 3 niveles
 M1, M2, M3
9
Conceptos Básicos
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
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
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
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
ATLAS Transformation Language
 Lenguaje de transformación de modelos
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
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
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
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
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
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
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
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
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
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
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
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);
}
}
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
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
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
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
Herramientas ATL
 ATL IDE [1]
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
Herramientas ATL
 Configurador de lanzamiento de ATL [1]
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
Herramientas ATL
 ATLAS Model Weaver (AMW) [3]
38
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
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
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
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
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
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
Índice de Contenidos
 Introducción
 Conceptos Básicos
 ATLAS Transformation Language
 Herramientas ATL
 Caso de Estudio
 Conclusiones
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
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
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
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
Muchas Gracias
Óliver Centeno Álvarez
Arquitecturas Dirigidas por Modelos
Master en Ciencia y Tecnología Informática
Curso 2008/09 (Universidad Carlos III Madrid)

Más contenido relacionado

Destacado

Transformation M2M avec ATL
Transformation M2M avec ATL Transformation M2M avec ATL
Transformation M2M avec ATL Halima Bouabdelli
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Amira Hakim
 
Buscadores
BuscadoresBuscadores
Buscadoressysdatec
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)Oliver Centeno
 
Microsoft Test Manager 2010
Microsoft Test Manager 2010Microsoft Test Manager 2010
Microsoft Test Manager 2010Oliver Centeno
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Oliver Centeno
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Oliver Centeno
 
ATL tutorial - EclipseCon 2009
ATL tutorial - EclipseCon 2009 ATL tutorial - EclipseCon 2009
ATL tutorial - EclipseCon 2009 William Piers
 

Destacado (20)

Transformation M2M avec ATL
Transformation M2M avec ATL Transformation M2M avec ATL
Transformation M2M avec ATL
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
 
Buscadores
BuscadoresBuscadores
Buscadores
 
Joomla!
Joomla!Joomla!
Joomla!
 
Java en Tiempo Real
Java en Tiempo RealJava en Tiempo Real
Java en Tiempo Real
 
XML Básico
XML BásicoXML Básico
XML Básico
 
My SQL
My SQLMy SQL
My SQL
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Microsoft Test Manager 2010
Microsoft Test Manager 2010Microsoft Test Manager 2010
Microsoft Test Manager 2010
 
Azure
AzureAzure
Azure
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
Liferay
LiferayLiferay
Liferay
 
Herramientas Java
Herramientas JavaHerramientas Java
Herramientas Java
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
TFS 10
TFS 10TFS 10
TFS 10
 
Métrica v3 y RUP
Métrica v3 y RUPMétrica v3 y RUP
Métrica v3 y RUP
 
ATL tutorial - EclipseCon 2009
ATL tutorial - EclipseCon 2009 ATL tutorial - EclipseCon 2009
ATL tutorial - EclipseCon 2009
 

Similar a ATL

Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Ricardo Tesoriero
 
Lenguajes para definir transformaciones
Lenguajes para definir transformacionesLenguajes para definir transformaciones
Lenguajes para definir transformacionesLuis Alberto Perdomo
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosJordi Cabot
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmaticaJose Gallardo
 
Modelado de sistemas software
Modelado de sistemas softwareModelado de sistemas software
Modelado de sistemas softwareJavier Ramírez
 
D5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionD5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionEllyster
 
Fundamentos deprogramacion
Fundamentos deprogramacionFundamentos deprogramacion
Fundamentos deprogramacionKevin Reaño
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De Programacionyave
 
Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Hector Gomez
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionFélix Prada Silva
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NETV Sanchez
 
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...Pablo Gómez Abajo
 
Jisbd2012 jimenezbollativaramarcos
Jisbd2012 jimenezbollativaramarcosJisbd2012 jimenezbollativaramarcos
Jisbd2012 jimenezbollativaramarcosAna Diaz
 

Similar a ATL (20)

Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)
 
Lenguajes para definir transformaciones
Lenguajes para definir transformacionesLenguajes para definir transformaciones
Lenguajes para definir transformaciones
 
PhD defense presentation
PhD defense presentationPhD defense presentation
PhD defense presentation
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulos
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Trabajo de estructura de datos
Trabajo de estructura de datosTrabajo de estructura de datos
Trabajo de estructura de datos
 
Trabajo de estructura de datos
Trabajo de estructura de datosTrabajo de estructura de datos
Trabajo de estructura de datos
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Modelado de sistemas software
Modelado de sistemas softwareModelado de sistemas software
Modelado de sistemas software
 
D5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionD5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacion
 
Fundamentos deprogramacion
Fundamentos deprogramacionFundamentos deprogramacion
Fundamentos deprogramacion
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De Programacion
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De Programacion
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
 
Unidad i poo avanzada
Unidad i   poo avanzadaUnidad i   poo avanzada
Unidad i poo avanzada
 
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing...
 
Jisbd2012 jimenezbollativaramarcos
Jisbd2012 jimenezbollativaramarcosJisbd2012 jimenezbollativaramarcos
Jisbd2012 jimenezbollativaramarcos
 

Más de Oliver Centeno

Más de Oliver Centeno (9)

Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Web services y java
Web services y javaWeb services y java
Web services y java
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
Enterprise Library 5
Enterprise Library 5Enterprise Library 5
Enterprise Library 5
 
MSS 2010
MSS 2010MSS 2010
MSS 2010
 
PMP, Project Management Professional
PMP, Project Management ProfessionalPMP, Project Management Professional
PMP, Project Management Professional
 
Hibernate
HibernateHibernate
Hibernate
 
OSGi
OSGiOSGi
OSGi
 

Último

Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Festibity
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 

Último (14)

Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 

ATL

  • 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
  • 9.  Arquitectura en 3 niveles  M1, M2, M3 9 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 ATLmodelo  Inspirado en OCL 2.0  QVTUnits  QVTOperations  TransformationDescriptions  Context  Action  CreateInstance  PropertyOperation  AddTransientLink
  • 15. 15 ATLAS Transformation Language  Lenguaje de transformación de modelos
  • 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
  • 35. 35 Herramientas ATL  Configurador de lanzamiento de ATL [1]
  • 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 Herramientas ATL  ATLAS Model Weaver (AMW) [3]
  • 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)