Viabilidade de Construção de
Software com MDD e MDA
André Sandri
Pesquisa em Ciência da ComputaçãoUNILASALLE – Canoas – RS
Novembro de 2005
Introdução
MDD – Model Driven Development
MDA – Model Driven Architecture OMG - Object Management Group
Estudo da viabilidade da construção de software com MDD e MDA
Principais Conceitos
MDD
MDA UML MOF XMI CWM PIM PSM Processo e Transformações
MDD – Model Driven Development
Foco nos modelos Promete aumentar a produtividade,
inclusive na fase de manutenção Pesquisa da Compuware: ganhos
de 70% durante a fase de manutenção. A equipe MDD completou 5 recursos 37% mais rápido (165h contra 260h)
Eclipse - Projeto MDDi - Model Driven Development Integration
OMG – Object Management Group
Em 1989, o foco era padrões middleware OO: CORBA;
Em seguida, UML; Em 2001, concluiu que a heterogeneidade
de tecnologias existentes no mercado era permanente;
Interoperabilidade? Com um sistema padronizado e público de modelos e interfaces independentes de linguagem, sistema ou protocolo.
MDA – Model Driven Architecture
MDA – Model Driven Architecture
Novos modelos abstratos (padrões) Dependentes de tecnologia Independentes de tecnologia
Contempla pelo menos um modelo independente e outro independente
Reutilização do modelo independente e dependente
Está ainda em sua infância
UML – Unified Modeling Language
É a especificação mais utilizada Recursos essenciais:
Diagramas Estereótipos (stereotypes) Profiles (perfis) Constraints (restrições/regras)
UML 2.0 Principal evolução: modelagem visual Mais apropriado para MDA e para SOA
MOF – Meta-object Facility
Define a linguagem utilizada para definir modelos padronizados!
Meta-modelos de UML e de CWM Permite construção de ferramentas Transformações entre os modelos UML é uma das linguagens de
modelagem definida com MOF
MOF – Meta-object Facility
MOF 2.0 – Meta-object Facility
QVT – Query/Views/Transformations
Principais componentes: Uma linguagem para a criação de visões sobre
os modelos; Uma linguagem para efetuar pesquisas sobre os
modelos; Uma linguagem declarativa para descrever
transformações; Uma linguagem visual para descrever
transformações.
QVT – Query/Views/Transformations/* mapear cada classe persistente em uma tabela */relation ClassToTable { domain uml c:Class { namespace = p:Package {}, kind='Persistent', name=cn } domain rdbms t:Table { schema = s:Schema {}, name=cn, column = cl:Column { name=cn+'_tid', type='NUMBER'}, primaryKey = k:PrimaryKey { name=cn+'_pk', column=cl} } when { PackageToSchema(p, s); } where { AttributeToColumn(c, t); }}
XMI – XML Metadata Interchange
Recomendado desde 1999 Baseado no padrão XML da W3C
XMI possibilita a transferência de modelos UML e meta-modelos baseados em MOF através do padrão XML DTD
CWM – Common Warehouse Metamodel
Aplicações de Data Warehousing Meta-classes especiais em UML
Bancos de dados relacionais, registros e estruturas, OLAP, XML, transformações, visualização da informação, mineração de dados, banco de dados multidimensionais, processos e operações de data warehousing, entre outros.
PIM – Platform-independent Model
Um PIM descreve um sistema completo para uma determinada necessidade de negócio.
Características principais: O PIM deve ser escrito para ser compreendido
e corrigido por outros profissionais. Deve ser compreendida por seres humanos e
por máquinas. O PIM deve ser independente de qualquer
tecnologia de execução.
PSM – Platform-specific Model
Inversamente ao PIM, deve refletir conceitos e construções utilizados na tecnologia correspondente
São automaticamente gerados Necessitam ser compreendidos
apenas por ferramentas automatizadas de transformação e por peritos da tecnologia
Processo de Construção
1. Construir o PIM;2. Transformar o PIM em PSMs;3. Transformar os PSMs em código.
Manutenção no PIM Manutenção no PSM Manutenção no código
Estudo da Viabilidade
Viável principalmente para:
Projetos de médio a grande porte; Uma arquitetura com média ou alta
complexidade; Muito trabalho repetitivo; Pelo menos um talentoso arquiteto de
software.
Papéis em um processo MDA
Processo MDA x Tradicional
PIM – Analista de Negócio PSM – Engenheiro de Software e
Programadores (tecnologias) Código - Programadores
A escolha da ferramenta
Linguagens e ferramentas de transformação produtivas
Geração de código para diferentes linguagens
Geração de código para diferentes mecanismos de persistência, tecnologias e frameworks
Importar e exportar arquivos XMI Possibilidade de modelar em UML 2.0 Mecanismos de controle de concorrência Mecanismos que não destruam os
códigos-fonte
Oracle JDeveloper 10g
Sincronização two-way XMI 1.1 com UML 1.3 a 1.5 Transformações feitas por
tecnologia proprietária Integração com AndroMDA
Interesse em adicionar futuramente mais recursos para MDA
AndroMDA
Utiliza cartuchos (cartridges) Utiliza um mecanismo de script com
templates, extensível com implementações Java
Permite acessar todos os elementos UML
A entrada é um modelo PIM. A ferramenta transforma em PSM conforme a tecnologia escolhida.
Suporta a noção de "plataforma destino"
IBM Rational
IBM Rational Software Architect UML 2.0 com meta-dados (MOF); Geração de código-fonte; Suporta OCL; Suporta a criação de meta-modelos.
Rational Rose XDE Developer Plus Integração com diversas IDEs; Protótipo da linguagem QVT.
Borland Together Architect 2006 Distribuído com o Eclipse (e outros) Oferece todos os recursos necessários UML 2.0 Criação e utilização de profiles UML OCL 2.0 XMI 2.0 Recursos para trabalho em equipe Protótipo de QVT (depuração) Outros recursos
ArcStyler 5.1
Todos os diagramas do UML 1.4 XMI 1.1, MOF 1.4, JMI 1.0 e QVT Colaboração em equipe, inclusive
dispersas geograficamente Recursos para gerência de projeto Utiliza Cartuchos, com um bom
número de transformações pré-definidas
Integra-se ao Borland CaliberRM e ferramentas da IBM Rational
Compuware OptimalJ 4.0
Especializada para J2EE, possibilidade de geração de código para outras linguagens/tecnologias
Possui MOF, UML, CWM, XMI As transformações utilizam a Technology Patterns
(escritos em Java) para transformações do PIM para PSM e TPL - Template Pattern Language, para geração de código a partir do PSM
PIM (Domain Model), PSM (Application Model) e código (Code Model)
Possui active synchronization e tecnologia Guarded/Free Blocks
Integra-se ao Borland JBuilder e Macromedia Dreamweaver (compartilha códigos-fonte)
Comparação das Ferramentas
UML: Qual versão? XMI: Qual a versão? Transformações: Quais as
linguagens? Re-geração sem destruir artefatos ou
trechos de código introduzidos manualmente?
Colaboração para trabalho em equipe?
Comparação das Ferramentas
Ferramenta UML XMI Transformações Re-geração Colaboração
JDeveloper 1.5 1.1 Java Sim Não
AndroMDA - 1.1 Script, Java Não Não
IBM Rational
2.0 1.1 QVT, Java Sim Não
Together 2.0 2.0 QVT, Java Não Sim
ArcStyler 1.4 1.0 QVT, Java Sim Sim
OptimalJ 2.0 1.2 Java, TPL Sim Sim
Conclusão
A escolha da ferramenta normalmente é influenciada por questões culturais e técnicas
Já existem ferramentas completas disponíveis para estabelecer um processo MDA
Basta conhecer MDA, conhecer os papéis, escolher a ferramenta, e capacitar os profissionais.
Leiam o artigo!
Muito obrigado!
André Sandriwww.sandri.cjb.net