model driven development (mdd)bazilio/cursos/modelagem/aulas/mdd.pdf · vantagens do mdd geração...
TRANSCRIPT
![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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/1.jpg)
Model Driven Development Model Driven Development (MDD)(MDD)
Mestrado em Engenharia de Produção e Sistemas Computacionais
Profa. Adriana Pereira de Medeiros
![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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022081400/60b2772f70a13f7c23417b98/html5/thumbnails/40.jpg)
MESC