A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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">


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google