Linguagens de Transformação de Modelos

732 views
622 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
732
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Linguagens de Transformação de Modelos

  1. 1. Universidade Federal do Maranhão Linguagens de Transformação de Modelos Denivaldo LOPES São Luís – MA 2006 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 2
  2. 2. 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. 3 Problemática Como assegurar? Desenvolvimento de software; Manutenção de software; Evolução de software. 4
  3. 3. 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.5 Motivação Compiladores #?! Linguagem de alto nível x=y Compiladores Mnemônicos MOV A,B 010101 Montadores Código de Máquina 0110101010 6
  4. 4. Linguagem de Solução modelagem presente Linguagem de transformação Modelos O elo Motor de transformação perdido? Linguagem de alto nível x=y passado Compilador Mnemônicos MOV A,B Montador Código de Máquina 0110101010 7 Modelos e Linguagens de Modelagem Considerações sobre modelo: Diferentes pontos de vista de um mesmo modelo. 8
  5. 5. 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. 9 Modelos e Linguagens de Modelagem Considerações sobre modelo: Um modelo é criado em um contexto com um objetivo específico. Um modelo não é uma descrição completa de 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. 10
  6. 6. Modelos e Linguagens de Modelagem 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) 11 UML AirLines Travel Agency AirLinesService CarHire TravelService RentingCarService Customer Hotel HotelService Bank BankService 12
  7. 7. UML airlines +airlinesServ customer ServiceAirLines +findFlight(flyReq:FlyReq):FlyList Customer +reserveFlight(flySel:FlyInf):Reserv +findTravel(travelReq:TravelReq):TravelList +payFlight(payInf:PayInf):AckPay +reserveTravel(travelInf:TravelInf):Reserv +cancelFlight(reservInf:Reserv):AckCancel +payTravel(payInf:PayInf):AckPay +cancelTravel(reservInf:Reserv):AckCancel carhire travelagency +carhireServ ServiceCarHire +travelServ +findCar(carReq:CarReq):CarList ServiceTravelAg +reserveCar(carSel:CarInf):Reserv +findTravel(travelReq:TravelReq):TravelList +payCar(payInf:PayInf):AckPay +reserveTravel(travelInf:TravelInf):Reserv +cancelCar(reservInf:Reserv):AckCancel +payTravel(payInf:PayInf):AckPay +cancelTravel(reservInf:Reserv):AckCancel hotel bank +bankServ +hotelServ ServiceHotel +findRoom(roomReq:RoomReq):RoomList ServiceBank +reserveRoom(roomSel:RoomInf):Reserv +makePayment(payInf:PayInf):AckPay +payRoom(payInf:PayInf):AckPay +cancelRoom(reservInf:Reserv):AckCancel +bankServ +bankServ +bankServ 13 MDA – Arquitetura Dirigida por Modelos Visão sobre MDA: Modelos UML, MOF, XMI,... Metadata (CWM) Transformação PIM -> PSM -> Plataforma Middleware CORBA, Web Services, Ent. Beans, ... 14
  8. 8. MDA – Arquitetura Dirigida por Modelos MOF conformsTo conformsTo conformsTo transformation language conformsTo source transformation target metamodel rules metamodel from to exec conformsTo conformsTo source source transformation target target model engine model PIM PSM 15 MDA – Arquitetura Dirigida por Modelos self-described Level M0 Level M1 Level M2 Level M3 The MOF MMM conformsTo conformsTo conformsTo The UPM MM The UML MM The CWM MM conformsTo conformsTo A UML model A UML model m1 m2 conformsTo conformsTo A particular Another use of use of m1 m1 MMM : metametamodel MM : metamodel m : model 16
  9. 9. MDA – Arquitetura Dirigida por Modelos Linguagem de metamodelagem: MOF 17 MDA – Arquitetura Dirigida por Modelos Linguagem de metamodelagem: Ecore 18
  10. 10. MDA – Arquitetura Dirigida por Modelos XMI (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' Polygon 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'> *** Contains Point <UML:Classifier.feature> 3..* +x:int <UML:Attribute xmi.id = 'a8' name = 'x' visibility = 'public' +vertex +y:int 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> 19 </XMI> 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, ... 20
  11. 11. 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. 21 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). 22
  12. 12. 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. 23 Linguagem de transformação de modelos Taxonomia: mandatory Model Transformation optional Directionality Transformation Rules Tracing Rule Application Scoping Rule organization Source-Target Relationship Rule Scheduling Rule Application Strategy Fonte: K. CZARNECKI et S. HELSEN. Classification of Model Transformation Approaches. Proceedings of the 2nd OOPSLA’03 Workshop on GTCM, 2003. 24
  13. 13. 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 Model Transformation 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. 25 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/ 26
  14. 14. 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 27 Linguagem ATL Sintaxe abstrata de ATL. Fonte: *Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT et al., First Experiments with the ATL Model Transformation Language: Transforming XSLT into XQuery, Workhop on Generative Techniques in 28 the context of MDA, 2003.
  15. 15. Linguagem ATL Padrões de elementos (Sintaxe abstrata). Fonte: *Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT et al., First Experiments with the ATL Model Transformation Language: Transforming XSLT into XQuery, Workhop on Generative Techniques in 29 the context of MDA, 2003. 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 <-. 30
  16. 16. Linguagem ATL Uma regra de transformação declarativa em ATL module UML2Java ; create OUT : Java from IN :UML ; rule Class2JClass{ from uclass : UML!Class to jclass : Java!JClass( uclass.name <- jclass.name ) } 31 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 } 32
  17. 17. Linguagem ATL Declarações condicionais: switch (expression){ case expression 1: --statement 1 break; case expression 2: --statement 2 break; default: --statement 3 break; } 33 Linguagem ATL Declarações de loop: while (condition) { -- statement } do{ –statement }while(condition); foreach element in collection{ --statement } 34
  18. 18. 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!Class to jclass:Java!JClass( jclass.name <- c.name; […] if (existsAttributes(c.getFeature()) then --statement1 else --statement 2 endif; ) } 35 Linguagem YATL YATL é uma linguagem de transformação desenvolvida para KMF (Kent Modelling Framework). Linguagem desenvolvida por Octavian PATRASCOIU na Universidade de Kent – Reino Unido. 36
  19. 19. 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. 37 Linguagem YATL Fonte: # Octavian PATRASCOIU. Model Transformations in YATL. Studies and Experiments – Reference Manual Version 38 1.0. Rapport technique 3-04, March 2004.
  20. 20. 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 ; 39 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.) } 40
  21. 21. 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 class rule umlClass2JavaClass match uml::Foundation::Core::Class () { let jClass: javaModel::JavaClass; jClass := new javaModel::JavaClass; jClass.name := self.name.body_; track(self, class2class, jClass); } 41 Comparativo entre ATL, YATL e BOTL Características ATL YATL BOTL transformation rule Distinção entre LHS et Distinção entre Distinção entre RHS LHS e RHS LHS e RHS - LHS/RHS sintaxe idêntica sintaxe idêntica sintaxe idêntica Syntatic Separation - Bidirectionality não explicitamente unidirecional bidirecional - Source-Target modelos distintos modelos modelos Relationship distintos distintos Rule Application Strategy determinista determinista Não determinista Rule organization modularidade modularidade nenhuma Tracing (Traceability) indiretamente sim indiretamente Directionality unidirecional unidirecional bidirectional Direct-manipulation não Possibilidade não com native Relational sim sim sim Graph-transformation-based Não Não parcialmente Structure-based não não não Hybrid-based Sim sim não, unicamente declarativa 42
  22. 22. Exemplos com ATL Transformação de um modelo UML em um modelo Concept Processo de Transformação Metamodelo UML Modelo UML Conforme à Transformação modelo-à-modelo Metamodelo Concept Modelo Concept Conforme à Transformação modelo-à-código Gramática EBNF de Concept Código Concept Conforme à 43 Exemplos com ATL Transformação de um modelo UML em um modelo Concept Metamodelo UML Metamodelo Concept Element +name : String <<enumeration>> Vis +cp_public : int +cp_private : int Concept +visibility : Vis 1 +concept * +property Property +value : String +type : String 44
  23. 23. Exemplos com ATL Transformação de um modelo UML em um modelo Concept module UML2METACON; create OUT:METACON from IN:UML; rule Class2Concept{ from class: UML!Class to concept: METACON!Concept( name <- class.name, visibility <- if class.visibility = #vk_public then #cp_public else #cp_private endif) } rule Attrib2Property{ from attr: UML!Attribute to prop : METACON!Property( name <- attr.name, concept <- attr.owner) } 45 Exemplos com ATL Transformação de um modelo UML em um modelo Concept: PSM <?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> 46
  24. 24. Exemplos com ATL Transformaçã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; library x_ConceptToCode; helper context METACON!Concept def: toString() : String = 'public Concept '+ self.name + '{'+ 'n' + 't property' + '}'; 47 Exemplos com ATL Transformação de um modelo UML em um modelo Concept Modelo UML <?xml version = '1.0' encoding = 'ISO-8859-1' ?> <XMI xmi.version = '1.2' timestamp = 'Tue Feb 10 15:17:53 GMT- 03:00 2004'> Transformação modelo-à-modelo <XMI.header> *** </XMI.header> <XMI.content> <METACON.Concept xmi.id = 'a1' name = 'String' visibility = 'cp_public'/> Modelo Concept <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> Transformação modelo-à-código </XMI.content> </XMI> public Concept A{ Código Concept property attr1:String } 48
  25. 25. 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. 49 Referências Jean BÉZIVIN, Grégoire DUPÉ, Frédéric JOUAULT, Gilles PITETTE et Jamal Eddine ROUGUI. First Experiments with the ATL Model Transformation Language: Transforming XSLT into XQuery. 2nd OOPSLA Workhop on Generative Techniques in the context of Model Driven Architecture, October 2003. 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. Krzysztof CZARNECKI et Simon HELSEN. Classification of Model Transformation 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. 50
  26. 26. Referências OMG. XML Metadata Interchange (XMI) Specification, Version 1.2, January 2002. Octavian PATRASCOIU. Mapping EDOC to Web Services using YATL. 8th IEEE International Enterprise Distributed Object Computing Conference (EDOC 2004), pages 286–297, September 2004. 51 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: denivaldo.lopes@gmail.com 52

×