1/26/2009. Metamodelo MMA. Metamodelo MMB. Modelo A2. Modelo A. Modelo B. Transformação M2M

Documentos relacionados
Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG

CELINE LIP: UM FRAMEWORK QUE UTILIZA O MODELO IMS LIP EM APLICAÇÕES WEB JEE. Marcelo Gonzaga. Orientador: Prof. Adilson Vahldick

Linguagens de Domínio Específico

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

Técnicas para Reutilização de Software

Análise e Projeto de Sistemas (Cont.) Profª Rafaella Matos

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

ClassGenerator - Desenvolvendo aplicações em PHP com qualidade e eficiência.

Polimorfismo. O que é polimorfismo?

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

O CMS JOOMLA! UM GUIA PARA INICIANTES

ALUNO: RONI FABIO BANASZEWSKI

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

3 Tecnologias Relacionadas

9 Conclusão e trabalhos futuros

GERAÇÃO DE ARQUIVOS DE SCRIPT EM PHP. Acadêmico: Leonardo Sommariva Orientador: Alexander Roberto Valdameri

Model Driven Development (MDD)

Linguagens de Domínio Específico

Sérgio Koch Van-Dall

UNIVERSIDADE FEDERAL DO PIAUÍ DEPARTAMENTO DE COMPUTÇÃO DISCIPLINA: ENGENHARIA DE SOFTWARE II PROFESSOR: ARMANDO SOARES

Model-Driven Architecture

Evento: XXV SEMINÁRIO DE INICIAÇÃO CIENTÍFICA

Web Presentation Patterns - Controllers

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

WebMedia 2009 Minicurso 3 Parte 3: Modelagem Parte 3 MODELAGEM 1

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Sergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015

Nesta disciplina aprenderemos. HTML CSS JavaScript Jquery PHP

Opções de persistência

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

5 Conclusão e trabalhos futuros

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Sistemas de Banco de Dados

Introdução à Análise e Projeto de Sistemas

Korth Silberschatz Sundarshan. Sistema de Banco de Dados, 5/E

Módulo III Camada de Persistência

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

7 Conclusão e Trabalhos Futuros

AVISO Nº 02 - RETIFICAÇÃO. A Companhia de Processamento de Dados do Estado do Rio Grande do Sul PROCERGS, torna público, por este Aviso, o que segue:

1/23/2009. Quais as forças que atuam sobre a asa de uma nova aeronave sendo projetada? Onde fica a rua do porto?

Comentários: Desenvolvimento de Sistemas Rogério Araújo

Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

Arquitetura de Software visão emergente

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp.

Prof. Me. Sérgio Carlos Portari Júnior

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

A diferença entre um site que implementa CSS e outro que não o usa é gigantesca e notável.

Universidade de São Paulo Escola de Artes, Ciências e Humanidades Disciplina: Laboratório de Banco de Dados Profa. Fátima Nunes

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Leonardo Zorzo Carbone. Orientador: Adilson Vahldick

Introdução a Programação Web com PHP

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

BCD29008 Banco de dados

Capítulo 5. Nomes, Vinculações e Escopos

Maquetes Tridimensionais Interativas

CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS

Especificação do Trabalho Prático

SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADA À GESTÃO PÚBLICA

SOFTWARE DE APOIO A GESTÃO DE SOLICITAÇÃO DE MUDANÇAS

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

GERADOR DE CÓDIGO HTML BASEADO EM DICIONÁRIO DE DADOS UTILIZANDO BANCO DE DADOS. Acadêmico :Luis Fernando Coelho Orientador: Jomi Fred Hübner

Capítulo 1. Aspectos Preliminares

7.1 Trabalhos Relacionados

6 Conclusão. 6.1 Trabalhos relacionados

Ferramenta para auxílio na análise de impacto e rastreabilidade de requisitos na gestão de mudanças

7 Conclusão e Trabalhos Futuros

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

3.1 Reflexão Computacional

Linguagens de Programação Classificação

Popularidade das Linguagens

1/26/2009. Como é feito Análise de um problema/processo/sistema Desenvolvimento de uma solução Software + não-software. Testes/validação.

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

Fundamentos de Programação 1

Programação I Apresentação

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Requisitos de Software

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Data Warehouse ETL. Rodrigo Leite Durães.

Aula 10 Modularização Cleverton Hentz

Injeção de Dependências e Spring

PLANO DE UNIDADE DIDÁTICA- PUD

BCD29008 Banco de dados

Atribuições: Valores, Ponteiros e Referências

Projeto de Sistemas para Internet

Drools Desacoplando as regras de negócio do código da aplicação. Raphael Duarte Paiva

Introdução à Programação para Dispositivos Móveis

DESENVOLVIMENTO DE UMA SOLUÇÃO DE INTEGRAÇÃO DE APLICAÇÕES PARA AUTOMATIZAR RESERVAS DE VIAGEM 1

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

2 Versão 1: Funcionalidade Básica e Interface Web

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

INF1013 MODELAGEM DE SOFTWARE

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão

Transcrição:

Abstrações do mundo real Sistema e seu ambiente Com um propósito específico Simulação, geração de código No MDD Quem lê e entende o modelo é o computador Uma vez que o computador entenda o modelo... O que fazer? MMA MMB 2 Modelo B Transformação M2M 1

Modelo OO Modelo E-R Mapeamento Objeto-Relacional Modelo de classes Modelo específico de plataforma Modelo EJB MMA Java, SQL, XML, HTML... Texto Transformação M2T Modelo E-R Scripts de definição de dados (CREATE TABLE...) Modelo de classes Estrutura das classes (esqueletos) Atributos, heranças, protótipos dos métodos 2

Tipos de transformações M2M Fusão (merging) Modificação Transformação Correlação (weaving) Marcações externas http://www.voelter.de/services/mdsd-tutorial.html Modelo X (A+B) Modelo B Fácil de implementar s são os mesmos Útil para modularizar os modelos no desenvolvimento http://www.voelter.de/services/mdsd-tutorial.html Um modelo é estendido durante a geração O modelo permanece seguindo o mesmo metamodelo Relativamente pouca dificuldade de implementação Complicado para mudanças mais complexas http://www.voelter.de/services/mdsd-tutorial.html 3

Modelo B O modelo original permanece inalterado Separação é clara: modelos diferentes, metamodelos diferentes Os domínios podem evoluir independentemente http://www.voelter.de/services/mdsd-tutorial.html Modelo B Modelo de correlação W Os modelos originais permanecem inalterados É necessário especificar as regras de correlação Pouco suportado pelas ferramentas atuais Exemplo: Classes e Tabelas http://www.voelter.de/services/mdsd-tutorial.html Informações adicionais (ex: qual atributo é chave) Modelo B Informações específicas da plataforma/metamodelo destino Mas que iriam poluir o modelo de origem Informação auxiliar aos transformadores Aspectos externos http://www.voelter.de/services/mdsd-tutorial.html 4

Procedural Um programa realiza as transformações Declarativa As transformações são especificadas em uma DSL Um mecanismo interpreta e executa as transformações Programação (Java, C++, C# ) Procedural Utilizando API de metamodelagem (EMF, MetaGME) XSLT Declarativa Para modelos baseados em XML Limitado pois não há um metamodelo explícitio Opera em nível de XML Eclipse ATL Declarativa, textual, prática QVT Declarativa, padrão OMG, implementações ainda estão surgindo Eclipse xtend (oaw) Declarativa, concisa, prática, suporte de IDE Código Modelo B Dificuldades: Ler arquivo de origem Escrever arquivo de destino Manter consistência e formato do arquivo gerado Lidar com as referências internas 5

MMA API Metamodelagem MMB Código Modelo B Vantagens: Leitura / escrita fica por conta da API / Framework Formato de saída é consistente Referências são garantidas É possível realizar transformações na memória Demonstração Utilizando Eclipse / xtext MMA MMT MMB Transformação Modelo B Vantagens (mesmas DSL): Alto nível de abstração Próximo aos metamodelos / problema Permite análises, otimizações, etc... 6

Demonstração Utilizando Eclipse / xtend Exemplo: Modelo OO para Modelo E-R 7

public class GeradorDeCodigo { System.out.println( ); System.out.println( ); for(int i=1;i<=5;i++) { System.out.println( System.out.println(\ Código gerado +i+ \ ); ); System.out.println( ); System.out.println( ); System.out.println( Código gerado 1 ); System.out.println( Código gerado 2 ); System.out.println( Código gerado 3 ); System.out.println( Código gerado 4 ); System.out.println( Código gerado 5 ); Código gerado 1 Código gerado 2 Código gerado 3 Código gerado 4 Código gerado 5 8

Demonstração GME public class GeradorDeCodigo { System.out.println( ); System.out.println( ); System.out.println( System.out.println(\ Código gerado\ ); ); System.out.println( ); System.out.println( ); System.out.println( Código gerado! ); Difícil modificar o código dentro das aspas Código gerado! public class GeradorDeCodigo { System.out.println( ); System.out.println( ); System.out.println( System.out.println(\ Código gerado\ ); ); System.out.println( ); System.out.println( ); System.out.println( Código gerado! ); O código final só pode ser visto após a geração Código gerado! 9

public class GeradorDeCodigo { System.out.println( ); System.out.println( ); System.out.println( System.out.println(\ Código gerado\ ); ); System.out.println( ); System.out.println( Consulta ao ); metamodelo deve ser feita manualmente System.out.println( Código gerado! ); Código gerado! Templates Estilo JSP, ASP, PHP, etc... Inversão: Ao invés de colocar System.out.println( no começo de cada linha, criar um arquivo separado, só com o texto a ser gerado...... e inserir System.out.println( automaticamente System.out.println( Código gerado! ); public class GeradorDeCodigo { System.out.println( ); System.out.println( ); System.out.println( System.out.println(\ Código gerado\ ); ); System.out.println( ); System.out.println( ); System.out.println( Código gerado! ); Código gerado! 10

<% for(int i=1;i<=5;i++) { %> System.out.println( Código gerado <%=i%> ); <% %> public class GeradorDeCodigo { System.out.println( ); System.out.println( ); for(int i=1;i<=5;i++) { System.out.println( System.out.println(\ Código gerado +i+ \ ); ); System.out.println( ); System.out.println( ); System.out.println( Código gerado 1 ); System.out.println( Código gerado 2 ); System.out.println( Código gerado 3 ); System.out.println( Código gerado 4 ); System.out.println( Código gerado 5 ); Independente do formato de saída Pode-se fazer de tudo! Desde que seja possível em uma linguagem de programação Flexibilidade Maior legibilidade do código gerado Facilidade de manutenção Diversas possibilidades Modularização Um template para cada metaclasse Um template para cada arquivo de saída Agrupar templates Dividir um template em vários 11

Templates GME Tags / macros Vantagens Código mais limpo Focado no problema Desvantagem Dependência das funções existentes Abordagem Visitante Template A Template B Template C 12

Abordagem metamodelo Template A Template B Template C? Modelo B1 Modelo Bn - Nível de abstração + Detalhes sobre plataforma + Complexidade Templates Código A Código B Código C? Modelo B1 Modelo Bn Templates Código A Código B Código C 13

? Modelo B1 Modelo Bn Templates Código A Código B Código C? Modelo B1 Modelo Bn Templates Código A Código B Código C? Modelo B1 Modelo Bn Templates Código A Código B Código C 14

Transformações M2M Apenas para modularizar/facilitar a geração de código! Customizações/informações adicionais Arquivos/modelos externos Modificar código gerado Evitar! Planejar a integração com código manual Mais sobre isso nos próximos capítulos! Sugestões: Além dos templates, quais outras abordagens existem? Quais as desvantagens dos templates? É possível utilizar mais de um metamodelo em um template? Alguém mais está com fome além de mim? Quando eu vou começar a entender isso tudo? O teste de Poincaré identifica esferas no espaço quadridimensional? As liberdades política e econômica estão intimamente ligadas? Por que a pobreza aumentou e a expectativa de vida diminuiu na África subsaariana? 15