Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas...

32
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques [email protected] Seminário LES – 7 de abril de 2006 www.les.inf.puc-rio.br www.teccomm.les.inf.puc-rio.br

Transcript of Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas...

Page 1: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Um Processo Baseado em MDA

para a Especialização de

Mecanismos de Persistência

Fabio Seixas [email protected]

Seminário LES – 7 de abril de 2006

www.les.inf.puc-rio.br www.teccomm.les.inf.puc-rio.br

Page 2: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Agenda

• Motivação;

• Objetivo;

• Tecnologias;

• Trabalhos Relacionados;

• Processo;

• Ferramenta de Apoio;

• Casos de Estudo;

• Trabalhos Futuros;

• Bibliografia.

Page 3: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Motivação

• Constantes mudanças nos requisitos funcionais e não-funcionais do domínio das aplicações, resultam em possíveis mudanças nos sistemas;

• Sistemas refeitos ou parcialmente refeitos, ao invés de adaptados;

• Grande parte do trabalho manual também necessitará ser refeito;

• O MDA (Model Driven Architecture) foi criado com o intuito de resolver esse tipo de problema. Os sistemas são desenvolvidos de maneira a esperar possíveis mudanças;

Page 4: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Objetivo

• Criação de um processo cujo objetivo será ajudar na adaptação dos sistemas a essas possíveis mudanças;

• Automatizar algumas etapas do desenvolvimento, normalmente feitas de forma manual;

• As etapas do processo proposto estão diretamente ligadas, as etapas abordadas pelo MDA;

• O processo foi desenvolvido para mapear mecanismos de persistência, ficando as demais camadas para trabalhos futuros.

Page 5: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

OMG Model Driven Architecture (MDA)

•Criação de um modelo independentemente de plataforma (PIM);

•“Configuração” do modelo PIM através de marcações;

•Transformação do modelo PIM em um modelo específico para uma plataforma (PSM).

PIM – Platform Independent Model

PSM – Platform Specifc Model

Marcações

Page 6: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

RDL (Reuse Description Language)

• A linguagem RDL foi criada para mapear os diversos casos possíveis à instanciação de um Framework;

• Ela funciona na forma de scripts contendo regras para a manipulação de modelos orientados a objetos (criação de classes, atributos, métodos, etc…);

• Através de uma máquina virtual RDL é possível gerar o resultado desses scripts no formato de tags XMI.

Page 7: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Por que utilizar RDL?

• É uma linguagem clara e de fácil entendimento;

• As transformações utilizadas no processo são bem definidas;

• Elas ocorrem a nível de modelos (alteração de classes, atributos, métodos, etc…);

• A forma de obter e alterar essas informações nos modelos é feita através de tags XMI;

• Utilizando uma máquina virtual RDL é possível transformar as regras da linguagem RDL em tags XMI.

Page 8: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Mecanismos de Persistência

• O processo proposto tem como objetivo adaptar mecanismos de persistência;

• Podendo ser os mesmos, Frameworks de Persistência. (Hibernate, Castor, entre outros);

• E Patterns. (DAO, Facade, entre outros);

Page 9: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Base de Conhecimento

• A base de conhecimento é um repositório que possui algumas informações necessárias para o mapeamento das transformações entre os modelos.

• Ela é composta por:– Camadas: Divisões lógicas dentro do modelo. As camadas são as

responsáveis por mapear as configurações do modelo.

– Tags: Identificam as tecnologias disponíveis para cada Camada.

– Arquivos RDL: Contêm as regras de transformações de cada Tag, ou seja, o que será adaptado ao modelo quando uma Tag for escolhida.

Page 10: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Base de Conhecimento

Persistência, Interface,

Negócio, etc...Framework Hibernate,

Pattern DAO, JSP, etc...

Hibernate.rdl, DAO.rdl, JSP.rdl,

etc...

Page 11: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Trabalhos Relacionados

• Odyssey-MDA: Ferramenta para execução de transformações sobre modelos UML;

• UML Model Transformation Tool (UMT): Ferramenta que oferece suporte a transformações de modelos e geração de código, baseados em modelos UML no formato XMI.

Page 12: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Odyssey x UMT x Processo Proposto

• Todas efetuam transformações no modelo PIM, com o intuito de gerar modelos PSM;

• Todas trabalham com arquivos no formato XMI, sendo que a UMT trabalha internamente com o formato XMI Light;

• A ferramenta Odyssey armazena as transformações no formato XML, a UMT utiliza o formato XSLT, e o Processo Proposto utiliza o formato RDL.

• Apesar do XML ser o formato mais conhecido, a linguagem RDL é muito mais fácil de se entender e trabalhar, pois suas regras estão em linguagem natural;

• A ferramenta Odyssey e a UMT utilizam marcações de baixo nível, enquanto o Processo Proposto utiliza marcações de alto nível.

Page 13: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Cria o Modelo PIM

Page 14: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Exemplo de um Modelo PIM

Page 15: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Cria o Modelo PIM

Adiciona as Marcações

Page 16: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Modelo PIM Configurado

Classes Persistentes

Page 17: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Cria o Modelo PIM

Adiciona as Marcações

Exporta oModelo PIM

Page 18: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Modelo PIM Exportado Como um Arquivo XMI

<UML:Class xmi.id = 'I1bc2e06m1060e5e7e0cmm7f51' name = 'Comprador' visibility = 'public‘ isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false‘ isActive = 'false'>

<UML:ModelElement.stereotype> <UML:Stereotype xmi.idref = 'I1bc2e06m1060e5e7e0cmm7dbd'/> </UML:ModelElement.stereotype> <UML:Classifier.feature> <UML:Attribute xmi.id = 'I1bc2e06m1060e5e7e0cmm7f04' name = 'nome' visibility = 'private‘ isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> <UML:StructuralFeature.type> <UML:Class xmi.idref = 'I1bc2e06m1060e5e7e0cmm7f16'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = 'I1bc2e06m1060e5e7e0cmm7e77' name = 'email' visibility = 'private‘ isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> <UML:StructuralFeature.type> <UML:Class xmi.idref = 'I1bc2e06m1060e5e7e0cmm7f16'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature></UML:Class>

<UML:Stereotype xmi.id = 'I1bc2e06m1060e5e7e0cmm7dbd' name = 'Persistencia‘ visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false‘ isAbstract = 'false'>

<UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass></UML:Stereotype>

Page 19: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Cria o Modelo PIM

Adiciona as Marcações

Exporta oModelo PIM

Importa oModelo PIM

Ferramenta

Page 20: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Ferramenta Importa o Modelo PIM

• A ferramenta importa o modelo PIM em forma de um arquivo XMI;

• Ela irá armazenar algumas informações do mesmo, como:– Esteriótipos;– Nome;– Atributos;– Métodos;– Relacionamentos;– Heranças.

Page 21: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Transformação

Cria o Modelo PIM

Adiciona as Marcações

Exporta oModelo PIM

Importa oModelo PIM

Ferramenta

RespostasPerguntas

Page 22: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Transformação

• É neste ponto que a ferramenta começa a interação com o desenvolvedor;

• O mesmo deve informar qual o Framework de Persistência ele deseja utilizar;

• Quais Padrões devem ser adicionados;

• Caso necessário, ele deverá informar os nomes de novas classes;

• Entre outras perguntas que podem variar de acordo com as escolhas feitas pelo mesmo.

Page 23: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

COOBOOK FachadaPersistencia RECIPE main classeFachadaPersistencia = NEW_CLASS (FachadaPersistencia); NEW_METHOD (classeFachadaPersistencia, abrirConexaoBanco); NEW_METHOD (classeFachadaPersistencia, fecharConexaoBanco);

LOOP nomeClassePersistente = ?; NEW_METHOD (classeFachadaPersistencia, “selecionar” +

nomeClassePersistente); NEW_METHOD (classeFachadaPersistencia, “inserir” + nomeClassePersistente); NEW_METHOD (classeFachadaPersistencia, “alterar” + nomeClassePersistente); NEW_METHOD (classeFachadaPersistencia, “deletar” + nomeClassePersistente); END_LOOP; END_RECIPE;END_COOKBOOK

Exemplo de um Arquivo RDL

?: Significa que a informação será passada durante a execução do arquivo. Caso a ferramenta não passe essa informação para a máquina virtual RDL, a mesma irá pedir para que o desenvolvedor informe.

Page 24: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Ferramenta

Base de Conhecimento

Arquivo(s) RDL

Máquina Virtual RDL

Camada(s) Tag(s)

Tag(s)

Arquivo(s) RDL, Arquivo XMI

Desenvolvedor

Informa os dados necessários

Informa nomes para novas classes

Arquivo XMI Atualizado

Page 25: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Transformação

Cria o Modelo PIM

Adiciona as Marcações

Exporta oModelo PIM

Importa oModelo PIM

Exporta oModelo PSM

Ferramenta

RespostasPerguntas

Page 26: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Modelo PSM Exportado Como um Arquivo XMI

• Arquivo XMI com novas classes, atributos e outras características relacionadas as configurações feitas pelo desenvolvedor;

• Esse modelo não contêm mais as configurações antes adicionadas pelo desenvolvedor.

Page 27: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Passos do Processo

Transformação

Cria o Modelo PIM

Adiciona as Marcações

Exporta oModelo PIM

Importa oModelo PIM

Exporta oModelo PSM

Importa oModelo PSM

Ferramenta

RespostasPerguntas

Modelo PSMGerado!

Page 28: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

PSM Gerado

Classe gerada pelo arquivo RDL correspondente a Fachada de Persistência

Classes geradas pelo arquivo RDL correspondente ao Framework Hibernate

Page 29: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Caso de Estudo 1

• Sistema de Sincronização dos Dados Acadêmicos do SAU e do AulaNet: Sincroniza a base de dados do AulaNet com os dados acadêmicos da base de dados do SAU (Sistema de Administração Universitária).

• O que foi feito? O sistema foi desenvolvimento utilizando o processo proposto.

• Resultado: Comparação do modelo PSM gerado pelo processo, com o modelo final do sistema.

Page 30: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Caso de Estudo 2

• Leilão Virtual: Site de leilão virtual, contendo venda e compra de produtos, sistema de lances automáticos, controle de usuários.

• O que foi feito? Foi adaptado ao sistema um Mecanismo de Persistência, nesse caso um Framework de Persistência.

• Resultado: Mostra os passos necessários para se adaptar, através do processo proposto, um mecanismo de persistência em um sistema existente.

Page 31: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Trabalhos Futuros

• Ampliação do foco do processo para outras camadas (interface, negócio, entre outras);

• Adição de uma nova etapa no processo, responsável pela extração de modelos PIM de um modelo já existente;

• Criação de um módulo gráfico para a criação e edição das regras de transformações.

Page 32: Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 7 de abril de.

Laboratório de Engenharia de Software – PUC-Rio

Dúvidas, sugestões e críticas

?