Le domaine du génie logiciel évolue rapidement, exposant les développeurs à collection d'outils, langages, framework et paradigmes en constante croissance. De plus, chacun de ces composant peut avoir sa propre configuration interne. Ainsi, concevoir un nouveau logiciel consiste à sélectionner des composants de cette collection, un processus similaire à la création d'une configuration. Le critère pour configurer de tels systèmes est trop souvent la facilité de développement, ce qui cause des obésiciels sur-dimensionnés et consommateur en énergie. Ce paradigme n'est pas aligné avec les considérations frugales et environnementales. Cette dissertation s'intéresse donc à la possibilité d'utiliser la configuration des logiciels pour optimiser leur performance. Une attention spécifique est portée à la consommation énergétique et la taille de ces logiciels. Un prérequis pour optimiser un système est de comprendre sa performance actuelle. Pour mieux comprendre ce sujet, le logiciel configurable JHipster a été analysé de façon empirique. L'analyse exhaustive de la performance de ses configuration, au travers de différents indicateurs, a montré à quel point la configuration impactent ses performances. Cette compréhension de la performance a permit de créer de configuration de JHipster à haute performance. Ces configuration à haute performance a été créees manuellement, ce qui n'est possible qu'avec un petit espace des configurations. Un algorithme a donc été créé pour automatiser ce processus, et ainsi l'adapter aux plus grands espaces de configuration. Cependant, optimiser une configuration en sélectionnant des options à haute performance n'est pas suffisant, car les options interagissent entre elles: par exemple, dans certaines situation, deux options à haute performance peuvent sous-performer quand elles sont assemblées. L'algorithme d'optimisation a donc été adapté pour tirer profit de ces comportements. L'application de cet algorithme a un large ensemble de configurations a montré que la plupart d'entre elles atteignent une performance presque optimale, avec seulement un nombre limité de modification. Cependant, les contraintes de performance ne se limitent pas à un seul indicateur. La consommation énergétique d'un logiciel n'est pas toujours l'indicateur le plus impactant à optimiser. L'algorithme d'optimisation a donc dû être généralisé pour supporter l'optimisation de plusieurs indicateurs simultanément. Cet algorithme généralisé a été validé sur un couple d'indicateurs de performance: le temps d’exécution et la taille d'un logiciel. Cette validation a montré que la moitié des configurations peut atteindre leur optimum local respectif en modifiant une seule option. De plus, en appliquant cet algorithme à l'exhaustivité d'un espace de configuration, il a été possible de suivre comment il navigue l'espace de configuration à la recherche de configurations optimales, ce qui a mit en lumière certaines limites de l'algorithme, qui peut donc être encore amélioré dans de futures travaux. Dans son état actuel, l'algorithme a été publié sous la forme d'un outil open-source sous le nom d'ICO.
M. Clément QUINTON Université de Lille Directeur de thèse. Mme Hélène COULLON IMT Atlantique Examinatrice. M. Anthony CLEVE Université de Namur Examinateur. Mme Mireille BLAY-FORNARINO Université de Nice Rapporteure. Mme Anne-Cécile ORGERIE CNRS Rapporteure.
Thèse de l'équipe Spirals soutenue le 29/09/2023