Des bugs coûteux
Sources d'erreurs, voire de pannes, les bugs - autrement dit les défauts de développement d'un programme - sont une plaie pour toutes les personnes qui conçoivent des programmes. « Ils représentent aussi une horreur pour l'industrie du logiciel », indique Steven Costiou, chercheur de l'équipe-projet RMoD, commune au Centre Inria de l'Université de Lille et à l'Université de Lille.
Ce chercheur de 36 ans, qui a rejoint Inria en 2019, a vécu ces difficultés de l'intérieur : avant de se lancer dans la recherche, il a œuvré durant six ans comme ingénieur logiciel pour un groupe de conseil travaillant pour Thales et un éditeur de logiciels. « Lorsqu'elles décident de se lancer dans la création d'une application, les entreprises estiment le montant à payer pour son développement, explique-t-il. Mais elles tendent trop souvent à ignorer les coûts de maintenance et du debugging (la correction des bugs) pendant la création du logiciel et après sa livraison aux clients. Des coûts dont on sait pourtant qu'ils sont loin d'être insignifiants. »
Un projet soutenu par l'ANR
Le débogage (ou debugging), c’est justement l'un des axes de recherche développés par les membres de l'équipe-projet RMoD, spécialisée dans l'analyse logicielle et la construction de langage pour l'évolution d'applications orientées objet. Il est aussi au cœur du projet Ocre ("Réduire le coût du debugging avec la première génération de debuggers orientés objet") proposé par Steven Costiou. Un projet pour lequel le chercheur vient d'obtenir une bourse ANR Jeune chercheur auprès de l'Agence nationale de la recherche (ANR).
D'un montant de 173 000 euros, ce financement a déjà permis au chercheur de s'entourer d'un doctorant, Valentin Bourcier, dont la thèse sera consacrée aux nouvelles techniques de debugging développées dans le cadre du projet Ocre. « Les recherches de Valentin pourront en partie s'appuyer sur les découvertes de Maximilian Willembrinck, l'un de mes autres doctorants, notamment pour analyser l'évolution d'un programme à différentes étapes dans le temps », précise Steven Costiou.
Centrer le debugging sur les objets
Car la correction des bugs est avant tout une affaire de compréhension des programmes. « Les debuggers classiques proposés jusqu'ici sont des logiciels génériques, qui permettent aux développeurs d'identifier un grand nombre de lignes de code posant problème, mais pas les quelques points qu'il faudrait corriger », souligne le chercheur.
« Nous nous intéressons pour notre part à une technique plus récente, appelée "object-centric debugging" (debugging centré sur les objets) qui a fait son apparition en 2012, mais doit encore être développée, précise-t-il. Son intérêt : les tâches de debugging pourraient se concentrer sur les objets spécifiques que l'on trouve dans les systèmes à objets.» Et ainsi tirer parti de l'une des principales caractéristiques des langages de programmation orientés objet, tels Python, Pharo ou Java. Dans la mesure où ces langages permettent de programmer des entités (les objets), interagissant entre elles, les logiciels de debugging pourraient se concentrer sur ces abstractions et ainsi détecter et isoler plus rapidement les problèmes à corriger.
Pharo : un bac à sable pour tester les innovations
Pour avancer sur le sujet, les chercheurs du projet Ocre comptent sur leur proximité avec le langage objet dynamique Pharo, créé par Inria et utilisé par de nombreux industriels. « Pharo est un terrain de jeu idéal pour tester des debuggers, avance Steven Costiou. Nous faisons partie de l'équipe qui développe ce langage et de la communauté associée, nous avons donc l’expertise pour expérimenter les avancées possibles et les modifications du langage susceptibles de les faciliter. »
Les participants à Ocre bénéficient aussi d'un partenariat avec deux institutions académiques - l'Université de Chicoutimi (Canada) et l'Université de Zurich (Suisse) - et d'une alliance avec Thales, qui utilise Pharo pour un certain nombre de ses logiciels. Un exemple justifiant cet intérêt pour Ocre ? Thales DMS (Défense et systèmes de mission) développe avec des langages objets (notamment Pharo) des maquettes clients très complexes, pour des démonstrations s'étalant souvent sur plusieurs jours. « Lorsqu'il y a un bug, leur objectif est de trouver très rapidement l'objet en mémoire pour le corriger en cours d'exécution », relève le chercheur, dont la thèse, soutenue en 2018 à l'Université de Brest, abordait déjà cette question du déverminage de programmes en cours d'utilisation.
Analyses, tests et évaluations à grande échelle
Au total, trois étapes sont planifiées pour le projet Ocre qui s'étalera sur quatre ans. La première devrait permettre aux chercheurs de définir une méthode d'identification des objets à debugger. « Nous partons du principe que les modes d'interaction avec les objets varient selon les personnes ; tous et toutes n'ont pas les mêmes habitudes et ne souhaitent pas forcément manipuler les mêmes choses », détaille Steven Costiou.
Notre but serait d'arriver à terme à créer un cadre (framework) permettant aux utilisateurs de définir la façon dont ils souhaitent rechercher, visualiser ou manipuler les objets à débugger.
Une deuxième partie du projet sera consacrée à la définition et à l'étude d'outils de débogage. « Notre idée est de réunir un panel diversifié de développeurs et développeuses, comme on le ferait pour le test d'un médicament, pour voir s'ils programment plus vite avec ou sans nos prototypes de debuggers », poursuit le chercheur. Les données d'utilisation seront collectées de façon anonyme et remontées vers un serveur Inria afin d'être analysées.
Ce test permettra de vérifier l’intérêt de chaque dispositif et les coûts cognitifs (coûts d'apprentissage) potentiels pour les entreprises qui les adoptent. S'en suivra une grande phase d'évaluations empiriques, notamment chez Thales : « Nous testerons alors les outils sur le terrain, dans un cadre de développement industriel, et verrons s'ils sont pertinents lorsque surviennent des imprévus. »
Une mise à disposition de debuggers en open source
Par la suite, les prototypes de debuggers développés grâce à Ocre seront mis à la disposition du public, en open source. Ils pourront donc être adoptés par tous les acteurs du monde du logiciel (industriels, chercheurs, académiques…) qui utilisent des langages de programmation orientés objet.
En tant que scientifique, je trouve important que les fruits de mes recherches soient mis à la disposition du plus grand nombre souligne Steven Costiou. Le modèle de l'open source a aussi le mérite de faciliter la diffusion des prototypes auprès de diverses communautés, qui nous font des retours et nous donnent des idées ». Rien de tel pour populariser les nouvelles techniques de chasse aux bugs !
En savoir plus
- Advanced Debugging Tools, conférence en anglais de Steven Costiou (ESUG 2019, Cologne, Allemagne), 27/10/2019.
- Sindarin : A Versatile Scripting API for the Pharo Debugger, conférence en anglais de Thomas Dupriez, alors doctorant chez Inria, (SPLASH 2019, Athènes, Grèce), ACM SIGPLAN, 21/10/2019.
- Time traveling queries for faster debugging and program comprehension, présentation en anglais de Maximilian Ignacio Willembrinck Santander, doctorant au sein de l'équipe-projet RMoD du Centre Inria de l'Université de Lille.