300 likes | 400 Vues
Viabilidade de Construção de Software com MDD e MDA. André Sandri Pesquisa em Ciência da Computação UNILASALLE – Canoas – RS Novembro de 2005. Introdução. MDD – Model Driven Development MDA – Model Driven Architecture OMG - Object Management Group
E N D
Viabilidade de Construção de Software com MDD e MDA André Sandri Pesquisa em Ciência da Computação UNILASALLE – 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 • 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 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 • Construir o PIM; • Transformar o PIM em PSMs; • 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?
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é Sandri www.sandri.cjb.net