320 likes | 477 Views
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
E N D
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 Whole Platform
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 Whole Platform
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 Whole Platform
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 Whole Platform
Whole IDE Architecture Whole Platform
Whole IDE (screenshots) Whole Platform
Whole Languages Architecture Whole Platform
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 Whole Platform
Traversal Framework Modeling Framework Notification Framework Editing Framework Java ModelGeneration Framework Persistence Framework Java Java DB Java Java Java Java Whole Generative System (frameworks) Model JDTModel Whole Platform
Whole Generative System Whole Platform
Implementation vs. Design complexity Design complexity exceeds implementation complexity and requires new design patterns Whole*: includes Whole IDE plugins and Whole Generative System frameworks Whole Platform
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 Whole Platform
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. Whole Platform
Compound Model Pattern Whole Platform
Resolver Object Pattern Structure Whole Platform
Model Context Pattern Structure Whole Platform
Visitable Marker Interface Pattern Structure Whole Platform
Use case: language definition • Define the model and an editor notation for the language • Using for instance the metamodeling language Mbed DSL • Generate all the code for editing and manipulating the language (model) • 100% of Java code generated • The result is a standard Eclipse Platform Plugin Whole Platform
1. Model & Editor definition Whole Platform
Notification Framework Modeling Framework Persistence Framework Editing Framework Traversal Framework Java Java Java Java Java Java Java Java Java Java Java Java 2. Code generation Mbed Model specific event handler classes Controller and view classes Visitors and visitor combinator classes Model and Factories classes Persistence and metaprogramming visitor classes Java Whole Platform
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 Whole Platform
Embedding and Metaprogramming Java Java (meta) EBNF Java XML Java Whole Platform
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 Whole Platform
Text based alternative: Velocity • Host Language:fixed (poor) • Target language:any (text) • Host only editing support Whole Platform
Text based alternative: XSLT • Host Language:fixed (poor) • Target language:any (text/xml) • Host only editing support Whole Platform
Model based alternative: MetaAspectJ • Host Language:Java • Target language:AspectJ (model) • No editing support Whole Platform
Proposed solution: Whole • Host Language:any (model) • Target language:any (model) • Full editing support Whole Platform
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) Whole Platform
Related works (cont.) • Vendor technology previews • Software Factories (Microsoft) • Meta-Programming System (JetBrains) • Intentional Programming (Intentional Software) • HyperSenses (Delta Software) Whole Platform
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 Whole Platform
Future work • A DSL for specifying model behavior • Based on Traversal and Notification frameworks • Full versioning support • DBMS based persistence Whole Platform