Parte 1 CONCEITOS MDD



Documentos relacionados
Transformando Modelos da MDA com o apoio de Componentes de Software

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML

Table 1. Dados do trabalho

Introdução à Engenharia de Software

Model-Driven Engineering Geração de modelos de software e especificações usando a plataforma IBM

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Transformação de modelos em processos de desenvolvimento de software

Ontologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem

RESUMO DA SOLUÇÃO CA ERwin Modeling. Como eu posso gerenciar a complexidade dos dados e aumentar a agilidade dos negócios?

Em direção à portabilidade entre plataformas de Computação em Nuvem usando MDE. Elias Adriano - UFSCar Daniel Lucrédio - UFSCar

UML - Unified Modeling Language

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

FERRAMENTA PARA CONSTRUÇÃO DE INTERFACES DE SOFTWARE A PARTIR DE DIAGRAMA DE CLASSES

Documento de Arquitetura

Qualidade de Software

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

UM FRAMEWORK PARA DESENVOLVIMENTO DE

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

O uso do gestor de conteúdos plone no suporte a processos de software

de teste funcionais utilizando diagramas de sequência em UML

Fase 1: Engenharia de Produto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Figura 1 - Arquitetura multi-camadas do SIE

PROJETO DE FÁBRICA DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Professor: Curso: Disciplina:

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Sistemas Distribuídos

Java. Marcio de Carvalho Victorino

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

SOA Introdução. SOA Visão Departamental das Organizações

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

IV. Intercâmbio Eletrônico de Dados (EDI)

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Viabilidade de Construção de Software com MDD e MDA

Análise e Projeto Orientados por Objetos

Desenvolvimento de software orientado a características e dirigido por modelos

SISTEMA GERENCIADOR DE BANCO DE DADOS

Introdução à Plataforma Eclipse. Leandro Daflon

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Engenharia de Software I

Programação de Computadores - I. Profª Beatriz Profº Israel

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Programação Orientada a Objetos

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Técnicas e Linguagens para Banco de Dados I

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Fábrica de Software 29/04/2015

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

UFG - Instituto de Informática

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

WebApps em Java com uso de Frameworks

Desenvolvimento de Aplicações Locais na Plataforma Microsoft

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados -

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

Service Oriented Architecture SOA

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

Modelagem de Processos. Prof.: Fernando Ascani

Engenharia de Software I: Análise e Projeto de Software Usando UML

Evolução na Comunicação de

Projeto de Arquitetura

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Agregador de feeds RSS para dispositivos móveis

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Eduardo Bezerra. Editora Campus/Elsevier

Cargo Função Superior CBO. Tarefas / Responsabilidades T/R Como Faz

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Artur Petean Bove Júnior Tecnologia SJC

Transcrição:

Parte 1 CONCEITOS MDD 1

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

Como deveria ser Problema Solução 3

A realidade Problema Solução Implementação 4

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

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

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

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

Reutilização de conhecimento Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos 9

Reutilização de conhecimento Java ASM C# Lisp Prolog 10

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

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

Produtividade Abriu porta Fechou porta Inicial Fechado Aberto Disparando alarme 10 segundos 20 segundos 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

Produtividade Abriu porta Fechou porta Inicial Fechado Aberto Disparando alarme 10 segundos 20 segundos 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

Produtividade Abriu porta Fechou porta Inicial Fechado Aberto Disparando alarme 10 segundos 20 segundos 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

Produtividade 16

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

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

Manutenibilidade Correções Erros Melhorias Evolução Novas funcionalidades Exigem nova análise, projeto, implementação, testes, etc... Normalmente o tempo é curto 19

Manutenção a realidade Problema Solução 20

Manutenibilidade Abriu porta Fechou porta Inicial Fechado Aberto Disparando alarme 10 segundos 20 segundos 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

Manutenibilidade 22

Exemplo de manutenção Modificar um campode 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

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

Manutenibilidade Erros de programaçãopodem 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

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

Manutenibilidade Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos 27

Manutenibilidade Inicial Abriu porta Fechou porta Fechado Fechou porta Disparando alarme Aberto 10 segundos 20 segundos 28

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

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

Validação Verificações automáticasde 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

Validação Estado morto Estado inalcançavel Transição infinita 32

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

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

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

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

Portabilidade Software independente da plataforma Requisitos Modelos Regras de negócio Otimizações 1 mês Software dependente da plataforma Código Arquivos de configuração Scripts (sql, make, etc) Código específico da plataforma Bibliotecas da plataforma 6 meses 37

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

Portabilidade Software independente da plataforma Requisitos Modelos Regras de negócio Otimizações 3 meses Software dependente da plataforma Código Arquivos de configuração Scripts (sql, make, etc) Código específico da plataforma Bibliotecas da plataforma 3 meses 39

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

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

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

Tecnologias envolvidas 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

Tecnologias envolvidas 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

Tecnologias envolvidas 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

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çasnas plataformas/requisitos/tecnologias disponíveis 46

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

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

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

O que é? DESENVOLVIMENTO ORIENTADO A MODELOS 50

Desenvolvimento convencional import java.util.*; Economia public synchronized replicatedata() {... } Finanças Alimentos Jogos <%@ page language="java > <%@taglibprefix="c uri="jsp/jstl/core %> <html> <head>... <struts-config> <form-bean>... <action>... CREATE TABLE </struts-config> Map( id INTEGER PK... ) #include "demoextension.h" intaeeclscreateinstance(void**ppobj) { *ppobj = NULL; if( ClsId == AEECLSID)... jnzrx00# addb, 0F# addc, 0E# mova, 00# 51

Desenvolvimento convencional com atividade de modelagem import java.util.*; Economia public synchronized replicatedata() {... } Finanças Alimentos Jogos <%@ page language="java > <%@taglibprefix="c uri="jsp/jstl/core %> <html> <head>... <struts-config> <form-bean>... <action>... CREATE TABLE </struts-config> Map( id INTEGER PK... ) #include "demoextension.h" intaeeclscreateinstance(void**ppobj) { *ppobj = NULL; if( ClsId == AEECLSID)... jnzrx00# addb, 0F# addc, 0E# mova, 00# 52

Desenvolvimento orientado a modelos Modelos fazem parte do software import java.util.*; Economia public synchronized replicatedata() {... } Finanças Alimentos Jogos <%@ page language="java > <%@taglibprefix="c uri="jsp/jstl/core %> <html> <head>... <struts-config> <form-bean>... <action>... CREATE TABLE </struts-config> Map( id INTEGER PK... ) #include "demoextension.h" intaeeclscreateinstance(void**ppobj) { *ppobj = NULL; if( ClsId == AEECLSID)... jnzrx00# addb, 0F# addc, 0E# mova, 00# 53

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

public int soma (int a, int b) { int resultado = a + b; return resultado; } 55

public int soma (int a, int b) { } int resultado = a + b; return resultado; public int soma (int a, int b) { int resultado = a + b; return resultado; }.java PUSH AX MOV AL, char MOV AH, 0Eh INT 10h POP AX.asm 000100010010100010011100 100101010001011010111000 101001001111001001001110 101001010101000010100101 010111101010011111100010 010010110100101100010100 1111101101010101.bin 56

PUSH AX 000100010010100010011100100101010001011010111000101001001111001001001 110101001010101000010100101010111101010011111100010010010110100101100 010100111110110101010100010001001010001001110010010101000101101011100 010100100111100100100111010100101010100001001011110101001111110001001 MOV AL, char 001011010010110001010011111011010101010001000100101000100111001001010 100010110101110001010010011110010010011101010010101010000101010111101 010011111100010010010110100101100010100111110110101010100010001001010 MOV AH, 0Eh 001001110010010101000101101011100010100100111100100100111010100101010 100001010101111010100111111000100100101101001011000101001111101101010 101000100010010100010011100100101010001011010111000101001001111001001 INTpublic int soma 53 (int 10h a, int b) { 001110101001010101000010110010101011110101001111110001001001011010010 110001010011111011010101011001010010110010001011111000101010100101111 POP int resultado 92 = AXa + b; 100001010010100010011101010101100111111010101000001001010100010101010 100101010101010101110100101010100001010101111010100111111000100100101 101001011000101001111101101010101000100010010100010011100100101010001 ADD return resultado; AX,BX 145 011010111000101001001111001001001110101001010101000010110010101011110 101001111110001001001011010010110001010011111011010101011001010010110 010001011111000101010100101111100001010010100010011101010101100111111 INT} 10h 010101000001001010100010101010100101010101010101110100101010100001010 101111010100111111000100100101101001011000101001111101101010101000100 POP AX 010010100010011100100101010001011010111000101001001111001001001110101 001010101000010110010101011110101001111110001001001011010010110001010 011111011010101011001010010110010001011111000101010100101111100001010 JNZ R1, 1Eh 010100010011101010101100111111010101000001001010100010101010100101010 1010101011111100101 57

53 Domínio 92problema + 145.math public int soma (int a, int b) { int resultado = a + b; return resultado; }.java PUSH AX MOV AL, char MOV AH, 0Eh Domínio TI INT 10h POP AX.asm (solução) 0001000100101000100111001 0010101000101101011100010 1001001111001001001110101 0010101010000101001010101 1110101001111110001001001 0110100101100010100111110 1101010101.bin 58

Microsoft Access 59

http://www.gamemaker.nl/ 60

Netbeans Mobility Pack 61

Elementos 62

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

Vantagens e desvantagens DESENVOLVIMENTO ORIENTADO A MODELOS 64

Vantagens Venda Compra Aluguel Contrato Fiador Cotação Classe Objeto Métodos Atributos Padrões Especialista do domínio Especialista em TI 65

Vantagens Um único modelo pode dar origem a diferentes implementações, linguagens ou plataformas Permite capturaro conhecimento do domínio de forma clara Ficando disponível para os desenvolvedores Escondedetalhes de implementação durante o desenvolvimento de soluções Um único modelo pode gerar uma grande quantidade e diversidade de código 66

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

Desvantagens Maior rigidez no software produzido Alta complexidadedos 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

Comparação com desenvolvimento tradicional http://www.voelter.de/services/mdsd-tutorial.html 69

MDD estágio 1 http://www.voelter.de/services/mdsd-tutorial.html 70

MDD estágio 2 http://www.voelter.de/services/mdsd-tutorial.html 71

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 1em termos de linha de especificação/código Juha-PekkaTolvanen. Making model-based code generation work. Embedded Systems Europe, 8(60):3638, Aug/Sept 2004. David Wile. Lessons learned from real dsl experiments. Sci. Comput. Program., 51(3):265-290, 2004. 72

ABORDAGENS PARA MDD 73

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

Abordagens para MDD OMG MDA (Model-Driven Architecture) VanderbiltUniversity MIC (Model Integrated Computing) Microsoft Software Factories Eclipse Modeling 75

OMG - MDA Model-Driven Architecture Surgiu em 2001 Baseada em padrões (standards) Objetivo Especificarum sistema de forma independente de plataforma Especificar plataformas Escolher uma plataforma para o sistema Transformara especificação genérica em uma especificação específica de plataforma 76

MDA Visão Geral 77

MDA Principais elementos CIM Computation Independent Model PIM Platform Independent Model PSM Platform Specific Model Modelo de plataforma Transformação de modelos 78

Ciclo de vida MDA 79

Transformações MDA 80

Padrões MDA UML Unified Modeling Language MOF Meta-Object Facility CWM Common Warehouse Metamodel XMI XML Metadata Interchange QVT Query / Views / Transformations 81

Padrões MDA MOF Formato XML XMI UML CWM Outros metamodelos Modelos UML Modelos de dados Outros modelos Modelo UML1.xmi Modelo UML2.xmi Modelo Dados1.xmi Modelo Qualquer1.xmi Modelo Qualquer2.xmi 82

Padrões MDA MOF Metamodelo A Metamodelo B Modelos A QVT Modelos B Consultas Transformações 83

MDA Uma série de especificações Foco em portabilidade, independência de plataforma Voltadas à implementaçãoe 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

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 Frameworkpara análise formal, verificação e transformação de modelos GME Generic Modeling Environment 85

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 papelimportante 86

Software factories Pense em uma fábrica tradicional Estrutura projetadapara produzir uma determinada família ou linha de produtos Trêselementos Esquemada 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 Ambienteextensível: ferramentas utilizadas para a produção, configuradas através do template 87

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

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

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

Projetos Eclipse Modeling Eclipse Modeling Framework Graphical Modeling Framework Textual Modeling Framework Xtext TCS UML2Tools 91

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 inovadoresrelacionados a modelagem AM3, AMW, MOFScript, etc. 92

RECAPITULANDO 93

Problema Solução Solução Implementação 94

Ferramenta de modelagem Transformações Produto Desenvolvedor Compiladores Benefícios 95

DSL UML MIC Software factories TMF MDA Eclipse 96

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