Les chercheurs accélèrent la localisation des pannes lors du développement de logiciels
Les applications logicielles modernes se composent généralement de nombreux fichiers et de plusieurs millions de lignes de code. En raison de cette quantité considérable, la recherche et la correction des erreurs, appelées débogage, sont difficiles.
Dans de nombreuses entreprises de logiciels, les développeurs recherchent encore manuellement les erreurs, ce qui représente une grande partie de leur temps de travail. Des études montrent que cette tâche représente entre 30 et 90 % du temps total de développement.
Birgit Hofer et Thomas Hirsch de l'Institut de technologie logicielle de l'Université technique de Graz (TU Graz) ont développé une solution basée sur des méthodes et des métriques de traitement du langage naturel existantes qui peuvent considérablement accélérer le processus de recherche de code défectueux et donc de débogage.
La localisation des défauts prend le plus de temps
« Dans un premier temps, nous avons mené des enquêtes auprès des développeurs pour savoir quelles étaient les plus grandes pertes de temps lors du débogage. Il s'est avéré que la correction des bugs proprement dite n'est pas du tout le gros problème, mais que les programmeurs se retrouvent principalement embourbés dans la localisation des erreurs, c'est-à-dire dans la recherche de la bonne zone dans le code du programme », explique Birgit Hofer.
Partant de ce constat, les chercheurs se sont attachés à trouver une solution à ce problème qui soit également évolutive pour les applications comportant beaucoup de code.
Bien qu'il existe des approches efficaces basées sur des modèles dans lesquelles un programme est converti en une représentation logique (appelée modèle), cela ne fonctionne que pour les petits programmes. En effet, l'effort de calcul augmente de manière exponentielle avec la taille du code.
L’approche adoptée par Birgit Hofer et Thomas Hirsch représente certaines propriétés du logiciel en chiffres (par exemple, la lisibilité ou la complexité du code) et peut également être utilisée pour de grandes quantités de code, car l’effort de calcul n’augmente que de manière linéaire.
Comparaison de la description du bug et du code
Le point de départ de la localisation des pannes est le rapport de bogue, pour lequel les testeurs ou les utilisateurs remplissent un formulaire dans lequel ils décrivent la panne observée et saisissent des informations sur la version du logiciel, leur système d'exploitation, les étapes qu'ils ont suivies avant que la panne ne se produise et d'autres informations pertinentes.
Sur la base de ce rapport de bogue, la combinaison du traitement du langage naturel et des métriques analyse l'ensemble du code en ce qui concerne les classes et les noms de variables, de fichiers, de méthodes ou de fonctions et les appels aux méthodes et fonctions.
L'application identifie les sections de code qui correspondent le mieux au rapport de bogue. Les développeurs reçoivent alors une liste de cinq à dix fichiers classés selon la probabilité qu'ils soient responsables de l'erreur observée.
Les développeurs reçoivent également des informations sur le type de défaut le plus susceptible d'être en cause. Ces données peuvent être utilisées pour localiser et corriger le bug plus rapidement.
« Le temps de travail des développeurs de logiciels est coûteux, mais ils passent souvent plus de temps à localiser et à corriger des bugs qu'à développer de nouvelles fonctionnalités », explique Birgit Hofer.
« Comme il existe déjà un certain nombre d’approches pour éradiquer ce problème, nous avons étudié comment les combiner et les améliorer afin de créer une base pour une application commerciale. Nous avons maintenant posé les bases et le système fonctionne. Cependant, pour pouvoir l’intégrer dans une entreprise, il faudrait encore l’adapter aux besoins respectifs de l’entreprise. »
Le système de débogage est disponible via la plateforme « GitHub ». Sur le site Web du projet, les articles et les dépôts associés à cette recherche peuvent être consultés.