conceitos mdd

97
WebMedia 2009 –Minicurso 3 Parte 1: Conceitos MDD CONCEITOS MDD Parte 1 1

Upload: duongminh

Post on 08-Jan-2017

245 views

Category:

Documents


0 download

TRANSCRIPT

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

CONCEITOS MDD

Parte 1

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� 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)� 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� 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 fimTimer() {

if(estado == ABERTO) {

estado = DISPARANDO;

tocaAlarme();

timer =

new Timer(20000);}

public void fechou() {

if(estado == ABERTO) {

estado = FECHADO;

timer = null;

}

}

new Timer(20000);

}

else {

estado = ABERTO;

desligaAlarme();

timer =

new Timer(10000);

}

}

8

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Reutilização de conhecimento

Fechado

Inicial

Aberto

Disparando

alarmeAbriu porta

10 segundos

Fechou

porta

20 segundos

9

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Reutilização de conhecimento

ASM

Java

C#

Lisp

Prolog

ASM

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

conhecimentoconhecimento

� 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� Mapeamento problema / solução

12

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Produtividade

Fechado

Inicial

public void abriu() {

estado = ABERTO;

timer = new Timer(10000);

}

public void fechou() {

if(estado == ABERTO) {

estado = FECHADO;

timer = null;

}

}

public void fimTimer() {

Aberto

Disparandoalarme

Abriu porta

10 segundos

Fechou porta

20 segundos

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 Parte 1: Conceitos MDD

Produtividade

Fechado

Inicial

public void abriu() {

estado = ABERTO;

timer = new Timer(10000);

}

public void fechou() {

if(estado == ABERTO) {

estado = FECHADO;

timer = null;

}

}

public void fimTimer() {

Aberto

Disparandoalarme

Abriu porta

10 segundos

Fechou porta

20 segundos

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 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() {

Produtividade

Fechado

Inicial

public void fimTimer() {

if(estado == ABERTO) {

estado = DISPARANDO;

tocaAlarme();

timer = new Timer(20000);

}

else {

estado = ABERTO;

desligaAlarme();

timer = new Timer(10000);

}

}

Aberto

Disparandoalarme

Abriu porta

10 segundos

Fechou porta

20 segundos

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� 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� 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 Parte 1: Conceitos MDD

Manutenibilidade

Fechado

Inicial

public void abriu() {

estado = ABERTO;

timer = new Timer(10000);

}

public void fechou() {

if(estado == ABERTO) {

estado = FECHADO;

timer = null;

}

}

public void fimTimer() {

Aberto

Disparandoalarme

Abriu porta

10 segundos

Fechou porta

20 segundos

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)� 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� 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 é � 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 fimTimer() {

if(estado == ABERTO) {

estado = DISPARANDO;

tocaAlarme();

timer =

new Timer(20000);}

public void fechou() {

if(estado == ABERTO) {

estado = FECHADO;

timer = null;

}

}

new Timer(20000);

}

else {

estado = ABERTO;

desligaAlarme();

timer =

new Timer(10000);

}

}

26

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Manutenibilidade

Fechado

Inicial

Aberto

Disparando

alarmeAbriu porta

10 segundos

Fechou

porta

20 segundos

27

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Manutenibilidade

Fechado

Inicial

Fechou

porta

Aberto

Disparando

alarmeAbriu porta

10 segundos

Fechou

porta

20 segundos

porta

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 � 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):� 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

ValidaçãoEstado “morto”

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

•Requisitos

•Modelos

•Regras de negócio

Software dependente

da plataforma

da plataforma •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

•Requisitos

•Modelos

•Regras de negócio

Portabilidade

Software independente

da plataforma

1 mês

•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

Software dependente

da plataforma

da plataforma

6 meses

37

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Portabilidade

Software independente

da plataforma

•Requisitos

•Modelos

•Regras de negócio

Software dependente

da plataforma

da plataforma

38

•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

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Portabilidade

Software independente

da plataforma

•Requisitos

•Modelos

•Regras de negócio

3 meses

da plataforma

39

•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

Software dependente

da plataforma

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

http://www.3wt.com.br/3wt/pr_sigame.shtml

• Localização

• Roteamento

• Telemetria

• Acionamento

remoto

42

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

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

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

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 mapas44

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Tecnologias envolvidas

� Dispositivos móveis

� Celular (JME)

� PND – Personal Navigation Device (C# / .NET)

� Visualização Web

� Portal de mapas (Javascript)� 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� 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

http://www.3wt.com.br/3wt/pr_sigame.shtml

• Localização

• Roteamento

• Telemetria

• Acionamento

remoto

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� 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 / interoperabilidade48

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Solução

Modelagem

Reutilização

Produtividade

Manutenibilidade

Validação / otimização

Portabilidade

Alta complexidade

•(MDD) Model-Driven Development

•(MDSD) Model-Driven Software

Development

•(MDE) Model-Driven Engineering

Alta complexidade

Desenvolvimento

Orientado a Modelos

49

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

DESENVOLVIMENTO ORIENTADO A

MODELOS

O que é?

50

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Desenvolvimento convencional

import java.util.*;

public synchronizedreplicateData() {...

}

<%@ page language="java“>

Finanças

Economia

<%@ page language="java“><%@taglib prefix="c“

uri="jsp/jstl/core“ %>

<html> <head> ...

<struts-config><form-bean> ...<action> ...

</struts-config>

#include "demoextension.h"

int AEEClsCreateInstance(void **ppObj) {

*ppObj = NULL;if( ClsId == AEECLSID)

...

jnz Rx 00#add b, 0F#add c, 0E#mov A, 00#

CREATE TABLE Map(id INTEGER PK....

)

Jogos

Alimentos

51

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Desenvolvimento convencional com

atividade de modelagem

import java.util.*;

public synchronizedreplicateData() {...

}

<%@ page language="java“>

Finanças

Economia

<%@ page language="java“><%@taglib prefix="c“

uri="jsp/jstl/core“ %>

<html> <head> ...

<struts-config><form-bean> ...<action> ...

</struts-config>

#include "demoextension.h"

int AEEClsCreateInstance(void **ppObj) {

*ppObj = NULL;if( ClsId == AEECLSID)

...

jnz Rx 00#add b, 0F#add c, 0E#mov A, 00#

CREATE TABLE Map(id INTEGER PK....

)

Jogos

Alimentos

52

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Desenvolvimento orientado a

modelos

� Modelos fazem parte do software

import java.util.*;

public synchronizedreplicateData() {...

}

<%@ page language="java“>

Finanças

Economia

<%@ page language="java“><%@taglib prefix="c“

uri="jsp/jstl/core“ %>

<html> <head> ...

<struts-config><form-bean> ...<action> ...

</struts-config>

#include "demoextension.h"

int AEEClsCreateInstance(void **ppObj) {

*ppObj = NULL;if( ClsId == AEECLSID)

...

jnz Rx 00#add b, 0F#add c, 0E#mov A, 00#

CREATE TABLE Map(id INTEGER PK....

)

Jogos

Alimentos

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� 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 Parte 1: Conceitos MDD

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

PUSH AX

MOV AL, char

MOV AH, 0Eh

INT 10h

POP AX .asm.asm

56

POP AX .asm.asm

000100010010100010011100

100101010001011010111000

101001001111001001001110

101001010101000010100101

010111101010011111100010

010010110100101100010100

1111101101010101 .bin.bin

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

000100010010100010011100100101010001011010111000101001001111001001001

110101001010101000010100101010111101010011111100010010010110100101100

010100111110110101010100010001001010001001110010010101000101101011100

010100100111100100100111010100101010100001001011110101001111110001001

001011010010110001010011111011010101010001000100101000100111001001010

100010110101110001010010011110010010011101010010101010000101010111101

010011111100010010010110100101100010100111110110101010100010001001010

001001110010010101000101101011100010100100111100100100111010100101010

100001010101111010100111111000100100101101001011000101001111101101010

101000100010010100010011100100101010001011010111000101001001111001001

001110101001010101000010110010101011110101001111110001001001011010010

110001010011111011010101011001010010110010001011111000101010100101111

100001010010100010011101010101100111111010101000001001010100010101010

PUSH AX

MOV AL, char

MOV AH, 0Eh

INT 10h

POP AX

public int soma (int a, int b) {

int resultado = a + b;

53

92 +

57

100001010010100010011101010101100111111010101000001001010100010101010

100101010101010101110100101010100001010101111010100111111000100100101

101001011000101001111101101010101000100010010100010011100100101010001

011010111000101001001111001001001110101001010101000010110010101011110

101001111110001001001011010010110001010011111011010101011001010010110

010001011111000101010100101111100001010010100010011101010101100111111

010101000001001010100010101010100101010101010101110100101010100001010

101111010100111111000100100101101001011000101001111101101010101000100

010010100010011100100101010001011010111000101001001111001001001110101

001010101000010110010101011110101001111110001001001011010010110001010

011111011010101011001010010110010001011111000101010100101111100001010

010100010011101010101100111111010101000001001010100010101010100101010

1010101011111100101

ADD AX,BX

INT 10h

POP AX

JNZ R1, 1Eh

return resultado;

}

92

145

+

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

public int soma (int a,

int b) {

int resultado = a + b;

return resultado;

} .java.java

PUSH AX

53

92

145

+

.math.math

Domínio problema

58

PUSH AX

MOV AL, char

MOV AH, 0Eh

INT 10h

POP AX .asm.asm

0001000100101000100111001

0010101000101101011100010

1001001111001001001110101

0010101010000101001010101

1110101001111110001001001

0110100101100010100111110

1101010101 .bin.bin

Domínio TI

(solução)

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Microsoft AccessMicrosoft Access

59

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

http://www.gamemaker.nl/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� Tecnologias atuais MDD

� Permitem a construção/edição destes artefatos

63

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

DESENVOLVIMENTO ORIENTADO A

MODELOS

Vantagens e desvantagens

64

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Vantagens

Compra

Venda

Cotação

Aluguel

Contrato Fiador

Classe

Objeto

Padrões

Métodos

Atributos

Especialista do

domínio

Especialista

em TI65

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 clarade 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� 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� 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 Parte 1: Conceitos MDD

MDD – estágio 1

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

70

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

MDD – estágio 2

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 produtovezes, 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. 72

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� 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)� 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� 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� 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 CWMOutros

metamodelos

XMI

Formato

XML

UML CWMmetamodelos

Modelos UMLModelos de

dados

Outros

modelos

Modelo

UML1.xmiModelo

UML2.xmi

Modelo

Dados1.xmi

Modelo

Qualquer1.xmiModelo

Qualquer2.xmi82

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Padrões MDA

MOF

Metamodelo A Metamodelo BMetamodelo A Metamodelo B

Modelos A Modelos B

QVT

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ênciauma 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.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� 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� 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íniode 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� 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

ImplementaçãoSolução

94

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

CompiladoresDesenvolvedor

Ferramenta de

modelagem

Transformações Produto

Benefícios

95

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

UML

MIC

DSL

Software factories

TMF

MDA Eclipse

96

WebMedia 2009 – Minicurso 3 Parte 1: Conceitos MDD

Fim da parte 1

� Perguntas?

Sugestões:

97

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?