1 / 29

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 Marques fabiom@inf.puc-rio.br 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;

bly
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 de 2005 www.les.inf.puc-rio.br www.teccomm.les.inf.puc-rio.br

  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 Modelo PIM 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 = '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> Laboratório de Engenharia de Software – PUC-Rio

  14. Passos da 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 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. 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 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 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 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="email"/> </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">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> 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). 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. Laboratório de Engenharia de Software – PUC-Rio

More Related