XtUML: DSL pour le forward engineering de diagrammes

publicité
XtUML: DSL∗ pour le forward engineering de
diagrammes de séquence
Lom Messan H ILLAH, [email protected]
29 décembre 2012
Contexte
Dans le cadre d’un projet d’analyse d’algorithmes d’extraction de modèles comportementaux de systèmes orientés objet à partir de leurs traces d’exécution, nous utilisons les diagrammes de séquence (SD) initiaux de ces systèmes, pour évaluer le degré
de précision et de complétude de l’extraction des traces vis-à-vis de la spécification
initiale. A partir de cette spécification initiale, des traces peuvent être générées aléatoirement, avec des probabilités d’apparition des structures de contrôle (e.g. alt, opt,
loop).
Une API Java est utilisée dans notre plateforme pour spécifier ces SD (dits parfaits).
Il faut noter que ces diagrammes ne sont pas forcément extraits automatiquement du
code source, puisque nous nous plaçons dans un cadre où l’on n’a pas forcément accès
(pour diverses raisons) au code source des systèmes étudiés.
Problématique
L’utilisation manuelle et directe de l’API Java pour spécifier un diagramme de séquence initial est fastidieuse et peut donner lieu à de subtiles erreurs. Nous souhaitons
mettre en place une syntaxe textuelle plus légère et plus concise pour les écrire plus rapidement, puis les traduire automatiquement vers la plateforme via son API Java. Cette
approche de prototypage rapide permettra de faire du forward engineering :
– définition des types en Java à la volée, en fonction des types des acteurs du SD,
– création d’interfaces Java correspondant (on s’intéresse uniquement aux messages et leurs paramètres) à ces types.
Il devrait alors être possible de synchroniser automatiquement le SD et les interfaces en Java : l’ajout d’un acteur provoque la création de son type Java s’il n’existait
pas ; l’ajout d’un type Java permet l’ajout d’un acteur de ce type ; de même pour la
correspondance entre messages et méthodes.
L’objectif est de définir cette syntaxe et créer son éditeur avec le framework Xtext
d’Eclipse 1 . On pourra également visualiser le diagramme créé avec un éditeur déjà
∗ Domain-Specific
Language
1. http://www.eclipse.org/Xtext/
1
existant sous Eclipse, Obeo UML Designer 2 , qui s’appuie sur le plugin UML 2
d’Eclipse 3 .
Travail à réaliser
Le nouveau langage (XtUML) sous Xtext bénéficiera d’une syntaxe abstraite (AST)
automatiquement générée par Xtext dans le format d’Eclipse Modeling Framework
(EMF) [1], proche d’un diagramme de classe. UML est lié à EMF sous Eclipse grâce
au plugin UML 2.
Le travail à réaliser consiste donc à :
– définir la nouvelle syntaxe grâce au framework Xtext et générer son éditeur (voir
section état de l’art),
– utiliser le plugin UML 2 pour représenter le modèle du diagramme et ainsi bénéficier de l’outil Obeo UML Designer pour l’affichage graphique (ou autre alternative en restant en EMF),
– utiliser l’API Java de création des SD de notre plateforme pour générer automatiquement le SD dans le format attendu par la plateforme,
– générer automatiquement les interfaces Java et maintenir la synchronisation entre
le SD et les interfaces ; on étudiera le framework Acceleo d’Obeo qui fournit la
technologie pour maintenir une synchronisation automatique entre diagramme et
code 4 5 .
Ce projet considère principalement les diagrammes de séquence, mais nous comptons toutefois élargir l’approche à d’autres types de diagrammes, en particulier les diagrammes de classe. Une expérimentation pourra donc être menée sur les diagrammes
de classe, afin de se familiariser avec le framework Xtext.
Etat de l’art
Il existe des projets traitant cette approche de définition de syntaxe, mais ils ne
répondent pas à la combinaison de nos besoins :
– EMFText 6 paraît faire doublon, moins flexible et moins intégré aux autres outils Eclipse que Xtext. Il paraît antérieur à Xtext, et nous n’avons pas trouvé
(d’après nos dernières recherches) de grammaire pour SD 7 . Par contre, il existe
une grammaire pour les diagrammes de classe qu’il est intéressant d’étudier.
– TextUML 8 est antérieur à Xtext et ne gère pas les SD. Il possède une syntaxe
pour les diagrammes de classe qu’il sera également intéressant d’étudier.
– Altova UML 9 répond à notre besoin de forward engineering, mais c’est un outil
commercial et qui fonctionne uniquement sous Windows.
2. http://marketplace.obeonetwork.com/module/uml
3. http://wiki.eclipse.org/MDT-UML2
4. http://www.eclipse.org/projects/project.php?id=modeling.m2t.acceleo
5. http://stackoverflow.com/questions/11966797/meshing-acceleo-with-xtext
6. http://www.emftext.org/index.php/EMFText
7. http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Zoo
8. http://sourceforge.net/apps/mediawiki/textuml/index.php?title=TextUML_Toolkit_
Features
9. http://www.altova.com/umodel/sequence-diagrams.html
2
Pré-requis et apports du stage
Des connaissances en Java et une aisance de développement sous Eclipse seront
appréciées. L’apprentissage de EMF, UML et leur bibliothèque de manipulation de
modèles est relativement simple.
Les candidats devront faire preuve d’autonomie et d’initiative afin de surmonter les
difficultés techniques du stage et proposer des solutions simples et robustes, dont la
maintenance est relativement simple.
Ce projet peut accueillir 2 étudiant(e)s de Master 1.
Ce projet sera en contre-partie l’occasion pour le stagiaire :
– d’utiliser des technologies industrielles de pointe pour l’ingénierie des modèles
et les Domain-Specific Languages (Eclipse, EMF, Acceleo, Xtext),
– d’utiliser des plateformes d’intégration continue (Maven 10 , TeamCity 11 , Sonar 12 ) et des technologies permettant d’apprendre des normes de qualité de code
(CheckStyle 13 , FindBugs 14 ), ainsi que la gestion de version de code source
(SVN ou Git, et les mécanismes de branchement et release) très recherchées
dans l’industrie,
– de produire un logiciel libre pour une communauté de recherche ;
– d’approfondir leur connaissance dans l’ingénierie des modèles et la mise en
œuvre d’un outillage avancé qui est répandu dans l’industrie.
Références
[1] F. Budinsky, D. Steinberg, E. Merks, R. Ellersick, and T. Grose. Eclipse Modeling
Framework. The Eclipse Series. Addison-Wesley Professional, August 2003.
Informations administratives
Responsable du stage : L.M. Hillah ([email protected])
Equipe MoVe : UPMC, 4 place Jussieu, LIP6-MoVe, barre 25 − 26, 2eme étage,
75005 Paris
Durée du projet : de Janvier à mai 2013
Pas de rémunération prévue, ce projet sera effectué dans le cadre des projets PSTL.
10.
11.
12.
13.
14.
http://maven.apache.org
http://www.jetbrains.com/teamcity/
http://www.sonarsource.org
http://checkstyle.sourceforge.net
http://findbugs.sourceforge.net
3
Téléchargement