Acceleo
Encyclopedia
Acceleo is an open source code generator of the Eclipse Foundation
Eclipse Foundation
The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the open-source Eclipse Projects and helps cultivate both an open source community and an ecosystem of complementary products and services...

 that allow people to use a model driven
Model-driven architecture
Model-driven architecture 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...

 approach to build application from models. It is an implementation of the standard from the Object Management Group
Object Management Group
Object Management Group is a consortium, originally aimed at setting standards for distributed object-oriented systems, and is now focused on modeling and model-based standards.- Overview :...

 (OMG) for model to text transformation named MOFM2T.

Early versions

The project Acceleo is born in 2006 with the website Acceleo.org. Acceleo 1.0 was licenced under the GNU Public Licence (GPL) and it was compatible with Eclipse 3.0, 3.1 and several modelers based on EMF
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 and UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

 1.2. Few weeks later, Acceleo 1.1 brought the compatibility with Eclipse 3.2 and UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

 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 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
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 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
Eclipse Foundation
The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the open-source Eclipse Projects and helps cultivate both an open source community and an ecosystem of complementary products and services...

 when Acceleo was accepted as an official project.

Source code

Acceleo is an Eclipse project mostly developed in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 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. 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. After the release of Eclipse 3.7 Indigo in 2011, the Acceleo project has migrated to Git following the migration started by several official project of the Eclipse Foundation and since July 2011, the Acceleo source code is available on Github.

Releases

  • First stable release: Acceleo 1.0.0 available since
  • Latest stable release: Acceleo 3.2 available since

Legend:
Previous versions Latest stable release Next release

Version Release date Release log
1.0 First version of Acceleo available under the GPL licence, code generation from EMF
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 based models.
1.1 Compatibility with Eclipse 3.2, support for models created with GMF, ArgoUML, Poseidon, Umbrello and Rational Rose.
1.2 Switch to the Eclipse Public Licence (EPL), new indentation service, parameterized launcher, Ant compatibility.
2.0 Language improvements, XML compatibility, export of generators as Eclipse plugin.
2.1 Compatibility with Eclipse 3.3, code generator debugger.
2.2 Localization support, support for different encoding of the templates, release of the following generators: JEE, PHP, Python and WISS.
2.3 Compatibility with Eclipse 3.4, ability to call standard EOperations defined in the model, search references.
2.4 Possibility to export a generator as a stand alone module or as a RCP application.
2.5 Generation profiler, actions on the outline.
2.6 Compatibility with Eclipse 3.5 Galileo.
2.7 Improvement of the profiler, compatibility with Enterprise Architect
Enterprise Architect (Visual Modeling Platform)
Sparx Systems Enterprise Architect is a visual modeling and design tool based on the OMG UML. The platform supports: the design and construction of software systems; modeling business processes; and modeling industry based domains...

.
3.0 New language to define code generators based on MOFM2T, support for OCL based queries, real time compilation with error detection.
3.1 Support for documentation for generators, detection of potential errors with warning, Maven support, binary compilation of the generator.
3.2 Next major release of Acceleo with the new "Interpreter" view to evaluate Acceleo expression on a given set of model element.

Supported platforms

Acceleo is written in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 and it is deployed as a plugin on the Eclipse IDE. Acceleo is supported on Java 5+ based environment on the following platforms:
  • GNU/Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

  • Mac OS X
    Mac OS X
    Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

  • Windows XP
    Windows XP
    Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...

    , Windows Vista
    Windows Vista
    Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...

    , Windows 7

The language

Starting with Acceleo 3, the language used to defined 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
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 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:
  • code generation from any kind of metamodel compatible with EMF
    Eclipse Modeling Framework
    Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

     like UML
    Unified Modeling Language
    Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

     1, UML
    Unified Modeling Language
    Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

     2 and even custom metamodels (DSLs)
  • customization of the generation with user defined templates
  • generation of any textual language (C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

    , C++
    C++
    C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

    , Java
    Java (programming language)
    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

    , Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    , etc.)

Editor

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

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.

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
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

 models after a generation launched with the profiler. It gives the user the ability to find bottleneck in the code generator created.

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 determined 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 have also been involved.

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 the following version of Eclipse:
  • Eclipse 3.4 Ganymede
  • Eclipse 3.5 Galileo
  • Eclipse 3.6 Helios
  • Eclipse 3.7 Indigo


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

. 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
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

 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.


Here we are using the following elements: EClass, EAttribute and EOperation from EMF
Eclipse Modeling Framework
Eclipse Modeling Framework is an Eclipse-based modeling framework and code generation facility for building tools and other applications based on a structured data model...

. Thanks to the simple module and this input model, Acceleo can generated 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
Title Author Date Link
Best Open Source Eclipse-Based Developer Tool 2009 Eclipse Foundation
Eclipse Foundation
The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the open-source Eclipse Projects and helps cultivate both an open source community and an ecosystem of complementary products and services...

Eclipse Community Awards Winners Announced
Open Innovation Award 2010 Open World Forum 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 is accessible online on the Eclipse Help Center and on the wiki of the Acceleo project.

Conferences

The developers of Acceleo are also communicating with the community thanks to presentation realized in MDA or Eclipse conferences.
Name Date Location Title of the presentation
MDA approach conference Geneva
SOA/MDA Luxembourg
EclipseCon 2007 Los Angeles
Eclipse Summit Europe 2008 Ludwisburg
EclipseCon 2009 Los Angeles Eclipse MTL: a Real Standard Alternative for Code Generation
Eclipse Summit Europe 2009 Ludwisburg From Acceleo.org to Eclipse Modeling
Eclipse Con 2010 Los Angeles Acceleo Code Generation: Let's start with an Android example
Eclipse Summit Europe 2010 Ludwisburg Creating a Language for Android Apps with Eclipse Modeling
Topcased Days 2011 Toulouse Acceleo
Code Generation 2011 Cambridge And you thought you knew template based code generator?

External links

Official website (for Acceleo 3+) Official wiki Official forum Official website (for Acceleo 1 and 2) Obeo, creator of the project Using Acceleo 2 with GMF Spécification MOF Model To Text Language Spécification OCL
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK