Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
Model Driven Development Model Driven Development (MDD)(MDD)
Mestrado em Engenharia de Produção e Sistemas Computacionais
Profa. Adriana Pereira de Medeiros
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