parte1.conceitos - dc - ufscardaniel/files/cursomdd/parte1.conceitos.pdf · 1/26/2009 2 problema...

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

Upload: hanga

Post on 26-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

1

� Como é feito› Análise de um problema/processo/sistema› Desenvolvimento de uma solução

� Software + não-software

› Testes/validação

Problema

Solução

Page 2: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

2

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?

Page 3: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

3

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

Page 4: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

4

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!

Page 5: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

5

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

MensagemAbstrataFabricaDeMensagemAbstrata

FabricaDeMensagemDesktop

FabricaDeMensagemPalm

FabricaDeMensagemCelular Mensagem

Desktop

MensagemPalm

MensagemCelular

� 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

Page 6: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

6

Adapter

Adapter

AdapterProtocolo

CriptografiaInternacionalização

Base de Dados

Controle de acesso

Tarifação

Finanças

Jogos

Alimentos

Turismo

Aeronáutica

Economia

Domínio do problema Domínio TI

OO

Padrões

Linguagens

Métodos ágeis

Banco de dados

Trabalho mental dos

desenvolvedores

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

Page 7: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

7

� 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

Solução

Implementação

Complexidade acidental

� 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

Page 8: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

8

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

}

Page 9: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

9

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

}

}

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

20 segundos

Java

C#Lisp

Prolog

ASM

Page 10: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

10

� 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

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

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

}

}

Page 11: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

11

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

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

}

}

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

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

}

}

Page 12: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

12

� 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

Page 13: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

13

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

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.

Page 14: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

14

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

}

}

Page 15: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

15

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

20 segundos

Fechado

Aberto

Disparandoalarme

Inicial

Abriu porta

10 segundos

Fechou porta

20 segundos

Fechou porta

� 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

Page 16: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

16

� 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

Page 17: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

17

� 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

Page 18: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

18

Software dependente da

plataforma

Software independente 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 dependente da

plataforma

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

1 mês

6 meses

Software dependente da

plataforma

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

Page 19: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

19

Software dependente da

plataforma

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

1 mês

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

Page 20: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

20

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

• Rastreamento (rádio-frequecia, GPRS)• Visualização (Java SWING, Web, JME, Palm)• Localização• Roteamento• Telemetria• Acionamento remoto

� 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

Page 21: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

21

� 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

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

• Rastreamento (rádio-frequecia, GPRS)• Visualização (Java SWING, Web, JME, Palm)• Localização• Roteamento• Telemetria• Acionamento remoto

Page 22: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

22

� 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

ModelagemReutilização

ProdutividadeManutenibilidade

Validação / otimizaçãoPortabilidade

•(MDD) Model-Driven Development•(MDSD) Model-Driven Software Development

•(MDE) Model-Driven Engineering

Alta complexidade

Desenvolvimento Orientado a Modelos

Page 23: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

23

import java.util.*;

public synchronizedreplicateData() {...

}

<%@ 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....

)

Finanças

Jogos

Alimentos

Economia

import java.util.*;

public synchronizedreplicateData() {...

}

<%@ 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....

)

Finanças

Jogos

Alimentos

Economia

� Modelos fazem parte do softwareimport java.util.*;

public synchronizedreplicateData() {...

}

<%@ 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....

)

Finanças

Jogos

Alimentos

Economia

Page 24: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

24

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

71

public int soma (int a, int b) {

int resultado = a + b;

return resultado;

}

72

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

Page 25: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

25

73

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

INT 10h

POP AX

ADD AX,BX

INT 10h

POP AX

JNZ R1, 1Eh

public int soma (int a, int b) {

int resultado = a + b;

return resultado;

}

5392

145

+

74

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

0001000100101000100111001

0010101000101101011100010

1001001111001001001110101

0010101010000101001010101

1110101001111110001001001

0110100101100010100111110

1101010101 .bin

5392

145

+

.math

Domínio TI(solução)

Domínio problema

75

Microsoft Access

Page 26: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

26

76

http://www.gamemaker.nl/

� Netbeans› UML› Matisse› Mobility

� Demonstração

Page 27: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

27

� 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

Especialista do domínio

Especialista em TI

Compra

Venda

Cotação

Aluguel

Contrato Fiador

Classe

Objeto

Padrões

Métodos

Atributos

Page 28: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

28

� 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

Page 29: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

29

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

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

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

Page 30: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

30

� 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

Page 31: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

31

� 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

Page 32: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

32

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

Page 33: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

33

� UML› Unified Modeling Language

� MOF› Meta-Object Facility

� CWM› Common Warehouse Metamodel

� XMI› XML Metadata Interchange

� QVT› Query / Views / Transformations

MOF

UML CWMOutros

metamodelos

Modelos UML

Modelos de dados

Outros modelos

XMI

Formato XML

ModeloUML1.xmi

ModeloUML2.xmi

ModeloDados1.xmi

ModeloQualquer1.xmi

ModeloQualquer2.xmi

MOF

Metamodelo A

Metamodelo B

Modelos A Modelos BQVT

Consultas Transformações

Page 34: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

34

� 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

Page 35: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

35

� 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

Page 36: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

36

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

Page 37: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

37

Problema

Solução

ImplementaçãoSolução

Complexidade acidental

CompiladoresDesenvolvedor

Ferramenta de modelagem

Transformações Produto

Benefícios

Page 38: Parte1.Conceitos - DC - UFSCardaniel/files/cursoMDD/Parte1.Conceitos.pdf · 1/26/2009 2 Problema Solução Implementação Arquitetos (algumas vezes) usam UML para criar modelos de

1/26/2009

38

MDA

UMLMIC

DSL

Software factories

Eclipse

TMF

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?