Version imprimable
Self-adaptable operational semantics
(Sémantique opérationnelle auto-adaptable)

Jouneaux, Gwendal - (2024-09-09) / Université de Rennes
Self-adaptable operational semantics

Langue : Anglais
Directeur de thèse:  Combemale, Benoît; Barais, Olivier; Mussbacher, Gunter
Laboratoire :  IRISA
Ecole Doctorale : MATISSE

Thématique : Informatique
Accès à la ressource : https://ged.univ-rennes1.fr/nuxeo/site/esupversion...

Mots-clés : Génie logiciel, Ingénierie dirigée par les modèles, Langages dédiés (informatique), Systèmes adaptatifs, Sémantique opérationnelle, Génie logiciel, Ingénierie dirigée par les modèles, Langages dédiés (informatique), Sémantique opérationnelle, Systèmes adaptatifs

Résumé : De nos jours, les logiciels sont omniprésents, qu'il s'agisse d'ordinateurs ou d'appareils ménagers intelligents. L'aspect comportemental de ces systèmes est réalisé par des logiciels complexes. Cette complexité logicielle peut être classée en deux catégories : Essentielle et Accidentelle. L'Ingénierie Dirigée par les Modèles (IDM) est une discipline utilisant des modèles pour gérer la complexité essentielle et réduire la complexité accidentelle. Une partie de l'IDM consiste à développer des langages dédiés pour définir ces modèles avec un niveau d'abstraction approprié au domaine. L'ingénierie des langages est un domaine du génie logiciel qui émerge des préoccupations liées aux langages dédiés. Conformément à l'affirmation selon laquelle "Les langages logiciels sont aussi des logiciels", cette communauté se concentre à fournir des outils et méthodes pour faciliter le développement du type de logiciel que sont les langages dédiés. Le contexte de cette thèse se situe à la croisée de ces domaines. Les systèmes logiciels évoluent désormais dans des environnements complexe et changeant, nécessitant une auto-adaptation dynamique pour fournir au mieux les services. La communauté des systèmes auto-adaptatifs a fourni au fil du temps de nombreux cadriciels et modèles architecturaux pour répondre à cette préoccupation. Toutefois, lorsque l'auto-adaptation est une préoccupation secondaire et ne relève donc pas du domaine d'expertise des spécialistes, les modèles architecturaux ne fournissent généralement pas de soutien et les cadriciels sont limités aux langages pour lesquels ils ont été conçus. Dans le contexte des langages dédiés, la réimplémentation de ces cadriciels serait d'une complexité prohibitive. De cette observation découle la question de recherche suivante : "Comment abstraire le problème de l'auto-adaptation pour les utilisateurs de langages dédiés lorsqu'il s'agit d'une préoccupation secondaire, mais importante?" Pour répondre à ce problème, nous proposons le concept de langages auto-adaptables. Les langages auto-adaptables abstraient l'auto-adaptation dans des constructions de langage de haut niveau. Dans cette thèse, nous nous concentrons sur la sémantique opérationnelle auto-adaptable. Dans ce contexte, deux défis sont à surmonter : (1) "Comment spécifier et dériver une implémentation d'une sémantique opérationnelle auto-adaptable pour permettre le raisonnement et de vérifier des propriétés, sans impact sur les performances?" et (2) "Quelles sont les constructions pertinentes pour implémenter une sémantique opérationnelle auto-adaptable?". Nous relevons le premier défi grâce à notre première contribution : Adaptive Structural Operational Semantics (ASOS). ASOS est un métalangage conçu pour spécifier et raisonner sur des sémantiques opérationnelles auto-adaptables. Basé sur ce métalangage, nous fournissons à la fois une sémantique formelle pour le raisonnement et une sémantique translationnelle générant une implémentation de la sémantique spécifiée. Le deuxième défi est relevé par le cadriciel SElf-Adaptable LanguageS (SEALS), notre deuxième contribution. SEALS est un cadriciel qui fournit des abstractions aidant la création du langage (syntaxe abstraite et sémantique) et à concevoir la boucle de rétroaction et les adaptations. Nous évaluons, entre autres, l'applicabilité de l'approche et les performances de l'implémentation sur trois langages : RobLANG, HTML et MiniJava. Pour les deux contributions, nous démontrons la capacité d'effectuer des adaptations pertinentes au niveau du langage sans écueils de performance.

Résumé (anglais) : Nowadays, software is everywhere, from computers to smart home appliance. The behavioral aspect of those systems is realized through complex pieces of software. This software complexity can be classified in two types: Essential where the complexity is inherent to the problem and Accidental where it results from the use of inappropriate tools. Model-Driven Engineering (MDE) is a field of software engineering tackling software complexity using models to manage essential complexity and reduce accidental complexity. One part of MDE consist in developing software languages to define those models with an appropriate level of abstraction for the domain. These languages are known as Domain-Specific Languages (DSLs). Software Language Engineering (SLE) is a field of software engineering emerging from the concerns related to DSLs development. Following the claim that "Software languages are software too", the SLE community focuses on providing tools and methods to facilitate the development of the type of software that are DSLs. The context of this thesis is at the crossroad of these two fields. Software systems are now evolving in complex and changing environments, requiring dynamic self-adaptation to best deliver the services. The self-adaptive systems community provided through time multiple architectural patterns and frameworks to tackle this concern. However, when self-adaptation is a secondary concern, and therefore not in the area of expertise of domain experts, architectural patterns generally do not provide support and frameworks are restricted to languages for which they were designed. In the context of DSLs, the re-implementation of these frameworks would be prohibitively complex. From this observation we derive the following research question "How to abstract the self-adaptation concern for DSL users when it is a secondary but important concern?" To address this problem, we propose the concept of Self-Adaptable Languages (SALs). SALs abstract self-adaptation into high-level language constructs similarly to memory management in Java. In this thesis we focus on the Self-Adaptable Operational Semantics. Based on our research question, we draw two challenges for Self-Adaptable Operational Semantics: (1) "How to specify and derive implementation of self-adaptable operational semantics to enable reasoning and check properties, without impactful performances overhead of the language runtime?" and (2) "What are the relevant abstractions to implement self-adaptable operational semantics?" We address the first challenge through our first contribution: Adaptive Structural Operational Semantics (ASOS). ASOS is a metalanguage designed to specify and reason about self-adaptable operational semantics. On top of this metalanguage we provide both a formal semantics for reasoning and a translational semantics generating an implementation of the specified semantics. The second challenge is addressed by the SElf-Adaptable LanguageS (SEALS) framework, our second contribution. SEALS is a Java framework providing abstraction to both support the language engineer in the development of the language abstract syntax and operational semantics and the design of the feedback loop and adaptations. We evaluate, among other, the applicability of the approach and the performance of the resulting implementation on three languages: RobLANG, HTML, and MiniJava. For both contributions, we demonstrate the ability to perform relevant adaptations for the domain at the language level without performance pitfalls.

Identifiant : rennes1-ori-wf-1-19709
Exporter au format XML