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

Post on 24-Jan-2021

16 views 0 download

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

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

Mestrado em Engenharia de Produção e Sistemas Computacionais

Profa. Adriana Pereira de Medeiros

adrianamedeiros@puro.uff.br

MESC

Sumário

Introdução

Desenvolvimento de Software

Tradicional MDD

Desenvolvimento dirigido por Modelos

MDA (Model Driven Architecture)

Modelos Executáveis

2

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.

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

MESC

Introdução

Uma possível solução envolve:

aumento no nível de Abstração;

aumento no nível de Reutilização.

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

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

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…

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

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.

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)

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.

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.

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.

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

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.

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.

MESC

Elementos do MDD

Fonte: Daniel Lucrédio, 2009

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

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)

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.

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.

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.

MESC

Relação entre Modelos MDA

MESC

Transformação entre Modelos

Tranformação

Mapeamentos

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

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?

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.

MESC

Exemplo de Mapeamento

Modelo de Análise

Banco

Cliente

Conta

Transferência

Modelo de Projeto

Bean de entidade

Bean de sessão

MESC

Transformação entre Modelos

Tranformação

Mapeamentos

(Modelo de Análise)

(Modelo de ProjetoEJB)

MESC

Resumindo...

Tradutor J2EEGerador de Código Java

PIM

Tradutor .NET

PSM J2EE

Programa C#

Programa Java

Gerador de Código C#

PSM .NET

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

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

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

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

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

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

MESC

Existe MDD na prática?

AndroMDA

xUML-Compiler

IBM Rational Rhapsody

AMUSE

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

MESC