Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração...

40
Model Driven Development Model Driven Development (MDD) (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros [email protected]

Transcript of Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração...

Page 1: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

Model Driven Development Model Driven Development (MDD)(MDD)

Mestrado em Engenharia de Produção e Sistemas Computacionais

Profa. Adriana Pereira de Medeiros

[email protected]

Page 2: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Sumário

Introdução

Desenvolvimento de Software

Tradicional MDD

Desenvolvimento dirigido por Modelos

MDA (Model Driven Architecture)

Modelos Executáveis

2

Page 3: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Introdução

Software é caro.

Em geral, manutenção de software custa mais do que

desenvolvimento.

Modelos também são caros, pois uma vez construídos,

precisam ser transformados em código.

Processo tedioso, sujeito a erros, caro e não automatizado

completamente.

Page 4: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

S O SS O S

Introdução

Apesar dos inúmeros avanços em Engenharia de Software, ainda existem problemas...

Atualização de ModelosConhecimento registrado no código

Baixa Produtividade

Inconsistências devido a manutenção

ValidaçãoPortabilidade

Interoperabilidade

Page 5: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Introdução

Uma possível solução envolve:

aumento no nível de Abstração;

aumento no nível de Reutilização.

Page 6: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Elevando o nível de Abstração

Código Assembly

Código-fonte em Linguagem de

Alto Nível

AssemblerCompilador de Código-

fonte

Compilador de modelos

Modelos Executáveis

Código de MáquinaDécada de 1960

Nenhum

Código AssemblyDécada de 1980

Plataforma do

Hardware

Plataforma do

Software

Código fonteDécada de 2000

Page 7: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Elevando o nível de Reutilização

Funções(dados compartilhados)

Objetos(encapsulamento)

Componentes e Frameworks

(interfaces)

Modelos de Domínio

(regras)

1970s 1980s 1990s 2000s

Page 8: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento dirigido por Modelos

É simplesmente a noção de que podemos construir um modelo de um sistema que podemos transformar em uma coisa real (Mellor et al., 2003).

Existe uma diferença…

Page 9: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento de software “tradicional”

public interface ElementoDiagrama {double PI = 3.1425926; //static and final constant.void desenhar(); void redimensionar();

}

public class Circulo implements ElementoDiagrama {

Modelo

Código

Documentação

Page 10: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento Tradicional

Métodos tradicionais Muita documentação (tipicamente, em UML)

Problema: não atende às demandas do mercado

Métodos ágeis (XP, SCRUM, etc.) Pouca documentação

Problema: escalabilidade

Envolve o uso de ferramentas que integram modelagem UML e editores de código.

Page 11: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento dirigido por Modelos

public interface ElementoDiagrama {double PI = 3.1425926; //static and final constant.void desenhar(); void redimensionar();

}

public class Circulo implements ElementoDiagrama {

Modelo

Código

Gerador (Regras de

Transformação)

Page 12: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento dirigido por Modelos

Proposta:

Permitir que o engenheiro de software concentre-se em modelos de mais alto nível, sem precisar interagir manualmente com todo o código-fonte e com as complexidades de implementação em diferentes plataformas.

Page 13: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desenvolvimento dirigido por Modelos

Idéia:

Aplicar transformações entre modelos de forma que a partir de um modelo pode-se produzir outro modelo (ou código) de forma automática.

Modelos passam a ser elementos ativos no processo de desenvolvimento, deixando de ser

“somente” documentação.

Page 14: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Vantagens do MDD

Geração automática de código

Engenheiros de software modelam o sistema em alto nível de abstração.

Tarefas repetitivas podem ser implementadas nas transformações, poupando tempo e esforço.

Um único modelo pode gerar uma grande quantidade e diversidade de código.

Page 15: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Independência de plataforma

Um mesmo modelo pode ser transformado em código para diferentes plataformas.

Vantagens do MDD

Modelo independente de plataforma

Modelo específico de plataforma

Código executável

Page 16: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Vantagens do MDD

Reutilização Código pode ser re-gerado para um novo contexto.

Manutenção e Documentação

A manutenção é facilitada e a documentação mantém-se atualizada, uma vez que as modificações são feitas diretamente nos modelos.

Verificação

Os modelos podem ser verificados para reduzir a ocorrência de erros semânticos e conceituais.

Page 17: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Desvantagens do MDD

Maior rigidez no software produzido.

Complexidade adicional do processo de desenvolvimento.

Curva de aprendizado e investimento inicial altos.

O código gerado pode não apresentar desempenho ótimo, pois muito código desnecessário é incluído pelos geradores.

Page 18: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Elementos do MDD

Fonte: Daniel Lucrédio, 2009

Page 19: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Transformações

Regras que permitem gerar código (ou novos modelos, tipicamente de menor nível de abstração) a partir de um modelo de origem.

Transformações modelo-modelo ou modelo-plataforma

Exemplo:

Código (Java + XML)

Modelo EJB 2.0

Modelo UML

Transformações Transformações

Page 20: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Abordagens para MDD

OMG Model-Driven Architecture (MDA) Modelos Executáveis ( Executable UML)

Sun Microsystems

Java Metadata Interface (JMI)

MetaData Repository (MDR)

IBM

Eclipse Modeling Framework (EMF)

Page 21: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Model-Driven Architecture (MDA)

Iniciativa do OMG para desenvolver um conjunto de padrões visando promover o desenvolvimento dirigido por modelos.

Tem como objetivo potencializar o uso de modelos no desenvolvimento de sistemas e alcançar:

Portabilidade;

Interoperabilidade;

Reusabilidade.

Page 22: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Como usar modelos?

No desenvolvimento de software usamos modelos para:

Compreender melhor um domínio de problema;

Facilitar a comunicação entre clientes e desenvolvedores;

Ter uma base para a construção do software.

A MDA estabelece uma infra-estrutura para definir e executar transformações entre modelos de vários tipos.

Page 23: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Tipos de Modelos

CIM (Computation Independent Model) É uma visão do ambiente do sistema e de seus requisitos.

PIM (Platform Independent Model) Focaliza a operação do sistema.

Não muda de uma plataforma para outra.

PSM (Platform Specific Model) Combina as especificações do PIM com os detalhes que

especificam como o sistema usa um tipo de plataforma particular.

Page 24: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Relação entre Modelos MDA

Page 25: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Transformação entre Modelos

Tranformação

Mapeamentos

Page 26: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Mapeamentos

Um mapeamento MDA fornece especificações para a transformação de um PIM dentro de um PSM para uma plataforma específica.

Exemplo:

Transformação de um modelo de análise (Domínio) para um modelo de projeto (Software), considerando a necessidade de uma informação ser ou não persistente (EJB).

Page 27: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Exemplo de Mapeamento

Modelo de Análise

Banco

Cliente

Conta

Transferência

Modelo de Projeto

Bean de entidade

Bean de sessão

Quais são as regras para o mapeamento?

Page 28: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Exemplo de Mapeamento

Regras:

Uma classe cujas instâncias precisam persistir durante o tempo de vida (ou um período de tempo maior que de uma execução) do sistema de software será representada como um bean de entidade.

Uma classe cujas instâncias existem somente por um período de tempo relativamente curto, e que carrega informações relativas aos beans de entidade, será representada como um bean de sessão.

Page 29: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Exemplo de Mapeamento

Modelo de Análise

Banco

Cliente

Conta

Transferência

Modelo de Projeto

Bean de entidade

Bean de sessão

Page 30: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Transformação entre Modelos

Tranformação

Mapeamentos

(Modelo de Análise)

(Modelo de ProjetoEJB)

Page 31: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Resumindo...

Tradutor J2EEGerador de Código Java

PIM

Tradutor .NET

PSM J2EE

Programa C#

Programa Java

Gerador de Código C#

PSM .NET

Page 32: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Processo MDD

1. Selecionar modelos existentes

2. Escolher partes dos modelos que interessam ao sistema (adaptação ou projeto de novos modelos)

3. Integrar as partes selecionadas dos modelos

4. Escolher uma tecnologia de implementação

5. Descrever (ou reusar) o mapeamento dos modelos para a implementação

6. Gerar o sistema

Page 33: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Modelos Executáveis

Compilador de Modelos

Modelos Executáveis

Código de Alto Nível

Compilador de Código

Código de Baixo Nível

Page 34: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

UML Executável (xUML)

É um subconjunto da UML que visa fornecer as abstrações necessárias para construir o modelo preciso de um domínio, capturando o comportamento das partes que o contém.

A UML executável apóia MDA através da especificação de modelos independentes de plataforma (PIM) e a compilação desses modelos em modelos específicos de plataforma (PSM).

Page 35: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Definições da xUML

Modelos de Domínio Descrevem os principais elementos do domínio do

sistema e suas dependências

Diagrama de Classes Define as classes e associações entre elas Detalha os atributos e os métodos das classes

Page 36: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Definições da xUML

Diagrama de Estados Descreve o ciclo de vida de uma classe Detalha os estados, eventos e transições

Linguagem de Ações Define operações que fazem algum processamento

no modelo Especifica a parte dinâmica dos modelos

Page 37: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Compilador de Modelos

Compila modelos executáveis (PIMs) para criar o código, que é um entrelaçamento dos elementos do PIM e das plataformas requeridas.

Utilizando modelos executáveis não há necessidade de manipular o PSM ou visualizá-lo como um modelo.

PSM = código

Page 38: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Existe MDD na prática?

AndroMDA

xUML-Compiler

IBM Rational Rhapsody

AMUSE

Page 39: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC

Referências

Selic, B. The Pragmatics of Model-Driven Development. IEEE, 2003

Mellor, S. J.; Clark, A. Futagami, T.; Model-Driven Development. IEEE, 2003

Mellor, S. J.; Scott, K.; UHL, A.; Weise, D. MDA Destilada – Princípios da Arquitetura Orientada por Modelos. Editora Ciência Moderna, 2005

Lucrédio, D.; Uma Abordagem Orientada a Modelos para Reutilização de Software. Tese de Doutorado. ICMC-USP, 2009

Page 40: Model Driven Development (MDD)bazilio/cursos/modelagem/aulas/MDD.pdf · Vantagens do MDD Geração automática de código Engenheiros de software modelam o sistema em alto nível

MESC