Download Whole Generative System - Dipartimento di Informatica

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Object-oriented programming wikipedia , lookup

Programming language wikipedia , lookup

Java (programming language) wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Java performance wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
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