29
Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques [email protected] Seminário LES – 2 de setembro de 2005 www.les.inf.puc-rio.br www.teccomm.les.inf.puc-rio.br

Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

  • Upload
    bly

  • View
    20

  • Download
    0

Embed Size (px)

DESCRIPTION

Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência. Fabio Seixas Marques [email protected] Seminário LES – 2 de setembro de 2005. www.les.inf.puc-rio.br www.teccomm.les.inf.puc-rio.br. Sumário. Motivação; Objetivo; - PowerPoint PPT Presentation

Citation preview

Page 1: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Uma Ferramenta Baseada em

MDA para a Especialização de

Mecanismos de Persistência

Fabio Seixas [email protected]

Seminário LES – 2 de setembro de 2005

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

Page 2: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Sumário

• Motivação;

• Objetivo;

• OMG Model Driven Architecture (MDA);

• RDL (Reuse Description Language);

• Passos da Ferramenta;

• O que já foi feito;

• O que falta fazer;

• Bibliografia.

Page 3: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Motivação

• Os sistemas ainda são desenvolvidos com o foco em somente uma linguagem de programação, uma arquitetura, um framework, entre outras tecnologias;

• E se algum desses fatores mudarem?

• Normalmente o sistema é parcialmente refeito, pois a modelagem está “amarrada” a essas tecnologias;

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

• Ao invés de um modelo preso a tecnologias, é feito um modelo de mais alto nível, para caso alguma tecnologia seja alterada, esse modelo não seja afetado.

Page 4: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Objetivo

• Criação de uma ferramenta que faça a transformação de um modelo independente de plataforma (PIM), em um modelo específico para uma plataforma (PSM), sendo a parte de persistência o foco da ferramenta;

• O desenvolvedor informa através de marcações no modelo PIM, onde e qual o tipo de transformações que devem ocorrer;

• Durante a transformação a ferramenta efetua perguntas, de modo a criar um modelo específico para o desenvolvedor.

Page 5: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

OMG Model Driven Architecture (MDA)

•Criação de um modelo independentemente de plataforma;

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

•Transformação do modelo anterior em um modelo baseado em plataforma.

PIM – Platform Independent Model

PSM – Platform Specifc Model

Page 6: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

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…);

• Existe uma máquina virtual que gera as regras dos arquivos RDL na forma de tags XMI.

Page 7: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Por que utilizar RDL?

• As transformações da nossa ferramenta são bem definidas;

• A forma de obter e alterar informações dos modelos é feita através de arquivos XMI;

• Então RDL se encaixa bem no nosso contexto, pois com ela podemos guardar nossas transformações em forma de regras e utilizar uma máquina virtual para gerar essas regras em tags XMI.

Page 8: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Cria o Modelo PIM

Page 9: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Exemplo de um Modelo PIM

Page 10: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Cria o Modelo PIM

Adiciona Marcações

Page 11: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Modelo PIM Configurado

Classes Persistentes

Page 12: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Cria o Modelo PIM

Adiciona Marcações

ExportaModelo PIM

Page 13: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

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 14: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Cria o Modelo PIM

Adiciona Marcações

ExportaModelo PIM

ImportaModelo PIM

Ferramenta

Page 15: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

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 pode vir a retirar algumas informações do arquivo como:– Esteriótipos;– Nome;– Atributos;– Métodos;– Relacionamentos;– Herança.

Page 16: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Transformação

Cria o Modelo PIM

Adiciona Marcações

ExportaModelo PIM

ImportaModelo PIM

Ferramenta

RespostasPerguntas

Page 17: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

O Momento da Transformação

• É neste ponto que a ferramenta começa o trabalho de perguntas e respostas ao desenvolvedor;

• A primeira pergunta é sempre sobre a escolha da plataforma;

• Após a escolha da plataforma, começam as perguntas específicas a plataforma escolhida, como:– Que tipo de Framework de Persistência o mesmo deseja utilizar;– Dependendo do Framework de Persistência escolhido, a ferramenta

pode perguntar ao desenvolvedor se o mesmo deseja que sejam gerados os arquivos XML de configuração do banco e de mapeamento tabela-classe;

– O desenvolvedor pode escolher entre padrões listados pela ferramenta;– Entre outras perguntas menos ou mais específicas.

• As perguntas são formuladas de acordo com as respostas do desenvolvedor.

Page 18: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Exemplo de perguntas e respostas

• Qual a plataforma desejada? (Java, .NET)– R. Java

• Qual o Framework de Persistência a ser utilizado? (Hibernate, Castor, outros específicos para a plataforma Java)– R. Hibernate

• Deseja gerar o XML de configuração do banco?– R. Sim

• Qual o endereço, usuário e senha do banco?– R. 10.0.0.1, admin, admin

• Deseja gerar o XML de mapeamento tabela-classe?– R. Sim

• Deseja incluir uma Fachada de Persistência?– R. Sim

Page 19: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Analisando e mapeando as respostas do desenvolvedor

• Framework de Persistência Hibernate– Necessita saber as classes persistentes para configurar o arquivo RDL

correspondente a transformação para o Framework Hibernate.

• XML de configuração do banco Hibernate– Insere no arquivo as informações do banco informadas pelo

desenvolvedor, do contrário as deixa em branco.

• XML de mapeamento tabela-classe do banco Hibernate– Necessita saber as classes persistentes e seus atributos para construir

esse arquivo XML.

• Fachada de Persistência– Necessita saber as classes persistentes para configurar o arquivo RDL

correspondente a inclusão da Fachada de Persistência.

Page 20: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Exemplo de um Arquivo RDL

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

Page 21: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Transformação

Cria o Modelo PIM

Adiciona Marcações

ExportaModelo PIM

ImportaModelo PIM

ExportaModelo PSM

Ferramenta

RespostasPerguntas

Page 22: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

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 23: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Passos da Ferramenta

Transformação

Cria o Modelo PIM

Adiciona Marcações

ExportaModelo PIM

ImportaModelo PIM

ExportaModelo PSM

ImportaModelo PSM

Ferramenta

RespostasPerguntas

Modelo PSMGerado!

Page 24: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

PSM Gerado

Classe gerada pelo arquivo RDL correspondente a Fachada Persistência

Classes geradas pelo arquivo RDL correspondente ao Framework Hibernate

Page 25: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

XMLs Gerados pela Ferramenta (Tabela-Classe)

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate

Mapping DTD 3.0//EN“ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping> <class name="Comprador" table="Comprador"> <property name="nome"/> <property name="email"/> </class></hibernate-mapping>

Page 26: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

XMLs Gerados pela Ferramenta (Configuração)

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">10.0.0.1</property> <property name="connection.username">admin</property> <property name="connection.password">admin</property>

<!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property>

<!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

<!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property>

<!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create</property>

<mapping resource="Event.hbm.xml"/> </session-factory></hibernate-configuration>

Page 27: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

O que já foi feito

• Definição dos Frameworks de Persistência suportados pela ferramenta;

• Extração de dados do arquivo XMI;

• Geração de arquivos XML (configuração de banco, tabela-classe, etc…);

• Comunicação entre a ferramenta e a máquina virtual RDL;

• Início do levantamento das perguntas e respostas feitas ao usúario;

• Em relação a parte escrita da dissertação a mesma está em torno de 60% pronta.

Page 28: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

O que falta fazer

• Fechar as perguntas e respostas feitas ao desenvolvedor;

• Terminar de colocar as regras de transformações em scripts RDL;

• Implementar a comunicação entre a ferramenta e o desenvolvedor;

• Terminar a parte escrita da dissertação.

Page 29: Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência

Laboratório de Engenharia de Software – PUC-Rio

Bibliografia

• FLORE, F. MDA: The proof is in automating transformations between models (White Paper). 2003.

• KLEPPE, A.; WARMER, J.; BAST, W. MDA Explained: The Model Driven Architecture: Practice and Promisse. Addison-Wesley Professional, 25 de Abril de 2003.

• MILLER, J.; MUKERJI, J. MDA Guide. Version 1.0.1. 2003. • Toacy C. Oliveira, Paulo S. C. Alencar, Carlos J.P. de Lucena, Donald

D. Cowan. RDL: A Software Process Language for Framework Instantiation Representation.

• BROWN, A. W. Large-Scale, Component-Based Development. Prentice Hall, 2000.

• GREENFIELD, J.; SHORT, K.; COOK, Steve; KENT, S. Software Factories. Wiley, 2004.