Composition and Interoperability for External Domain-Specific Language Engineering
Composition et interopérabilité pour l'ingénierie des langages dédiés externes
Abstract
Following the principles of Model-Driven Engineering and Language-Oriented Programming, Domain-Specific Languages (DSLs) are now developed in numerous domains to address specific concerns in the development of complex systems. However, despite many advances in Software Language Engineering, DSLs and their tooling still suffer from substantial development costs which hamper their successful adoption in the industry.
We identify two main challenges to be addressed. First, the proliferation of independently developed and constantly evolving DSLs raises the problem of interoperability between similar languages and environments. Language users must be given the flexibility to open and manipulate their models using different variants and versions of various environments and services to foster collaboration in the development of complex systems. Second, since DSLs and their environments suffer from high development costs, tools and methods must be provided to assist language designers and mitigate development costs.
In this thesis, we address these challenges through three interconnected contributions. First, we propose the notion of language interface. Using language interfaces, one can vary or evolve the implementation of a DSL while retaining the compatibility with the services and environments defined on its interface. Then, we present a mechanism, named model polymorphism, for manipulating models through different language interfaces. Model polymorphism opens up the possibility to safely manipulate models using different modeling environments and services. Finally, we propose a meta-language that enables language designers to reuse legacy DSLs, compose them, extend them, and customize them to meet new requirements. This approach relies on language interfaces to provide a reasoning layer for ensuring the structural correctness of composed DSLs and their safe manipulation.
We implement all our contributions in a new language workbench named Melange. Melange supports the modular definition of DSLs, and the interoperability of their environments. Melange is seamlessly integrated with the de facto standard Eclipse Modeling Framework (EMF) and provides model polymorphism to any EMF-based tool of the Eclipse modeling ecosystem. Using Melange, we show how to reuse tools and services over various language families (four versions of the Unified Modeling Language, and a family of statechart languages), and how to flexibly manipulate their models. We also show how Melange eases the development of new DSLs by designing a new modeling language for Internet of Things systems as an assembly of various independently developed languages.
Different perspectives directly stem from the contributions presented in this thesis. In particular, we discuss how our contributions constitutes a first step towards component-based language engineering and viewpoints engineering.
Le développement de langages dédiés (DSLs) est une activité récurrente lors de l'ingénierie de systèmes complexes à forte composante logicielle. Cependant, malgré de nombreuses avancées dans l'ingénerie des langages, les coûts de développement élevés des DSLs et de leur outillage entravent toujours leur adoption par l'industrie.
Nous identifions deux enjeux principaux. Tout d'abord, la prolifération de DSLs développés de manière indépendante et en constante évolution pose le problème de l'interopérabilité entre langages et environnements similaires. En outre, afin de diminuer leurs coûts de développement, des outils et méthodes appropriés doivent être proposés pour assister les développeurs de langage. Dans ce but, nous proposons tout d'abord la notion d'interface de langage. En utilisant des interfaces de langage, il est possible de faire varier ou évoluer l'implémentation d'un DSL tout en conservant la comptabilité avec les services et environnements définis sur son interface. Nous présentons ensuite un mécanisme, le polymorphisme de modèle, permettant de manipuler des modèles à travers différentes interfaces de langage. Enfin, nous proposons un méta-langage permettant aux développeurs de langages de réutiliser des DSLs existants, de les composer, de les étendre et de les personnaliser pour s'adapter à de nouvelles exigences.
Nous implémentons chacune de nos contributions dans un nouvel environnement de développement de langage nommé Melange, qui supporte la définition modulaire de DSLs et l'interopérabilité de leur outillage. Nous évaluons la capacité de Melange à résoudre des scénarios avancés d'ingénierie des langages.
Loading...