WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Parte 1 CONCEITOS MDD 1 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desenvolvimento de software Como é feito Análise de um problema/processo/sistema Desenvolvimento de uma solução Software + não-software Testes/validação Uma série de problemas!! 2 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Como deveria ser Problema Solução 3 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD A realidade Problema Solução Implementação 4 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD A realidade Modelagem é algo positivo... Arquitetos (algumas vezes) usam UML para criar modelos de alto nível São usados em um primeiro momento Discussões, idéias, etc (análise) Porém logo são inúteis Programadores criam código manualmente Manutenção é feita diretamente no código Modelos perdem a consistência Mesmo com engenharia reversa, ainda é um artefato desnecessário 5 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Dificuldades da linguagem (UML) Inconsistências entre modelo-código Necessidade de ferramentas caras Modelo é algo desnecessário 6 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Reutilização Conhecimento fica criptografado no código public static void main(String args[]) { if(args.length > 0) imprimeMensagem(args[0]); else imprimeMensagem(“Alô mundo!”); } public static void imprimeMensagem(String mensagem) { System.out.println(mensagem); } 7 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Reutilização de conhecimento public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 8 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Reutilização de conhecimento Inicial Fechado Abriu porta Fechou porta Aberto Disparando alarme 10 segundos 20 segundos 9 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Reutilização de conhecimento ASM Java Prolog C# Lisp 10 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Formas mais eficientes para representar o conhecimento Menos dependentes do código final Mais próximas do domínio do problema Diferente da documentação 11 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Produtividade Um elemento conceitual corresponde a vários elementos do código Diferença no nível de abstração Mapeamento problema / solução 12 WebMedia 2009 – Minicurso 3 Produtividade Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Parte 1: Conceitos MDD public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 13 WebMedia 2009 – Minicurso 3 Produtividade Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Parte 1: Conceitos MDD public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 14 WebMedia 2009 – Minicurso 3 Produtividade Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Parte 1: Conceitos MDD public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 15 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Produtividade 16 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Produtividade Muitas tarefas de implementação são repetitivas e exaustivas EJB 2.0 CORBA Struts Hibernate Perde-se tempo precioso em trabalho braçal Poderia ser usado em tarefas mais conceituais 17 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Foco em tarefas conceituais Evitar tarefas repetitivas 18 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Correções Erros Melhorias Evolução Novas funcionalidades Exigem nova análise, projeto, implementação, testes, etc... Normalmente o tempo é curto 19 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenção – a realidade Problema Solução 20 WebMedia 2009 – Minicurso 3 Manutenibilidade Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Parte 1: Conceitos MDD public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 21 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade 22 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Exemplo de manutenção Modificar um campo de um registro em uma aplicação baseada em Struts Tabela, índices, visões, consultas, etc. (SQL) Ação (classe Java) Mapeamento (XML) Formulário (XML) Bean de dados (Java/XML) DAO - Data Access Objects (Java) Página (HTML) Regras de validação (Javascript) Arquivo de mensagens (.properties) etc. 23 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Trabalho braçal para construir Re-trabalho braçal para modificar Rastreabilidade Um elemento conceitual Diversos artefatos de implementação Consistência das mudanças Entre os diversos artefatos 24 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Erros de programação podem ser facilmente encontrados Compilador / IDE Checagens simples (método privado nunca é chamado, etc.) Erros conceituais Difíceis de identificar no código Conhecimento está “criptografado” 25 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade public void abriu() { estado = ABERTO; timer = new Timer(10000); } public void fechou() { if(estado == ABERTO) { estado = FECHADO; timer = null; } } public void fimTimer() { if(estado == ABERTO) { estado = DISPARANDO; tocaAlarme(); timer = new Timer(20000); } else { estado = ABERTO; desligaAlarme(); timer = new Timer(10000); } } 26 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Inicial Fechado Abriu porta Fechou porta Aberto Disparando alarme 10 segundos 20 segundos 27 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Inicial Fechado Abriu porta Fechou porta Aberto Fechou porta Disparando alarme 10 segundos 20 segundos 28 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Manutenibilidade Uma vez realizada a alteração Atualizar os modelos (Quase) nunca acontece Uma vez que os desenvolvedores tenham um modelo mental... ... começam a descartar o modelo físico (documentação) Resultado = modelos desatualizados Faz parte do “fardo” da modelagem 29 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Facilitar a manutenção Aproveitar o re-trabalho de forma mais produtiva Possibilitar que mudanças sejam realizadas no nível conceitual Facilitar a localização de erros e falhas Manter a consistência entre modelo e código 30 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Validação Verificações automáticas de restrições de alto nível Difíceis de se realizar diretamente no código Exemplos (máquina de estados): Estados inalcançáveis Transições infinitas Estados “mortos” Facilita manutenção Evitando introdução de erros 31 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Estado “morto” Validação Estado inalcançavel Transição infinita 32 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Otimização Nível de código Pré-calcular expressões Utilização de macros Remoção de expressões redundantes Em nível mais alto não é possível sem a existência de um modelo Remover estados redundantes Normalizar base de dados Indexar tabelas de acordo com as consultas existentes 33 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Facilitar a manutenção Validação / otimização Fazer uso de checagem automática Utilizar o conhecimento de especialistas do domínio 34 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Portabilidade Acompanhar a evolução das plataformas de hardware/software Novas tecnologias surgem Aumenta a pressão para a migração Custo do porte: Esforço gasto em tarefas específicas da plataforma 35 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Portabilidade Software independente da plataforma Software dependente da plataforma •Requisitos •Modelos •Regras de negócio •Otimizações •Código •Arquivos de configuração •Scripts (sql, make, etc) •Código específico da plataforma •Bibliotecas da plataforma 36 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Portabilidade 1 mês Software independente da plataforma Software dependente da plataforma •Requisitos •Modelos •Regras de negócio •Otimizações •Código •Arquivos de configuração •Scripts (sql, make, etc) •Código específico da plataforma •Bibliotecas da plataforma 6 meses 37 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Portabilidade Software independente da plataforma Software dependente da plataforma •Requisitos •Modelos •Regras de negócio •Otimizações •Código •Arquivos de configuração •Scripts (sql, make, etc) •Código específico da plataforma •Bibliotecas da plataforma 38 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Portabilidade 3 meses Software independente da plataforma Software dependente da plataforma •Requisitos •Modelos •Regras de negócio •Otimizações •Código •Arquivos de configuração •Scripts (sql, make, etc) •Código específico da plataforma •Bibliotecas da plataforma 3 meses 39 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Facilitar a manutenção Validação / otimização Portabilidade Reduzir o esforço específico de plataforma Concentrar no trabalho conceitual 40 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Alta complexidade do software atualmente Exemplo: LBS – Location-Based Systems GIS – Geographical Information Systems Múltiplas plataformas Múltiplas interfaces Diversas fontes de dados Interoperabilidade Usuário final leigo 41 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD • Rastreamento (rádio-frequecia, GPRS) • Visualização (Java SWING, Web, JME, Palm) • Localização • Roteamento • Telemetria • Acionamento remoto http://www.3wt.com.br/3wt/pr_sigame.shtml 42 WebMedia 2009 – Minicurso 3 Tecnologias envolvidas Parte 1: Conceitos MDD Hardware dedicado (veículos) GPS, sensores, atuadores Software embarcado (C) Geoposicionamento Leitura/escrita sinais Protocolo de comunicação Transmissão Criptografia Central (C++) Armazenamento dos dados Autenticação 43 WebMedia 2009 – Minicurso 3 Tecnologias envolvidas Parte 1: Conceitos MDD Monitoramento/rotas (Java/SWING) Visualização dos veículos Sobreposição no mapa Cálculo de rotas Servidor de mapas (Java) http://geoserver.org Visualização em camadas Caching Base de dados PostgreSQL + PostGIS Funções de consulta / geometria Diferentes fornecedores de mapas 44 WebMedia 2009 – Minicurso 3 Tecnologias envolvidas Parte 1: Conceitos MDD Dispositivos móveis Celular (JME) PND – Personal Navigation Device (C# / .NET) Visualização Web Portal de mapas (Javascript) http://openlayers.org Edição de mapas (Java/SWING) Nomes de ruas Sentido/mão de direção 45 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Resultado Complexidade exige Diversos profissionais Diversos especialistas Comunicação é crítica Especialistas em TI x Especialistas no domínio Cada um em seu território! Porém, com a alta complexidade Torna-se uma tarefa difícil Além disso Constantes mudanças nas plataformas/requisitos/tecnologias disponíveis 46 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD • Rastreamento (rádio-frequecia, GPRS) • Visualização (Java SWING, Web, JME, Palm) • Localização • Roteamento • Telemetria • Acionamento remoto http://www.3wt.com.br/3wt/pr_sigame.shtml 47 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problemas a serem resolvidos Reduzir o “fardo” da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Facilitar a manutenção Validação / otimização Portabilidade Lidar com a alta complexidade do software atual Diferentes especialistas (TI vs domínio) Necessidade de integração / interoperabilidade 48 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Solução Modelagem Reutilização Produtividade Manutenibilidade Validação / otimização Portabilidade Alta complexidade Desenvolvimento Orientado a Modelos •(MDD) Model-Driven Development •(MDSD) Model-Driven Software Development •(MDE) Model-Driven Engineering 49 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD O que é? DESENVOLVIMENTO ORIENTADO A MODELOS 50 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desenvolvimento convencional import java.util.*; Economia public synchronized replicateData() { ... } Finanças Jogos Alimentos <%@ page language="java“> <%@taglib prefix="c“ uri="jsp/jstl/core“ %> <html> <head> ... <struts-config> <form-bean> ... <action> ... CREATE TABLE</struts-config> Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... jnz Rx 00# add b, 0F# add c, 0E# mov A, 00# 51 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desenvolvimento convencional com atividade de modelagem import java.util.*; Economia public synchronized replicateData() { ... } Finanças Jogos Alimentos <%@ page language="java“> <%@taglib prefix="c“ uri="jsp/jstl/core“ %> <html> <head> ... <struts-config> <form-bean> ... <action> ... CREATE TABLE</struts-config> Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... jnz Rx 00# add b, 0F# add c, 0E# mov A, 00# 52 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desenvolvimento orientado a modelos Modelos fazem parte do software import java.util.*; Economia public synchronized replicateData() { ... } Finanças Jogos Alimentos <%@ page language="java“> <%@taglib prefix="c“ uri="jsp/jstl/core“ %> <html> <head> ... <struts-config> <form-bean> ... <action> ... CREATE TABLE</struts-config> Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... jnz Rx 00# add b, 0F# add c, 0E# mov A, 00# 53 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desenvolvimento orientado a modelos Os modelos não são somente “papel” São entradas para transformadores e geradores Desenvolvedor é protegido das complexidades Inerente e acidental Em alguns casos, o desenvolvedor nem precisa visualizar código! 54 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD public int soma (int a, int b) { int resultado = a + b; return resultado; } 55 WebMedia 2009 – Minicurso 3 public int soma (int a, int b) { } Parte 1: Conceitos MDD public int soma (int a, int b) { int resultado = a + b; int resultado = a + b; return resultado; return resultado; .java } PUSH AX MOV AL, char MOV AH, 0Eh INT 10h POP AX 000100010010100010011100 100101010001011010111000 101001001111001001001110 101001010101000010100101 010111101010011111100010 010010110100101100010100 1111101101010101 .asm .bin 56 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD 000100010010100010011100100101010001011010111000101001001111001001001 110101001010101000010100101010111101010011111100010010010110100101100 010100111110110101010100010001001010001001110010010101000101101011100 010100100111100100100111010100101010100001001011110101001111110001001 001011010010110001010011111011010101010001000100101000100111001001010 100010110101110001010010011110010010011101010010101010000101010111101 010011111100010010010110100101100010100111110110101010100010001001010 001001110010010101000101101011100010100100111100100100111010100101010 100001010101111010100111111000100100101101001011000101001111101101010 101000100010010100010011100100101010001011010111000101001001111001001 001110101001010101000010110010101011110101001111110001001001011010010 110001010011111011010101011001010010110010001011111000101010100101111 100001010010100010011101010101100111111010101000001001010100010101010 100101010101010101110100101010100001010101111010100111111000100100101 101001011000101001111101101010101000100010010100010011100100101010001 011010111000101001001111001001001110101001010101000010110010101011110 101001111110001001001011010010110001010011111011010101011001010010110 010001011111000101010100101111100001010010100010011101010101100111111 010101000001001010100010101010100101010101010101110100101010100001010 101111010100111111000100100101101001011000101001111101101010101000100 010010100010011100100101010001011010111000101001001111001001001110101 001010101000010110010101011110101001111110001001001011010010110001010 011111011010101011001010010110010001011111000101010100101111100001010 010100010011101010101100111111010101000001001010100010101010100101010 1010101011111100101 PUSH AX MOV AL, char MOV AH, 0Eh INTpublic int soma 53 (int 10h a, int b) { POP int resultado 92 =AXa ++ b; ADD return resultado; AX,BX 145 INT} 10h POP AX JNZ R1, 1Eh 57 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD 53 92 problema + Domínio 145 .math public int soma (int a, int b) { int resultado = a + b; return resultado; .java } PUSH AX MOV AL, char Domínio TI .asm (solução) MOV AH, 0Eh INT 10h POP AX 0001000100101000100111001 0010101000101101011100010 1001001111001001001110101 0010101010000101001010101 1110101001111110001001001 0110100101100010100111110 1101010101 .bin 58 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Microsoft Access 59 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD http://www.gamemaker.nl/ 60 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Netbeans Mobility Pack 61 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Elementos 62 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Elementos Exemplo do Netbeans Não é possível alterar a ferramenta de modelagem Não é possível alterar a transformação Tecnologias atuais MDD Permitem a construção/edição destes artefatos 63 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Vantagens e desvantagens DESENVOLVIMENTO ORIENTADO A MODELOS 64 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Vantagens Classe Venda Compra Aluguel Contrato Objeto Métodos Atributos Padrões Fiador Cotação Especialista do domínio Especialista em TI 65 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Vantagens Um único modelo pode dar origem a diferentes implementações, linguagens ou plataformas Permite capturar o conhecimento do domínio de forma clara Ficando disponível para os desenvolvedores Esconde detalhes de implementação durante o desenvolvimento de soluções Um único modelo pode gerar uma grande quantidade e diversidade de código 66 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Vantagens Especialistas do domínio têm um papel mais ativo no processo Maior eficiência no desenvolvimento Maior qualidade no produto/processo Geradores não produzem erros acidentais Modelos estão sempre atualizados 67 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Desvantagens Maior rigidez no software produzido Alta complexidade dos artefatos necessários (transformadores, etc) Questão do desempenho Otimização automática vs código escrito manualmente Exige habilidades específicas e pessoas altamente especializadas em MDD 68 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Comparação com desenvolvimento “tradicional” http://www.voelter.de/services/mdsd-tutorial.html 69 WebMedia 2009 – Minicurso 3 MDD – estágio 1 Parte 1: Conceitos MDD http://www.voelter.de/services/mdsd-tutorial.html 70 WebMedia 2009 – Minicurso 3 MDD – estágio 2 Parte 1: Conceitos MDD http://www.voelter.de/services/mdsd-tutorial.html 71 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Alguns números Nokia reporta que consegue desenvolver novos celulares até 10 vezes mais rápido Lucent relata ganhos de produtividade de 3 a 10 vezes, dependendo do produto Redução de 50 para 1 em termos de linha de especificação/código • Juha-Pekka Tolvanen. Making model-based code generation work. Embedded Systems Europe, 8(60):3638, Aug/Sept 2004. 72 • David Wile. Lessons learned from real dsl experiments. Sci. Comput. Program., 51(3):265-290, 2004. WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD ABORDAGENS PARA MDD 73 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Abordagens MDD MDD são os princípios Desenvolvimento orientado a modelos Elevação da importância do modelo no processo Existem diversas frentes Cada uma baseada em padrões, ferramentas e processos específicos 74 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Abordagens para MDD OMG MDA (Model-Driven Architecture) Vanderbilt University MIC (Model Integrated Computing) Microsoft Software Factories Eclipse Modeling 75 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD OMG - MDA Model-Driven Architecture Surgiu em 2001 Baseada em padrões (standards) Objetivo Especificar um sistema de forma independente de plataforma Especificar plataformas Escolher uma plataforma para o sistema Transformar a especificação genérica em uma especificação específica de plataforma 76 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD MDA – Visão Geral 77 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD MDA – Principais elementos CIM – Computation Independent Model PIM – Platform Independent Model PSM – Platform Specific Model Modelo de plataforma Transformação de modelos 78 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Ciclo de vida MDA 79 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Transformações MDA 80 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Padrões MDA UML Unified Modeling Language MOF Meta-Object Facility CWM Common Warehouse Metamodel XMI XML Metadata Interchange QVT Query / Views / Transformations 81 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Padrões MDA MOF UML Modelos UML Modelo UML1.xmi Modelo UML2.xmi CWM Modelos de dados Modelo Dados1.xmi Formato XML XMI Outros metamodelos Outros modelos Modelo Qualquer1.xmi Modelo Qualquer2.xmi 82 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Padrões MDA MOF Metamodelo A Metamodelo B QVT Modelos A Modelos B Consultas Transformações 83 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD MDA Uma série de especificações Foco em portabilidade, independência de plataforma Voltadas à implementação e padronização – é uma referência Fabricantes podem optar por aderir aos padrões Não define uma metodologia Não define ferramentas Porém foi uma das iniciativas fundamentais para o surgimento do paradigma 84 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD MIC Model Integrated Computing Pesquisa da Vanderbilt University Três elementos principais Tecnologia para modelagem específica de domínio Conjunto de ferramentas para modelagem Framework para análise formal, verificação e transformação de modelos GME – Generic Modeling Environment 85 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Software factories Jack Greenfield, Keith Short, Steve Cook, and Stuart Kent. Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools. Wiley, 2004. Abordagem para desenvolvimento de software Reutilização sistemática MDD tem um papel importante 86 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Software factories Pense em uma fábrica tradicional Estrutura projetada para produzir uma determinada família ou linha de produtos Três elementos Esquema da fábrica de software: descreve o que é necessário para construir os produtos da fábrica Template da fábrica: é uma instância do esquema Ambiente extensível: ferramentas utilizadas para a produção, configuradas através do template 87 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD MDD e software factories Modelos são usados para Capturar especificações em alto nível (intenção) Transformações são usadas para Gerar implementação automaticamente Outras checagens realizadas em modelos Diferentemente da MDA Menos interesse em portabilidade e independência de plataforma Maior foco em produtividade e reutilização 88 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Software factories - tecnologias Microsoft Visual Studio DSL Tools Ferramenta para definição de linguagens específicas de domínio Geração de código Outras funções 89 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Eclipse modeling Série de ferramentas e protótipos Origem e influência do MOF Linha própria INRIA – Institut National de Recherche en Informatique et en Automatique – França Universidade de Nantes – França Borland IBM 90 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Projetos Eclipse Modeling Eclipse Modeling Framework Graphical Modeling Framework Textual Modeling Framework Xtext TCS UML2 Tools 91 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Projetos Eclipse Modeling Model to Model Transformation Atlas Transformation Language Xtend Model to Text Transformation Java Emitter Templates Xpand Generative Modeling Technologies Incubadora de projetos inovadores relacionados a modelagem AM3, AMW, MOFScript, etc. 92 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD RECAPITULANDO 93 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Problema Solução Solução Implementação 94 WebMedia 2009 – Minicurso 3 Ferramenta de modelagem Desenvolvedor Parte 1: Conceitos MDD Transformações Produto Benefícios Compiladores 95 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD DSL MIC UML MDA Software factories TMF Eclipse 96 WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD Fim da parte 1 Perguntas? Sugestões: • • • • • • • • Qual a relação MDD / métodos ágeis? E quanto à gerência de configuração? Como são realizados os testes no MDD? Quanto tempo ainda vai demorar? Vai ter coffee break? O que vai cair na prova? Quem ganhou a corrida de F1? O que pesa mais? 1 Kg de penas ou 1 Kg de chumbo? 97