Vers des Environnements de Développement Intégrés flexibles

Type de soutenance
Thèse
Date de début
Date de fin
Lieu
IRISA Rennes
Salle
Salle Petri-Turing
Orateur
Fabien COULON (DIVERSE)
Département principal
Sujet

(English version below)

Les Environnements de Développement Intégrés (EDI) sont des composants centraux pour les utilisateurs de langages, qui permettent les activités de développement et fournissent un accès unifié aux services de langages. Les EDIs sont également essentiels pour les concepteurs de langages, qui s’attendent de plus en plus à ce que les EDIs soient extensibles, ce qui en fait une base pratique pour les ateliers de langages.

Bien que les concepteurs de langage aient la possibilité d’implémenter les langages dans la pile technologique de leur choix, ils manquent de flexibilité pour cette tâche. En effet, un langage peut être implémenté dans différentes piles technologiques mais les services de langages des différentes piles ne peuvent pas manipuler les mêmes constructions de langage en raison de l’isolement des piles technologiques. Une telle flexibilité est intéressante pour les concepteurs de langage, car chaque pile a ses points forts, et est intéressante pour les utilisateurs de langage car, pour une activité donnée, ils manipuleront les constructions de langage avec les services de langage les plus appropriés fournis par une pile technologique spécifique.

La tendance récente dans l’ingénierie des EDIs est d’adopter le modèle Software as a Service pour réaliser les EDIs en tant qu’applications cloud, l’objectif étant de fournir un environnement de développement sans installation via un navigateur web. Les clouds sont composés de plateformes d’exécution qui peuvent varier dans les ressources qu’elles fournissent (mémoire, CPU, etc.) et, en même temps, les EDIs sont composés de services de langage hétérogènes ayant des besoins spécifiques. Cependant, les EDIs existants basés sur le cloud ne tirent pas parti de la diversité des ressources disponibles pour répondre au mieux aux besoins de leurs services de langage car leurs architectures sont monolithiques, ce qui interdit toute flexibilité dans le déploiement des langages.

La flexibilité dans la réalisation et le déploiement des langages peut se résumer à deux défis. Premièrement, les concepteurs de langage doivent pouvoir bénéficier des atouts spécifiques des nombreuses piles technologiques possibles pour la réalisation des langages et, d’autre part, les utilisateurs de langage doivent pouvoir passer de manière transparente entre les services de langage réalisés dans différentes piles technologiques pour manipuler les mêmes constructions de langage. Deuxièmement, les services de langage doivent exploiter les plateformes d’exécution disponibles pour répondre au mieux à leurs besoins en fonction des activités de l’utilisateur du langage, qui peuvent évoluer dans le temps. À cette fin, les services de langage doivent être distribués et leur déploiement doit être configurable.

Cette thèse apporte plus de flexibilité à la fois dans l’implémentation du langage et dans le déploiement des services du langage. Pour relever le défi de l’implémentation d’un langage dans plusieurs piles technologiques, nous proposons un bus de communication basé sur un motif de type publication/souscription et un formalisme pour exprimer les changements dans les constructions du langage afin de synchroniser les piles technologiques implémentant le même langage. Nous avons appliqué cette contribution aux trois piles technologiques EMF, Rascal, et Java fluent API dans lesquelles le langage Machine à Etats a été implémenté.

Afin de relever le défi de la distribution et de la configuration du déploiement des services de langage, nous proposons une approche générative, basée sur la spécification d’un protocole de communication, pour modulariser les services de langage et pour permettre un déploiement sûr. Pour valider la généralisation de notre deuxième contribution, nous l’avons appliquée aux langages NabLab, Logo, MiniJava et ThingML. Nous avons mesuré qu’il y a un avantage à exécuter des services intensifs en calcul en tant que micro services déployés à distance et que les micro services sans état ont une surcharge significative due au chargement de modèle.

Cette thèse a permis de tirer profit des forces de plusieurs piles technologiques pour implémenter des langages en connectant des ateliers de langages de ces piles et a permis de distribuer des services de langage sur différentes plateformes d’exécution en fonction de leurs besoins grâce à laspécification d’un protocole de communication combiné à une approche générative. Nous pensons que ce travail est un premier pas vers un EDI auto-adaptatif capable de réagir automatiquement aux changements dans les activités des utilisateurs de langage et aux changements dans les plateformes d’exécution disponibles.

Mot clés : IDE, DSL Métamorphique, Micro service, Approche générative

 

Abstract:

Integrated Development Environments (IDE) are central components for language users to support development activities and provide unified access to language services. IDEs are essential for language designers as well, who increasingly expect IDEs to be extensible, making them a practical base for language workbenches. Although language designers have the choice to implement languages in the technological stack of their choice, they lake of flexibility for this task. Indeed, a language can be implemented in different technological stacks but the language services of the different stacks cannot manipulate the same language constructs due to the isolation of technological stacks. Such flexibility is interesting for language designers, because each stack has its strengths, and is interesting for language users because, for a given activity, they would manipulate language constructs with the most appropriate language services provided by a specific technological stack. The recent trend in IDE engineering is to adopt the Software as a Service model for implementing IDEs as cloud applications, the goal being to provide a development environment without installation through a web browser. Clouds are composed of execution platforms that can vary in the resources they provide (memory, CPU, etc) and at the same time IDEs are composed of heterogeneous language services with specific needs. However existing cloud IDEs do not take advantage of the diversity of available resources to best fit the needs of their language services because their architectures are monolithic, which prohibits any flexibility in language deployment.
Flexibility in the implementation and deployment of languages can be summarized as two challenges. First, language designers must be able to benefit from the specific strengths of the many possible technological stacks for implementing languages and, on the other side, language users must be able to seamlessly switch between language services implemented in different technological stacks to manipulate the same language constructs. Second, language services must leverage available execution platforms to best fit their needs according to the language user’s activities, which can evolve over time. To this end, language services have to be distributed and their deployment has to be configurable.
This thesis brings more flexibility in both language implementation and language services deployment. For the challenge of implementing a language in multiple technological stacks, we propose a communication bus based on a publish/subscribe pattern and a formalism to express changes in language constructs to synchronize technological stacks implementing the same language. We applied this contribution to the three technological stacks EMF, Rascal, and Java fluent API in which the Finite State Machine language has been implemented. To address the challenge of distributing and configuring the deployment of language services, we propose a generative approach to modularize language services and support their safe deployment based on the specification of a communication protocol. To validate our second contribution is generalizable, we applied it to the NabLab, Logo, MiniJava, and ThingML languages. We measured that there is a benefit in running computational intensive services as remotely deployed microservices and that stateless microservices have a significant overhead due to model loading. This thesis made it possible to take advantage of the strengths of multiple technological stacks to implement languages by connecting language workbenches and to distribute language services across different execution platforms according to their needs through the specification of communication protocol combined with a generative approach. We believe that this work is a first step towards a selfadaptive IDE capable of automatically reacting to changes in the activities of language users and in available execution platforms.

Composition du jury
- Sophie EBERSOLD, Rapporteur, Université Toulouse - Jean Jaurès
- Jean-Remy FALLERI, Rapporteur, Université de Bordeaux
- Réda BENDRAOU, Examinateur, Université Paris Nanterre
- Guillaume PIERRE, Examinateur, Université de Rennes 1
- Olivier BARAIS, Examinateur, Université de Rennes 1
- Benoit COMBEMALE, Directeur, Université de Rennes 1