2010 06 22 omg - obeo
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
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
© 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 …
© 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
© 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
© 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
© 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
© 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
© 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?
© 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
© 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 !
© 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 »
© 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
© 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
© 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)
© 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?
© 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
© 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
© 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
© 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
© 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)]
© 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
© 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()]
© 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)]
© 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"]
© 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 ....
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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, ...)
© 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!
© 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
© 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
© 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
© 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)
© 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