CONCEITOS MDD
Transcript of CONCEITOS MDD
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
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
� 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
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
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 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
http://www.gamemaker.nl/http://www.gamemaker.nl/
60
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 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 – 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
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
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?