Le logiciel GumTree s'enracine

Résultats scientifiques Informatique

Maître de conférences à Bordeaux INP et membre du Laboratoire bordelais de recherche en informatique (LaBRI - CNRS/Bordeaux INP/Université de Bordeaux), Jean-Rémy Falleri explore depuis plusieurs années le champ de l'évolution logicielle. Ses travaux dans ce domaine ont notamment abouti au développement de GumTree. Reposant sur l'identification rapide des bouts de codes susceptibles d'être supprimés, ajoutés, renommés ou déplacés à chaque nouvelle évolution d'un logiciel, cet outil d'analyse vise à faciliter le travail de compréhension des changements des développeurs. Avec la sortie de sa troisième version, prévue d'ici la fin de l'année, GumTree s'affirme un peu plus comme un outil phare d’aide à l’évolution logicielle.

Face à l'évolution permanente des logiciels, les développeurs doivent redoubler d'effort pour s'assurer de l'absence d'erreurs à la suite de la modification de leur code source. Depuis les années 1970, la commande « Diff », est privilégiée par nombre d'entre eux pour effectuer cette indispensable opération de vérification. « Cette commande est très efficace pour détecter les modifications dans le code source d'un logiciel et offre l'avantage d'être compatible avec tous les langages informatiques actuels. Elle présente malgré tout certains inconvénients comme le fait de ne pas tenir compte des règles de syntaxe ou de ne pas détecter les déplacements ou renommages de code qui sont des opérations fréquentes », rappelle Jean-Rémy Falleri.

Le logiciel GumTree imaginé par le chercheur au LaBRI s'affranchit de ces inconvénients en raisonnant non pas sur les lignes de code proprement dites - ce que les mots sont à un texte -  mais en termes d'éléments syntaxiques - la structure globale du texte. Les outils d'analyse destinés à induire des actions d’édition sur le code source, tel que le permet GumTree, se doivent d'effectuer des choix selon le modèle de code (séquence, arbre, ...), les actions d’édition possibles (ajout, suppression, déplacement, ...) et le problème à résoudre. « Dans la plupart des cas, cela revient à calculer la plus courte séquence d’actions permettant de transformer le modèle source d'une application ou d'un programme en modèle cible », résume Jean-Rémy Falleri.

GumTree s'appuie sur des algorithmes permettant de trouver rapidement une solution pertinente tout en conservant un temps de calcul acceptable

Tenter d'obtenir la séquence d’actions la plus courte possible sur une combinaison donnée d’un modèle de code aboutit très souvent à un problème NP-dur qui ne peut être résolu en un temps raisonnable. « C'est dans le but de lever ce verrou scientifique que j'ai développé des heuristiques, à savoir des algorithmes permettant de trouver rapidement une solution pertinente tout en conservant un temps de calcul acceptable, explique l'informaticien. Implémentées dans GumTree, ces heuristiques permettent de trouver une séquence d'actions qui représente correctement l’intention du développeur, le tout avec un coût en temps et en mémoire raisonnable. » Conçu pour prendre en charge les langages de programmation les plus fréquemment utilisés par les développeurs, comme Java ou Python, l'outil imaginé par Jean-Rémy Falleri permet finalement d'obtenir un « Diff » beaucoup plus facile à interpréter.

Développée avec le concours de scientifiques et d'ingénieurs de l'École royale polytechnique de Stockholm (KTH) et de l'Université Polytechnique Hauts-de-France (UPHF), la troisième version de GumTree devrait être pleinement opérationnelle d'ici fin 2021. Cette nouvelle version qui accepte un plus large spectre de langages informatiques propose une installation simplifiée. Elle intègre également de nouvelles heuristiques et offre une visualisation plus aisée du « Diff », la rendant ainsi bien plus agréable à utiliser.
À plus long terme, Jean-Rémy Falleri entend étudier la possibilité de proposer un « Diff » comportemental, qui n'est pas uniquement basé sur la description du programme (le code source) mais aussi sur son exécution. Cette approche pourrait être particulièrement pertinente dans le cas de programmes informatiques utilisant un moteur d'intelligence artificielle (IA) ou dans un environnement d’exécution complexe comme le cloud, deux technologies qu’utilisent un nombre croissant de logiciels.

Au sein même du LaBRI, Jean-Rémy Falleri collabore enfin depuis peu avec des chercheurs des équipes BKB (Bench to Knowledge and Beyond) et Progress (Programmation, réseaux et systèmes) autour de la visualisation de données et de l’intelligence artificielle. « 
Ces partenariats s'inscrivent dans une démarche scientifique destinée à étudier la possibilité de réaliser des « Diff » comportementaux, c'est-à-dire pendant que le programme s'exécute, ce qui n'est pas sans poser de nouvelles difficultés comme un volume de données à analyser bien plus conséquent », souligne Jean-Rémy Falleri. Pour relever ce défi, le chercheur s'attèle à construire des algorithmes capables de calculer simultanément les différences entre les versions d'un même logiciel alors même que celles-ci sont en train de fonctionner.

Contact

Jean-Rémy Falleri
Professeur à Bordeaux INP, enseignant à l’Enseirb-Matmeca, membre du LaBRI