170 likes | 291 Views
Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML. Natanael Maia Ana Paula Blois Cláudia Werner Grupo de Reutilização de Software Outubro/2005. Roteiro. Arquitetura Orientada por Modelos (MDA) Odyssey-MDA Transformações Mapeamentos Finders Mecanismos Extensão Utilização
E N D
Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML Natanael Maia Ana Paula Blois Cláudia Werner Grupo de Reutilização de Software Outubro/2005
Roteiro • Arquitetura Orientada por Modelos (MDA) • Odyssey-MDA • Transformações • Mapeamentos • Finders • Mecanismos • Extensão • Utilização • Considerações Finais Odyssey-MDA
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 Odyssey-MDA
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 Odyssey-MDA
Odyssey-MDA • Framework para especificação e execução de transformações sobre modelos UML • PIM ↔ PIM , PIM ↔ PSM , PSM ↔ PSM • 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) Odyssey-MDA
Odyssey-MDA Odyssey-MDA
Transformações • Transformação de modelos • Especificação declarativa: • Mapeamentos • Seleção de elementos: finders • Configuração dos mecanismos: properties • Configuração dos relacionamentos entre elementos • Parte Imperativa: mecanismos • Pré-definidos (built-ins) • Definidos pelo usuário (plug-ins) Odyssey-MDA
Mapeamentos Classe → Classe Classe → Interface etc. Atributo → Atributo Operação → Atributo etc. Classe → Atributo Operação → Classe etc. Odyssey-MDA
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 <<entity>> • Etiquetas → todos os elementos que tenham a etiqueta “persistent” com valor “true”. Odyssey-MDA
Mecanismos • Transformam elementos do modelo de entrada em elementos do modelo de saída • São bidirecionais (forward e reverse) • Pré-definidos (built-ins): • Novos mecanismos (plug-ins) • ClassClass • ClassInterface • ClassAttribute • ClassOperation • InterfaceInterface • InterfaceAttribute • InterfaceOperation • AttributeAttribute • AttributeOperation • OperationOperation • RelationshipGenerator • etc. Odyssey-MDA
Extensão • O usuário pode definir seus próprios mecanismos e incluir na ferramenta (plug-in) Odyssey-MDA
Utilização • Stand-alone Odyssey-MDA
Utilização • Odyssey-plug-in Odyssey-MDA
Considerações finais • Geração de código (Odyssey-MDA-codegen) • Engenharia reversa (ARES) • Trabalhos futuros • Utilização de outros meta-modelos baseados no MOF • Estudo de caso para avaliar a utilização da ferramenta Odyssey-MDA
Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML Natanael Maia ntmaia@cos.ufrj.br Grupo de Reutilização de Software Outubro/2005
Properties • Permitem a configuração dos mecanismos utilizados nas transformações (built-ins/plug-ins) <property name="stereotype" value="EntityBean" direction="forward" /> <property name="nameTransformation" direction="forward" value="#CLASSIFIER_NAME#Bean" /> <property name="nameTransformation" direction="reverse"> <property name="input" value="#CLASSIFIER_NAME#" /> <property name="regex" value="(.*)Bean$" /> <property name="subst" value="$1" /> </property> Odyssey-MDA
Relacionamentos • A geração de relacionamentos entre os elementos gerados na transformação é configurada na especificação declarativa <relationship name="Dependency (entityBean -> entityRemoteInterface)" type="Dependency" direction="LEFT_TO_RIGHT"> <element id="entityRemoteInterface" /> <element id="entityBean" /> </relationship> Odyssey-MDA