Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Università degli Studi di Bologna Facoltà di scienze matematiche, fisiche e naturali Corso di Dottorato in Informatica Whole Platform Tesi di Dottorato di: RICCARDO SOLMI Relatore: Prof. ANDREA ASPERTI Maggio 2005 Summary • What is it and motivations • Description of the Whole Platform – Development Environment – Languages – Frameworks • Design patterns introduced • Two use cases – Language definition – Generator development • Related works and Conclusions May 2005 Whole Platform 2 What is the Whole Platform • A model driven technology for engineering the production of software • A development environment for developing new languages and tools • A metaprogramming tool for writing model to model generators May 2005 Whole Platform 3 Motivations • To support evolution and extension of languages – Examples: Java 5, AspectJ • To allow the use of multiple languages together – Usual for XML based languages – New research languages: Comega, Xj – Metaprogramming with embedded languages • To integrate languages in development environments – Examples: C++, Cobol • To give a linguistic alternative to the libraries • To replace text driven with model driven generators May 2005 Whole Platform 4 Whole Platform • A software platform including: – Whole IDE: a visual programming environment supporting rich graphical editing of model driven languages. – Whole Languages: a family of languages including popular languages and some new metamodeling languages – Whole Generative System: a set of frameworks providing the infrastructure for implementing model driven languages and for giving them a translational semantics May 2005 Whole Platform 5 Whole IDE Architecture May 2005 Whole Platform 6 Whole IDE (screenshots) May 2005 Whole Platform 7 Whole Languages Architecture May 2005 Whole Platform 8 Whole Languages • Languages can include: – General Purpose Languages (GPL) • examples: Java, Scheme, XML – Domain Specific Languages (DSL) • examples: BNF, UML – Set of constructs; examples: declarations, control flow, math, aspects, metaprogramming – Composed languages; example: Java + metaprogramming • A standard set of languages is provided – Metamodeling DSL: Mbed, Models, Editors, Languages, Operations – Popular languages: Java, XML, Text, BNF • New languages can be added and composed May 2005 Whole Platform 9 Whole Generative System (frameworks) Editing Framework Traversal Framework Modeling Framework Model Java Model Generation Framework JDT Model May 2005 Java Java Java Notification Framework Persistence Framework Java Java Java DB Whole Platform 10 Whole Generative System May 2005 Whole Platform 11 Implementation vs. Design complexity Whole* Mbed Java XML tot Java Lines of Code (LoC) 8356 11973 13060 2947 36336 Java LoC written by hand 8356 1592 601 102 10551 0 78 490 118 686 Number of Packages 23 16 24 13 76 Number of Interfaces 36 14 30 9 89 Number of Classes 267 167 451 154 1039 Number of Methods 2286 1519 5152 1472 10429 Number of Attributes 402 132 333 123 990 Metamodels LoC Design complexity exceeds implementation complexity and requires new design patterns Whole*: includes Whole IDE plugins and Whole Generative System frameworks May 2005 Whole Platform 12 Design Patterns introduced/enhanced • Compound Model – a model able to embed other model fragments • Resolver Object – a surrogate for an object having a fixed interface and an underspecified implementation • Model Context – encapsulates the model for its lifetime and hides all details concerned with creation, assembling and traversing • Intensional Behavior – traces the model history and allows for intensional query, navigation and execution May 2005 Whole Platform 13 Design Patterns introduced/enhanced • Staged Visitor Combinators – A Visitor Pattern supporting staging, compound models and composable traversal strategies • Visitable Marker Interface – To minimize implementation constraints while maximizing behavior accessible without casting. • Streaming builders – A Builder Pattern supporting stream based behavior. May 2005 Whole Platform 14 Compound Model Pattern May 2005 Whole Platform 15 Resolver Object Pattern Structure May 2005 Whole Platform 16 Model Context Pattern Structure May 2005 Whole Platform 17 Visitable Marker Interface Pattern Structure May 2005 Whole Platform 18 Use case: language definition 1. Define the model and an editor notation for the language • Using for instance the metamodeling language Mbed DSL 2. Generate all the code for editing and manipulating the language (model) • • May 2005 100% of Java code generated The result is a standard Eclipse Platform Plugin Whole Platform 19 1. Model & Editor definition May 2005 Whole Platform 20 2. Code generation Notification Framework Editing Framework Java Java Java May 2005 Java Java Java Controller and view classes Modeling Framework Java Java Java Mbed Model and Factories classes Persistence Framework Java Persistence and metaprogramming visitor classes Whole Platform Model specific event handler classes Traversal Framework Java Java Java Visitors and visitor combinator classes 21 Use case: writing a generator • Choose (or define) an host (generator) language and one or more target languages – The metaprogramming support is added to each Whole Language by the generative frameworks • All languages can be used as target languages • All executable languages can be used as host languages • Using the Whole IDE editor all the code generator can be written May 2005 Whole Platform 22 Embedding and Metaprogramming Java Java (meta) XML EBNF May 2005 Java Java Whole Platform 23 Metaprogramming facilities • Grant well-formed output of target fragments – If the host language is typed then grant that the output program is well-formed • The target is a model and the generator can query and manipulate the part already generated • The target model manipulation has learning behavior – Hide distinction between adding and traversing May 2005 Whole Platform 24 Text based alternative: Velocity • Host Language: fixed (poor) • Target language: any (text) • Host only editing support May 2005 Whole Platform 25 Text based alternative: XSLT • Host Language: fixed (poor) • Target language: any (text/xml) • Host only editing support May 2005 Whole Platform 26 Model based alternative: MetaAspectJ • Host Language: Java • Target language: AspectJ (model) • No editing support May 2005 Whole Platform 27 Proposed solution: Whole • Host Language: any (model) • Target language: any (model) • Full editing support May 2005 Whole Platform 28 Related works • OMG specifications: Model Driven Architecture (MDA) – Modeling (MOF), notation (UML), persistence (XMI) – TODO: Query, View and Transformations (QVT) • Eclipse proposals: Model Driven Development, Language Development Toolkit and Graphical Modeling Framework – Modeling (EMF), notation (GEF based), persistence (XMI) – Metamodels textual notation (Emfatic), transformations (MTF) May 2005 Whole Platform 29 Related works (cont.) • Vendor technology previews – – – – May 2005 Software Factories (Microsoft) Meta-Programming System (JetBrains) Intentional Programming (Intentional Software) HyperSenses (Delta Software) Whole Platform 30 Conclusions • Unique features of the Whole Platform – – – – A streaming API for building and persisting models Model driven metaprogramming with concrete syntax Composable families of traversals, iterators, adapters Intensional execution of behavior • All frameworks have been tested with real languages • New DSL languages for modeling and editing – 100% of a language implementation is generated – Generated code quality: same as hand written • New Generative and Design Patterns introduced • The Whole Platform is available at: whole.sourceforge.net May 2005 Whole Platform 31 Future work • A DSL for specifying model behavior – Based on Traversal and Notification frameworks • Full versioning support • DBMS based persistence May 2005 Whole Platform 32