Você está na página 1de 72

Model

Driven Engineering
Centro de Inform-ca - Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br Slides originais elaborados pelos Vinicius Cardoso Garcia (UFPE) e prof. Daniel Lucrdio (UFSCar)
O autor permite o uso e a modicao dos slides para ns did-cos

Referncias
Notas de aulas baseadas em
Lucrdio et al. Desenvolvimento Web orientado a modelos: conceitos, ferramentas e tcnicas, Webmedia 2009.
hSp://www2.dc.ufscar.br/~daniel/

Vlter, Model-Driven SoYware Development (MSDS) Tutorial


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

[if977] Engenharia de SoYware - SI - CIn - UFPE

Desenvolvimento de So7ware
Como feito?
Anlise de um problema/processo/sistema Desenvolvimento de uma soluo
SoYware + no-soYware

Testes/validao

[if977] Engenharia de SoYware - SI - CIn - UFPE

Desenvolvimento de So7ware
Como feito?
Anlise de um problema/processo/sistema Desenvolvimento de uma soluo
SoYware + no-soYware

Testes/validao

[if977] Engenharia de SoYware - SI - CIn - UFPE

Como deveria ser?


Anlise Problema

Implementao

Soluo
[if977] Engenharia de SoYware - SI - CIn - UFPE 5

A Realidade
Anlise Problema

Soluo

Implementao
[if977] Engenharia de SoYware - SI - CIn - UFPE 6

A Realidade
Modelagem algo posi-vo... Arquitetos (algumas vezes) usam UML para criar modelos de alto nvel
So usados em um primeiro momento Discusses, idias, etc (anlise)

Porm logo so inteis


Programadores criam cdigo manualmente Manuteno feita diretamente no cdigo Modelos perdem a consistncia
Mesmo com engenharia reversa, ainda u artefato desnecessrio
[if977] Engenharia de SoYware - SI - CIn - UFPE 7

Mas por que?


Qual o problema com a modelagem? Por que descartamos logo os modelos? Existe alguma forma de torn-los efe-vamente teis durante todo ciclo de vida?

[if977] Engenharia de SoYware - SI - CIn - UFPE

Pense um pouco
Considere os seguintes requisitos para um soYware
Preciso escrever Al mundo! na tela

[if977] Engenharia de SoYware - SI - CIn - UFPE

AL MUNDO VERSO 1
public satic void main(String args[]) { System.out.println(Al mundo!); }

[if977] Engenharia de SoYware - SI - CIn - UFPE

10

Pense um pouco
Considere os seguintes requisitos para um soYware
Preciso escrever Al mundo! na tela No futuro, deve ser possvel u-lizar outras mensagens, alm de Al mundo!

[if977] Engenharia de SoYware - SI - CIn - UFPE

11

AL MUNDO VERSO 2
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); }

[if977] Engenharia de SoYware - SI - CIn - UFPE

12

Pense um pouco
Considere os seguintes requisitos para um soYware:
Preciso escrever Al mundo! na tela No futuro, deve ser possvel u-lizar outras mensagens, alm de Al mundo! Deve ser possvel usar diferentes cores

[if977] Engenharia de SoYware - SI - CIn - UFPE

13

AL MUNDO - VERSO 3

[if977] Engenharia de SoYware - SI - CIn - UFPE

14

Pense um pouco
Considere os seguintes requisitos para um soYware:
Preciso escrever Al mundo! na tela No futuro, deve ser possvel u-lizar outras mensagens, alm de Al mundo! Deve ser possvel usar diferentes cores Deve ser possvel usar diferentes disposi-vos (celular, monitor, projetor, palm, etc.)

[if977] Engenharia de SoYware - SI - CIn - UFPE

15

AL MUNDO VERSO 4

[if977] Engenharia de SoYware - SI - CIn - UFPE

16

Pense um pouco
Considere os seguintes requisitos para um soYware:
Preciso escrever Al mundo! na tela No futuro, deve ser possvel u-lizar outras mensagens, alm de Al mundo! Deve ser possvel usar diferentes cores Deve ser possvel usar diferentes disposi-vos (celular, monitor, projetor, palm, etc.) Deve ser possvel enviar a mensagem remotamente, pela Internet
[if977] Engenharia de SoYware - SI - CIn - UFPE 17

AL MUNDO VERSO 5

[if977] Engenharia de SoYware - SI - CIn - UFPE

18

Pense um pouco
Economia Trabalho mental dos desenvolvedores Finanas Jogos Alimentos Aeronutica Turismo Domnio do problema
[if977] Engenharia de SoYware - SI - CIn - UFPE

OO

Padres Linguagens Agile

SGBDs

Domnio de TI
19

Complexidade
Complexidade inerente vs complexidade acidental Ex.:

Diferentes disposi-vos (desktop, celular, palm, etc)

Classes abstratas, herana, polimorsmo, constantes, programao reexiva,, mtodos da classe String...
[if977] Engenharia de SoYware - SI - CIn - UFPE 20

Complexidade
Complexidade inerente
Impossvel descartar A menos que voc tenha uma boa lbia Resolver sua brigao

Complexidade acidental
possvel contornar/reduzir
Frameworks, padres, etc.

So problemas que voc mesmo criou

[if977] Engenharia de SoYware - SI - CIn - UFPE

21

Complexidade Acidental
Entrevistar cliente Fazer documento de requisitos Abrir ferramenta de modelagem (UML) Aprender UML Representar o problema em UML Aprender UML Discu-r problema em cima dos modelos Projetar soluo Representar soluo em UML Aprender UML Gerar prot-pos com regras de negcio Testar e Implantar
[if977] Engenharia de SoYware - SI - CIn - UFPE 22

Complexidade Acidental
Complexidade Entrevistar cliente Fazer documento de requisitos Abrir ferramenta de modelagem (UML) Aprender UML Representar o problema em UML Aprender UML DiscuXr problema em cima dos modelos Projetar soluo Representar soluo em UML Aprender UML Gerar protXpos com automaXcamente Adaptar protXpos Completar protXpos com regras de negcio X
[if977] Engenharia de SoYware - SI - CIn - UFPE

In Ac X X X X X X X X X X X X X

Testar e Implantar

23

Problemas a serem resolvidos


Reduzir o fardo da modelagem
Diculdades da linguagem (UML) Inconsistncias entre modelo-cdigo Necessidade de ferramentas caras Modelo algo desnecessrio

[if977] Engenharia de SoYware - SI - CIn - UFPE

24

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento
Formas mais ecientes para representar conhecimento Menos dependentes do cdigo nal Mais prximas do domnio do problema Diferente da documentao

[if977] Engenharia de SoYware - SI - CIn - UFPE

25

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produ-va
Foco em tarefas conceituais Evitar tarefas repe--vas

[if977] Engenharia de SoYware - SI - CIn - UFPE

26

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produ-va Facilitar a manuteno
Aproveitar o re-trabalho de forma mais produ-va Possibilitar que mudanas sejam realizadas no nvel conceitual Facilitar a localizao dos erros e falhas Manter a consistncia entre modelo e cdigo
[if977] Engenharia de SoYware - SI - CIn - UFPE 27

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produ-va Facilitar a manuteno Validao/o-mizao
Fazer uso de checagem autom-ca U-lizar o conhecimento de especialistas do domnio
[if977] Engenharia de SoYware - SI - CIn - UFPE 28

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produ-va Facilitar a manuteno Validao / o-mizao Portabilidade
Reduzir o esforo especco de plataforma Concentrar no tabalho conceitual
[if977] Engenharia de SoYware - SI - CIn - UFPE 29

Problemas a serem resolvidos


Reduzir o fardo da modelagem Facilitar o reuso do conhecimento Aproveitar o trabalho de forma mais produ-va Facilitar a manuteno Validao / o-mizao Portabilidade Lidar com a alta complexidade do soYware atual
Diferentes especialistas (TI vs domnio) Necessidade de integrao / interoperabilidade
[if977] Engenharia de SoYware - SI - CIn - UFPE 30

Uma soluo
Modelagem Reu-lizao Produ-vidade Manutenibilidade Validao / o-mizao Portabilidade Alta complexidade

Desenvolvimento Orientado a Modelos

(MDD) Model-Driven Development (MDSD) Model-Driven SoYware Development (MDE) Model-Driven Engineering

[if977] Engenharia de SoYware - SI - CIn - UFPE

31

Desenvolvimento convencional
Economia Finanas Jogos Alimentos
<%@ page language="java> <%@taglib prex="c uri="jsp/jstl/core %> <html> <struts-cong> <head> ... <form-bean> ... <ac-on> ... </struts-cong> CREATE TABLE Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... import java.u-l.*; public synchronized replicateData() { ... }

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

[if977] Engenharia de SoYware - SI - CIn - UFPE

32

Desenvolvimento convencional com aXvidade de modelagem


Economia Finanas Jogos Alimentos
<%@ page language="java> <%@taglib prex="c uri="jsp/jstl/core %> <html> <struts-cong> <head> ... <form-bean> ... <ac-on> ... </struts-cong> CREATE TABLE Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... import java.u-l.*; public synchronized replicateData() { ... }

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

[if977] Engenharia de SoYware - SI - CIn - UFPE

33

Desenvolvimento Orientado a Modelos


Modelos fazem parte do so7ware
Economia Finanas Jogos Alimentos
<%@ page language="java> <%@taglib prex="c uri="jsp/jstl/core %> <html> <struts-cong> <head> ... <form-bean> ... <ac-on> ... </struts-cong> CREATE TABLE Map( id INTEGER PK .... ) #include "demoextension.h" int AEEClsCreateInstance(void **ppObj) { *ppObj = NULL; if( ClsId == AEECLSID) ... import java.u-l.*; public synchronized replicateData() { ... }

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

[if977] Engenharia de SoYware - SI - CIn - UFPE

34

Desenvolvimento Orientado a Modelos


Os modelos no so somente papel
So entradas para transformadores e geradores

Desenvolvedor protegido das complexidades


Inerente e acidental

Em alguns casos, o desenvolvedor nem precisa visualizar cdigo!

[if977] Engenharia de SoYware - SI - CIn - UFPE

35

public int soma (int a, int b) { int resultado = a + b; return resultado; }

[if977] Engenharia de SoYware - SI - CIn - UFPE

36

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
AL, char AH, 0Eh 10h AX

PUSH AX MOV MOV INT POP

.asm

000100010010100010011100 100101010001011010111000 101001001111001001001110 101001010101000010100101 010111101010011111100010 010010110100101100010100 1111101101010101

.bin

[if977] Engenharia de SoYware - SI - CIn - UFPE

37 37

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 MOV MOV POP ADD POP JNZ

AX

AL, char AH, 0Eh

INTpublic int soma 53 10h (int a, int b) { int resultado 92 a + b; AX = + return AX,BX resultado; 10h AX

INT}

145

R1, 1Eh

[if977] Engenharia de SoYware - SI - CIn - UFPE

38

53 92 roblema Domnio p+ 145


public int soma (int a, int b) { int resultado = a + b; return resultado; } PUSH AX MOV MOV INT POP AL, char AH, 0Eh 10h AX

.math

.java

Domnio TI (soluo) .asm


.bin
39

0001000100101000100111001 0010101000101101011100010 1001001111001001001110101 0010101010000101001010101 1110101001111110001001001 0110100101100010100111110 1101010101

[if977] Engenharia de SoYware - SI - CIn - UFPE

Microso7 Access

[if977] Engenharia de SoYware - SI - CIn - UFPE

40

Game Maker hdp://www.yoyogames.com/

[if977] Engenharia de SoYware - SI - CIn - UFPE

41

NetBeans Mobility Pack

[if977] Engenharia de SoYware - SI - CIn - UFPE

42

Elementos
Ferramenta de modelagem Outros modelos Modelo

Mecanismo para executar transformaes Ferramenta para definir transformaes Transformao Cdigofonte

[if977] Engenharia de SoYware - SI - CIn - UFPE

43

Elementos
Exemplo do Netbeans
No possvel alterar a ferramenta de modelagem No possvel alterar a transformao

Tecnologias atuais MDD


Permitem a construo/edio destes artefatos

[if977] Engenharia de SoYware - SI - CIn - UFPE

44

Vantagens
Um nico modelo pode dar origem a diferentes implementaes, linguagens ou plataformas Permite capturar o conhecimento do domnio de forma clara
Ficando disponvel para os desenvolvedores

Esconde detalhes de implementao durante o desenvolvimento de solues Um nico modelo pode gerar uma grande quan-dade e diversidade de cdigo
[if977] Engenharia de SoYware - SI - CIn - UFPE 45

Vantagens
Especialistas do domnio tm um papel mais a-vo no processo Maior ecincia no desenvolvimento Maior qualidade no produto/processo Geradores no produzem erros acidentais Modelos esto sempre atualizados

[if977] Engenharia de SoYware - SI - CIn - UFPE

46

Desvantagens
Maior rigidezno soYware produzido Alta complexidade dos artefatos necessrios (transformadores, etc) Questo do desempenho
O-mizao autom-ca vs cdigo escrito manualmente

Exige habilidades especcas e pessoas altamente especializadas em MDD


[if977] Engenharia de SoYware - SI - CIn - UFPE 47

Comparao com Desenvolvimento Tradicional


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

[if977] Engenharia de SoYware - SI - CIn - UFPE

48

MDD Estgio 1
hSp://www.voelter.de/services/mdsd-tutorial.html

[if977] Engenharia de SoYware - SI - CIn - UFPE

49

MDD Estgio 2
hSp://www.voelter.de/services/mdsd-tutorial.html

[if977] Engenharia de SoYware - SI - CIn - UFPE

50

Abordagens para MDD


MDD so os princpios
Desenvolvimento orientado a modelos Elevao da importncia do modelo no processo

Existem diversas frentes


Cada uma baseada em padres, ferramentas e processos especcos

[if977] Engenharia de SoYware - SI - CIn - UFPE

51

Abordagens para MDD


OMG
MDA (Model-Driven Architecture)

Vanderbilt University
MIC (Model Integrated Compu-ng)

MicrosoY
SoYware Factories

Eclipse
Modeling
[if977] Engenharia de SoYware - SI - CIn - UFPE 52

OMG - MDA
Model-Driven Architecture Surgiu em 2001 Baseada em padres (standards) Obje-vo
Especicar um sistema de forma independente de plataforma Especicar plataformas Escolher uma plataforma para o sistema Transformar a especicao genrica em uma especicao especca de plataforma
[if977] Engenharia de SoYware - SI - CIn - UFPE 53

Mda viso geral

[if977] Engenharia de SoYware - SI - CIn - UFPE

54

Mda principais elementos


CIM Computa-on Independent Model PIM Plaorm Independent Model PSM Plaorm Specic Model Modelo de plataforma Transformao de modelos

[if977] Engenharia de SoYware - SI - CIn - UFPE

55

Ciclod e vida MDA

[if977] Engenharia de SoYware - SI - CIn - UFPE

56

Transformaes MDA

[if977] Engenharia de SoYware - SI - CIn - UFPE

57

Padres MDA
UML
Unied Modeling Language

MOF
Meta-Object Facility

CWM
Common Warehouse Metamodel

XMI
XML Metadata Interchange

QVT
Query / Views / Transforma-ons
[if977] Engenharia de SoYware - SI - CIn - UFPE 58

Padres MDA
MOF Formato XML XMI

UML

CWM

Outros metamodelos

Modelos UML

Modelos de dados
Modelo Dados1.xmi

Outros modelos
Modelo Qualquer1.xmi

Modelo UML1.xmi

Modelo UML2.xmi

Modelo Qualquer2.xmi
59

[if977] Engenharia de SoYware - SI - CIn - UFPE

Padres MDA
MOF

Metamodelo A

Metamodelo B

Modelos A

QVT Modelos B

Consultas

Transformaes

[if977] Engenharia de SoYware - SI - CIn - UFPE

60

MDA - Sumrio
Uma srie de especicaes
Foco em portabilidade, independncia de plataforma

Voltadas implementao e padronizao uma referncia


Fabricantes podem optar por aderir aos padres

No dene uma metodologia No dene ferramentas Porm foi uma das inicia-vas fundamentais para o surgimento do paradigma
[if977] Engenharia de SoYware - SI - CIn - UFPE 61

MIC
Model Integrated Compu-ng Pesquisa da Vanderbilt University Trs elementos principais
Tecnologia para modelagem especca de domnio Conjunto de ferramentas para modelagem Framework para anlise formal, vericao e transformao de modelos

GMEGeneric Modeling Environment


[if977] Engenharia de SoYware - SI - CIn - UFPE 62

So7ware Factories
Jack Greeneld, Keith Short, Steve Cook, and Stuart Kent. SoYware Factories: Assembling Applica-ons with PaSerns, Models, Frameworks and Tools. Wiley, 2004. Abordagem para desenvolvimento de soYware
Reu-lizao sistem-ca MDD tem um papel importante

[if977] Engenharia de SoYware - SI - CIn - UFPE

63

So7ware Factories
Pense em uma fbrica tradicional
Estrutura projetada para produzir uma determinada famlia ou linha de produtos

Trs elementos
Esquemada fbrica de soYware: descreve o que necessrio para construir os produtos da fbrica Template da fbrica: uma instncia do esquema Ambiente extensvel: ferramentas u-lizadas para a produo, conguradas atravs do template
[if977] Engenharia de SoYware - SI - CIn - UFPE 64

MDD e So7ware Factories


Modelos so usados para
Capturar especicaes em alto nvel (inteno)

Transformaes so usadas para


Gerar implementao automa-camente

Outras checagens realizadas em modelos Diferentemente da MDA


Menos interesse em portabilidade e independncia de plataforma Maior foco em produ-vidadee reu-lizao
[if977] Engenharia de SoYware - SI - CIn - UFPE 65

So7ware Factories - Tecnologias


MicrosoY Visual Studio DSL Tools
Ferramenta para denio de linguagens especcas de domnio Gerao de cdigo Outras funes

[if977] Engenharia de SoYware - SI - CIn - UFPE

66

Eclipse Modeling
Srie de ferramentase prot-pos Origem e inuncia do MOF Linha prpria
INRIA - Ins-tut Na-onal de Recherche en Informa-que et en Automa-que - Frana Universidade de Nantes - Frana Borland IBM

[if977] Engenharia de SoYware - SI - CIn - UFPE

67

Projetos do Eclipse Modeling


Eclipse Modeling Framework Graphical Modeling Framework Textual Modeling Framework
Xtext TCS

UML2Tools

[if977] Engenharia de SoYware - SI - CIn - UFPE

68

Projetos do Eclipse Modeling


Model to Model Transforma-on
Atlas Transforma-on Language

Model to Text Transforma-on


Java EmiSer Templates Xpand

Genera-ve Modeling Technologies


Incubadora de projetos inovadores relacionados a modelagem AM3, AMW, MOFScript, etc.
[if977] Engenharia de SoYware - SI - CIn - UFPE 69

Sumrio

Manutenibilidade
Anlise

Problema

Modelagem
Soluo Implementao

Alta complexidade
[if977] Engenharia de SoYware - SI - CIn - UFPE

Soluo

70

Ferramenta de modelagem

Transformaes

Produto

Desenvolvedor

[if977] Engenharia de SoYware - SI - CIn - UFPE

Compiladores

Benecios
71

DSL

UML

MIC

SoYware factories
TMF

MDA

[if977] Engenharia de SoYware - SI - CIn - UFPE

Eclipse

72