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

Documentos relacionados
Parte 1 CONCEITOS MDD

Model Driven Development (MDD)

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

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

3 Tecnologias Relacionadas

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

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

MÓDULO Análise Orientada a Objetos Introdução

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

INF1013 MODELAGEM DE SOFTWARE

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

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

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Model Driven Architecture. Centro de Informática/UFPE Fernando Trinta

Técnicas para Reutilização de Software

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Agenda Atual do Curso. Desenvolvimento Dirigido por Modelos (MDD) Abordagem MDD. Agenda da Aula. Abordagem MDD. Manutenção e Geração

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

Análise de Sistemas. Aula 5

Model Driven Development (MDD)

Introdução ao Desenvolvimento de

Sergio Roberto de Mello Canovas Carlos Eduardo Cugnasca WTA 2015

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

Transformando Modelos da MDA com o apoio de Componentes de Software

Uma Abordagem para o Controle da Evolução de Software no Desenvolvimento Orientado a Modelos

ENGENHARIA DE SOFTWARE

Formalismos de Grafos de Interação

3. Linguagem de Programação C

Polimorfismo. O que é polimorfismo?

4 ALBATROZ : Um ambiente para desenvolvimento de SMA

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Arquitetura em Camadas

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

Módulo II Arquitetura em Camadas

Engenharia de Software

Desenvolvimento Dirigido por Modelos: Ferramentas

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Ambiente de Desenvolvimento Integrado (IDE)

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

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Desenvolvimento Java com ferramentas IBM

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

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

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Aplicação da Técnica de Tecelagem de Modelos na Transformação de Modelos na MDA

UML: Introdução. História Visão geral Modelo conceitual da UML. Bibliografia. UML: introdução

Introdução à Engenharia de Software

RUP Rational Unified Proccess (Processo Unificado da Rational) Equipe WEB Cercomp

ALUNO: RONI FABIO BANASZEWSKI

Engenharia de Software

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

Aumento da complexidade dos sistemas. aumento do nível de abstração

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

UML (Unified Modelling Language)

Ciclo de vida: fases x atividades

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Linguagens de Domínio Específico

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

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

Utilizando o Framework SubMacro no Desenvolvimento de Aplicações Java para Internet. Kleber Taffarel Novembro de 2008

Principais conceitos de CORBA

Tópicos da Aula. Desenvolvimento Dirigido por Modelos (MDD) Reusar cada vez mais... Reusar cada vez mais... O que é modelagem? Reuso: Código x Modelos

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

Model-Driven Architecture

SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADO AO GERENCIAMENTO DE INFORMAÇÃO DE TRANSPORTE URBANO

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

UTILIZAÇÃO DE MDA INTEGRADO AO PROCESSO UNIFICADO NA MODELAGEM DE UM SISTEMA DE GERENCIAMENTO DE COMUNICAÇÃO PARA VANTS

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje

Arquitetura e Objetos Distribuídos em CORBA. Aula 3. Especificações OMA Object Web

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

Acadêmico: Samuel Y. Deschamps Orientador: Prof. Jacques R. Heckmann

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Data Warehouse ETL. Rodrigo Leite Durães.

Análise e projeto de sistemas

Engenharia de Software

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Aula 1.7 Introdução a APOO e UML

PROTÓTIPO DE UM SISTEMA DE IMPORTAÇÃO PARA UMA AGÊNCIA DE TRANSPORTES INTERNACIONAIS

Conteúdo desta aula. Importância da AOO Conceito de Abstração Introdução à UML Introdução ao diagrama de classes

Visão Geral do RUP.

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

Requisitos de Sistemas

Requisitos de Software e UML Básico. Janaína Horácio

Unidade 1 Introdução

Aula 10 Especificação de Requisitos

Documento de Arquitetura de Software- SGE

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

Aula 1: Apresentação, Computação Corporativa

Concurso Público para provimento de cargo efetivo de Docentes. Edital 09/2015 INFORMÁTICA Campus Manhuaçu

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Perfil Formação Acadêmica Experiência Profissional Capacitação Profissional

Transcrição:

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

Problema Solução Implementação 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 Qual o problema com a modelagem? Por que descartamos logo os modelos? 2

Considere os seguintes requisitos para um software: Preciso escrever Alô mundo! na tela public static void main(string args[]) { System.out.println( Alô mundo! ); Considere os seguintes requisitos para um software: Preciso escrever Alô mundo! na tela No futuro, deve ser possível utilizar outras mensagens, além de Alô mundo! 3

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); Considere os seguintes requisitos para um software: Preciso escrever Alô mundo! na tela No futuro, deve ser possível utilizar outras mensagens, além de Alô mundo! Deve ser possível usar diferentes cores Alô mundo! 4

Considere os seguintes requisitos para um software: Preciso escrever Alô mundo! na tela No futuro, deve ser possível utilizar outras mensagens, além de Alô mundo! Deve ser possível usar diferentes cores Deve ser possível usar diferentes dispositivos (celular, monitor, projetor, palm, etc.) FabricaDeMensagem Abstrata MensagemAbstrata FabricaDeMensagem Desktop FabricaDeMensagem Palm FabricaDeMensagem Celular Mensagem Desktop Mensagem Palm Mensagem Celular Considere os seguintes requisitos para um software: Preciso escrever Alô mundo! na tela No futuro, deve ser possível utilizar outras mensagens, além de Alô mundo! Deve ser possível usar diferentes cores Deve ser possível usar diferentes dispositivos (celular, monitor, projetor, palm, etc.) Deve ser possível enviar a mensagem remotamente, pela Internet 5

Adapter Protocolo Adapter Controle de acesso Internacionalização Criptografia Tarifação Base de Dados Adapter Finanças Economia Trabalho mental dos desenvolvedores OO Padrões Alimentos Turismo Jogos Aeronáutica Linguagens Métodos ágeis Banco de dados Domínio do problema Domínio TI Complexidade inerente vs complexidade acidental Ex: Diferentes dispositivos (desktop, celular, palm, etc...) Classes abstratas, herança, polimorfismo, constantes, programação reflexiva, métodos da classe String,... 6

Complexidade inerente Impossível descartar... a menos que você tenha uma boa lábia... Resolver é sua obrigação Complexidade acidental É possível contornar/reduzir Frameworks, padrões, etc... São problemas que você mesmo criou Problema Complexidade acidental Solução Implementação Entrevistar cliente Fazer documento de requisitos Abrir ferramenta de modelagem (UML) Aprender UML Representar o problema em UML Aprender UML Discutir problema em cima dos modelos Projetar solução Representar solução em UML Aprender UML Gerar protótipos automaticamente Adaptar protótipos Completar protótipo com regras de negócio Testar e implantar 7

Entrevistar cliente Fazer documento de requisitos Abrir ferramenta de modelagem (UML) Aprender UML Representar o problema em UML Aprender UML Discutir problema em cima dos modelos Projetar solução Representar solução em UML Aprender UML Gerar protótipos automaticamente Adaptar protótipos Completar protótipo com regras de negócio Testar e implantar In Ac Reduzir o fardo da modelagem Dificuldades da linguagem (UML) Inconsistências entre modelo-código Necessidade de ferramentas caras Modelo é algo desnecessário 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); 8

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); Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos ASM Java C# Lisp Prolog 9

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 Um elemento do modelo corresponde a vários elementos do código Diferença no nível de abstração Mapeamento problema / solução Abriu porta Inicial Fechado Fechou porta 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); 10

Abriu porta Inicial Fechado Fechou porta 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); Abriu porta Inicial Fechado Fechou porta 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); 11

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 Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produtiva Foco em tarefas conceituais Evitar tarefas repetitivas Correções Erros Melhorias Evolução Novas funcionalidades Exigem nova análise, projeto, implementação, testes, etc... Normalmente o tempo é curto 12

Abriu porta Inicial Fechado Fechou porta 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); 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. 13

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

Inicial Fechado Abriu porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Inicial Abriu porta Fechado Fechou porta Fechou porta Disparando alarme Aberto 10 segundos 20 segundos Uma vez realizada a alteração Atualizar os modelos (Quase) nunca acontece Faz parte da complexidade acidental 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 15

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 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 Estado morto Estado inalcançavel Transição infinita 16

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

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

Software independente da plataforma Software dependente da plataforma 1 mês Requisitos Modelos Regras de negócio Otimizações Código multi-plataforma (Java) Arquivos de configuração Scripts (sql, make, etc) Código específico da plataforma Bibliotecas da plataforma 3 meses 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 tabalho conceitual Exemplo: LBS Location-Based Systems GIS Geographical Information Systems Múltiplas plataformas Múltiplas interfaces Diversas fontes de dados Interoperabilidade Usuário final leigo 19

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

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

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

import java.util.*; Economia Finanças Jogos Alimentos public synchronized replicatedata() {... <%@ page language="java > <%@taglib prefix="c uri="jsp/jstl/core %> <struts-config> <form-bean>... <html> <action>... CREATE <head> 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# import java.util.*; Economia Finanças Jogos Alimentos public synchronized replicatedata() {... <%@ page language="java > <%@taglib prefix="c uri="jsp/jstl/core %> <struts-config> <form-bean>... <html> <action>... CREATE <head> 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# Modelos fazem parte do software import java.util.*; Economia Finanças Jogos Alimentos public synchronized replicatedata() {... <%@ page language="java > <%@taglib prefix="c uri="jsp/jstl/core %> <struts-config> <form-bean>... <html> <action>... CREATE <head> 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# 23

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! public int soma (int a, int b) { int resultado = a + b; return resultado; 71 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 72 24

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 = AXa b; 100001010010100010011101010101100111111010101000001001010100010101010 92 + 100101010101010101110100101010100001010101111010100111111000100100101 101001011000101001111101101010101000100010010100010011100100101010001 ADD return resultado; AX,BX 011010111000101001001111001001001110101001010101000010110010101011110 145 101001111110001001001011010010110001010011111011010101011001010010110 010001011111000101010100101111100001010010100010011101010101100111111 INT 10h 010101000001001010100010101010100101010101010101110100101010100001010 101111010100111111000100100101101001011000101001111101101010101000100 POP AX 010010100010011100100101010001011010111000101001001111001001001110101 001010101000010110010101011110101001111110001001001011010010110001010 011111011010101011001010010110010001011111000101010100101111100001010 JNZ R1, 1Eh 010100010011101010101100111111010101000001001010100010101010100101010 1010101011111100101 73 53 92 + Domínio problema 145.math public int soma (int a, int b) { int resultado = a + b; return resultado;.java PUSH AX MOV AL, char MOV AH, 0Eh INT Domínio 10h TI POP AX.asm (solução) 0001000100101000100111001 0010101000101101011100010 1001001111001001001110101 0010101010000101001010101 1110101001111110001001001 0110100101100010100111110 1101010101.bin 74 Microsoft Access 75 25

http://www.gamemaker.nl/ 76 Netbeans UML Matisse Mobility Demonstração 26

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 Venda Compra Aluguel Contrato Fiador Cotação Classe Objeto Métodos Atributos Padrões Especialista do domínio Especialista em TI 27

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

http://www.voelter.de/services/mdsd-tutorial.html http://www.voelter.de/services/mdsd-tutorial.html http://www.voelter.de/services/mdsd-tutorial.html 29

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. David Wile. Lessons learned from real dsl experiments. Sci. Comput. Program., 51(3):265-290, 2004. 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 30

OMG MDA (Model-Driven Architecture) Vanderbilt University MIC (Model Integrated Computing) Microsoft Software Factories Eclipse Modeling 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 31

CIM Computation Independent Model PIM Platform Independent Model PSM Platform Specific Model Modelo de plataforma Transformação de modelos 32

UML Unified Modeling Language MOF Meta-Object Facility CWM Common Warehouse Metamodel XMI XML Metadata Interchange QVT Query / Views / Transformations 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 MOF Metamodelo A Metamodelo B Modelos A QVT Modelos B Consultas Transformações 33

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

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 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 Microsoft Visual Studio DSL Tools Ferramenta para definição de linguagens específicas de domínio Geração de código Outras funções 35

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 Eclipse Modeling Framework Graphical Modeling Framework Textual Modeling Framework Xtext TCS UML2 Tools Model to Model Transformation Atlas Transformation Language Model to Text Transformation Java Emitter Templates Xpand Generative Modeling Technologies Incubadora de projetos inovadores relacionados a modelagem AM3, AMW, MOFScript, etc. 36

Solução Implementação Problema 1/26/2009 Complexidade acidental Solução Ferramenta de modelagem Transformações Produto Desenvolvedor Compiladores Benefícios 37

DSL UML MIC Software factories TMF MDA Eclipse Sugestões: Qual a relação MDD / métodos ágeis? Se a modelagem é acidental, porque precisamos dela? 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? 38