Introdução a Engenharia Dirigida por Modelos

Tamanho: px
Começar a partir da página:

Download "Introdução a Engenharia Dirigida por Modelos"

Transcrição

1 Engineering for a better life Laboratory of Software Engineering and Computer Network Introdução a Engenharia Dirigida por Modelos Denivaldo Lopes UFMA/CNPq denivaldo.lopes@gmail.com ERCEMAPI 2007

2 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 2

3 Plano de apresentação Introdução Contexto Problemática Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 3

4 Introdução Contexto Desafios da indústria de software: O desenvolvimento de software tem se tornado cada vez mais complexo; Os projetos de software têm se tornado muito dispendiosos; Muitos investimentos no desenvolvimento de software têm resultados insatisfatório. 85% dos departamentos de TI nos EUA falham na tentativa de encontrar soluções de software para as necessidades de seus negócios *. * T. Hoffman, Study: 85% of IT Departments Fail to Meet Biz Needs, Computer World, October 11,

5 Introdução Contexto As variáveis de viabilidade de um projeto em TI (Tecnologia da Informação). Custo de produção Longevidade Viabilidade Qualidade Construir softwares de alta qualidade e com longo ciclo de vida é muito dispendioso. 5

6 Introdução Contexto Computação baseada na máquina Linguagem de montagem (assembly) 1s e Os Atingir o nível de abstração implica em melhorar as variáveis de viabilidade: Custo de produção; Longevidade; Qualidade. 6

7 Introdução Contexto Computação baseada na aplicação Linguagens de 3 Geração (Fortran, COBOL) Linguagem de montagem (assembly) 1s e Os Novos benefícios: Nível mais alto de abstração; Construções de alto-nível; Portabilidade. Outras linguagens 3G: Smaltalk; C++; Java; C#. 7

8 Introdução Contexto Computação baseada na aplicação 3GL Código Fonte Nível de abstração compilador Código de máquina em conjunto com o sistema operacional Código de máquina Portabilidade implica no aumento da longevidade da aplicação. 8

9 Introdução Contexto Computação baseada na aplicação Código Java Compilador Ambiente de Desenvolvimento ByteCode Distribuição VM Windows VM Linux VM Sun Solaris VM Celular SO Windows SO Linux SO Sun Solaris SO Celular Ambiente de Execução Introdução de máquinas virtuais 9

10 Introdução Contexto Computação baseada na empresa: Padrões de projetos; Computação distribuída; Middlewares; Arquitetura de empresas e separação de interesses (concerns). 10

11 Introdução Contexto As diferentes camadas de um sistema de Informação Cliente Apresentação Lógica de aplicação Sistema de Informação Gestão de recursos 11

12 Introdução Contexto Arquitetura 1-Tier Cliente apresentação 1 - Tier Lógica de aplicação Gestão de recursos Sistema de Informação 12

13 Introdução Contexto Arquitetura 2-Tier Tier do cliente cliente Tier do servidor Apresentação Lógica de aplicação Gestão de recursos Sistema de Informação 13

14 Introdução Contexto Arquitetura 3-Tier Tier do cliente ou Front- End cliente Apresentação Tier da empresa ou Middle tier Tier da base de dados ou Back end Lógica de Aplicação middleware Gestão de recursos Sistema de Informação 14

15 Introdução Contexto: Arquitetura 3-Tier Thin Client Client Tier (a.k.a Front End) (Thin Client) Enterprise Tier (a.k.a Middle Tier) Client Web Browser Workstation PC HTML Pages - dynamically generated Business Logic Servers It can be a pocket-pc, etc Internet/Intranet Servlets, ASP.NET, JavaServerPages, PHP, etc Web Servers (Apache Tomcat, IIS Microsoft, etc) DataBase Tier (a.k.a Back End) Oracle Mainframe MySQL Pentium Linux Other DBs Orther servers 15

16 Introdução Contexto: Arquitetura 4-Tier User Tier (a.k.a Client End) Workspace Tier (a.k.a Interaction Tier) Client User Presentation Workstation PC User Interaction Logic Servers Enterprise Tier (a.k.a Business Tier) Resource Tier (a.k.a Integration Tier) Business Logic Servers Resource Adapters (Object-relational Mappings) Mainframe DB DBs on other servers 16

17 Introdução Contexto: Enterprise Application Integration User Tier (a.k.a Client End) Client User Presentation Workstation PC Workspace Tier (a.k.a Interaction Tier) User Interaction Logic Servers Enterprise Tier (a.k.a Business Tier) Resource Tier (a.k.a Integration Tier) Resource Adapters Oracle DB Mainframe DB Business Logic Servers Application Adapters Legacy System Mainframe 17

18 Introdução Contexto Pressões sobre a computação baseada na empresa Dispositivos de Usuário Uniforme Clientes Pesados Clientes Web Wireless Handhelds Telefones móveis Funções de suporte ao negócio dentre da empresa Funções de suporte ao negócio dentre da empresa, B2C, B2B Primeira era da computação na empresa Nova era da computação na empresa Complexidade Fonte: Kleppe, A., Warmer, J. e Bast, W. (2003), MDA Explained: The Model Driven Architecture: Practice and Promise, Addison-Wesley, 1st edition, August

19 Introdução Contexto Pressões sobre a computação baseada na empresa Custos de produção Qualidade Longevidade 19

20 Introdução Contexto Pressões sobre a computação baseada na empresa Volatilidade de plataforma Empresa Antes Agora Sun Linguagem Java J2SE, J2EE W3C XML DTD XML Schema, WSDL, etc OMG CORBA CORBA Componente Model Microsoft MTS COM+/.NET Sun e OMG RMI vs. IIOP RMI sobre IIOP 20

21 Introdução Contexto: Cenário dos sistemas distribuídos na Internet Travel Agency EDI-standards -Um middleware unificador? - Interoperabilidade na Internet? CORBA-IIOP DCOM/COM+? CORBA-IIOP? Airlines Client XML-RPC DCOM/COM+ CORBA-IIOP?? HTTP/HTML CGI? Internet/ Intranet Os serviços Web! (XML, SOAP, WSDL et UDDI) DCOM/COM+? RPC Java RMI EDI-standards? RentCar Hotel 21

22 Introdução Contexto: Internet e Serviços Web Um serviço Web é «uma maneira normalizada de integrar aplicações baseadas na Web utilizando os padrões abertos XML, SOAP, WSDL, UDDI e os protocolos de transporte da Internet.» (cf. Webopedia). UDDI é acessado utilizando SOAP suporta a descoberta de XML é a chave para a interoperabilidade. descreve WSDL ligado à Suporta a comunicação de Serviços Web 22

23 Introdução Contexto: Internet e Serviços Web Um serviço Web é mais um middleware! Eu quero soluções para : - A complexidade de desenvolvimento, de manutenção e evolução de sistemas de softwares. A solução é utilizar modelos em todo o ciclo de desenvolvimento de sistemas de softwares. Eu já escutei falar desta história de modelos: OMT, Booch, UML, ferramentas CASE Agora, o contexto é diferente. MDE (Model Driven Engineering) propõe utilizar modelos para implementar os sistemas de software de A à Z. 23

24 Introdução Problemática A complexidade no desenvolvimento, manutenção e evolução de software. Os paradigmas orientação à objetos e componentes já não conseguem gerenciar esta complexidade. Uma abordagem centrada em middlewares é insuficiente. Uma mudança de paradigma é necessária: modelos. 24

25 Introdução Desafios para a indústria de software: A complexidade de desenvolvimento de sistemas de software; A manutenção de sistemas de software; A evolução de sistemas de software; Responder rapidamente e eficientemente as novas necessidades para atender novos requisitos funcionais e não-funcionais; Adaptar sistemas de software a novas tecnologias; Integrar sistemas de software implementados com tecnologias diferentes. 25

26 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Conceitos de base Arquitetura a quatro-níveis MOF EMF UML OCL XMI Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 26

27 Engenharia Dirigida por Modelos (MDE) Conceitos de base. O que é modelo? Modelo pode ser definido como algo que é proposto a imitação. Modelo é uma abstração de um sistema físico distinguindo o que é pertinente do que não é pertinente com o objetivo de simplificar a realidade. Modelo é uma simplificação de qualquer coisa que nos permite de ver, manipular, e refletir sobre um assunto em estudo, e que nos ajuda a compreender a complexidade inerente. 27

28 Engenharia Dirigida por Modelos (MDE) Conceitos de base. O que é modelo? Um modelo é uma simplificação de um sistema e é criado com uma finalidade específica. O modelo deve ser capaz de responder as perguntas em lugar de um sistema em estudo. [Bézivin 2001]. Um modelo é uma descrição de um (ou de uma parte de) sistema expresso em uma linguagem bem definida, isto é, respeitando um formato preciso (uma sintaxe) e um significado (uma semântica). Esta descrição deve ser conveniente para uma interpretação automatizada por computador [Kleppe 2003]. 28

29 Engenharia Dirigida por Modelos (MDE) Conceitos de base. O que é modelo? Um modelo é uma abstração de um sistema [Frankel 2003]. Uma abstração é uma descrição de qualquer coisa omitindo certos detalhes não pertinente para o objetivo da abstração [OMG 2001]. 29

30 Engenharia Dirigida por Modelos (MDE) Conceitos de base. Exemplo de modelos V 2 = V 2 x + V2 y Manequins Vetor velocidade V e as componentes Vx e Vy Planta baixa de uma casa Modelo UML 30

31 Engenharia Dirigida por Modelos (MDE) Conceitos de base Modelos, Linguagem e Sistema Linguagem de modelagem Uma linguagem de modelagem é uma especificação formal bem definida que contém os elementos de base para construir modelos. É escrito em A B C Descreve Modelo Sistema 31

32 Engenharia Dirigida por Modelos (MDE) Conceitos de base Modelos de Software e Negócio Modelo de Negócio derivado a partir de descreve Modelo de Software descreve Sistema do negócio Departamento Software de suporte 32

33 Engenharia Dirigida por Modelos (MDE) Conceitos de base Diferentes pontos de vista de um sistema em um modelo UML É escrito em descreve Sistema modelo 33

34 Engenharia Dirigida por Modelos (MDE) Conceitos de base Diferentes modelos de um sistema escrito em diferentes linguagens Rede de Petri É escrito em Modelo de rede de Petri Entidade Relacionamento É escrito em Modelo entidade relacionamento descreve descreve Sistema 34

35 Engenharia Dirigida por Modelos (MDE) Conceitos de base: Arquitetura a quatro níveis Level M3 conformsto self-described The MOF MMM conformsto conformsto Level M2 The UPM MM The UML MM The CWM MM conformsto conformsto Level M1 conformsto A UML model m1 conformsto A UML model m2 Level M0 A particular use of m1 Another use of m1 MMM : metametamodel MM : metamodel m : model OMG, Meta Object Facility (MOF) specification - version 1.4, formal/

36 Engenharia Dirigida por Modelos (MDE) Conceitos de base. O que é um metamodelo? Um metamodelo é um modelo de uma linguagem de modelagem [Favre 2004]. Um metamodelo é criado usando outras linguagens conhecidas como linguagem de metamodelagem (contém um metametamodelo). O que é um metametamodelo? Um metametamodelo é um modelo que define a linguagem para expressar metamodelos. A relação entre um memetamodelo e um metamodelo é similar à relação entre um metamodelo e um modelo [OMG 2007]. 36

37 Engenharia Dirigida por Modelos (MDE) Conceitos de base Arquitetura a quatro níveis 37

38 Engenharia Dirigida por Modelos (MDE) Conceitos de base MDE é uma abordagem onde modelos estão no centro de desenvolvimento de artefatos de softwares. Exemplos de MDE: Model-Driven Architecture (MDA) da OMG. Eclipse Modeling Framework da Eclipse. Software Factories da Microsoft. 38

39 Engenharia Dirigida por Modelos (MDE) Conceitos de base MDE tem sua ênfase nas pontes entre espaços tecnológicos e na integração de campos de conhecimento desenvolvido por diferentes comunidades [Favre 2004]; MDE combina processo e análise com arquitetura [Kent 2002]; MDE propõe um framework (1) para claramente definir metodologias, (2) para desenvolver sistemas em qualquer nível de abstração, (3) para organizar e automatizar as atividades de teste e validação [Fondement 2004]. 39

40 Engenharia Dirigida por Modelos (MDE) Conceitos de base MOF A especificação de MOF define uma linguagem abstrata e um framework para a especificação, a construção e o gerenciamento de metamodelos neutros de tecnologia. A especificação MOF comporta: Uma definição formal do metamodelo de MOF; Uma correspondência dos metamodelos MOF em IDL CORBA que produz as interfaces IDL para gerar um metadado; Um conjunto de interfaces IDL CORBA para representar e manipular metamodelos MOF; Um formato XMI para a troca de metamodelos MOF. 40

41 Engenharia Dirigida por Modelos (MDE) Conceitos de base MOF Versão

42 Engenharia Dirigida por Modelos (MDE) Conceitos de base EMF (Eclipse Modeling Framework) e Ecore EMF é um framework de modelagem e de geração de código que suporta a criação de ferramentas e de aplicações dirigidas por modelos. Ecore é uma linguagem de metamodelagem que faz parte de EMF. EMF é fornecido como um plug-in para Eclipse. EMF contém um editor de metamodelos conforme a Ecore, um gerador de código de plug-ins, um editor de modelos conforme a um metamodelo proposto. 42

43 Engenharia Dirigida por Modelos (MDE) Conceitos de base EMF (Eclipse Modeling Framework) e Ecore 43

44 Engenharia Dirigida por Modelos (MDE) Conceitos de base UML (Unified Modeling Language) Unificou várias linguagens de modelagem; Fundamentada na orientação a objetos, tendo noção de classe, atributo, método, objeto e as relações entre classes e relações entre objetos. É uma linguagem visual dedicada a modelagem e não a programação. Uma linguagem generalista com mecanismos de adaptação a um contexto (Profiles). 44

45 Engenharia Dirigida por Modelos (MDE) Conceitos de base UML (Unified Modeling Language) Modela aspectos estáticos: diagrama de caso de uso diagrama de classes diagrama de objetos diagramas de componentes diagramas de implantação. Modela aspectos dinâmicos: Diagrama de seqüência Diagrama de colaboração Diagrama de estado-transição Diagrama de atividade 45

46 Engenharia Dirigida por Modelos (MDE) Conceitos de base UML (Unified Modeling Language) Versão

47 Engenharia Dirigida por Modelos (MDE) OCL (Object Constraint Language) O que é OCL: Linguagem formal que expressa restrições. OCL não causa efeitos colaterais ao sistema (simplesmente avalia e retorna valores). OCL não é uma linguagem de programação. OCL é uma linguagem tipada (cada expressão OCL tem um tipo e conforma com as regras de conformidade de tipo). Por que OCL (Problemas que OCL melhora)? Diagramas UML não são suficientes refinados para prover todos os aspectos relevantes de uma especificação. Restrições em linguagem natural causam ambigüidades. Linguagens formais em geral são difíceis de ler e escrever. 47

48 Engenharia Dirigida por Modelos (MDE) OCL (Object Constraint Language) Onde usar OCL : Propósitos? Especificar invariâncias sobre classes e tipos no modelo de classe. Especificar invariância de tipo para estereótipos. Descrever pré e pós condições sobre operações e métodos. Descrever guards. Linguagem de navegação. Especificar restrições sobre operações. 48

49 Engenharia Dirigida por Modelos (MDE) OCL (Object Constraint Language) Exemplo No primeiro invariante, self.manager é um Person, porque a multiplicidade da associação é 1. No segundo invariante, self.employee avaliará um conjunto de Persons. Por default, a navegação resultará em um Set Collections, como Set, Bag e Sequence são tipos predefinidos em OCL que tem um grande número de operações predefinidas 49

50 Polygon Contains 3..* +vertex Engenharia Dirigida por Modelos (MDE) Conceitos de base: XMI (XML Metadata Interchange) Point +x:int +y:int <?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> 50 </XMI>

51 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Ferramentas para MDA Metamodelagem Linguagens de transformação de modelos ATL Processos de desenvolvimento Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 51

52 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Visão da OMG: Modelos UML, MOF, XMI,... Metadata (CWM) Transformação PIM -> PSM -> Plataforma Middleware CORBA, Web Services, Ent. Beans,... 52

53 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA O que é MDA? MDA é uma evolução do OMA para assegurar a integração e a interoperabilidade durante o ciclo de vida de um sistema desde o modelo do negócio (business modeling) e sua concepção até a construção de componentes, a montagem, a integração, a implantação, a gestão e a evolução [OMG 2001]. 53

54 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA MDA é fundamenta na experiência adquirida pela criação de especificações (padrões) como UML, MOF, CWM, XMI e IDL. MDA define uma arquitetura para estruturar modelos a fim de permitir a integração, a interoperabilidade e a portabilidade no nível de modelos. MDA é dirigida por modelos porque ela fornece uma abordagem de utilização de modelos para dirigir a compreensão, a concepção, a implantação, a operação, a manutenção e a modificação de sistemas [OMG 2003]. 54

55 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Define-se MDA como uma abordagem de desenvolvimento baseada em modelos e um conjunto de especificações (padrões) da OMG. Esta abordagem permite separar as especificações das funcionalidades de um sistema (o PIM Platform Independent Model) das características de implementação do sistema (o PSM Platform Specific Model). A OMG considera a transformação como o operador fundamental devendo ser aplicado entre modelos. 55

56 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Uma plataforma é definida como a set of subsystems and technologies that provide a coherent set of functionality through interfaces and specified usage patterns, which any application supported by that platform can use without concern for the details of how the functionality provided by the platform is implemented [OMG 2003]. 56

57 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Um modelo é uma descrição de um sistema: Um PIM é um Modelo Independente de Plataforma que descreve um sistema sem qualquer conhecimento da plataforma de implementação final. Um PSM é um Modelo Específico de Plataforma que descreve um sistema contendo característica da plataforma final. Uma definição de transformação descreve como um modelo em uma linguagem fonte (metamodelo fonte) pode ser transformado em um modelo em uma linguagem alvo (metamodelo alvo). Uma ferramenta de transformação realiza uma transformação entre modelos de acordo com uma definição de transformação. 57

58 MOF Arquitetura Dirigida por Modelos (MDA) Models Visão sobre MDA: Arquitetura tipo* PIM Platform Independent Model PSM Platform Specific Model FORTRAN e C <<expressed with>> Ecore Assembler <<expressed with>> Gerado de <<conformsto>> 1..* Metamodel <<are described with>> 1..* PIM Mapping Techniques x=y MOV A, B Mapping from PIM to PSM <<expressed with>> 1..* 1..* Gerado de <<depends on>> Other <<are described with>> PSM Infrastructure metamodeling << conformsto >> 1..* language Código de máquina Mapping (Pentiurm 4) PSM Mapping from PSM to PSM Techniques * OMG, Model Driven Architecture (MDA) ormsc/ , PIM 1..* Opps! Déjà vu? Refactoring from PSM to PIM Mapping from PIM to PIM <<independant of>>

59 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: Arquitetura tipo* PIM language used Platform Independent Metamodel source language Transformation Transformation Definition target language Platform language used PSM Specific Metamodel * (adaptado) OMG. MDA Guide Version 1.0.1, Document Number: omg/

60 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: Arquitetura tipo* conformsto MOF conformsto conformsto transformation language source metamodel from conformsto source source model transformation rules exec transformation engine conformsto to target target metamodel target model conformsto Linguagem de metamodelagem (metametamodelo) : MOF et Ecore Linguagem de modelagem (metamodelo) : UML et EDOC Linguagem de transformação : ATL, YATL, BOTL 60

61 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Por que MDA? A OMG compreendeu que um middleware como CORBA não pode ser uma solução suficiente para desenvolvimento de software. Fatores que deixam os sistemas mais complexos: A integração de novos aspectos; A chegada de novas tecnologias; A compatibilidade com as tecnologias legadas (legacy systems); O grande número de tecnologias. 61

62 tradicional Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: desenvolvimento de software tradicional x desenvolvimento de software MDA com MDA Fonte: Kleppe, A., Warmer, J. e Bast, W. (2003), MDA Explained: The Model Driven Architecture: Practice and Promise, Addison-Wesley, 1st edition, August

63 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: Padrões da OMG A OMG define linguagens de modelagem que são adequadas para escrever PIMs ou PSMs. UML é a linguagem de modelagem mais difundida, mas outras podem ser usadas como EDOC ou perfis UML. Object Constraint Language (OCL) é uma linguagem de requisições e expressões para restringir e navegar em modelos UML. Atualmente, OCL possui muita similaridade com SQL. 63

64 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: Padrões da OMG Action Semantics (AS) para UML define semântica e comportamento em modelos UML. AS não é adequado para escrever PIMs. AS não é adequado para ser usado diretamente por um modelador, porque não define uma sintaxe concreta. Perfis de UML permite a criação de outras linguagens de modelagem através da extensão de UML. 64

65 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA: Padrões da OMG MOF é a linguagem de metamodelagem da OMG. XMI é o dialeto XML para permitir a troca de modelos entre ferramentas e repositórios. MOF QVT define uma linguagem de transformação normalizada para modelos. Operational Mappings Relations RelationsToCore Transformation Black Box Core Relacionamentos entre metamodelos de QVT 65

66 Arquitetura Dirigida por Modelos (MDA) Visão sobre MDA Benefícios de MDA: Produtividade Portabilidade Interoperabilidade Manutenção e documentação 66

67 Arquitetura Dirigida por Modelos (MDA) Ferramenta para MDA: Requisitos 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,... 67

68 Arquitetura Dirigida por Modelos (MDA) Ferramentas para MDA: Requisitos 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,... 68

69 Arquitetura Dirigida por Modelos (MDA) Ferramentas para MDA: Funcionalidades em um ambiente de desenvolvimento Fonte: Kleppe, A., Warmer, J. e Bast, W. (2003), MDA Explained: The Model Driven Architecture: Practice and Promise, Addison-Wesley, 1st edition, August

70 Arquitetura Dirigida por Modelos (MDA) Ferramentas para MDA 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 opensource framework for building applications generators which create Java code from a model of the business domain. 70

71 Arquitetura Dirigida por Modelos (MDA) Metamodelagem Para que uma transformação entre modelos possa ser realizada, uma linguagem bem definida deve ser disponibilizada a fim de que possa ser compreendida por humanos e computadores. Fonte: Kleppe, A., Warmer, J. e Bast, W. (2003), MDA Explained: The Model Driven Architecture: Practice and Promise, AddisonWesley, 1st edition, August

72 Arquitetura Dirigida por Modelos (MDA) Linguagens de Transformação de modelos 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/ ). 72

73 Arquitetura Dirigida por Modelos (MDA) 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. Uma definição de transformação determina um processo que consiste de um número de regras de transformação que são executadas por uma ferramenta de transformação. Uma definição de transformação é escrita através de uma linguagem de transformação. 73

74 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Características desejáveis: Tunning (Controlando e Ajustando Transformações); Traceability (Traçabilidade); Incremental consistency (Consistência incremental); Bidirectionality (Bidirecionalidade). 74

75 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Tunning: Controlando e Ajustando Transformações Um usuário de uma ferramenta de transformação pode desejar ter controle sobre o processo de transformação. Maneiras de controlar o processo de transformação: Controle manual; Condições na transformação; Parâmetros de transformação; Informação adicional. 75

76 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Traceability (Traçabilidade) Em muitas situações, a traçabilidade é uma característica desejável na aplicação de MDA. Na transformação de um PIM em PSM, o PSM gerado pode não ser completo, então o usuário deve preencher o PSM com mais informação. O preenchimento manual do vazio (gap) no PSM, pode gerar mudanças em partes do PSM gerado. Isto pode ser uma fonte de problemas. O desejável é que esta mudança possa ser armazenada. 76

77 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Traceability (Traçabilidade) Também pode ser desejável que uma mudança realizada em um elemento do PSM possa ser refletida no PIM. A traçabilidade permite manter a consistência entre PSM e PIM, pois o histórico das transformações, permite que mudanças manuais no PSM possam ser refletidas no PIM. 77

78 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Incremental consistency (Consistência incremental) Quando um modelo alvo (PSM) é gerado, este pode estar incompleto. Então, o usuário deve adicionar informações no modelo para completá-lo. Quando o modelo alvo (PSM) for regenerado, a informação que foi adicionada deve permanecer no novo modelo alvo (PSM). Isto consiste no princípio da consistência incremental. Quando um elemento do PIM for modificado, isto deve ser incrementalmente refletido no PSM. 78

79 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Bidirectionality (Bidirecionalidade) Implica que o processo de transformação pode ser aplicado em ambas as direções (modelo fonte para modelo alvo e de modelo alvo para modelo fonte). transformação Definição de transformação Modelo 1 transformação reversa Modelo 2 79

80 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Bidirectionality (Bidirecionalidade) Transformações bidirecionais pode acontecer: As transformações são descritas por uma única definição de transformação. As transformações são descritas por definições de transformação distintas. 80

81 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Implicações das características desejáveis As regras de transformação devem possuir parâmetros para auxiliar no ajuste das transformações. Deve-se manter a persistência das transformações realizadas. Para manter a informação de qual elemento do modelo fonte foi transformado no modelo alvo, pode-se armazenar as relações entre os modelos PIM e PSM. Transformação parametrizadas Adiciona-se parâmetros nas regras de transformação que compõe a definição de transformação. 81

82 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Persistência no relacionamento fonte-alvo Fonte: Kleppe, A., Warmer, J. e Bast, W. (2003), MDA Explained: The Model Driven Architecture: Practice and Promise, Addison-Wesley, 1st edition, August

83 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos Exemplos de linguagens de transformação de modelos: MOF QVT (Query View Transformation)* ATL (Atlas Transformation Language)** YATL (Yet Another Transformation Language)*** BOTL (Basic Object-oriented Transformation Language ) *OMG (2005a), Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification, Final Adopted Specification ptc/ , *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, ** Octavian PATRASCOIU. Model Transformations in YATL. Studies and Experiments Reference Manual Version 1.0. Rapport technique 3-04, March 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

84 Arquitetura Dirigida por Modelos (MDA) Linguagem de transformação de modelos: comparativo Características ATL YATL BOTL transformation rule Distinção entre LHS et RHS Distinção entre LHS e RHS Distinção entre LHS e RHS - LHS/RHS Syntatic Separation sintaxe idêntica sintaxe idêntica sintaxe idêntica - Bidirectionality não explicitamente unidirecional bidirecional - Source-Target Relationship modelos distintos modelos distintos modelos 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 com native não 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 84

85 Arquitetura Dirigida por Modelos (MDA) ATL (Atlas Transformation Language) 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:

86 Arquitetura Dirigida por Modelos (MDA) 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 86

87 ATL Arquitetura Dirigida por Modelos (MDA) Palavras reservadas Valores lógicos: true, false; Palavra reservada de tipo: Bag, Set, OrderedSet, Sequence, Tuple, Integer, Real, Boolean, String, TupleType; Palavra reservada da linguagem: not, and, or, xor, implies, module, create, from, uses, helper, def, context, rule, using, derived, to, mapsto, distinct, foreach, in, do, if, then, else, endif, let, library, query, for, div, refining, entrypoint. 87

88 ATL Arquitetura Dirigida por Modelos (MDA) Tipos de dados em ATL Atlas group, LINA & INRIA, ATL: Atlas Transformation Language/ATL User Manual, versão 0.7, Fevereiro

89 ATL Arquitetura Dirigida por Modelos (MDA) Operações sobre tipos primitivos Operações sobre números inteiros e reais: *, +, -, /, div(), abs(), mod(), max(), min(), sum(), sin(), cos() Operações sobre boleanos: and, or, xor, not, implies, if-then-else Operações sobre Strings concat(), size(), substring(), tointeger(), toreal() 89

90 ATL Arquitetura Dirigida por Modelos (MDA) Coleções Set é uma coleção sem elementos duplicados OrderedSet é uma coleção sem elementos duplicados, mas organizados em uma ordem. Bag é uma coleção em que elementos duplicados são permitidos. Sequence é uma coleção em que elementos duplicados são permitidos, mas organizados em uma ordem. 90

91 Arquitetura Dirigida por Modelos (MDA) ATL Operações sobre coleções size() includes() excludes() count() includesall() excludesall() isempty() notempty() 91

92 Arquitetura Dirigida por Modelos (MDA) ATL Operações sobre Set including() excluding() assequence() asbag() 92

93 Arquitetura Dirigida por Modelos (MDA) ATL Operações sobre Sequence append() insertat() asset() asbag() flatten() 93

94 Arquitetura Dirigida por Modelos (MDA) ATL Operações sobre Bag including() excluding() assequence() asset() 94

95 Arquitetura Dirigida por Modelos (MDA) ATL Iterações sobre coleções select() collect() forall() sum() 95

96 Arquitetura Dirigida por Modelos (MDA) ATL Comentários em ATL Comentários devem ser precedidos por Este é um comentário em ATL 96

97 ATL Arquitetura Dirigida por Modelos (MDA) 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 the context of MDA,

98 ATL Arquitetura Dirigida por Modelos (MDA) 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 the context of MDA,

99 Arquitetura Dirigida por Modelos (MDA) 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 <-. 99

100 ATL Arquitetura Dirigida por Modelos (MDA) Uma regra de transformação declarativa module UML2Java ; create OUT : Java from IN :UML ; } rule Class2JClass{ from uclass : UML!Class to jclass : Java!JClass( name <- uclass.name ) 100

101 ATL Arquitetura Dirigida por Modelos (MDA) 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 } 101

102 ATL Arquitetura Dirigida por Modelos (MDA) Declarações condicionais: switch (expression){ case expression 1: --statement 1 break; case expression 2: --statement 2 break; default: --statement 3 break; } 102

103 ATL Arquitetura Dirigida por Modelos (MDA) Declarações de loop: while (condition) { -- statement } do{ statement }while(condition); foreach element in collection{ --statement } 103

104 ATL Arquitetura Dirigida por Modelos (MDA) 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; ) } 104

105 ATL Arquitetura Dirigida por Modelos (MDA) Transformação de um modelo UML em um modelo concept Metamodelo UML Metamodelo Concept ModelElement +name : Name Element +name : String <<enumeration>> Feature +ownerscope : ScopeKind +visibility : VisibilityKind * +owner Namespace 0..1 Classifier GeneralizableElement +isroot : Boolean +isleaf : Boolean +isabstract : Boolean Concept +visibility : Vis Vis +cp_public : int +cp_private : int StructuralFeature +feature BehavioralFeature +isquery : Boolean Class 1 * +concept +property Attribute +initialvalue : Expression Operation +concurrency +isroot +isleaf +isabstract +methode +specification * 1 Methode +body : ProcedureExpression Property +value : String +type : String 105

106 Arquitetura Dirigida por Modelos (MDA) 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) } 106

107 Arquitetura Dirigida por Modelos (MDA) ATL Transformação de um modelo UML em um modelo Concept <?xml version = '1.0' encoding = 'ISO '?> <XMI xmi.version = '1.2' timestamp = 'Tue Feb 10 15:17:53 GMT-03: '> <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> 107

108 Arquitetura Dirigida por Modelos (MDA) 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' + '}'; 108

109 Arquitetura Dirigida por Modelos (MDA) ATL Transformação de um modelo UML em um modelo Concept Modelo UML Transformação modelo-à-modelo Modelo Concept Transformação modelo-à-código Código Concept <?xml version = '1.0' encoding = 'ISO '?> <XMI xmi.version = '1.2' timestamp = 'Tue Feb 10 15:17:53 GMT- 03: '> <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> public Concept A{ property attr1:string } 109

110 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 110

111 Uma abordagem para MDE Arquitetura Tipo conformsto MMM conformsto Source metamodel conformsto source MM A1 transformation MM +attra11:type1 +attra12:type2 +left Mapping Target conformsto metamodel mapping MM B1target MM A2B +attrb11:type5 +attrb12:type6 +right conformsto source M source Définition de Transformations conformsto transformation M A2 +attra21:type3 +attra22:type4 conformsto generatedfrom Aa2Bb conformsto mapping M transformation engine target M target transformation program Spécification de source composition correspondances target exec Me B2 +attrb21:type7 +attrb22:type8 Mapping Element conformsto MMM : metametamodel MM : metamodel M : model 111

112 Uma abordagem para MDE Metodologia A escolha ou a criação de um metamodelo para o PIM A escolha ou a criação de um metamodelo para o PSM A especificação de correspondências entre os metamodelos do PIM et du PSM A geração da definição de transformação A aplicação das definições de transformações (de PIM à PSM) [PSM está completo] [não] Completar o PSM [sim] Gerar o código fonte, scripts, arquivos de implantação, etc (de PSM à código) 112

113 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 113

114 Propondo metamodelos Um metamodelo para Java <<enumeration>> TypeName +byte +short +int +long +float +double +char +boolean +String <<enumeration>> Modifier +jabstract +final +regular <<enumeration>> Visibility +public +protected +private * +nested +type super +sub JClassifier 0..* +owner +members 0..* JMember +type +type JElement +name:string +visibility:visibility +modifier:modifier +contents 0..* 0..1 JavaPackage 0..* 0..* JField JMethod +istransient:boolean +isnative:boolean +isvolatile:boolean +issinchronized:boolean +isfinal:boolean +body:string +has owner +value0..1 +parameters 0..* JValue JParameter +value:string +result:boolean 0..* JClass +throws +isactive:boolean +implementedby 0..* +implements 0..* JInterface JPrimitiveType +type:typename 114

115 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 115

116 116 Correspondência entre metamodelos UML metamodel Java metamodel Mapping JElement JPackage JClassifier ModelElement Namespace Package AssociationEnd Interface Attribute Operation Method Parameter DataType +specification +method P2P GeneralizableElement Generaliation Class JClass JInterface JPrimitiveType JMember JField JValue JMethod JParameter +implemetedby +implements +owner +jparameters +type +type +nested +super 0..* * 0..* 0..* 0..* Ae2F C2Jc OM2M Pr2Pr Dt2Jpt I2I A2F

117 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 117

118 Definições de transformação UML metamodel ModelElement Mapping Java metamodel JElement Namespace Package AssociationEnd Generaliation GeneralizableElement Class Interface Attribute Operation +specification +method Method Parameter DataType C2Jc P2P Ae2F I2I A2F OM2M Pr2Pr Dt2Jpt JPackage 0..* +nested JClassifier +super 0..1 JClass 0..* +implemetedby 0..* +implements JInterface JPrimitiveType JMember JField 0..* JValue JMethod +owner +jparameters0..* JParameter +type +type Gerado à partir de module UML2JAVAM; create OUT : JAVAM from IN : UML; rule C2Jc{ from c : UML!Class to jc : JAVAM!JClass( name <- c.name, visibility <- if c.visibility = #vk_public then *** ) } *** 118

119 Definições de transformação module UML2JAVAM; create OUT : JAVAM from IN : UML; rule C2Jc{ from c : UML!Class to jc : JAVAM!JClass( name <- c.name, visibility <- if c.visibility = #vk_public then #public else if c.visibility = #vk_private then #private else #protected endif endif, isactive <- c.isactive, jpackage <- c.namespace, super <- if c.generalization -> select(e e.parent <> c)->size() > 0 then c.generalization -> select(e e.parent <> c)-> first().parent else JAVAM!JClass endif, implements <- c.clientdependency -> select(e e.stereotype-> exists(e e.name='realize'))->collect(e e.supplier), *** ) } *** 119

120 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 120

121 Ferramentas Dentre as ferramentas destacam-se: Editores de modelos: Poseidon for UML, Rational Rose, ArgoUML e Omondo for UML; Editores de metamodelos: o plug-in de EMF, Omondo e KM3; Editores, compiladores e debuggers de definições de transformação: ADT (Atlas Development Toolkit); Conversores de modelos conforme a UML para metamodelos conforme a MOF: uml2mof; Projeções de repositórios em plataformas específicas: JMI (Java MetaData Interchange) e MDR (MetaData Repository). 121

122 Ferramentas ADT (ATL Development Toolkit) Ambiente criado por F. Jouault e J. Bézivin na Universidade de Nantes - França. 122

123 Ferramentas MT4MDE e SAMT MMM conformsto source MM conformsto +left transformation MM conformsto conformsto target MM conformsto +right mapping MM conformsto mapping M transformation M 0..* +spec generatedfrom MMM - metametamodel MM - metamodel M - model Especificação de Correspondência e definição de transformação como modelos diferentes. 123

124 Ferramentas MT4MDE e SAMT: Metamodelo +property de correspondência Transf Element +name:estring +note: EString PropertyDefinition 0..* +proptype:estring +lowerrange:eint +uperrange:eint ( M1( s)/ Ma, CMa Mb / Mc) M2 Specification PropertyValue +id: EString +datavalue: EString +left +right 1..* 1..* +correspondences MetaModelHandler 1..* 0..* +nested +path:estring Correspondence +id: EString +isbidirectional:ebooleanobject +expr: oclexpression +owner Who is M c? 0..* +value ( s)/ M b left +refright right 1..* +typeconverterlr 0..1 Left Right TypeConverter +filter: oclexpression +expr: oclexpression typeconverterrl +handler +handler 0..* +nested <<EDataType>> 1..* ElementHandler oclexpression +handlers +path:estring +type:estring +enclosing 124

125 Ferramentas MT4MDE e SAMT: Arquitetura GUI MT4MDE(plug-in) Mapping metamodel (plug-ins) TDGenerator Kernel XMI importer/exporter ITFGenLanguage ITFMatch SAMT4MDE (plug-in) LeafSearcher Cross-kind RelationshipApplier Comparator pre-matching Matcher Internal Representation Search Engine Dictionary Metamodel Handler Validator Mapping model generator Match Quality Measurer post-matching 125

126 Ferramentas MT4MDE e SAMT LOPES, Denivaldo, HAMMOUDI, Slimane, ABDELOUAHAB, Zair, Schema Matching in the context of Model Driven Engineering: From Theory to Practice. Advances in Systems, Computing 126 Sciences and Software Engineering. : Springer, 2006.

127 Ferramentas MT4MDE e SAMT 127

128 Ferramentas MT4MDE e SAMT 128

129 Plano de apresentação Introdução Engenharia Dirigida por Modelos (MDE) Arquitetura Dirigida por Modelos (MDA) Uma abordagem para MDE Propondo metamodelos Correspondência entre metamodelos Definições de transformação Ferramentas Exemplos com UML, Serviços Web e documentos Hipermídia Conclusões 129

130 Exemplos com Serviços Web PIM Modelo Fonte (UML ou EDOC) Transformação modelo-à-modelo PSM Modelo Alvo (SW*) Modelo Alvo (J2EE**) Modelo Alvo (dotnet) Transformação modelo-à-código Code Código fonte (XML) «documento WSDL» «documento BPEL» Código fonte (Java), arquivos de implantação, etc. Código fonte (C#), arquivos de implantação, etc. 130

131 Exemplos com Serviços Web Travel Agency AirLines AirLinesService Customer TravelService CarHire travelagency RentingCarService ServiceTravelAg +findtravel(travelreq:travelreq):travellist +reservetravel(travelsel:travelinf):reserv Hotel +paytravel(payinf:payinf):ackpay +canceltravel(reservinf:reserv):ackcancel HotelService Bank BankService 131

132 Metamodelo de WSDL WSDLElement StartWithExtensionType input Fault +fault +name 0..* +input ParamType +name +output Exemplos com Serviços Web FaultType +name +input +output +output 0..* +fault 0..* Documentation Definition +_targetnamespace +name +output 0..1 BindingOperation 0..* +boperation OneWayOperation +import 0..* Import Types Part Message PortType Binding +binding Port Service Operation 0..1 RequestResponseOperation +requestresponse SolicitResponseOperation types 0..* +message 0..* +porttype 0..* +binding 0..* +service +part 0..* +type +port 0..* solicitresponse +message +message 0..* +operation 132

133 PIM PSM Code Exemplos com Serviços Web Especificação de Correspondência e definição de transformação Modelo Alvo (SW) Código fonte (XML) «documento WSDL» «documento BPEL» SW Serviços Web Modelo Fonte (UML ou EDOC) WSDL UML metamodel ModelElement Namespace Package ModeloAssociationEnd Alvo (J2EE) Class Interface Attribute Operation +specification P2D C2S O2O +method Código fonte Method (Java), M2Bo Parameter arquivos de implantação DataType Dt2T e configuração Mapping A2T WSDL metamodel transformação WSDLElement Documentation Type Modelo-à-modelo +types Part * +part Message +message 0..* Operation Modelo Alvo (dotnet) +operation0..* PortType Definition +type0..* +porttype 0..* +binding Binding 0..* +boperations BindingOperation Port +_targetnamespace Transformação +name modelo-à-código 0..* +port Código fonte +service (C#), Service 0..* arquivos de implantação Générée e configuração à partir de P2Part module UML2WSDL; create OUT : WSDL from IN : UML; rule C2S{ from c : UML!Class to s : WSDL!Service( name <- 'Service' + c.name, owner <- c.namespace, port <- pt ),*** } *** 133

134 134 UML metamodel WSDL metamodel Mapping WSDLElement Documentation Type Part Message Operation PortType Binding BindingOperation Port Service Definition +_targetnamespace +name +types types +part 0..* +message 0..* +operation 0..* +porttype 0..* +type +binding 0..* +boperations 0..* +port 0..* +service 0..* ModelElement Namespace Package AssociationEnd Class Interface Attribute Operation Method Parameter DataType +specification +method ModelElement Namespace Package AssociationEnd Class Interface Attribute Operation Method Parameter DataType +specification +method C2S P2Part O2O M2Bo Dt2T P2D A2T Me source target mapping element composition Class Service name:string Definition +owner Classifier ModelElement name:string Namespace +namespace 0..1 C2S n2n name name n2o namespace owner Service Exemplos com Serviços Web