1/26/2009 O que é possível fazer HOJE? Modelagem/Transformação/Geração de código Ferramentas / ambientes Sem ser UML › Foco em modelagem específica de domínio › Geração de código Modelagem › MetaEdit+ (MetaCase) › DSLTools (Microsoft) › GME (Vanderbilt) › GMF (Eclipse) › xText (Eclipse/oAW) › TCS (Eclipse) 1 1/26/2009 Transformação › QVT (Eclipse) › Atlas/ATL (Eclipse) › xTend (Eclipse/oAW) Geração de código › JET (Eclipse) › xPand (Eclipse) Generic Modeling Environment – Vanderbilt University Model Integrated Computing Modelagem específica de domínio › Metamodelo próprio (MetaGME) › API própria (BON) › Facildade na definição sintaxe concreta Graphical Modeling Framework Plataforma Eclipse › Baseado no GEF – Graphical Editing Framework Disponível no Ganymede (4.1) › Pacote Modeling 2 1/26/2009 Ferramentas Aspecto Visual (sintaxe concreta) Metamodelo (sintaxe abstrata) Metamodelo – ECORE API metamodelagem – EMF Utilizado em diversas ferramentas › MOF simplificado › Programação reflexiva / direta › Projetos acadêmicos › Industriais Documentação bastante evoluída › Ainda não completa Demonstração 3 1/26/2009 Parte do projeto openArchitectureWare Linguagem de modelagem textual Sintaxe concreta + abstrata › Específica de domínio › Uma única especificação Parser Editor (code completion, warnings, etc) Checagens / validação Receitas Demonstração ATLAS Transformation Language › Surgiu para atender a proposta QVT › Inicialmente baseada no MDR (MetaData Repository, da Sun) › Evoluiu para EMF - Eclipse Declarativa + imperativa Baseada no ECORE › Baseada em regras 4 1/26/2009 Demonstração Projeto openArchitectureWare › Plataforma Eclipse Modelos ECORE / EMF Linguagem declarativa Demonstração 5 1/26/2009 Geração de código Java Emitter Templates Mecanismo de templates › Permite inclusão de scriptlets Java › Possui tags com funções úteis › Consultas a XML/metamodelo utilizando Xpath Disponível no Ganymede › Pacote Modeling Demonstração Projeto openArchitectureWare Mecanismo / linguagem de templates Auto-completion Funções úteis Permite extensões Java 6 1/26/2009 Demonstração Sugestões: • E as ferramentas comerciais? • E as ferramentas UML? • Conheço várias ferramentas para MDA, porque elas não foram apresentadas? • Porque você não apresentou a ferramenta X? • Os fontes dos exemplos serão disponibilizados? • Porque laranja chama laranja e limão não se chama verde? • Por que o Pateta fala e o Pluto não? • Como se escreve zero em algarismos romanos? • Quando inventaram o relógio, como sabiam que horas eram, para poder acertá-lo? 7