36
1 ATL: ATLAS Transformation Language MISO - Uniandes

ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

Embed Size (px)

Citation preview

Page 1: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

1

ATL: ATLAS Transformation

Language

MISO - Uniandes

Page 2: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

2

“Models are first class

entities”

“Transformations are

models”

“Transformations are

assets”

Page 3: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

3

What is ATL?

ATL is a model transformation language

(MTL) developed at INRIA to answer the QVT

Request For Proposal.

It is specified both as a metamodel and as a

textual concrete syntax.

It is a hybrid of declarative and imperative.

Page 4: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

4

What is ATL?

In declarative style:

simple mappings can be expressed simply.

Imperative constructs:

are provided to express more complex mappings

Page 5: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

5

What is ATL?

An ATL transformation program is composed

of rules that define:

how source model elements are matched and

navigated

how to create and initialize the elements of the

target models.

Page 6: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

6

ATL and Ecore

Page 7: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

7

Input MM

Input M

Output MM

ATL Engine

ATL Transformation rules

Output M’

XMI

XMI

Page 8: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

8

Example

UML MM

UML M

JAVA MM

ATL Engine

module UML2Java

M Java

XMI

module UML2JAVA;

create OUT : JAVA from IN : UML ;

XMI

.atl

Page 9: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

9

Structure of an ATL transformation

An ATL module corresponds to a model to model transformation.

Elements: A header section:

defines attributes that are relative to the transformation module;

An optional import section: enables to import some existing ATL libraries

A set of helpers: can be viewed as an ATL equivalent to Java methods

A set of rules: defines the way target models are generated from source

ones.

Page 10: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

10

ATL modules

They are the files that contain the

transformations

.atl extension

Consist of:

Header (mandatory)

Import

Helpers

Rules

Page 11: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

11

Import

This section is optional

Defines the ATL libraries to be imported

Example:

uses strings;

Page 12: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

12

Header

The target models declaration is introduced by the create keyword

the source models are introduced either by the keyword from (in normal mode) or refines (in case of refining transformation)

module module_name;

create output_models

[from|refines] input_models;

module Book2Publication; ;

create OUT : Publication

from IN: Book;

output Metamodel

input Metamodel

Page 13: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

13

Helpers

They are variables or functions used to implement

code that can be reused

helper def: objectIdType : Relational!Type =

Class!DataType.allInstances()->

select(e | e.name = 'Integer')->first();

Using a variable:

type <- thisModule.objectIdType;

Page 14: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

14

Helpers

Using a function:

helper context Book!Book def : getAuthors() : String =

self.chapters->collect(e | e.author)

->asSet()->

iterate(authorName; acc : String = '' |

acc +

if acc = ''

then authorName

else ' and ' + authorName

endif);

b.getAuthors()

Calling the function:

Page 15: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

15

Transformation Rules

three different kinds of rules:

matched rules (declarative programming)

called rules (imperative programming).

Lazy rules (?)

Page 16: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

16

Matched Rules

rule DataType2Type {

from

dt : Class!DataType

to

out : Relational!Type (

name <- dt.name

)

}

Page 17: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

17

Matched Rules

rule DataType2Type {

from

dt : Class!DataType

to

out : Relational!Type (

name <- dt.name

)

}

Input Metamodel

Output Metamodel

Page 18: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

18

Matched Rules

We need:

To access any element of the input model

To create elements of the output model from

information of the elements of the input model

The access to the elements is done using

The OCL: Object Constraint language

Page 19: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

19

Matched Rules: Input

The input pattern consists of:

the keyword from,

the declaration of an input variable

an OCL expression that returns the input element

to be transformed

from

dt : Class!DataType

Page 20: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

20

Matched Rules: Input (cont.)

A filter is an OCL expression that restraints

the elements of the input model to those that

satisfy a set of constraints

Example:

Refer to the instances of the Parameter element

in the UML Metamodel, where its kind is

different from the value #pdk_eturn:

e : UML!Parameter (e.kind <> #pdk_return)

Page 21: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

21

Matched Rules: Output

The output pattern declares:

on which output elements of the output model, the

input elements matching the input pattern will be

transformed

The implementation of the output pattern

declares the details of the transformation

It is possible to have more than one element in

the output pattern

Page 22: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

22

Matched Rules: Output (cont.)

Declares a variable and a sequence of

assignment statements.

to

out : Relational!Type (

name <- dt.name

)

Building and instance of the element Type of the output model

The name attribute of the new element will have as value the

value of the name attribute of the element referenced by the variable dt

Page 23: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

23

Called Rules

They are a particular type of helpers

They have to be explicitly called to be executed

They can accept parameters.

They can generate target model elements as matched rules do.

A called rule has to be called from an imperative code section, either from a match rule or another called rule.

Page 24: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

24

Called Rules

• Generates Person target model elements. • Accepts two parameters that correspond to the name and the

surname of the Person • The target pattern allocates a Person class each time the rule is

called, and initializes the name attribute of the allocated model element.

• The imperative code section is executed after the initialization of the allocated element

rule NewPerson (na: String, s_na: String) {

to

p : MMPerson!Person (

name <- na

)

do {

p.surname <- s_na

}

}

Page 25: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

25

Tranformation examples

1. ATL to Problem

2. Ant to Maven

3. BibTeXML to DocBook

4. Book to Publication

5. Class to Relational

6. Geometrical transformations Grafcet to PetriNet

7. Java to Table

8. KM3 to DOT

9. KM3 to Metrics

10. KM3 to Problem

11. Make to Ant

12. Maven to Ant

13. Microsoft Office Excel Extractor

14. Microsoft Office Excel Injector

16. Microsoft Office Excel to Software

17. Quality Control

18. Monitor to Semaphore

19. PathExp to PetriNet

20. Software Quality Control to Bugzilla

21. Software Quality Control to Mantis Bug Tracker

22. Table to Microsoft Office Excel

23. UML to Amble

24. UML to Java

25. UML to MOF

26. UML Activity Diagram to MSProject

27. UMLDI to SVG

28. XSLT to XQuery

Page 26: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

26

UML2Java

Page 27: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

27

UML MM expressed using MOF XMI

<Model:Class xmi.id = 'a9' name = 'JavaElement' annotation = ''

isRoot = 'false'

isLeaf = 'false' isAbstract = 'true' visibility = 'public_vis'

isSingleton = 'false'>

<Model:Namespace.contents>

<Model:Attribute xmi.id = 'a10' name = 'name' annotation = ''

scope = 'instance_level'

visibility = 'public_vis' isChangeable = 'true'

isDerived = 'false'>

<Model:StructuralFeature.multiplicity>

<XMI.field>1</XMI.field>

<XMI.field>1</XMI.field>

<XMI.field>true</XMI.field>

<XMI.field>true</XMI.field>

</Model:StructuralFeature.multiplicity>

<Model:TypedElement.type>

<Model:PrimitiveType xmi.idref = 'a6'/>

</Model:TypedElement.type>

</Model:Attribute>

</Model:Namespace.contents>

</Model:Class>

Page 28: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

28

Page 29: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

29

<UML:Package xmi.id = 'sm$8809ce:fb81b88162:-7fe2'

name = 'view' visibility = 'public'

isSpecification = 'false' isRoot = 'false'

isLeaf = 'false' isAbstract = 'false'>

<UML:Namespace.ownedElement>

<UML:Class xmi.id = 'sm$ec9b3a:fb81dfe2ed:-7ff7'

name = 'BoundedIntegerView'

visibility = 'public' isSpecification = 'false'

isRoot = 'false' isLeaf = 'false'

isAbstract = 'false' isActive = 'false'>

<UML:Classifier.feature>

<UML:Attribute xmi.id = 'sm$ec9b3a:fb81dfe2ed:-7fca'

name = 'value' visibility = 'public'

isSpecification = 'false'

ownerScope = 'instance'

changeability = 'changeable'>

……

UML model in XMI

Page 30: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

30

UML2Java: Transformation rules

1. For each Package element of UML MM

create an element Package of Java MM

The names have to be the same in the java

case the name have be extended

rule P2P {

from e: UML!PAckage (e.oclIsTypeOf (UML!Package))

to out : JAVA!Package (

name <- e.getExtendedName()

)

}

Page 31: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

31

UML2Java: Transformation rules

2. For each Operation element of UML MM

create an Method element of Java MM names, types, modifiers have to be the same

Page 32: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

32

UML2Java: Transformation rules

rule O2M {

from e : UML!Operation

to out : JAVA!Method ( name <- e.name,

isStatic <- e.isStatic(),

isPublic <- e.isPublic(),

owner <- e.owner,

type <-

e.parameter->

select(x|x.kind= #pdk_return)->asSequence()->first().type,

parameters <-

e.parameter->select(x|x.kind<>

#pdk_return)->asSequence()

)

}

Page 33: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

33

Transformation Engine

Implemented in Java

Can use EMF or MDR as model repository

Input/output models and metamodelos are

managed by the underlying model repository

ATL has a proprietary repository to load the

model transformations.

Page 34: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

34

ATL Eclipse Plug-in

There is a complete ATL perspective in

Eclipse

Also a perspective to Debug ATL

transformations

There are:

an ATL editor

an Ouline view to review the current elements

Page 35: ATL: ATLAS Transformation Language - Profesoresmiso4202/... · 2014-03-26 · ATL is a model transformation language ... code that can be reused ... Tranformation examples 1. ATL

35

ATL Eclipse Plug-in