1 / 32

Whole Platform

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

becka
Télécharger la présentation

Whole Platform

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. Whole IDE Architecture Whole Platform

  7. Whole IDE (screenshots) Whole Platform

  8. Whole Languages Architecture Whole Platform

  9. 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

  10. 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

  11. Whole Generative System Whole Platform

  12. 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

  13. 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

  14. 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

  15. Compound Model Pattern Whole Platform

  16. Resolver Object Pattern Structure Whole Platform

  17. Model Context Pattern Structure Whole Platform

  18. Visitable Marker Interface Pattern Structure Whole Platform

  19. 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

  20. 1. Model & Editor definition Whole Platform

  21. 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

  22. 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

  23. Embedding and Metaprogramming Java Java (meta) EBNF Java XML Java Whole Platform

  24. 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

  25. Text based alternative: Velocity • Host Language:fixed (poor) • Target language:any (text) • Host only editing support Whole Platform

  26. Text based alternative: XSLT • Host Language:fixed (poor) • Target language:any (text/xml) • Host only editing support Whole Platform

  27. Model based alternative: MetaAspectJ • Host Language:Java • Target language:AspectJ (model) • No editing support Whole Platform

  28. Proposed solution: Whole • Host Language:any (model) • Target language:any (model) • Full editing support Whole Platform

  29. 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

  30. Related works (cont.) • Vendor technology previews • Software Factories (Microsoft) • Meta-Programming System (JetBrains) • Intentional Programming (Intentional Software) • HyperSenses (Delta Software) Whole Platform

  31. 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

  32. Future work • A DSL for specifying model behavior • Based on Traversal and Notification frameworks • Full versioning support • DBMS based persistence Whole Platform

More Related