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