Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuna Motta Alterado mais de 9 anos atrás
1
Odyssey-MDA: Uma Abordagem para a Transformação de Modelos de Componentes Natanael Maia Ana Paula Blois Cláudia Werner Grupo de Reutilização de Software Novembro/2005
2
Nov/2005Odyssey-MDA2 Roteiro Introdução Arquitetura Orientada por Modelos (MDA) Abordagem Odyssey-MDA Definição de plataformas e transformações Modelagem e marcação dos modelos Execução de transformações (exemplo EJB) Geração de código Ferramenta implementada Considerações Finais
3
Nov/2005Odyssey-MDA3 Introdução Desenvolvimento Baseado em Componentes Reaproveitamento de esforço (Reutilização) Ganho em qualidade e produtividade Tecnologias Surgem e evoluem muito rapidamente Necessidade de evolução pode restringir a reutilização dos componentes obsoletos
4
Nov/2005Odyssey-MDA4 Arquitetura Orientada por Modelos Abordagem que visa permitir: Especificação do software de forma independente de uma plataforma (tecnologia) em particular Realização de transformações para aplicação de conceitos de plataforma sobre a especificação inicial Separação entre especificação da funcionalidade e a sua implementação numa tecnologia qualquer Facilidade na obtenção da especificação do sistema na plataforma escolhida
5
Nov/2005Odyssey-MDA5 Arquitetura Orientada por Modelos Conceitos Plataforma: Conjunto de subsistemas e tecnologias que disponibilizam serviços através de interfaces e padrões de utilização PIM – Platform Independent Model PSM – Platform Specific Model Transformações Modelo ↔ Modelo Modelo ↔ Texto
6
Nov/2005Odyssey-MDA6 Abordagem Odyssey-MDA Definição de transformações bidirecionais Execução das transformações sobre modelos de componentes independentes de plataforma (PIM) e obtenção dos modelos específicos para uma plataforma em particular (PSM) Geração da implementação dos componentes na plataforma escolhida.
7
Nov/2005Odyssey-MDA7 Abordagem Odyssey-MDA Padrões utilizados: MOF – Linguagem abstrata que é usada para descrever outras linguagens JMI – Permite a geração de interfaces Java para manipulação de elementos de um modelo cujo meta-modelo é descrito em MOF XMI – Permite o intercâmbio (em XML) de modelos entre ferramentas (meta-modelo MOF)
8
Nov/2005Odyssey-MDA8 Abordagem Odyssey-MDA Definições de plataformas e transformações Modelagem dos componentes Marcação do modelo Geração da implementação Escolha da plataforma e execução de transformações EJB
9
Nov/2005Odyssey-MDA9 Plataformas e Transformações Plataformas: Conjunto de transformações Conjunto de templates para geração de código fonte Transformações: Execução bidirecional Atualização não destrutiva de modelos existentes São definidas através de: Mapeamentos Finders Mecanismos
10
Nov/2005Odyssey-MDA10 Mapeamentos Componente ↔ Componente Classe ↔ Componente Classe ↔ Interface etc. Atributo ↔ Atributo Operação ↔ Atributo etc. Classe ↔ Atributo Componente ↔ Operação Interface ↔ Atributo etc. FeatureMap ClassifierFeatureMap ClassifierMap * * *
11
Nov/2005Odyssey-MDA11 Finders Selecionam elementos a serem transformados Critérios de seleção de elementos: Nome → todas os elementos com nome “create” Tipo → todas as Classes, Interfaces Estereótipos → todos os elementos > Etiquetas → todos os elementos que tenham a etiqueta “persistent” com valor “true”.
12
Nov/2005Odyssey-MDA12 Transformam elementos do modelo de entrada em elementos do modelo de saída São bidirecionais (forward e reverse) Pré-definidos: Mecanismos ComponentComponent ComponentClass ComponentInterface ComponentAttribute ComponentOperation ClassClass ClassInterface ClassAttribute ClassOperation InterfaceInterface InterfaceAttribute InterfaceOperation AttributeAttribute AttributeOperation OperationOperation
13
Nov/2005Odyssey-MDA13 Modelagem dos componentes > Cliente ICliente + nome : String + codigo : String + endereco : String Cliente Componente PIM:
14
Nov/2005Odyssey-MDA14 Marcação do modelo > Cliente ICliente + nome : String + codigo : String + endereco : String > Cliente Componente PIM marcado:
15
Nov/2005Odyssey-MDA15 Execução da transformação > Cliente ICliente + nome : String + codigo : String + endereco : String > Cliente > ClienteBean -idCliente:String -nome:String -codigo:String -endereco:String #entityContext:EntityContext > ClienteBean +ejbCreate():ClientePK +ejbPostCreate():void +ejbActivate():void +ejbLoad():void +ejbPassivate():void +ejbRemove():void +ejbStore():void +getAll():... +setAll(...):void -idCliente:String ClientePK +hashCode():int +equals(other:Object):boolean +getAll():... +setAll(...):void ClienteLocal > +create():Cliente +findByPrimaryKey(...):... ClienteHome > +create():ClienteLocal +findByPrimaryKey(...):... ClienteLocalHome > +getAll():... +setAll(...):void Cliente > Mapeamento: ClassifierMap Mecanismo: ComponentComponent Finder: esquerda: tipo(Component) Finder: esquerda: estereótipo( >) Finder: direita: tipo(Component) Finder: direita: estereótipo( >)
16
Nov/2005Odyssey-MDA16 Execução da transformação > Cliente ICliente + nome : String + codigo : String + endereco : String > Cliente > ClienteBean -idCliente:String -nome:String -codigo:String -endereco:String #entityContext:EntityContext > ClienteBean +ejbCreate():ClientePK +ejbPostCreate():void +ejbActivate():void +ejbLoad():void +ejbPassivate():void +ejbRemove():void +ejbStore():void +getAll():... +setAll(...):void -idCliente:String ClientePK +hashCode():int +equals(other:Object):boolean +getAll():... +setAll(...):void ClienteLocal > +create():Cliente +findByPrimaryKey(...):... ClienteHome > +create():ClienteLocal +findByPrimaryKey(...):... ClienteLocalHome > +getAll():... +setAll(...):void Cliente > Mapeamento: ClassifierMap Mecanismo: ClassClass Finder: esquerda: tipo(Class) Finder: esquerda: estereótipo( >) Finder: direita: tipo(Class) Finder: direita: estereótipo( >)
17
Nov/2005Odyssey-MDA17 Execução da transformação > Cliente ICliente + nome : String + codigo : String + endereco : String > Cliente > ClienteBean -idCliente:String -nome:String -codigo:String -endereco:String #entityContext:EntityContext > ClienteBean +ejbCreate():ClientePK +ejbPostCreate():void +ejbActivate():void +ejbLoad():void +ejbPassivate():void +ejbRemove():void +ejbStore():void +getAll():... +setAll(...):void -idCliente:String ClientePK +hashCode():int +equals(other:Object):boolean +getAll():... +setAll(...):void ClienteLocal > +create():Cliente +findByPrimaryKey(...):... ClienteHome > +create():ClienteLocal +findByPrimaryKey(...):... ClienteLocalHome > +getAll():... +setAll(...):void Cliente > Mapeamento: FeatureMap Mecanismo: AttributeAttribute Finder: esquerda: tipo(Attribute) Finder: direita: tipo(Attribute)
18
Nov/2005Odyssey-MDA18 Execução da transformação > Cliente + nome : String + codigo : String + endereco : String + cidade : String > Cliente ICliente > ClienteBean -idCliente:String -nome:String -codigo:String -endereco:String -numeroCartao:String #entityContext:EntityContext > ClienteBean +ejbCreate():ClientePK +ejbPostCreate():void +ejbActivate():void +ejbLoad():void +ejbPassivate():void +ejbRemove():void +ejbStore():void +getAll():... +setAll(...):void -idCliente:String ClientePK +hashCode():int +equals(other:Object):boolean +getAll():... +setAll(...):void ClienteLocal > +create():Cliente +findByPrimaryKey(...):... ClienteHome > +create():ClienteLocal +findByPrimaryKey(...):... ClienteLocalHome > +getAll():... +setAll(...):void Cliente > ICliente Execução reversa (não destrutiva) > Cliente + nome : String + codigo : String + endereco : String + cidade : String + numeroCartao : > Cliente
19
Nov/2005Odyssey-MDA19 Geração da Implementação > ClienteBean -idCliente:String -nome:String -codigo:String -endereco:String #entityContext:EntityContext > ClienteBean +ejbCreate():ClientePK +ejbPostCreate():void +ejbActivate():void +ejbLoad():void +ejbPassivate():void +ejbRemove():void +ejbStore():void +getAll():... +setAll(...):void -idCliente:String ClientePK +hashCode():int +equals(other:Object):boolean +getAll():... +setAll(...):void ClienteLocal > +create():Cliente +findByPrimaryKey(...):... ClienteHome > +create():ClienteLocal +findByPrimaryKey(...):... ClienteLocalHome > +getAll():... +setAll(...):void Cliente > Código fonte (JAVA) Templates
20
Nov/2005Odyssey-MDA20 Ferramenta Odyssey-MDA Framework para especificação e execução de transformações sobre modelos UML PIM ↔ PIM, PIM ↔ PSM, PSM ↔ PSM Ferramenta Case Ambiente de Reutilização XMI Geração De Código Engenharia Reversa XMI Odyssey-MDA Especificações de Mapeamentos (XML) Plug-ins (Java/JMI)
21
Nov/2005Odyssey-MDA21 Ferramenta Odyssey-MDA Implementação dos mecanismos (Java/JMI): Pré-definidos (built-ins) Definidos pelo usuário (plug-ins) Especificação dos mapeamentos (XML): Seleção de elementos (finders) Configuração dos mecanismos
22
Nov/2005Odyssey-MDA22 Ferramenta Odyssey-MDA Stand-alone
23
Nov/2005Odyssey-MDA23 Ferramenta Odyssey-MDA Odyssey-plug-in
24
Nov/2005Odyssey-MDA24 Contribuições Independência de ferramenta CASE Transformações bidirecionais entre modelos Extensão via plug-ins Ferramenta de transformações de modelos e geração de código (Odyssey-MDA) Trabalhos futuros Utilização de outros meta-modelos baseados no MOF Estudo de caso para avaliar a utilização da ferramenta Considerações finais
25
Odyssey-MDA: Uma Abordagem para a Transformação de Modelos de Componentes {ntmaia, anablois, werner}@cos.ufrj.br Grupo de Reutilização de Software Novembro/2005
26
Nov/2005Odyssey-MDA26 Properties Permitem a configuração dos mecanismos utilizados nas transformações (built-ins/plug-ins)
27
Nov/2005Odyssey-MDA27 Relacionamentos A geração de relacionamentos entre os elementos gerados na transformação é configurada na especificação declarativa entityRemoteInterface)" type="Dependency" direction="LEFT_TO_RIGHT">
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.