• Non ci sono risultati.

Whole Platform

N/A
N/A
Protected

Academic year: 2021

Condividi "Whole Platform"

Copied!
32
0
0

Testo completo

(1)

Whole Platform

Tesi di Dottorato di:

RICCARDO SOLMI

Università degli Studi di Bologna

Facoltà di scienze matematiche, fisiche e naturali

Corso di Dottorato in Informatica

Relatore:

Prof. ANDREA ASPERTI

(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

(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

(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

(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

(6)

Whole IDE Architecture

(7)

Whole IDE (screenshots)

(8)

Whole Languages Architecture

(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

(10)

Model

Whole Generative System (frameworks)

Traversal Framework Editing Framework

Java Model

Generation Framework Persistence Framework

Notification Framework Modeling Framework

JDT Model

JavaJava

Java JavaJavaJava DB

(11)

Whole Generative System

(12)

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

Metamodels LoC 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

Design complexity exceeds implementation complexity and requires new design patterns

Whole*: includes Whole IDE plugins and Whole Generative System frameworks

(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

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

(15)

Compound Model Pattern

(16)

Resolver Object Pattern Structure

(17)

Model Context Pattern Structure

(18)

Visitable Marker Interface Pattern Structure

(19)

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)

• 100% of Java code generated

• The result is a standard Eclipse Platform Plugin

(20)

1. Model & Editor definition

(21)

2. Code generation

Modeling Framework

Mbed

JavaJava Java

Persistence Framework Editing Framework

JavaJava

Java Controller and view classes

Model and Factories

classes Java

Traversal Framework

JavaJava Java

Visitors and visitor

combinator

Notification Framework

JavaJava Java

Model specific event handler classes

Persistence and metaprogramming visitor classes

(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

(23)

Embedding and Metaprogramming

Java

EBNF

Java

(meta)

Java

(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

(25)

Text based alternative: Velocity

• Host Language:

fixed (poor)

• Target language:

any (text)

• Host only editing support

(26)

Text based alternative: XSLT

• Host Language:

fixed (poor)

• Target language:

any (text/xml)

• Host only editing support

(27)

Model based alternative: MetaAspectJ

• Host Language:

Java

• Target language:

AspectJ (model)

• No editing support

(28)

Proposed solution: Whole

• Host Language:

any (model)

• Target language:

any (model)

• Full editing support

(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)

(30)

Related works (cont.)

• Vendor technology previews

– Software Factories (Microsoft)

– Meta-Programming System (JetBrains)

– Intentional Programming (Intentional Software)

– HyperSenses (Delta Software)

(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

(32)

Future work

• A DSL for specifying model behavior

– Based on Traversal and Notification frameworks

• Full versioning support

• DBMS based persistence

Riferimenti

Documenti correlati

In a relatively low wind regime (8 m/s in a height of 400 m) our simplified simulations show that the wave influenced wind increase the fatigue damage compared to a situation with

The spaces devoted to the workshops , places of scientific application, are characterized by volumes in transparent crystal where all the equip- ments can be seen and one or more

Kernels are used to obtain mango kernel fat (mainly used for cosmetics), whereas dried peels are used for animal feeding or disposed as waste. Wheat bran is a by-product of the

Whole Platform | Foundation | © 2008 by Riccardo Solmi; made available under the Creative Commons License?. Aim: Engineering the Production

All in all, the research work aims at pointing out and highlighting the effective capabilities of the new web marketing tools from a relationship and

“decadent.” The Platonists see it has having no ruling principle, no cen- ter, no structure. The positivists see it as having no respect for hard fact, for that area

Record: used at module level to define a user-defined data type containing one or more elements.. [Private | Public]

However, in many cases we must execute alternative instructions, depending on the value of certain expressions Also, sometimes we need to repeat instructions a number of times, or