Le Machine Learning au service de la correction de défauts logiciels grâce au MIT
Des chercheurs du MIT ont mis au point un système de génération automatique de correctifs logiciels basé sur le Machine Learning. De premiers essais montrent une efficacité supérieure aux systèmes existants.
Pouvaient lui trouver un meilleur nom ? Prophet, c’est le système de génération automatique de correctifs logiciels mis au point, à titre expérimental, par deux chercheurs du célèbre MIT. Basé sur l’apprentissage machine, le fameux Machine Learning, ce système construit de manière autonome un module probabiliste de correction du code logiciel, indépendant des applications. Dans leur rapport, Fan Long et Martin Rinard expliquent que Prophet « génère un espace de candidats correctifs, utilise le modèle pour les classer par ordre de probable validité, avant de les confronter à une série de cas de test pour trouver les bons correctifs ».
La phase d’apprentissage se nourrit de correctifs existants, disponibles sur des dépôts de code open source pour « apprendre un modèle probabiliste de code correct ». La validité des correctifs étudiés dépend de leur code mais également de la manière dont il se comporte avec le code environnant existant.
La recherche de défauts logiciels s’appuie sur l’analyse des traces d’exécution dans le cadre d’une suite de tests. L’algorithme utilisé là est le fruit de précédents travaux de Fan Long et Martin Rinard, présentés il y a un peu plus d’un an avec SPR, un système de réparation de programmes par étapes.
Prophet se charge ensuite de générer un ensemble de candidats correctifs, dont chacun modifie l’une des instructions identifiées par l’algorithme de détection de défauts.
Les deux chercheurs revendiquent là deux originalités. La première consiste à partir de l’hypothèse selon laquelle tous les éléments de code corrects partagent, quelle que soit l’application, les mêmes propriétés caractéristiques de leur validité. Prophet cherche donc à mettre en évidence ces propriétés au niveau sémantique. De quoi, selon Fan Long et Martin Rinard, assurer que Prophet puisse « apprendre un modèle d’exactitude à partir de correctifs d’un ensemble d’applications pour ensuite appliquer avec succès ce modèle à de nouvelles applications » qu’il n’a pas encore eu l’occasion d’étudier.
Surtout, selon les chercheurs, Prophet peut générer des correctifs exacts « pour de grandes applications réelle avec des dizaines de milliers de lignes de code, voire un million ou plus ». Et d’expliquer que, jusqu’ici, les systèmes de génération de correctifs se limitaient aux petites applications comptant quelques centaines de lignes de code.
Pour valider leurs travaux, les deux chercheurs ont confronté Prophet à 69 défauts logiciels identifiés dans 8 projets open source. Pour cela, ils lui ont fait étudier un ensemble de candidats correctifs pour 19 de ces défauts. Prophet s’est avéré capable de faire remonter entre première place des candidats à valider 15 correctifs exacts, contre 11 pour « le précédent système à l’état de l’art », leur système SPR.