Linguagens de Transformação de Modelos
-
Upload
elliando-dias -
Category
Technology
-
view
546 -
download
2
Transcript of 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
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.
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
#?!
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.
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
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
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, ...
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
17
Linguagem de metamodelagem: MOF
MDA – Arquitetura Dirigida por Modelos
18
MDA – Arquitetura Dirigida por Modelos
Linguagem de metamodelagem: Ecore
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, ...
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).
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.
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/
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.
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 <-.
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
}
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
}
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.
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.
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.) }
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
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
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
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
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.
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]