conceitos mdd - DC

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