3. Introduction
• Acceleo a été conçu pour permettre d'industrialiser le
développement des applications informatiques et il permet
de mettre en œuvre simplement et efficacement l'approche
MDA (Model Driven Architecture).
• Acceleo est un outil de génération de code sous Eclipse. Il
permet de concevoir des modules de génération de code
dans un langage choisi par le développeur, à partir d'un ou
plusieurs modèles, et fournit aussi des modules de génération
de code prêts à être utilisés.
1 / 15
4. La création du générateur
• Notre objectif est de créer un module capable de prendre un
modèle UML2 en entrée et de créer un ensemble de fichiers
Java.
• Le principe de fonctionnement d'Acceleo est le suivant:
Acceleo utilise un template pour générer du code à partir d'un
modèle. La réalisation d'un nouveau module de génération
passe donc par la création de templates.
2 / 15
6. • Dans un premier temps, il faut créer un projet de génération:
• Exécuter «File > New > Generator Project».
• Pour créer le fichier du générateur aller à
• «File > New > Empty Generator», ceci lance un assistant en
deux étapes. Dans la première étape, il faut renseigner le type
du méta-modèle d'entrée. Le méta-modèle dans notre cas
est UML2 qui a pour URI:
http://www.eclipse.org/uml2/2.0.0/UML
4 / 15
7. Template
• Un template de génération est un patron qui doit délimiter de
façon claire le texte statique généré et les éléments variables.
Dans Acceleo le texte variable commence par <% et se termine
par %>.
5 / 15
8. Les éléments de syntaxe
1) Les commentaires:
Il est possible de commenter les scripts de génération en
insérant des explications d'une ou plusieurs lignes entre les
balises <% - - et - - %>. Par exemple:
<%--Ceci est un commentaire--%>
6 / 15
9. 2) metamodel:
Le mot clé «metamodel» permet de définir le méta-modèle
utilisé dans le script de génération. La syntaxe de cette
instruction est:
Où URIDeMonMetamodèle est l'URI qui identifie le méta
modèle utilisé. Par exemple pour le méta-modèle UML 2.0
on utilise l’URI :
http://www.eclipse.org/uml2/2.0.0/UML
metamodel URIDeMonMetamodèle
7 / 15
10. 3) script:
La balise «script» permet d'identifier le script de génération et le
type d'objet sur lequel il s'applique. La syntaxe de cette balise
est:
<%script type="monType" name="identifiant"
file=" nomFGénéré " description="maDescription"
post="monPost"%>
8 / 15
11. Résumé des attributs
Nom Description Statut
type Type d'objet sur lequel s'applique le
script (classe, attribut ...)
Obligatoire
name Nom du script Obligatoire
file Nom du fichier à générer Optionnel
post Expression à exécuter sur le résultat de
l'évaluation
Optionnel
description Commentaire Optionnel
9 / 15
12. 4) for:
L'instruction «for» est l'implémentation d'une boucle. La syntaxe
de cette instruction est:
<%for (maListeDObjets) {%>
instructions exécutées sur chaque élément de maListeDObjets
<%}%>
10 / 15
13. 5) if:
L'instruction «if» permet de tester une condition. La syntaxe de
cette instruction est:
<%if (expressionBooléenne) {%>
instructions exécutées si expressionBooléenne est vraie
<%} else {%>
instructions exécutées sinon
<%}%>
11 / 15
14. Création du fichier d'exécution
• L'entrée «New > Chain» du menu contextuel du projet
permet de lancer l'assistant de création d’une chaîne
d'exécution:
Sélectionner à nouveau l'URI de UML2.
Sélectionner le modèle.
Cocher le générateur.
12 / 15
15. Code utilisateur
• Pour le moment, toutes les modifications apportées à un fichier
généré sont écrasées à la génération suivante. Pour résoudre
ce problème, Acceleo possède un mécanisme de balises
permettant de définir des zones destinées à accueillir du code
utilisateur qui ne sera pas écrasé à la génération suivante. Il
faut ajouter ces balises aux bons endroits dans le template afin
de pouvoir insérer du code utilisateur.
13 / 15
16. • Tout le code cible écrit entre les balises identifiées par
<%startUserCode%> et <%endUserCode%> est protégé et n'est
pas écrasé à la génération suivante ce qui permet de
personnaliser le code généré.
• Le texte sur la même ligne que la balise <%startUserCode%> est
un identifiant pour la zone de code utilisateur, cet identifiant
doit être unique pour garantir la conservation du code manuel
d'une génération à une autre.
14 / 15
17. Conclusion
• Cet exposé était une courte introduction des possibilités
offertes par Acceleo pour la génération de code. L'utilisation
de l'outil Acceleo apporte une certaine indépendance vis à vis
de la plateforme technologique. De plus la maintenance est
facilitée et on obtient une vraie synchronisation entre le code
et le modèle. Ce dernier passe du statut de modèle
documentaire à celui de modèle productif.
15 / 15