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

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

Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 2 de setembro.

Apresentações semelhantes


Apresentação em tema: "Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 2 de setembro."— Transcrição da apresentação:

1 Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência
Fabio Seixas Marques Seminário LES – 2 de setembro de 2005

2 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. Laboratório de Engenharia de Software – PUC-Rio

3 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. Laboratório de Engenharia de Software – PUC-Rio

4 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. Laboratório de Engenharia de Software – PUC-Rio

5 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 Laboratório de Engenharia de Software – PUC-Rio

6 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. Laboratório de Engenharia de Software – PUC-Rio

7 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. Laboratório de Engenharia de Software – PUC-Rio

8 Passos da Ferramenta Cria o Modelo PIM
Laboratório de Engenharia de Software – PUC-Rio

9 Exemplo de um Modelo PIM
Laboratório de Engenharia de Software – PUC-Rio

10 Passos da Ferramenta Cria o Modelo PIM Adiciona Marcações
Laboratório de Engenharia de Software – PUC-Rio

11 Modelo PIM Configurado
Classes Persistentes Laboratório de Engenharia de Software – PUC-Rio

12 Passos da Ferramenta Cria o Modelo PIM Adiciona Marcações Exporta
Laboratório de Engenharia de Software – PUC-Rio

13 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 = ' ' visibility = 'private‘ </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> Laboratório de Engenharia de Software – PUC-Rio

14 Passos da Ferramenta Ferramenta Cria o Modelo PIM Adiciona Marcações
Exporta Modelo PIM Importa Modelo PIM Ferramenta Laboratório de Engenharia de Software – PUC-Rio

15 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. Laboratório de Engenharia de Software – PUC-Rio

16 Passos da Ferramenta Ferramenta Cria o Modelo PIM Adiciona Marcações
Exporta Modelo PIM Perguntas Respostas Importa Modelo PIM Transformação Ferramenta Laboratório de Engenharia de Software – PUC-Rio

17 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. Laboratório de Engenharia de Software – PUC-Rio

18 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 , admin, admin Deseja gerar o XML de mapeamento tabela-classe? Deseja incluir uma Fachada de Persistência? Laboratório de Engenharia de Software – PUC-Rio

19 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. Laboratório de Engenharia de Software – PUC-Rio

20 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 Laboratório de Engenharia de Software – PUC-Rio

21 Passos da Ferramenta Ferramenta Cria o Modelo PIM Adiciona Marcações
Exporta Modelo PIM Perguntas Respostas Importa Modelo PIM Exporta Modelo PSM Transformação Ferramenta Laboratório de Engenharia de Software – PUC-Rio

22 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. Laboratório de Engenharia de Software – PUC-Rio

23 Passos da Ferramenta Ferramenta Modelo PSM Gerado! Cria o Modelo PIM
Adiciona Marcações Importa Modelo PSM Exporta Modelo PIM Perguntas Respostas Importa Modelo PIM Exporta Modelo PSM Transformação Ferramenta Laboratório de Engenharia de Software – PUC-Rio

24 PSM Gerado Classe gerada pelo arquivo RDL correspondente a Fachada Persistência Classes geradas pelo arquivo RDL correspondente ao Framework Hibernate Laboratório de Engenharia de Software – PUC-Rio

25 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=" "/> </class> </hibernate-mapping> Laboratório de Engenharia de Software – PUC-Rio

26 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"> </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> Laboratório de Engenharia de Software – PUC-Rio

27 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. Laboratório de Engenharia de Software – PUC-Rio

28 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. Laboratório de Engenharia de Software – PUC-Rio

29 Bibliografia FLORE, F. MDA: The proof is in automating transformations between models (White Paper) 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 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. Laboratório de Engenharia de Software – PUC-Rio


Carregar ppt "Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques fabiom@inf.puc-rio.br Seminário LES – 2 de setembro."

Apresentações semelhantes


Anúncios Google