Concrete Syntax Definition for Modeling Languages
Total Page:16
File Type:pdf, Size:1020Kb
CONCRETE SYNTAX DEFINITION FOR MODELING LANGUAGES THÈSE NO 3927 (2007) PRÉSENTÉE LE 2 NOVEMBRE 2007 À LA FACULTÉ INFORMATIQUE ET COMMUNICATIONS Institut des systèmes informatiques et multimédias PROGRAMME DOCTORAL EN INFORMATIQUE, COMMUNICATIONS ET INFORMATION ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE POUR L'OBTENTION DU GRADE DE DOCTEUR ÈS SCIENCES PAR Frédéric FONDEMENT ingénieur diplômé de l'école supérieure des sciences appliquées pour l'ingénieur de l'Université de Mulhouse, France et de nationalité française acceptée sur proposition du jury: Prof. E. Telatar, président du jury Dr T. Baar, directeur de thèse Dr P.-A. Muller, rapporteur Prof. B. Rumpe, rapporteur Prof. A. Wegmann, rapporteur Suisse 2007 Abstract Abstract Model Driven Engineering (MDE) promotes the use of models as primary artefacts of a software development process, as an attempt to handle complexity through abstraction, e.g. to cope with the evolution of execution platforms. MDE follows a stepwise approach, by prescribing to develop abstract models further improved to integrate little by little details relative to the final deployment platforms. Thus, the application of an MDE process results in various models residing at various levels of abstraction. Each one of these models is expressed in a modeling language, in which one may find appropriate concepts for the abstraction level considered. Many advocate to use the right (modeling) language for the right purpose. This means that it is sometimes better approach to use small languages specific to the considered domain and abstraction level, than to use general purpose languages (e.g. UML) when they do not perfectly fit the (modeling) needs. As a matter of fact, an MDE development process, which involves many different domains and abstraction levels, should also involve a large variety of modeling languages. Project managers who want to apply an MDE process need to deal with this language proliferation to such an extent that, in the long run, one may infer that language engineers can become major actors of software development teams. We believe that comprehensive modeling language management facilities may con- siderably alleviate that MDE drawback. Such facilities may include modeling language def- inition, extension, adaptation, or composition. To define a (modeling) language, one need to define its abstract syntax, its semantics, and one or more concrete syntaxes. This thesis focuses on concrete syntax definition for modeling languages, when the abstract syntax is given in the form of a metamodel. We will provide solutions both for textual and graphical concrete syntaxes. Some of our experiences in building textual languages (as MTL, a model transforma- tion language), and graphical languages (as Netsilon, a web-application modeler) has shown that a lot of work was spent in implementing interface using traditional techniques, be it a text processor generated from a compiler compiler specification, or a modeler making use of modern 2D graphical libraries. Indeed, abstract and concrete syntax were implemented in a disconnected way, and it was then necessary to assemble them, which became rapidly clumsy while abstract syntax evolved. We built our solution to concrete syntax definition as companions of the abstract syn- tax. The definition of concrete syntax we propose here made it possible to build automatic tools able to analyze or synthesize models from/to text, and to create graphical modelers. We will present a metamodel for textual concrete syntax definition to construct constructive reversible grammars. We will also propose a technique for graphical concrete syntax defini- tion following a two-step process: specification and realization. Specification is a restrictive approach in which a metamodel defines a graphical concrete syntax. Both relations with i Keywords abstract syntax and spatial relationships are expressed by means of constraints. The realiza- tion step proposes a way to provide the concrete syntax tree a meaning, by attributing it a graphical appearance, and by expressing possible user interactions. The structure of the document is the following. After introducing in deeper details the problem and the general structure of the solution we propose, we will take a tour of MDE, text and graph grammars. Then, we will present Netsilon as an example of an MDE tool to MDE development, which required both the definition of a graphical and a textual modeling language. The two following sections will present the solutions we propose for textual and graphical concrete syntax definition, respectively. Final remarks and possible improve- ments, especially regarding reusability in general of MDE meta-artifacts (like metamodels or model transformations), and of concrete syntax in particular, will conclude the document. Keywords Model Driven Engineering, Metamodeling, Language Engineering, Concrete Syntax, Tex- tual Concrete Syntax, Graphical Concrete Syntax, Scalable Vector Graphics. ii Version Abrégée Version Abrégée L'ingénierie dirigée par les modèles (IDM) promeut les modèles comme composants princi- paux d’un processus de développement logiciel. Cette approche tente d’organiser la com- plexité 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 abs- traite, 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’appli- cation 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 abs- traites 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éfi- nit 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 souhai- tant 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 textuel- les 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