Concrete Syntax Definition for Modeling Languages
Transcription
Concrete Syntax Definition for Modeling Languages
Version Abrégée Version Abrégée L'ingénierie dirigée par les modèles (IDM) promeut les modèles comme composants principaux d’un processus de développement logiciel. Cette approche tente d’organiser la complexité par l’abstraction, par exemple afin de faire face à l’évolution des plate-formes d’exécution. L’IDM suit une approche par étapes dans laquelle sont développés des modèles abstraits, peu à peu améliorés pour y intégrer les détails dont a besoin la plate-forme de déploiement finale. Ainsi l’application d’un processus IDM produit une multitude de modèles à différent niveaux d’abstraction. Chacun de ces modèles est exprimé dans un langage supposé apporter les concepts adéquats pour le niveau d’abstraction considéré. De nombreux auteurs préconisent d’utiliser le langage (de modélisation) le plus adapté possible au but poursuivi. En d’autre termes, il est souvent plus ingénieux d’utiliser de petits langages très spécialisés pour un domaine et un niveau d’abstraction donné, que d’utiliser des langages génériques (tels UML) quand ils ne satisfont pas pleinement au besoins de la modélisation. C’est pourquoi un processus de développement IDM, qui implique de nombreux domaines et niveaux d’abstraction, doit souvent impliquer de nombreux langages. Les chefs de projets désireux d’adopter une approche IDM se voient donc dans l’obligation de jongler avec une véritable prolifération de langages, ceci à tel point qu’on est en droit de se demander si les ingénieurs du langage ne seront pas les partenaires indispensables des équipes de développement logiciel du futur. L’idée développée dans ce document est qu’un mécanisme générique de gestion de ces nombreux langages simplifierait sans doute cette situation spécifique à l’IDM. De tels mécanismes seraient par exemple capables de définir complètement des langages de modélisation, de les étendre ou les adapter, voire de les composer. Pour définir un langage, qu’il s’agisse d’un langage de modélisation ou non, il est nécessaire de spécifier sa syntaxe abstraite, au moins une syntaxe concrète et sa sémantique. Cette thèse s’intéresse à la définition de syntaxes concrètes, une fois la syntaxe abstraite établie sous forme de métamodèle. Ces syntaxes concrètes peuvent être soit textuelles, soit graphiques. Certaines de nos expériences dans la construction de langages textuels (comme MTL, un langage de transformation de modèles) ou graphiques (tel Netsilon, un modeleur d’application internet) ont montré que beaucoup d’énergie est dépensée dans l’implémentation des interfaces utilisateur, qu’il s’agisse de processeurs de texte générés à partir de spécifications pour compilateur de compilateurs, ou de modeleurs créés à partir de bibliothèques pour la représentation graphique en deux dimensions. En effet, dans ces projets, les syntaxes abstraites et concrètes sont développées de manière indépendante, ce qui pose rapidement des problèmes en terme de cohérence lors des évolutions de la syntaxe abstraite. Les solutions proposées ici définissent les syntaxes concrètes comme dépendantes des syntaxes abstraites. Il a été possible de construire des implémentations prototypes basées sur les approches proposées. L’une d’elle est capable de produire du texte à partir d’un iii Mots Clefs modèle, ou inversement un modèle à partir d’un texte. Une autre est capable de fournir un modeleur graphique maintenant en cohérence un modèle et sa représentation graphique. La première contribution de cette thèse est la définition d’un métamodèle pour la spécification constructive de syntaxes textuelles réversibles. La seconde contribution est une méthode de spécification de syntaxes graphiques en deux étapes: l’étape de spécification et l’étape de réalisation. La spécification suit une approche restrictive dans laquelle un métamodèle définit la structure d’un graphe de syntaxe concrète. Des contraintes viennent en complément afin d’exprimer la cohérence entre les syntaxes concrète et abstraite, ainsi que les règles de composition spatiale. L’étape de réalisation consiste à préciser le mode de représentation du graphe de syntaxe concrète, ainsi que des interactions possibles avec un utilisateur souhaitant modéliser un système. Après une brève introduction, ce document commencera par un aperçu de l’IDM ainsi que des techniques communément acceptées de spécification de syntaxes concrètes textuelles et graphiques. Nous verrons ensuite l’outil Netsilon, qui est un exemple d’outil de modélisation pour l’IDM: nous pourrons alors avoir un exemple de démarche IDM et de spécification de langages textuels et graphiques. Nous en déduirons de possibles améliorations dans la construction d’outils pour l’IDM basés sur les langages. Les deux chapitres suivants décriront les approches proposées pour la spécification de syntaxes textuelles et graphiques. Enfin, nous conclurons sur les améliorations à apporter aux approches proposées, notamment en ce qui concerne la réutilisabilité des artefacts des méthodes de type IDM en général (par exemple les métamodèles ou les transformations de modèles), et des syntaxes concrètes en particulier. Mots Clefs Ingénierie Dirigée par les Modèles, Métamodélisation, Ingénierie des Langages, Syntaxes Concrètes, Syntaxes Textuelles, Syntaxes Graphiques, Scalable Vector Graphics. iv