MDA - resumo (OMG - Model Driven Architecture) Prof...

Post on 11-Nov-2018

223 views 0 download

Transcript of MDA - resumo (OMG - Model Driven Architecture) Prof...

Rossano Pablo Pinto - março/2013 1

MDA - resumo(OMG - Model Driven Architecture)

Prof. Rossano Pablo PintoMarço/2012 – v0.1Março/2013 – v0.2

Rossano Pablo Pinto - março/2013 2

PARTE 1O processo de desenvolvimento MDA

Rossano Pablo Pinto - março/2013 3

Desenvolvimento tradicional de software

● Progresso em desenvolvimento de software– Percebido em termos da complexidade dos sistemas

construídos hoje (evoluímos bastante!):

● Sistemas ENORMES e COMPLEXOS

● Imagine o tempo gasto para construir sistemas simples HOJE (seria muito mais rápido do que antigamente)

Rossano Pablo Pinto - março/2013 4

Desenvolvimento tradicional de software

● O modelo tradicional é suficiente?– Escrever software é altamente trabalhoso (mesmo sem

levar em consideração o modelo)– Cada nova tecnologia exige o retrabalho da reescrita de

muito código (repetidas vezes... apenas para ser redundante:) )

– Os sistemas são construídos com diversas tecnologias diferentes

– Todos estes sistemas devem ser capazes de comunicar-se

– Os requisitos estão sempre sendo alterados

Rossano Pablo Pinto - março/2013 5

Desenvolvimento tradicional de software

● O problema da PRODUTIVIDADE – Fases:

1. Conceituação e levantamento de requisitos2. Análise e descrição funcional3. Projeto (design)4. Codificação (coding)5. Teste (testing)6. Implantação (deployment)

Rossano Pablo Pinto - março/2013 6

Desenvolvimento tradicional de software

● O problema da PRODUTIVIDADE

– Diagramas e documentos são produzidos nas fases 1, 2 e 3

– O que aconteceria se na fase de testes (5) e implantação (6) novos requisitos ou “erros” fossem detectados ?

Rossano Pablo Pinto - março/2013 7

Requisitos

Análise

Projeto de baixo nível

Codificação

Teste

Implantação

ProcessoIterativo nateoria

Atalho doprogramador

PredominanteTexto

Diagramas eTexto

Código

Código

Diagramas eTexto

Ciclo de vida tradicional de desenv. software

Rossano Pablo Pinto - março/2013 8

Desenvolvimento tradicional de software

● O problema da PRODUTIVIDADE – Documentos produzidos nas fases 1, 2 e 3 perdem seu

valor tão logo as fases de codificação começam– Ligação entre os documentos (1,2,3) e código perde-se

conforme processo de codificação avança– Diagramas: especificação real do código x figuras sem

relação com o código– Distância entre código e diagramas tende a aumentar

com tempo– Alterações são feitas apenas no código (custo x lucro x

produtividade x utilidade)

Rossano Pablo Pinto - março/2013 9

Desenvolvimento tradicional de software

● O problema da PRODUTIVIDADE – Se as alterações ocorrem sempre no código, porque

preocupar-se com a atualização dos diagramas?– Metodologias ágeis de desenvolvimento ajudam alguma

coisa neste cenário?● XP● Agile Software Development● ...

Geralmente não! Foco em código funciona bem em equipes permanentes e no início do desenvolvimento (está tudo bem “fresco” na memória).

● O que fazer com pessoas que não estavam na equipe original?

Rossano Pablo Pinto - março/2013 10

Desenvolvimento tradicional de software

● O problema da PRODUTIVIDADE – O desenvolvedor sente-se produtivo apenas nas fases

de codificação– As fases 1, 2 e 3 são geralmente vistas como “overhead”

Rossano Pablo Pinto - março/2013 11

Desenvolvimento tradicional de software

● O problema da PORTABILIDADE – A indústria de software possui uma característica

especial: uma nova invenção torna-se popular a cada ano:

● Java● Linux● XML● HTML● SOAP● UML● J2EE

● CORBA● RMI● .NET● JSP● ASP● Flash● WebServices

● Spring● Hibernate● Ruby● XSLT● JESS● DROOLS● RESTful

● Ruby on rails● SuperWABA● Android● iOS● JSON● Etc..● ...

Rossano Pablo Pinto - março/2013 12

Desenvolvimento tradicional de software

● O problema da PORTABILIDADE – Porque a indústria de software deve acompanhar estes

lançamentos?● Solicitação de clientes (Ex.: Interfaces web)● Resolve problemas reais e atuais (Ex.: XML, “portabilidade

Java” - está mais para PORCABILIDADE!)● Provedores de ferramentas interrompem o suporte a

tecnologias “antigas”● Ficar em dia ou à frente da concorrência● Outros ? ….

Rossano Pablo Pinto - março/2013 13

Desenvolvimento tradicional de software

● O problema da INTEROPERABILIDADE – Sistemas de software RARAMENTE vivem isolados– Sistemas precisam se comunicar

● Sistemas baseados em Web precisam obter informações em sistemas back-end (geralmente desenvolvidos com tecnologias mais antigas...)

● Mesmo sistemas completos construídos do zero utilizam diversas tecnologias diferentes (que precisam se comunicar)– EJB + SGBDs diversos + Servidor de aplicação …

Rossano Pablo Pinto - março/2013 14

Desenvolvimento tradicional de software

● O problema da INTEROPERABILIDADE – .....Sistemas precisam se comunicar

● Grandes sistemas monolíticos não são mais construídos: componentes menores que são interconectados– facilidade de manutenção e troca– Cada componente pode utilizar uma tecnologia

diferente

Rossano Pablo Pinto - março/2013 15

Desenvolvimento tradicional de software

● Os problemas de MANUTENÇÃO e DOCUMENTAÇÃO

– Documentação tem sempre sido feita após a implementação do software

– Escrever documentação durante a codificação é vista como uma tarefa que DESACELERA a produtividade!

– Documentação: vista como algo a ser utilizado pela prosperidade e não pelo desenvolvedor corrente

– Com cada alteração no código a documentação tem que ser alterada (manualmente!!!!)

Rossano Pablo Pinto - março/2013 16

Desenvolvimento tradicional de software

● Os problemas de MANUTENÇÃO e DOCUMENTAÇÃO

– Uma solução seria a geração de documentos a partir do próprio código. Linguagens que suportam anotação:

● Java● Eiffel

– Resolvem apenas o problema da documentação de baixo nível

– O que fazer????

Rossano Pablo Pinto - março/2013 17

Model Driven Architecture

● MDA: framework para o desenvolvimento de software

● MDA: definido pelo OMG (Object Management Group)

● Chave no MDA: Uso de modelos no processo de desenvolvimento de software

● Processo de desenvolvimento de software no MDA: Orientado pela atividade de modelagem do sistema de software

Rossano Pablo Pinto - março/2013 18

Model Driven Architecture

● O Ciclo de desenvolvimento MDA● Semelhante ao tradicional● Possui as mesmas fases, mas...● Uma das GRANDES DIFERENÇAS:

– Natureza dos artefatos desenvolvidos em cada fase:

OS ARTEFATOS SÃO MODELOS FORMAIS (MODELOS QUE PODEM SER ENTENDIDOS PELOS COMPUTADORES)

Rossano Pablo Pinto - março/2013 19

Model Driven Architecture

● Principais modelos do MDA● PIM – Platform Independent Model

– é independente de qualquer tecnologia de implementação (i.e.: pode ser desenvolvido para mainframe, Android, PC, JAVA, C++, etc...)

● PSM – Platform Specific Model– DEPENDENTE de tecnologia (Ex.: EJB PSM - possui

entidades como: home interface, entity bean, session bean, etc..) - Um PIM pode ser transformado em 1+ PSM

● CÓDIGO - Transformação do PSM em código

Rossano Pablo Pinto - março/2013 20

Model Driven Architecture

● MDA define: – PIM– PSM– CÓDIGO– Relação entre PIM, PSM e CÓDIGO

● Etapa mais complexa no processo MDA– Transformação do PIM em 1+ PSMs

Rossano Pablo Pinto - março/2013 21

Requisitos

Análise

Projeto de baixo nível

Codificação

Teste

Implantação

ProcessoIterativo nateoria

Atalho doprogramador

PredominanteTexto

Diagramas eTexto

Código

Código

Diagramas eTexto

RESGATANDO: Ciclo de vida tradicional de desenv. software

Rossano Pablo Pinto - março/2013 22

Requisitos

Análise

Projeto de baixo nível

Codificação

Teste

Implantação

ProcessoMDA

PredominanteTexto

PIM

Código

Código

PSM

Ciclo de vida MDA de desenv. software

Rossano Pablo Pinto - março/2013 23

Requisitos

Análise

Projeto de baixo nível

Codificação

Teste

Implantação

ProcessoMDA

PredominanteTexto

PIM

Código

Código

PSM

Ciclo de vida MDA de desenv. software

FerramentaDe

Transformaçãoo

FerramentaDe

Transformaçãoo

Rossano Pablo Pinto - março/2013 24

Model Driven Architecture

● Transformar um PIM (alto nível) em 1+ PSM ● aumenta o nível de abstração em que o

desenvolvedor consegue trabalhar.● Benefício:

– Permite que o desenvolvedor lide com sistemas mais complexos com menos esforço

Rossano Pablo Pinto - março/2013 25

● modelo tradicional x MDA– Muitas ferramentas podem gerar código, mas geralmente

geram apenas templates (esqueletos). O restante do código é “preenchido à mão”.

– As transformações no MDA são feitas totalmente por ferramentas e de forma automática!!

– Transformar PSM em código é fácil (devido às semelhanças da plataforma alvo)

– O grande benefício do MDA é transformar PIM em PSM de maneira AUTOMÁTICA!

MDA: Automação dos passos de transformação

Rossano Pablo Pinto - março/2013 26

MDA: Automação dos passos de transformação

FerramentaDe

TransformaçãooPIM PSM Cod.

Os 3 passos principais no processo de desenvolvimento MDA.

FerramentaDe

Transformaçãoo

Rossano Pablo Pinto - março/2013 27

● Produtividade ● Portabilidade● Interoperabilidade● Manutenção e documentação

MDA: Benefícios (resumo)

Rossano Pablo Pinto - março/2013 28

● Produtividade (modelo de alto nível deixa de ser “apenas papel”)

– menos trabalho: PIM não leva em consideração detalhes específicos de plataforma

– atenção focada na lógica do negócio

● Portabilidade– foco no desenvolvimento do PIM

MDA: Benefícios (resumo)

Rossano Pablo Pinto - março/2013 29

Interoperabilidade MDA com o uso de pontes (bridges)

PIM

PSM PSMPontePSM

Código CódigoPonte

Código

Primeiratransformação

Primeiratransformação

Segundatransformação

Segundatransformação

Rossano Pablo Pinto - março/2013 30

● Manutenção e documentação– o modelo é uma representação exata do código e vice-

versa– PIM não é mais abandonado após a escrita– Mudanças no sistema são feitas no PIM (nunca

diretamente no código, como no modelo tradicional)– No entanto, boas ferramentas poderão fazer a geração

nas duas vias:● modelo para código● código para modelo

MDA: Benefícios (resumo)

Rossano Pablo Pinto - março/2013 31

● OK, mas o que é necessário para implementar o MDA?

– modelos de alto-nível (precisos, bem-definidos, etc..)– linguagem para escrever modelos de alto nível (MOF -

segundo um dos autores da bibliografia utilizada, perfis UML não serviriam, EU particularmente creio que sirvam)

– definição das transformações entre PIM e 1+ PSMs– linguagem para escrever as transformações (XSLT + XSL

ou outra)– ferramentas que consigam executar as regras de

transformação PIM 2 PSM + PSM 2 code (xsltproc no Linux)

MDA: Building blocks

Rossano Pablo Pinto - março/2013 32

PARTE 2

O framework MDA

Rossano Pablo Pinto - março/2013 33

O que é um modelo?

● Definições gerais– Um exemplo utilizado por um artista– Uma pessoa fazendo pose para um artista– Uma réplica (em menor escala) de um objeto real: ex.:

carro– Um exemplo de um método de execução de trabalho– Um molde utilizado para produzir algum artefato de

roupa

Rossano Pablo Pinto - março/2013 34

O que é um modelo?

● O que as definições anteriores possuem em comum?

– Um modelo é sempre uma abstração de alguma coisa que existe na realidade

– Um modelo é diferente da coisa que ele modela● detalhes são deixados de lado, o tamanho pode ser diferente

– Um modelo pode ser utilizado para produzir algo que existe na realidade

Rossano Pablo Pinto - março/2013 35

O que é um modelo?

● Definições que utilizaremos– Um modelo é a descrição de (parte de) um sistema

escrito em uma linguagem bem-definida.– Uma linguagem bem-definida é uma linguagem com

sintaxe (formato) e semântica (significado) bem-definidas, a qual é apropriada para interpretação automática por computadores.

Rossano Pablo Pinto - março/2013 36

O que é um modelo?

● ...Definições que utilizaremos● Observe que, apesar da linguagem UML ser

amplamente utilizada, ela não é a única linguagem apropriada para MDA.

● Apesar das pessoas terem uma imagem mental de modelo como um conjunto de diagramas (Ex.: UML), não existe nenhuma restrição quanto ao uso de outros tipos de modelo.

Rossano Pablo Pinto - março/2013 37

Framework MDA: Modelos e linguagens

Modelo

Linguagem

Sistemadescreve

éescrito

em

Relação entre MODELO, SISTEMA e LINGUAGEM utilizada para escrever o modelo

Rossano Pablo Pinto - março/2013 38

Tipos de modelo

● Modelo de negócios e de software– Negócios - não descreve o sistema de software. Ele é

CIM (Computational Independent Model)– Software - descreve o sistema de software.

Rossano Pablo Pinto - março/2013 39

Tipos de modelo

Modelo de negócios

Modelo de software

departamento

software desuporte

descreve

descreve

derivado de

Sistema deNegócio

Rossano Pablo Pinto - março/2013 40

Tipos de modelo

● Modelos Dinâmico e Estrutural– Diagrama Classe UML - estrutural– Diagrama Estado UML - dinâmico– Mas são tão interrelacionados que deveriam ser

considerados um modelo só– Então, seria melhor considerar os diagramas como views

de um mesmo modelo.

Rossano Pablo Pinto - março/2013 41

Tipos de modelo

Modelo

UML

Sistemadescreve

éescrito

em

use case view interaction view

class diagram view state diagram view

Rossano Pablo Pinto - março/2013 42

Tipos de modelo

ModeloPetrinet

Petrinet

Sistema descreve

éescrito

em

ER

éescrito

em

ModeloERdescreve

Se uma mesma linguagem não é capaz de descrever osistema, então 2+ linguagenssão utilizadas. Com isso o sistemaé descrito em 2+ modelos.

Rossano Pablo Pinto - março/2013 43

Tipos de modelo

● Modelos Independente e Dependente de plataforma

– PIM pode ser descrito usando MOF– PSM pode ser descrito usando Perfis UML– É possível traçar a linha entre os dois modelos? (O que é

específico e o que não é?)● Dificilmente. Um modelo é mais ou menos específico que outro

– Em MDA, um modelo menos específico é transformado em um mais específico.

Rossano Pablo Pinto - março/2013 44

O que é uma transformação?

FerramentaDe

Transformaçãoo

FerramentaDe

Transformaçãoo

PIM PSM CÓDIGO

definição da transformação

definição da transformação

Rossano Pablo Pinto - março/2013 45

O que é uma transformação?

transformaçãoUML p/ Java

UML Java

Rossano Pablo Pinto - março/2013 46

O que é uma transformação?

transformaçãoUML p/ UML

UML UML

Rossano Pablo Pinto - março/2013 47

O que é uma transformação?

transformaçãoJAVA p/ JAVA

JAVA JAVA

Rossano Pablo Pinto - março/2013 48

O que é uma transformação?

transformaçãoC# p/ JAVA

C# JAVA

Rossano Pablo Pinto - março/2013 49

O que é uma transformação

● Transformação entre linguagens idênticas– UML p/ UML– Java p/ Java– .... p/ ....– PIM (UML) p/ PSM (UML). CUIDADO: PSM subset UML

(apenas construções que podem ser mapaeadas diretamente na linguagem alvo - Ex.: Java) - UML4Java

– Motivação:● refactoring● normalização de um modelo ER● etc..

Rossano Pablo Pinto - março/2013 50

PSMPSM

LinguagemLinguagem

Framework básico do MDA

FerramentaDe

TransformaçãooPIM PSM

definição da transformação

Linguagem

éescrito

em

Linguagem

sãoescritos

emé usadopor

Rossano Pablo Pinto - março/2013 51

MDA Hoje

● Linguagens OMG– Linguagens p/ PIM ou PSM– UML, OCL (Linguagem p/ queries)– QVT– Action Semantics - define semântica em modelos de

comportamento (behavioral)– Perfis: CORBA, EDOC, EAI, QFTP, TelcoML, VOICP,

UTP, ...

http://www.omg.org/mda

http://www.omg.org/spec/index.htm

Rossano Pablo Pinto - março/2013 52

MDA Hoje

● UML como linguagem para PIM– UML puro

● Ponto forte: modelagem estrutural● Ponto fraco: modelagem de comportamento

– Executable UML: UML + ActionSemantics (AS)● Principais diagramas: state machine● Ponto fraco: não é tão adequado para todos os domínio:

– OK p/ Sistemas embarcados– NOK p/ Sistemas “Administrativos”– AS é baixo nível (escrever tanto código quanto PSM)– AS não possui sintaxe concreta padronizada

– UML + OCL -> o mais apropriado, mas não é perfeito.

Rossano Pablo Pinto - março/2013 53

MDA Hoje

● Ferramentas (pesquisar o estado da arte)

– Transformações:● PIM p/ PSM● PSM p/ código● PIM p/ código● Ferramentas ajustáveis● Ferramentas para criação

de regras de transformação

– Outras● Editor de código (IDE)● Repositório de modelos

● Editor de modelos (CASE)● Validador de modelos● Editor de definição de

transformações● Repositório de regras de

transformação

– Geralmente, é necessário o uso de várias ferramentas!!

Rossano Pablo Pinto - março/2013 54

PARTE 3Exemplo

Rossano Pablo Pinto - março/2013 55

Exemplo de aplicação MDA

● Serviço de entrega de café da manhã– Descrição textual pág. 43

● O sistema de software– Descrição textual pág. 44

Rossano Pablo Pinto - março/2013 56

Exemplo de aplicação MDA

● Aplicando o framework MDA– Desenvolver PIM– A partir do PIM serão gerados 3 novos PSMs

● PSM que modela a base de dados (modelo relacional)● PSM que modela a camada do meio - (modelo EJB escrito em

uma variante UML)● PSM que modela a interface WEB - (modelo escrito em uma

variante UML)

– As variantes são compostas de estereótipos (não associados a perfis)

Rossano Pablo Pinto - março/2013 57

Exemplo de aplicação MDA

● Aplicando o framework MDA– Criar regras de transformação

● PIM p/ PSM1 PSM2 PSM3● PSM1 p/ SQL● PSM2 p/ Java● PSM3 p/ HTML, CSS, JSP

Rossano Pablo Pinto - março/2013 58

Exemplo de aplicação MDA

● Regras de transformação PIM -> PSM ER– UML string -> VARCHAR(40) - tamanho arbitrário!– UML integer -> INTEGER– UML date -> DATE– Atributo Address não é classe, é uma “struct”, então:

● tabela separada p/ cada tipo de dado OU● inserir “inline” os dados na mesma tabela que detém os dados

da classe que possui o atributo● REGRA: tipo de dado que não possui operação será mapeado

em colunas, cada uma representando um campo do tipo de dado (lembram do struct em C?)

Rossano Pablo Pinto - março/2013 59

Exemplo de aplicação MDA

● Regras de transformação PIM -> PSM ER– Cada classe será mapeada em um tabela

● Cada atributo torna-se um campo do registro● Quando o tipo do atributo for uma classe, o campo da tabela

deve armazenar um chave estrangeira para a tabela que representa a classe

– Cada associação será transformada em uma chave estrangeira no modelo da base de dados, provavelmente gerando uma nova tabela

– etc.., etc.., etc..– RESULTADO -> próximo slide

Rossano Pablo Pinto - março/2013 60

Exemplo de aplicação MDA

● Regras de transformação PIM -> PSM EJB– Cada classe no PIM gera um EJBEntityComponent– Cada classe no PIM que não faz parte de outra classe no

PIM é transformada em COMPONENTE EJB + esquema de dados EJB (EJBDataClass)

– etc.., etc.., etc.. (págs. 56 e 57)

Rossano Pablo Pinto - março/2013 61

Exemplo de aplicação MDA

● Regras de transformação PIM -> PSM WEB– etc.., etc.., etc.. (pág. 59)

Rossano Pablo Pinto - março/2013 62

Exemplo de aplicação MDA

● Regras de transformação PSM1 -> código1.Para cada tabela, gere o texto “CREATE TABLE”,

seguido do nome da tabela e um “{“, então execute regra 2, seguida pela regra 3, e termine com “}”

2.Para cada coluna na tabela, gere o nome da coluna, seguida do tipo e (opcionalmente) o tamanho da coluna, então gere o texto “NOT” se a coluna não pode ter o valor NULL e termine com “NULL,”.

3.Gere o texto “PRIMARY KEY (”, seguido por uma lista separada por vírgula dos nomes das colunas que são chave primária e termine com “)”.

Rossano Pablo Pinto - março/2013 63

Exemplo de aplicação MDA

● Regras de transformação PSM1 -> código– PARTE DO CÓDIGO GERADO:

CREATE TABLE Comestible ( comestibleID INTEGER NOT NULL, name VARCHAR (40) NULL,

price REAL NULL,

minimalQuantity INTEGER NULL,

transportForm VARCHAR (40) NULL,

PRIMARY KEY (comestibleID)

);