Acceleo

Last updated
Acceleo
Logo-acceleo.gif
Developer(s) Eclipse Foundation
Stable release
3.7.8 / March 20, 2019;3 years ago (2019-03-20) [1]
Repository
Written in Java
Platform Linux, macOS, Microsoft Windows
Type Code generator
License Eclipse Public License
Website www.eclipse.org/acceleo

Acceleo is an open-source code generator from the Eclipse Foundation that allows people to use a model-driven approach to building applications. It is an implementation of the "MOFM2T" standard, from the Object Management Group (OMG), for performing model-to-text transformation.

Contents

History and development

Early versions

The Acceleo project is born in 2006 with the website Acceleo.org. Acceleo 1.0 was licensed under the GNU Public Licence (GPL) and it was compatible with Eclipse 3.0, 3.1 and several modelers based on EMF and UML 1.2. A few weeks later, Acceleo 1.1 [2] brought the compatibility with Eclipse 3.2 and UML 1.3. Acceleo changed its licence with the release of Acceleo 1.2 to adopt the Eclipse Public Licence (EPL) used by the projects of the Eclipse Foundation. Acceleo 2 [3] was available on June 5, 2007, after the launch of the website planet.acceleo.org which includes articles created by the members of the Acceleo community and the Acceleo modules repository which contains code generators based on Acceleo 2.

Entrance in the Eclipse Foundation

In 2009, while moving to Acceleo 3, the project has been accepted in the Eclipse Foundation. During this transition, the language used by Acceleo to define a code generator has been changed to use the new standard from the OMG for model to text transformation, MOFM2T. With the release of Eclipse 3.6 Helios, Acceleo is included in the Eclipse simultaneous release train as an official project of the Eclipse Foundation. Acceleo is an Eclipse plugin and as such it is integrated in the Eclipse IDE. Acceleo is built on top of several key Eclipse technologies like EMF and, since the release of Acceleo 3, the Eclipse implementation of OCL. OCL is a standard language from the OMG to navigate in models and to define constraints on the elements of a model.

Trademark

While the Acceleo source code is open source, the Acceleo trademark and its logo, integrated in Acceleo, are not open source. They were the trademark of the company Obeo, creator of Acceleo, and they were transferred to the Eclipse Foundation when Acceleo was accepted as an official project. [4]

Source code

Acceleo is an Eclipse project mostly developed in Java [5] and available under the Eclipse Public Licence (EPL). The source code of Acceleo 1.x and 2.x is available on SVN on the website of the OW2 Consortium. [6] With its entrance in the Eclipse Foundation in 2009, the source code of Acceleo 3 was transferred from SVN to a CVS based repository on the servers of the Eclipse Foundation. [7] After the release of Eclipse 3.7 Indigo in 2011, the Acceleo project has migrated to Git [8] following the migration started by several official project of the Eclipse Foundation and since July 2011, the Acceleo source code is available on GitHub. [9]

Releases

Legend:
Previous versionsLatest stable releaseNext release
VersionRelease dateRelease log
1.01 April 2006First version of Acceleo available under the GPL licence, code generation from EMF based models.
1.120 October 2006Compatibility with Eclipse 3.2, support for models created with GMF, ArgoUML, Poseidon, Umbrello and Rational Rose. [2]
1.25 January 2007Switch to the Eclipse Public Licence (EPL), new indentation service, parameterized launcher, Ant compatibility. [10]
2.05 June 2007Language improvements, XML compatibility, export of generators as Eclipse plugin. [11]
2.112 July 2007Compatibility with Eclipse 3.3, code generator debugger. [12]
2.27 January 2008Localization support, support for different encoding of the templates, release of the following generators: JEE, PHP, Python and WISS. [13]
2.325 July 2008Compatibility with Eclipse 3.4, ability to call standard EOperations defined in the model, search references. [14]
2.425 September 2008Possibility to export a generator as a stand-alone module or as a RCP application. [15]
2.53 December 2008Generation profiler, actions on the outline. [16]
2.626 June 2009Compatibility with Eclipse 3.5 Galileo. [17]
2.76 April 2010Improvement of the profiler, compatibility with Enterprise Architect. [18]
3.015 June 2010 [19] New language to define code generators based on MOFM2T, support for OCL based queries, real time compilation with error detection. [20]
3.17 June 2011 [19] Support for documentation for generators, detection of potential errors with warning, Maven support, binary compilation of the generator. [21]
3.227 October 2011 [19] Next major release of Acceleo with the new "Interpreter" view to evaluate Acceleo expression on a given set of model element. [22]
3.329 May 2012 [19] Next major release of Acceleo. [23]
3.410 June 2013 [19] Next major release of Acceleo. [24]
3.510 June 2014 [19] Next major release of Acceleo. [25]
3.68 June 2015 [19] Next major release of Acceleo. [26]
3.715 October 2016 [19] Next major release of Acceleo. [27]

Supported platforms

Acceleo is written in Java and is deployed as a plugin in the Eclipse IDE. Acceleo is supported on Java 5+ based environments, on the following platforms:

The language

Starting with Acceleo 3, the language used to define an Acceleo code generator is an implementation of the MOFM2T standard. This code generation language uses a template based approach. With this approach, a template is a text containing dedicated part where the text will be computed from elements provided by the inputs models. Those dedicated parts are most of the time expressions specified on the entity of the input models used to select and extract information from those models. Within Acceleo, those expression are based on the Eclipse implementation of the OCL language.

Features

Acceleo provides tools for code generation from EMF based models. Thanks to those tools, Acceleo allows, for example, incremental generation. Incremental generation gives people the ability to generate a piece of code and then modify the generated code and finally regenerating the code once again without losing the previous modifications.

Acceleo also allows:

Editor

Acceleo contains a code generation modules editor with syntax highlighting, completion, real time error detection and refactoring.

Acceleo-editor.png

Debugger

The Acceleo debugger gives the possibility to keep an eye on the progression of a generation. It let the user pause a generation with a break point, check the state of the variables and move step by step during a generation to identify problems.

Acceleo-debugger.png

Profiler

The profiler allow the user to figure out all the instructions executed during the generation, the number of time that those instructions have been executed and the time taken by each of those instructions. Profiling data are available in an EMF models after a generation launched with the profiler. It gives the user the ability to find bottleneck in the code generator created.

Acceleo-profiling-model.png

Traceability

The Acceleo engine can compute traceability information of all the elements involved in the generation of a file. This system allows, for example, to determine the elements from the input models that have been used to generate a specific piece of text and the part of the code generator that has been involved.

Acceleo-traceability-result.png

Stand-alone use

The parser and the generation engine, critical components of Acceleo, can also be used in "stand-alone", without being deployed on Eclipse. Acceleo generates a Java class to launch the generation programmatically thus allowing the integration of an Acceleo generator in any Java application. This Java launcher can also be called from Ant or Maven.

Compatibility

The latest release of Acceleo is compatible with: [28]

Acceleo is based on the modeling framework EMF. Thus it is compatible with any tool that can produce EMF compatible models.

Example

Acceleo can use any EMF compatible models defined from any kind of metamodel like UML or even a custom DSLs. From this metamodel, the user can define a code generator that will produce any kind of textual language from a model using the metamodel.

A simple EMF model Acceleo Input Model.png
A simple EMF model
A simple Acceleo module Acceleo Template.png
A simple Acceleo module
The code generated Acceleo Code Generated.png
The code generated

Here we are using the following elements: EClass, EAttribute and EOperation from EMF. Thanks to the simple module and this input model, Acceleo can generate the former code. The module defined in this example is parameterized to generate Java but the MOFM2T standard is independent of the generated code. When the generator is created, the user can use another model to generate a piece of code with a similar appearance but with a different content. Acceleo integrates several code generation examples to generate Java and Python.

Awards

Awards received by Acceleo
TitleAuthorDateLink
Best Open Source Eclipse-Based Developer Tool 2009 Eclipse Foundation 1 March 2009(in English) Eclipse Community Awards Winners Announced
Open Innovation Award 2010Open World Forum1 November 2010(in English) Open World Forum Awards

Community and communication

The Acceleo community is gathered around the Acceleo part of the website of the Eclipse Foundation. The Acceleo documentation [29] is accessible online on the Eclipse Help Center [30] and on the wiki of the Acceleo project. [31]

Conferences

The developers of Acceleo are also communicating with the community thanks to presentation realized in MDA or Eclipse conferences.

NameDateLocationTitle of the presentation
MDA approach conference23 November 2006Geneva
SOA/MDA2006-30-11Luxembourg
EclipseCon 20076 March 2007Los Angeles
Eclipse Summit Europe 200810 October 2008Ludwigsburg
EclipseCon 200925 March 2009Los AngelesEclipse MTL: a Real Standard Alternative for Code Generation [32]
Eclipse Summit Europe 200928 August 2009LudwigsburgFrom Acceleo.org to Eclipse Modeling
Eclipse Con 201022 March 2010Los AngelesAcceleo Code Generation: Let's start with an Android example
Eclipse Summit Europe 20103 November 2010LudwigsburgCreating a Language for Android Apps with Eclipse Modeling [33]
Topcased Days 20114 February 2011ToulouseAcceleo [34]
Code Generation 201126 May 2011CambridgeAnd you thought you knew template based code generator? [35]

Related Research Articles

Unified Modeling Language Software system design modeling tool

The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.

The XML Metadata Interchange (XMI) is an Object Management Group (OMG) standard for exchanging metadata information via Extensible Markup Language (XML).

Meta-Object Facility Standard of Object Management Group

The Meta-Object Facility (MOF) is an Object Management Group (OMG) standard for model-driven engineering. Its purpose is to provide a type system for entities in the CORBA architecture and a set of interfaces through which those types can be created and manipulated. The official reference page may be found at OMG's website.

Eclipse (software) Software development environment

Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It is the second-most-popular IDE for Java development, and, until 2016, was the most popular. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages via plug-ins, including Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, Groovy, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, and Scheme. It can also be used to develop documents with LaTeX and packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.

Model Driven Architecture (MDA) is a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. Model Driven Architecture is a kind of domain engineering, and supports model-driven engineering of software systems. It was launched by the Object Management Group (OMG) in 2001.

Domain-specific modeling (DSM) is a software engineering methodology for designing and developing systems, such as computer software. It involves systematic use of a domain-specific language to represent the various facets of a system.

Model-driven engineering (MDE) is a software development methodology that focuses on creating and exploiting domain models, which are conceptual models of all the topics related to a specific problem. Hence, it highlights and aims at abstract representations of the knowledge and activities that govern a particular application domain, rather than the computing concepts.

QVT Standard set of languages for model transformation

QVT (Query/View/Transformation) is a standard set of languages for model transformation defined by the Object Management Group.

The Graphical Modeling Framework (GMF) is a framework within the Eclipse platform. It provides a generative component and runtime infrastructure for developing graphical editors based on the Eclipse Modeling Framework (EMF) and Graphical Editing Framework (GEF). The project aims to provide these components, in addition to exemplary tools for select domain models which illustrate its capabilities.

Eclipse Modeling Framework Project of Eclipse Foundation

Eclipse Modeling Framework (EMF) is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model.

Generic Eclipse Modeling System (GEMS) is a configurable toolkit for creating domain-specific modeling and program synthesis environments for Eclipse. The project aims to bridge the gap between the communities experienced with visual metamodeling tools like those built around the Eclipse modeling technologies, such as the Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF). GEMS helps developers rapidly create a graphical modeling tool from a visual language description or metamodel without any coding in third-generation languages. Graphical modeling tools created with GEMS automatically support complex capabilities, such as remote updating and querying, template creation, styling with Cascading Style Sheets (CSS), and model linking.

Rational Software Architect is a modeling and development environment that uses the Unified Modeling Language (UML) for designing architecture for C++ and Java EE (JEE) applications and web services. Rational Software Architect is built on the Eclipse open-source software framework and includes capabilities focused on architectural code analysis, C++, and model-driven development (MDD) with the UML for creating applications and web services.

Xtext is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser, but also a class model for the abstract syntax tree, as well as providing a fully featured, customizable Eclipse-based IDE.

YAKINDU Statechart Tools

YAKINDU Statechart Tools is a tool for the specification and development of reactive, event-driven systems with the help of finite-state machines. It comprises a tool for the graphical editing of statecharts and provides validation, simulation, and source code generators for various target platforms and programming languages. YAKINDU Statechart Tools are available with standard and professional editions, with no-cost licenses for non-commercial resp. academic usage. Users are coming from both industry and academia.

Interaction Flow Modeling Language

The Interaction Flow Modeling Language (IFML) is a standardized modeling language in the field of software engineering. IFML includes a set of graphic notations to create visual models of user interactions and front-end behavior in software systems.

UML Designer is an open-source UML tool based on Sirius and Eclipse. The project is licensed under the EPL.

References

  1. 1 2 (in English) "Eclipse Acceleo 3.7.8" . Retrieved 6 July 2019.
  2. 1 2 (in English) "Acceleo 1.1.0 release notes" . Retrieved 2011-08-10.
  3. (in English) "Acceleo 1.2.0 release notes" . Retrieved 2011-08-10.
  4. (in English) "Eclipse logo guidelines". Archived from the original on 29 June 2011. Retrieved 2011-08-10.
  5. (in English) "Ohloh code analysis" . Retrieved 2011-08-10.
  6. (in English) "Acceleo 1 & 2 source code on the OW2 Forge" . Retrieved 2011-08-10.
  7. (in English) "Acceleo 3 source code on CVS (read only)" . Retrieved 2011-08-10.
  8. (in English) "Acceleo migrates to Git" . Retrieved 2011-08-10.
  9. (in English) "Acceleo 3 source code on Github" . Retrieved 2011-08-10.
  10. (in English) "Acceleo 1.2.0 release notes" . Retrieved 2011-08-10.
  11. (in English) "Acceleo 2.0.0 release notes" . Retrieved 2011-08-10.
  12. (in English) "Acceleo 2.1.0 release notes" . Retrieved 2011-08-10.
  13. (in English) "Acceleo 2.2.0 release notes" . Retrieved 2011-08-10.
  14. (in English) "Acceleo 2.3.0 release notes" . Retrieved 2011-08-10.
  15. (in English) "Acceleo 2.4.0 release notes" . Retrieved 2011-08-10.
  16. (in English) "Acceleo 2.5.0 release notes" . Retrieved 2011-08-10.
  17. (in English) "Acceleo 2.6.0 release notes" . Retrieved 2011-08-10.
  18. (in English) "Acceleo 2.7.0 release notes" . Retrieved 2011-08-10.
  19. 1 2 3 4 5 6 7 8 (in English) "Acceleo Download" . Retrieved 2019-07-06.
  20. (in English) "Acceleo 3.0.0 release notes" . Retrieved 2011-08-10.
  21. (in English) "Acceleo 3.1.0 release notes" . Retrieved 2011-08-10.
  22. (in English) "Acceleo 3.2.0 release notes" . Retrieved 2011-10-27.
  23. (in English) "Acceleo 3.3.0 release notes" . Retrieved 2015-03-05.
  24. (in English) "Acceleo 3.4.0 release notes" . Retrieved 2015-03-05.
  25. (in English) "Acceleo 3.5.0 release notes" . Retrieved 2015-03-05.
  26. (in English) "Acceleo 3.6.0 release notes". 2015-06-10.
  27. (in English) "Acceleo 3.7.0 release notes". 2016-11-16.
  28. (in English) "Acceleo 3.7.0 Release Plan". 2016-11-16.
  29. (in English) "Acceleo documentation" . Retrieved 2011-08-10.
  30. (in English) "Acceleo documentation on the Eclipse Help Center" . Retrieved 2011-08-10.
  31. (in English) "Acceleo wiki" . Retrieved 2011-08-10.
  32. (in English) "EclipseCon 2009 - Eclipse MTL: a Real Standard Alternative for Code Generation". Archived from the original on 2011-07-28. Retrieved 2011-08-10.
  33. (in English) "Eclipse Summit Europe 2010 - Creating a Language for Android Apps with Eclipse Modeling". Archived from the original on 2011-10-01. Retrieved 2011-08-10.
  34. (in English) "Topcased Days 2011 - Acceleo". Archived from the original on 2011-08-19. Retrieved 2011-08-10.
  35. (in English) "Code Generation 2011 - And you thought you knew template based code generator?" . Retrieved 2011-08-10.