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 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. 2. 3. 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? 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é Sandri www.sandri.cjb.net