Thèse de Edouard Guegain

Optimisation de logiciels par leur configuration

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.

Jury

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