2010 06 22 omg - obeo

43
1 Eclipse / OMG Symposium 2010/06/22 - Minneapolis, USA Etienne JULIOT etienne.juliot@obeo.fr Acceleo: implementation of Mof-to-Text Language When a de facto standard could become a reference implementation

Upload: etienne-juliot

Post on 05-Dec-2014

2.276 views

Category:

Documents


2 download

DESCRIPTION

The Acceleo project is an OpenSource project created in 2006 aimed at providing an easy-to-use tooling for code generation through the MDA approach. Acceleo 2.x is already a community driven project with a public repository, a website, ... It has become a real success with a vibrant community which shared generative modules for JavaEE, .Net, PHP, C and lots of professional success stories.As time passed, the Acceleo team was surprised and happy to see the OMG tackling the standardization of an M2T syntax with the MOF Model to Text Language specification. Surprised because of its similarity with the existing Acceleo syntax and happy because it resolves several issues and provides a standard way to describe templates.Thus, commiters decided to rewrite Acceleo from scratch as an official Eclipse Foundation project, changing the syntax to the standard while keeping the exemplary tooling and pragmatism of Acceleo.org.With Acceleo 3.0 included in Eclipse 3.6, our new goal is to provide the de facto or reference implementation of the standard; yet some parts of the specification are still quite vague and ambiguous and collaboration with OMG isn't smooth ... Acceleo could put forward a think tank discussion about both the specification and the implementation; then gather overall thoughts on how to provide a long term and successful communication channel between the Acceleo project and the OMG representatives. In complement of Acceleo, the Obeo commiters works on several Eclipse projects related to OMG standards :- ATL: Obeo is co-lead with the AtlanMod Research lab on this famous QVT-like transformation engine- EMF Compare: Obeo create this extensible diff/compare/patch engine for EMF compliant models, with several metamodels which could become inputs for a future standard- GMF and Obeo Designer: after several years of contributions in GMF, Obeo creates a "viewpoint oriented" tool to simplify creation of custom Domain Specific Modelers on DSL or standard models. Several interoperability issues exist due to lake of OMG specifications: no activity on a Diagram Description specification to standardise the description of a graphical environment, and no real separation in OMG specifications between the description of the graphical diagrams and the mapping to the semantic (for example, the graphical aspect of a Componant Diagram could be standardised and mapped to UML, SOAML, CCM, and others).

TRANSCRIPT

Page 1: 2010 06 22   omg - obeo

1

Eclipse / OMG Symposium2010/06/22 - Minneapolis, USA

Etienne JULIOT [email protected]

Acceleo: implementation of Mof-to-Text Language When a de facto standard could become

a reference implementation

Page 2: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Eclipse Strategic Member

12 commiters on Eclipse Modeling Project (most of them related to OMG spec):

M2T : Acceleo M2M : ATL EMF : EMF Build, EMF Compare, EEF GMF OCL Amalgamation …

Page 3: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Our job:

Domain Specific Modeling Viewpoint approach

MigrationReverse engineering

Training and Expertise

Taylor made

Page 4: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Summary From Acceleo.org to Eclipse Acceleo Acceleo and MTL standard Others contribs in the OMG scope

Page 5: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Once upon a time

Page 6: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Built on Eclipse: State of art of tooling Pragmatism: Create a dedicated tool and keep using the others Magic inside: Easy to start with

Acceleo original spirit

Page 7: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Events, Conferences, Press , University Lively forum and mailling lists, roadmap, history, team page Planet Acceleo Acceleo Modules Repository

JavaEE (Struts, Hibernate ..) C# (Nhibernate) Python, Zope, PHP C Java

Ecosystem : Capgemini, Makina Corpus, Lyria, Proxiad … +10 000 downloads / month

Building the community

Page 8: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

What's next?

Page 9: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

In the meantime OMG released the MOF Model To Text Language Specification The Acceleo core team is convinced it's the way to go

Page 10: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Why Eclipse Foundation? Visibility Easier integration with other projects OMG's reference implementations are in Eclipse Obeo's involvement in Eclipse Modeling We loved the « Best Open Source Eclipse-Based Developer Tool » award !

Page 11: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

The challenge

Keeping the spirit while moving to the OMG standard Keeping the project's user base Playing well : « The Eclipse Way »

Page 12: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Acceleo's new implementation aka : Eclipse Acceleo 3.0 Starting from scratch State of the Art ++ Tooling Usable everywhere: JAR, OSGi, Eclipse RCP or IDE

Page 13: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Main Features Editors

Advanced completion validation, quick fixes, show references, open declaration... Views to manage overrides , patterns

Eclipse Integration Debugger, Profiler Module UI: create automatically a Popup Action to Generate Init wizards from examples (bottom-up approach)

Architecture Java API, generator pluginization Standalone core

Page 14: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Acceleo Syntax – Model to Text Language (MTL)

Page 15: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Which strategy for a « standard AND pragmatic »

implementation?

Page 16: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

OMG Specification

Helios : complete support excepted Macros and code explicit syntax

Compliance Level

Standard evolution at the OMG Interactions with the OMG are slooooooow STD versus Non-STD library for blocker features:

Text indent, encoding management Syntax enhancement to simplify user's life Services to reuse EMF and Java features

Page 17: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Collaboration plan

STDv1.0

NONSTD

STDv1.1

NONSTD

Page 18: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

We want to be explicit for end users

Page 19: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Few words on OCL OCL is a Constraint Language, not a Request Language

A template based syntax MUST BE short and easily readable « Normal users » don't like to write "collect, select, reject,

oclAsType" everywhere OCL contains a lot of features that are of no use whatsoever for

code generation; namely everything that's "constraint specific"

But, with several enhancement, it's fine Our strategy:

Using an extensible approach for the model request language Re-use Eclipse OCL Plug-in to insure interoperability, and extend it

Page 20: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

MTL/OCL enhancements Filter:

Acceleo 2: <%sequence["Type"]%>

Pur OCL: [sequence->select(oclIsKindOf(Type)).oclAsType(Type)/]

Acceleo 3: [sequence->filter(Type)]

Page 21: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

MTL/OCL enhancements Model browsing:

Acceleo 2:<%for (ownedElement["ControlFlow"].nSort("name")%>

Pur OCL: [for (cf:ControlFlow |c.ownedElement->select(a|a.oclIsKindOf(ControlFlow))->sortedBy(e: Element | e.oclAsType(ControlFlow).name))]

Acceleo 3: implicit iterator[for (c.ownedElement->select(oclIsKindOf(ControlFlow))->sortedBy(oclAsType(ControlFlow).name))]

Acceleo 3: inference[for (c.ownedElement->filter(ControlFlow)->sortedBy(name))]

- Package|-- Activity |-- ControlFlow1 |-- ControlFlow2 |-- ControlFlow3

Page 22: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

MTL/OCL enhancements Xpath like services:

Acceleo 2: <%x.followingSibling%>

Pur OCL: [x.eContainer().eContents()->subSequence(x.eContainer().eContents()->indexOf(self), x.eContainer().eContents()->size())->excluding(self)/]

Acceleo 3: [x.followingSiblings()]

Page 23: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

MTL/OCL enhancements Operators on Collections:

Acceleo 2: <%list1 – list2%> <%list1 + list2%> <%list1 || list2%> <%list1 && list2%>

Pur OCL: complex combinaisons of « set / orderedset / union / symmetricDifference »

Acceleo 3: [list1->asSet() - list2->asSet()/] [list.addAll(list)] [list.removeAll(list)]

Page 24: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

MTL/OCL enhancements String:

Acceleo 2: <%"ab" + "cd" + "ef"%>

Pur OCL: ["ab".concat("bc").concat("ef")]

Acceleo 3: ["ab" + "cd" + "ef"]

Page 25: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

But code generation without tooling is like word processing with notepad ....

Page 26: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Completion

Page 27: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Protected Areas (STD)

JMerge (Non-OMG STD but Eclipse STD)

User Code

Page 28: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Dynamic contributions / Template Aspects

Overrides view

Advanced Eclipse Features

Page 29: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Quickfix

Page 30: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Refactoring

Page 31: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Rapid text replacement

Page 32: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Generation Pattern

Page 33: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Debugger

Page 34: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Profiler

Page 35: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

M2M and M2T interoperability (with ATL and QVT-O)

Advanced Eclipse Features Java extensions

Page 36: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Problems with OMG 5 bugs signaled (http://www.omg.org/issues/mtt-rtf.open.html)

No ACK No answer

Ask to list Acceleo as an MTL implementation on the OMG website: still waiting after 1 year

No contact point and no status publicly available We would like to contribute, but it's not easy …

But: spec is good, users are happy, syntax is powerful and still simple, and we have now interoperability through engines

Page 37: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Acceleo 3 community Lead : Jonathan Musset, OBEO Committers

Wim Bast Cedric Brun, OBEO Laurent Goubet, OBEO Arjan Kok Yvan Lussaud, OBEO

Users (some) Integrators (Atos Origin, CS, Proxiad, Capgemini, ...) Industrial (Pole Emploi, Thales, …) Editors and Individuals Others projects (EEF, TopCased, ...)

Page 38: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

But Acceleo isn't alone!

Page 39: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

ATL

module Families2Persons;create OUT : Persons from IN : Families;

-- helpers declaration {-- ...-- } helpers declaration

rule Member2Male {from

s : Families!Member (not s.isFemale())to

t : Persons!Male (fullName <- s.firstName + ' ' + s.familyName

)}

rule Member2Female {from

s : Families!Member (s.isFemale())to

t : Persons!Female (fullName <- s.firstName + ' ' + s.familyName

)}

Model transformation engine Inside Eclipse M2M project Declarative and Imperative

approach Based on OCL and close to

QVT Editor, Debugger, Profiler,

Refactoring, ... QVTo or QVTd ATLvm

Page 40: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Traceability With M2T and M2M No intrusion in input or output Nothing to configure in rules

or templates Desynchronisation detection

(precision: character or element)

Traceability across transformations chains

Engine in OpenSource projects

Page 41: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

EMF Compare Differency detection 2 ways and 3 ways mode Merge Extensible engine XMI and XML support Intermediate metamodel for

Match, Diff and Patches

Page 42: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

GMF Domain Specific Modeling 3 implementations

API engine (GMF Runtime) Generative engine (GMT Tool) Interpretive engine (Obeo

Designer)

New approach: Viewpoint Lack of separation between

graphical diagrams and semantic (ex: sequence diagram on non-UML models)

Lack of standardisation of viewpoint (Notation)

Page 43: 2010 06 22   omg - obeo

© Copyright 2009 Obeo made available under the EPL v1.0 | 27 October, 2009

Migrating an OSS Project to EclipseFrom Acceleo.org to Eclipse Modeling

Thank you http://www.eclipse.org/acceleo http://www.obeo.fr