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.

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Plug-ins Orientado a Testes
Advertisements

Introdução a Engenharia de Software de Sistemas Multi-Agentes
Engenharia de Software
Framework para desenvolvimento web
Raphael Gatti Thomás Bryan
Iniciando na plataforma Eclipse
Fábio Shiguemi Suzuki Jessica Hofer Lopez Mirella Camilla C. O. Braga
Projeto 1.
Uma Ferramenta Baseada em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 28 de outubro.
Projeto de Sistemas de Software
Metodologias Equipe do Curso de ES para SMA {lucena, furtado, choren,
Metodologias Equipe do Curso de ES para SMA
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Componentes e Frameworks
Component-Based Frameworks for E-Commerce Agnaldo Kiyoshi Noda.
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Ferramentas CASE ERwin
Tutorial I: Criando a interface de uma aplicação em Java
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
WebWork e JSP Keven andrade
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Grupo 5: Fernando Lourenço Pinho Costa Rafael de Souza Santos
Linguagem Técnica II Testes Automatizados Aula 04 Prof
Projetar Serviços Vítor Braga –
Rodrigo Cristiano Silva
Universidade Federal de Lavras - UFLA
Gerenciamento de Configuração
Projeto de Sistemas de Software
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Rodrigo Cristiano Silva
JSP / Servlets Avançado
Engenharia de Software
1.
Introdução a Desenvolvimento de Sistemas
Desenvolvimento Rápido de Aplicação (RAD)
APLICANDO O PROCESSO DIRIGIDO POR RESPONSABILIDADES PARA A CRIAÇÃO DE UM SUBFRAMEWORK PARA VALIDAÇÃO SINTÁTICA DE FÓRMULAS Autores: Rafael Hornung Simone.
Introdução a Desenvolvimento de Sistemas
Software engineering, the software process and their support M.M. Lehman Apresentadora: Tarciana Dias da Silva.
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Banco de Dados Aplicado ao Desenvolvimento de Software
Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra.
1 Fábrica de Software com UML Toacy C. Oliveira. 2 Agenda Motivação Contexto UML/MDA Exemplo Prático UML Profile Definições Exemplo Conclusão.
+ Java Básico Aula 1 por Flávio Juvenal. + Histórico Green Project (1991) Desenvolver plataforma para eletrodomésticos inteligentes Tentaram usar C++
Laboratório de Programação
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
Odyssey-MDA: Uma Abordagem para a Transformação de Modelos de Componentes Natanael Maia Ana Paula Blois Cláudia Werner Grupo de Reutilização de Software.
Ferramentas de Suporte a MDD: Um Quadro Comparativo
Desenvolvimento de Software Dirigido a Modelos
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.
O que é Domain Driven Design Especificação Design Refactor Testes Quanto tempo isso leva?
MDA – Model Driven Architecture Jean Elder – RARCS (2013-1)
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
LINQ e Entity Framework
Modelo de Análise e Projeto
Hibernate Universidade Federal do Rio Grande do Sul Instituto de Informática Web e Sistemas de Informação (2004/2005) Objetos Distribuídos Prof. Dr. Cláudio.
WebPTM Web Project and Time Manager Autor: Daniel Nicoletti Orientador: Prof. Dr. Carlos Miguel Tobar Toledo Co-Orientador: Murilo Woigt Miranda PONTIFÍCIA.
Engenharia de Software
Aplicando Coleção Welie Utilizando Arquivo de Texto para o Desenvolvimento e Atualização de um Sítio Interativo para Web Rodolfo A. Silva, Fernando H.
MDA na Prática Flávia Durans Pitta Marinho
OCLE Object Constraint Language Environment Fábio Moura CIn-UFPE.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
Processo de Desenvolvimento baseado em MDA
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Projeto de Arquitetura de Software
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
IF718 Análise e Projeto de Sistemas Augusto Sampaio - acas Vitor Braga - vtb (Estágio docência) Diogo Peixoto - dcp (Monitor) Parte do material.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Persistência de dados e padrão DAO
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

Passos da Ferramenta Cria o Modelo PIM Adiciona Marcações Exporta 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‘ </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

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

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

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

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

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? Deseja incluir uma Fachada 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. 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 Laboratório de Engenharia de Software – PUC-Rio

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

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

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

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

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

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

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

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

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