Linguagens de Transformação de Modelos

26
Linguagens de Transformação de Modelos Denivaldo LOPES São Luís – MA 2006 Universidade Federal do Maranhão 2 Sumário Problemática Motivação Modelos e Linguagens de Modelagem MDA - Arquitetura Dirigida por Modelos Transformação de modelos MOF RFP Q/V/T Linguagem ATL Linguagem YATL Comparativo entre ATL, YATL e BOTL Exemplos com ATL Conclusões

Transcript of Linguagens de Transformação de Modelos

Page 1: Linguagens de Transformação de Modelos

Linguagens de Transformação de Modelos

Denivaldo LOPES

São Luís – MA

2006

Universidade Federal do Maranhão

2

Sumário

ProblemáticaMotivaçãoModelos e Linguagens de ModelagemMDA - Arquitetura Dirigida por ModelosTransformação de modelos

MOF RFP Q/V/TLinguagem ATLLinguagem YATLComparativo entre ATL, YATL e BOTLExemplos com ATL

Conclusões

Page 2: Linguagens de Transformação de Modelos

3

Problemática

Os sistemas de software estão cada vez mais complexos.

Fatores geradores da complexidade:Novos requisitos e evolução das tecnologias.

Característica distribuída dos novos sistemas.

A evolução e as velhas tecnologias.

Uma mesma versão de sistema de software para várias plataformas heterogêneas.

4

Problemática

Como assegurar?

Desenvolvimento de software;

Manutenção de software;

Evolução de software.

Page 3: Linguagens de Transformação de Modelos

5

Motivação

No passado, a complexidade no desenvolvimento, manutenção e evolução de software foram resolvidos através da abstração.

Abstração significa considerar somente os aspectos relevantes para a solução do problema, desconsiderando-se detalhes não pertinentes.

Advento de montadores e compiladores.

6

MotivaçãoCompiladores

Código de Máquina 0110101010

Mnemônicos MOV A,B

Linguagem de alto nível x=y

Montadores

Compiladores

010101

#?!

Page 4: Linguagens de Transformação de Modelos

7

Solução

Código de Máquina 0110101010

Mnemônicos MOV A,B

Linguagem de alto nível x=y

Montador

Compilador

Modelos

Motor de transformaçãoO elo

perdido?

passado

presenteLinguagem de transformação

Linguagem de modelagem

8

Modelos e Linguagens de Modelagem

Considerações sobre modelo:

Diferentes pontos de vista de um mesmo modelo.

Page 5: Linguagens de Transformação de Modelos

9

Modelos e Linguagens de Modelagem

O que é um modelo?Algo que é proposto a imitação de outra.

É uma abstração de um sistema físico que distingue o que é pertinente do que não é.

Um modelo contém todos os elementos necessários a representação de um sistema real.

Uma simplificação de um sistema criado com um objetivo específico.

10

Considerações sobre modelo:Um modelo é criado em um contexto com um objetivo específico.

Um modelo não é uma descrição completade um sistema físico, mas permite a elaboração de raciocínios sobre o sistema em estudo em um contexto limitado.

Os modelos permitem simular os sistemas físicos antes de sua construção.

Modelos e Linguagens de Modelagem

Page 6: Linguagens de Transformação de Modelos

11

Linguagem de modelagem

É uma especificação formal bem definida que contém os elementos de base para construir modelos.

UML (Unified Modeling Language)

EDOC (Enterprise Distributed Object Computing)

UEML (Unified Enterprise Modeling Language)

Modelos e Linguagens de Modelagem

12

UML

HotelService

Hotel

CarHire

Bank

AirLinesTravel Agency

TravelService

AirLinesService

RentingCarService

BankService

Customer

Page 7: Linguagens de Transformação de Modelos

13

UML

bank

+makePayment(payInf:PayInf):AckPayServiceBank

customer

+findTravel(travelReq:TravelReq):TravelList+reserveTravel(travelInf:TravelInf):Reserv+payTravel(payInf:PayInf):AckPay+cancelTravel(reservInf:Reserv):AckCancel

Customer

travelagency

+findTravel(travelReq:TravelReq):TravelList+reserveTravel(travelInf:TravelInf):Reserv+payTravel(payInf:PayInf):AckPay+cancelTravel(reservInf:Reserv):AckCancel

ServiceTravelAg

airlines

+findFlight(flyReq:FlyReq):FlyList+reserveFlight(flySel:FlyInf):Reserv+payFlight(payInf:PayInf):AckPay+cancelFlight(reservInf:Reserv):AckCancel

ServiceAirLines

carhire

+findCar(carReq:CarReq):CarList+reserveCar(carSel:CarInf):Reserv+payCar(payInf:PayInf):AckPay+cancelCar(reservInf:Reserv):AckCancel

ServiceCarHire

hotel

+findRoom(roomReq:RoomReq):RoomList+reserveRoom(roomSel:RoomInf):Reserv+payRoom(payInf:PayInf):AckPay+cancelRoom(reservInf:Reserv):AckCancel

ServiceHotel

+travelServ

+bankServ

+airlinesServ

+carhireServ

+hotelServ

+bankServ+bankServ+bankServ

14

MDA –Arquitetura Dirigida por Modelos

Visão sobre MDA:Modelos

UML, MOF, XMI,...

Metadata (CWM)

Transformação PIM -> PSM -> Plataforma

MiddlewareCORBA, Web Services, Ent. Beans, ...

Page 8: Linguagens de Transformação de Modelos

15

MOF

transformation language

transformation rules

transformationengine

targetmodel

sourcemodel

targetmetamodel

sourcemetamodel

conformsTo

from toexec

source target

conformsTo conformsTo

conformsToconformsTo

conformsTo

PIM PSM

MDA – Arquitetura Dirigida por Modelos

16

MDA – Arquitetura Dirigida por Modelos

The MOF MMM

The UPM MM The UML MM The CWM MM

A UML modelm1

A UML modelm2

A particularuse of m1

Another use ofm1

self-described

conformsToconformsToconformsTo

conformsTo conformsTo

conformsToconformsTo

Leve

lM3

Leve

lM2

Leve

lM1

Leve

lM0

MMM : metametamodel MM : metamodel m : model

Page 9: Linguagens de Transformação de Modelos

17

Linguagem de metamodelagem: MOF

MDA – Arquitetura Dirigida por Modelos

18

MDA – Arquitetura Dirigida por Modelos

Linguagem de metamodelagem: Ecore

Page 10: Linguagens de Transformação de Modelos

19

MDA – Arquitetura Dirigida por ModelosXMI (XML Metadata Interchange)

<?xml version = '1.0' encoding = 'UTF-8' ?><XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' ***><XMI.content>

<UML:Model xmi.id = 'a1' name = 'model 1' ***>***

<UML:Class xmi.id = 'a4' name = 'Polygon' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>

</UML:Class><UML:Class xmi.id = 'a6' name = 'Point' visibility = 'public'

isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>***<UML:Classifier.feature>

<UML:Attribute xmi.id = 'a8' name = 'x' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'>

***</UML:Attribute><UML:Attribute xmi.id = 'a12' name = 'y' visibility = 'public'

isSpecification = 'false' ownerScope = 'instance'>***

</UML:Attribute></UML:Classifier.feature>

</UML:Class><UML:Association xmi.id = 'a15' name = 'Contains'

isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>***

</UML:Association>***

</XMI.content></XMI>

Polygon

+x:int+y:int

Point

+vertex

3..*Contains

20

Uma ferramenta conforme MDA: CASE versão 2.0

Requisitos de uma ferramenta MDA:Preserva a lógica do negócio (PIM) independentemente da plataforma alvo (PSM, código, ...).

Implementa mapeamentos de MOF para plataformas (import/export).

Exemplo: JMI (mapeamento de MOF em Java)

Usa MOF/XMI internamente.

Implementa algumas formas de QVT.

Linguagem de transformação.

Segue outros padrões: UML, EDOC, CWM, ...

Page 11: Linguagens de Transformação de Modelos

21

Uma ferramenta conforme MDA: CASE versão 2.0

Ferramentas existentes:ATL (ATLAS Transformation Language) is language for general transformation within the MDA framework.

MIA Model-in-Action is a tool that implements the concepts of MDA.

OptimalJ is a MDA tool for J2EE.

MTL Model transformation at Inria ModelWare.

AndroMDA is an open source code generation framework that follows the model driven architecture (MDA) paradigm.

JAMDA (Java Model Driven Architecture) is an open-source framework for building applications generators which create

Java code from a model of the business domain.

22

RFP MOF QVT

Em 2002, a OMG fez uma chamada para propostas de uma linguagem de transformação.

Resultou em várias linguagens de transformação criadas por universidades e/ou empresas.

Oito propostas foram submetidas em resposta ao RFP MOF QVT.

Uma especificação adotada (ptc/05-11-01).

Page 12: Linguagens de Transformação de Modelos

23

Linguagem de transformação de modelos

Definição:É uma linguagem que define operacionalmente a transformação de um modelo fonte em um modelo alvo.

Uma linguagem de transformação manipula elementos de modelos, considerando os metamodelos utilizados na construção dos mesmos.

24

Linguagem de transformação de modelos

Taxonomia:

Model Transformation

Rule Application Scoping

Transformation Rules

Source-Target Relationship

Rule Application Strategy

Rule Scheduling

Rule organization

Tracing

Directionality

mandatoryoptional

Fonte: K. CZARNECKI et S. HELSEN. Classification of Model Transformation Approaches. Proceedings of the 2nd OOPSLA’03 Workshop on GTCM, 2003.

Page 13: Linguagens de Transformação de Modelos

25

Linguagem de transformação de modelos

Exemplos de linguagens:

ATL (Atlas Transformation Language)*

YATL (Yet Another Transformation Language)#

BOTL (Basic Object-oriented Transformation Language )§

*Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT et al., First Experiments with the ATL ModelTransformation Language: Transforming XSLT into XQuery, Workhop on Generative Techniques in the context of MDA, 2003.

# Octavian PATRASCOIU. Model Transformations in YATL. Studies and Experiments – Reference Manual Version 1.0. Rapport technique 3-04, March 2004.

§ Peter BRAUN et Frank MARSCHALL. BOTL The Bidirectional Object Oriented Transformation Language, TUM-INFO-05-I0307-0/1.-FI. Institut fur Informatik, Technische Universitat Munchen, May 2003.

26

Linguagem ATL

ATL é uma linguagem para a realização de transformação de modelos em geral no contexto de MDA.

Linguagem desenvolvida por F. Jouault e J. Bézivin na Universidade de Nantes - França.

O compilador e o motor de transformação de modelos para ATL pode ser obtido:

http://www.sciences.univ-nantes.fr/lina/atl/atldemo/

Page 14: Linguagens de Transformação de Modelos

27

Linguagem ATL

Principais características:Baseada em OCL.

Relacional.

Linguagem híbrida: declarativa e imperativa.

Motor e interpretador escritos em Java.

Modularidade e bibliotecas.

Utiliza repositórios: MOF -> MDR

Ecore -> EMF

28

Linguagem ATL

Sintaxe abstrata de ATL.

Fonte: *Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT et al., FirstExperiments with the ATL Model Transformation Language: Transforming XSLT into XQuery, Workhop on Generative Techniques in the context of MDA, 2003.

Page 15: Linguagens de Transformação de Modelos

29

Linguagem ATL

Padrões de elementos (Sintaxe abstrata).

Fonte: *Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT et al., FirstExperiments with the ATL Model Transformation Language: Transforming XSLT into XQuery, Workhop on Generative Techniques in the context of MDA, 2003.

30

Linguagem ATL

A parte declarativa de ATL:

As construções declarativas são constituídas

de:

InPattern representada pela palavra-chave form.

outPattern representada pela palavra-chave to.

Um conjunto de ligações (bindings) representadas

pelo símbolo <-.

Page 16: Linguagens de Transformação de Modelos

31

Linguagem ATL

Uma regra de transformação declarativa em ATL

module UML2Java ;create OUT : Java from IN :UML ;

rule Class2JClass{from uclass : UML!Classto

jclass : Java!JClass(uclass.name <- jclass.name

)}

32

Linguagem ATL

A parte imperativa de ATL:Declarações condicionais:if ... then ... else ... endif à la OCL.

if (condition) {-- statement 1

}else if (condition 2){

-- statement 2

}else{

-- statement 3

}

Page 17: Linguagens de Transformação de Modelos

33

Linguagem ATLDeclarações condicionais:

switch (expression){case expression 1:--statement 1

break;case expression 2:--statement 2

break;default:--statement 3

break;}

34

Linguagem ATL

Declarações de loop:while (condition) {-- statement}

do{–statement}while(condition);

foreach element in collection{--statement

}

Page 18: Linguagens de Transformação de Modelos

35

Linguagem ATL

Helpers (funções)

module UML2Java ;create OUT : Java from IN :UML ;

helper existsAttributes (s:Sequence(UML!Attribute)):Integer= if s-> size()>0 then 1 else 0 endif;

rule Class2JClass{from c: UML!Classto jclass:Java!JClass(

jclass.name <- c.name;[…] if (existsAttributes(c.getFeature()) then

--statement1else

--statement 2endif;

)}

36

Linguagem YATL

YATL é uma linguagem de transformação desenvolvida para KMF (Kent Modelling Framework).

Linguagem desenvolvida por OctavianPATRASCOIU na Universidade de Kent –Reino Unido.

Page 19: Linguagens de Transformação de Modelos

37

Linguagem YATL

Principais características:Baseada em OCL;

Processo de transformação determinístico;

Linguagem híbrida;

Modularidade com namespace;

Compilador e interpretador implementados em Java.

38

Linguagem YATL

Fonte: # Octavian PATRASCOIU. ModelTransformations in YATL. Studies andExperiments – Reference Manual Version1.0. Rapport technique 3-04, March 2004.

Page 20: Linguagens de Transformação de Modelos

39

Linguagem YATL

Parte declarativa: usa expressões OCL.

Parte imperativa:Declaração de variável:

let varName : oclType = oclExpression ;

Declaração de atribuição:oclExpression1 := oclExpression2 ;

Instruções de instanciação: new e delete.varName := new pathname ;

delete oclExpression ;

40

Linguagem YATL

Parte declarativa: usa expressões OCL.

Parte imperativa:Declaração condicional:

if condition then statement else statement endif

Declaração de loop:while ...do, do...until et foreach...in ...do

Declaração nativa:native {

code for the host platform (Java, C#, etc.) }

Page 21: Linguagens de Transformação de Modelos

41

Linguagem ATL

Exemplo de programa em YATL

start kmf::uml2java::main;namespace kmf(uml, javaModel) {transformation uml2java { -- 1-1 Mappings -- Map a UML class to a Java classrule umlClass2JavaClass match uml::Foundation::Core::Class () {

let jClass: javaModel::JavaClass; jClass := new javaModel::JavaClass; jClass.name := self.name.body_;track(self, class2class, jClass);

}

42

Comparativo entre ATL, YATL e BOTL

não, unicamente declarativa

simSimHybrid-based

nãonãonãoStructure-based

parcialmenteNãoNãoGraph-transformation-based

simsimsimRelational

nãoPossibilidade com native

nãoDirect-manipulation

bidirectionalunidirecionalunidirecionalDirectionality

indiretamentesimindiretamenteTracing (Traceability)

nenhumamodularidademodularidadeRule organization

Não determinista

deterministadeterministaRule Application Strategy

modelos distintos

modelos distintos

modelos distintos- Source-TargetRelationship

bidirecionalunidirecionalnão explicitamente- Bidirectionality

sintaxe idênticasintaxe idênticasintaxe idêntica- LHS/RHS Syntatic Separation

Distinção entre LHS e RHS

Distinção entre LHS e RHS

Distinção entre LHS etRHS

transformation rule

BOTLYATLATLCaracterísticas

Page 22: Linguagens de Transformação de Modelos

43

Modelo UML

Exemplos com ATLTransformação de um modelo UML em um modelo Concept

Processo de Transformação

Modelo Concept

Metamodelo UML

Metamodelo Concept

Conforme à

Conforme à

Código Concept

Gramática EBNF de Concept

Conforme à

Transformação modelo-à-modelo

Transformação modelo-à-código

44

Metamodelo UML

Exemplos com ATLTransformação de um modelo UML em um modelo Concept

+name : StringElement

+visibility : VisConcept

+value : String+type : String

Property

+concept1

+property*

+cp_public : int+cp_private : int

Vis

<<enumeration>>

Metamodelo Concept

Page 23: Linguagens de Transformação de Modelos

45

module UML2METACON;create OUT:METACON from IN:UML;

rule Class2Concept{from class: UML!Classto concept: METACON!Concept(

name <- class.name,visibility <- if class.visibility = #vk_public then #cp_public

else #cp_private endif)}

rule Attrib2Property{from attr: UML!Attributeto prop : METACON!Property(

name <- attr.name,concept <- attr.owner)

}

Exemplos com ATLTransformação de um modelo UML em um modelo Concept

46

<?xml version = '1.0' encoding = 'ISO-8859-1' ?><XMI xmi.version = '1.2' timestamp = 'Tue Feb 10 15:17:53 GMT-03:00

2004'><XMI.header>***</XMI.header><XMI.content>

<METACON.Concept xmi.id = 'a1' name = 'String' visibility = 'cp_public'/><METACON.Concept xmi.id = 'a2' name = 'A' visibility = 'cp_public'>

<METACON.Concept.property><METACON.Property xmi.id = 'a3' name = 'attr1'/>

</METACON.Concept.property></METACON.Concept>

</XMI.content></XMI>

Exemplos com ATLTransformação de um modelo UML em um modelo Concept: PSM

Page 24: Linguagens de Transformação de Modelos

47

library x_ConceptToCode;

helper context METACON!Concept def: toString() : String ='public Concept '+ self.name + '{'+ '\n' +'\t property' +'}';

Exemplos com ATLTransformação de um modelo UML em um modelo Concept

query Concept2Code_query = METACON!Concept.allInstances()->collect(x | x.toString().writeTo('C:/Exemplo/' + x.name.replaceAll('.', '/') +

'/' + x.name + '.cpt'));

uses x_ConceptToCode;

48

public Concept A{property attr1:String

}

Exemplos com ATLTransformação de um modelo UML em um modelo Concept

Modelo UML

Modelo Concept

Código Concept

<?xml version = '1.0' encoding = 'ISO-8859-1' ?><XMI xmi.version = '1.2' timestamp = 'Tue Feb 10 15:17:53 GMT-03:00 2004'><XMI.header>***</XMI.header><XMI.content><METACON.Concept xmi.id = 'a1' name = 'String' visibility =

'cp_public'/><METACON.Concept xmi.id = 'a2' name = 'A' visibility =

'cp_public'><METACON.Concept.property>

<METACON.Property xmi.id = 'a3' name = 'attr1'/></METACON.Concept.property>

</METACON.Concept></XMI.content>

</XMI>

Transformação modelo-à-modelo

Transformação modelo-à-código

Page 25: Linguagens de Transformação de Modelos

49

Conclusões

As linguagens de transformação estão ganhando maturidade.

Trabalhar com linguagem de transformação ainda é uma tarefa de programação.

Uma linguagem padrão irá harmonizar as diversas vertentes de MDA (ptc/05-11-01).

Advento de ferramentas CASE para gerar correspondências e definições de transformação.

50

ReferênciasJean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT, Gilles PITETTE et Jamal Eddine ROUGUI. First Experiments with theATL Model Transformation Language: Transforming XSLT intoXQuery. 2nd OOPSLA Workhop on Generative Techniques in thecontext of Model Driven Architecture, October 2003.

Peter BRAUN et Frank MARSCHALL. BOTL The BidirectionalObject Oriented Transformation Language, TUM-INFO-05-I0307-0/1.-FI. Institut fur Informatik, Technische Universitat Munchen, May 2003.

Krzysztof CZARNECKI et Simon HELSEN. Classification of ModelTransformation Approaches. proceedings of the 2nd OOPSLA’03 Workshop on Generative Techniques in the Context of MDA, October 2003.

OMG. MDA Guide Version 1.0.1, Document Number: omg/2003-06-01. OMG, June 2003.

Page 26: Linguagens de Transformação de Modelos

51

ReferênciasOMG. XML Metadata Interchange (XMI) Specification, Version1.2, January 2002.

Octavian PATRASCOIU. Mapping EDOC to Web Services usingYATL. 8th IEEE International Enterprise Distributed ObjectComputing Conference (EDOC 2004), pages 286–297, September 2004.

52

Oportunidades

1 (uma) bolsa de Iniciação Científica:Área: Engenharia de Software e Sistemas Dist.

Duração: 12 (doze) meses

Valor: 300,00 (trezentos) reais

Iniciação científica sem bolsas.Área: Engenharia de Software e Serviços Web.

Duração: 12 (doze) meses

Mestrado em Eng. de Software e SD.

Contato: [email protected]