Modularité et performances des langages dédiés externes
Auteur / Autrice : | Manuel Leduc |
Direction : | Benoît Combemale, Olivier Barais |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 18/12/2019 |
Etablissement(s) : | Rennes 1 |
Ecole(s) doctorale(s) : | École doctorale Mathématiques et sciences et technologies de l'information et de la communication (Rennes) |
Partenaire(s) de recherche : | ComuE : Université Bretagne Loire (2016-2019) |
Laboratoire : Institut de recherche en informatique et systèmes aléatoires (Rennes) - DiverSe |
Mots clés
Mots clés contrôlés
Mots clés libres
Résumé
L’Ingénierie Dirigée par les Modèles (IDM) a pour but d’assister les experts métiers dans le développement de systèmes complexes, en séparant les préoccupations par l’utilisation de modèles. Les modèles sont des représentations d’aspects spécifiques des systèmes et sont définis à l’aide d’abstractions dédiées. Ces abstractions sont définies avec des langages dédiés. Ces langages dédiés sont créés à l’aide d’Environnements de Développement Intégré (EDI) spécialisés, appelés language workbenches. Les language workbenches aident à l’ingénierie de langages dédiés en proposant des abstractions utiles. Premièrement, ces abstractions sont dédiées à la définition des différents aspects des langages. Ensuite, elles répondent aux préoccupations inhérentes au développement de logiciels tels que la modularité ou la testabilité. Cependant, les bénéfices de telles abstractions peuvent être perdues quand traduites vers des implémentations de services de langages (p. ex. éditeurs, interpréteurs, débogueurs...). Cela entraîne de nombreux inconvénients, en particulier concernant la réutilisabilité et les performances. Les experts métiers sont confrontés à ces limitations et sont forcés de raisonner à travers les détails d’implémentations complexes des implémentations des services de langages. Ces problèmes peuvent être atténués en exploitant les informations fournies par les abstractions de langages dédiés. Pour ce faire, nous proposons deux patrons d’implémentation qui supportent la réutilisation et les performances. Ainsi qu’une traduction systématique depuis les spécifications de langages vers ces patrons. Le premier patron d’implémentation s’attaque à la réutilisation de langages et s’appelle REVISITOR. Le REVISITOR permet la réutilisation sûre et modulaire de langages, à la fois syntaxiquement et sémantiquement, tout en s’appuyant uniquement sur des concepts courants de programmation orientée objet. Le second patron d’implémentation adresse la performance des langages. Celles-ci sont améliorées par l’introduction d’optimisations spécifiques au langage. Ces optimisations sont introduites automatiquement, sans être intrusif de la manière usuelle de définir les langages. Nous intégrons de manière transparent notre approche dans l’écosystème de l’EDI Eclipse. Pour ce faire, nous utilisons deux métalangages : Ecore et ALE. Ecore supporte la spécification de syntaxes abstraites sous la forme de méta-modèles. Ecore est fourni dans le cadriciel EMF, standard du monde industriel. ALE supporte la spécification modulaire de sémantiques de langages par-dessus les méta-modèles Ecore. Nous fournissons deux compilateurs pour ces langages. Ils autorisent respectivement la compilation des spécifications de langages vers le patron REVISITOR ou l’introduction automatique d’optimisation de performance dans les implémentations des interpréteurs. Nous évaluons les bénéfices de ces approches par l’implémentation d’une sélection variée et hétérogène de langages dédiés.Nos contributions rendent possible l’implémentation de langages dédiés réutilisable et efficaces (bien qu’actuellement séparées, nous travaillons à leur intégration) pour les experts métiers. En pratique, notre approche est à la fois non-intrusive de l’ingénierie des langages et basée sur une génération systématique des implémentations. Par conséquent, notre approche est directement applicable dans un contexte industriel et peut être intégrée avec des artefacts de langages dédiés existants.