Un bot déguisé en développeur de logiciel humain corrige des bogues

Dans ce monde, rien ne peut être dit comme certain, sauf la mort et les impôts, écrivait Benjamin Franklin en 1789. S'il avait vécu à l'ère moderne, Franklin aurait bien pu ajouter des bogues logiciels à sa liste.





Les programmes informatiques modernes sont si complexes que des bogues surgissent inévitablement au cours du processus de développement. C'est pourquoi les trouver et écrire des correctifs pour les corriger font partie intégrante de tout calendrier de développement de logiciels. En effet, il existe des sociétés comme Travis qui proposent ce service aux développeurs.

Mais trouver et corriger des correctifs est une activité qui prend du temps et utilise des ressources importantes. Divers chercheurs ont développé des bots qui automatisent ce processus, mais ils ont tendance à être lents ou à produire du code mal écrit qui ne passe pas le cap. Les développeurs aimeraient donc beaucoup pouvoir compter sur un bot rapide et de haute qualité qui parcourt le code à la recherche d'erreurs, puis écrit des correctifs pour les corriger.

Aujourd'hui, leurs rêves deviennent réalité grâce au travail de Martin Monperrus et de ses amis du KTH Royal Institute of Technology à Stockholm, en Suède. Ces gars-là ont finalement construit un bot qui peut rivaliser avec les développeurs humains pour trouver des bogues et écrire des correctifs de haute qualité.



Ces gars-là appellent leur bot Repairnator et l'ont testé avec succès en lui permettant de rivaliser avec des développeurs humains pour trouver des correctifs. Il s'agit d'une étape importante pour la compétitivité humaine dans la recherche en génie logiciel sur la réparation automatique des programmes, disent-ils.

Les informaticiens savent depuis longtemps qu'il est possible d'automatiser le processus d'écriture des correctifs. Mais il n'est pas clair si les bots peuvent faire ce travail aussi rapidement que les humains et avec la même qualité.

Monperrus et co ont donc testé cela en déguisant Repairnator en développeur humain et en lui permettant de rivaliser avec les humains pour développer des correctifs sur GitHub, un site Web de contrôle de version pour les développeurs de logiciels. L'idée clé de Repairnator est de générer automatiquement des correctifs qui réparent les échecs de construction, puis de les montrer aux développeurs humains, pour enfin voir si ces développeurs humains les accepteraient comme des contributions valides à la base de code, disent Monperrus et co.



L'équipe a créé un utilisateur GitHub appelé Luc Esape, qui semblait être un ingénieur logiciel dans leur laboratoire de recherche. Luc a une photo de profil et ressemble à un développeur junior, désireux de faire des contributions open source sur GitHub, disent-ils.

Mais Luc est en fait un Réparateur déguisé. Cette tromperie était nécessaire car les modérateurs humains ont tendance à évaluer différemment le travail des bots et des humains. Ce camouflage est nécessaire pour tester notre hypothèse scientifique de compétitivité humaine, disent Monperrus et co, qui ont maintenant informé les humains impliqués de la ruse.

L'équipe a effectué deux runs pour tester Repairnator. Le premier s'est déroulé de février à décembre 2017, lorsque l'équipe a exécuté Repairnator sur une liste fixe de 14 188 projets GitHub à la recherche d'erreurs. Nous avons constaté que notre prototype est capable d'effectuer environ 30 tentatives de réparation par jour, disent-ils.



Pendant ce temps, Repairnator a analysé plus de 11 500 builds avec des échecs. Parmi ceux-ci, il a pu reproduire l'échec dans plus de 3 000 cas. Il a ensuite développé un patch dans 15 cas.

Cependant, aucun de ces correctifs n'a été accepté dans la version car Repairnator a mis trop de temps à les développer ou a écrit des correctifs de mauvaise qualité qui n'ont pas pu être acceptés.

La deuxième campagne expérimentale a été plus fructueuse. Cette fois, l'équipe a demandé à Luc de travailler sur le service d'intégration continue Travis de janvier à juin 2018. Bien que l'équipe n'ait pas précisé les améliorations apportées à Repairnator, le 12 janvier, elle a écrit un correctif qu'un modérateur humain a accepté dans une version. En d'autres termes, Repairnator était compétitif pour les humains pour la première fois, disent-ils.



Au cours des six mois suivants, Repairnator a continué à produire cinq correctifs que les modérateurs humains ont acceptés.

C'est un travail impressionnant qui ouvre la voie à une nouvelle génération de développement de logiciels. Cela soulève également des questions intéressantes. Monperrus et co pointent vers un patch Repairnator développé pour un projet GitHub appelé eclipse/ditto le 12 mai.

L'équipe a ensuite reçu le message suivant de l'un des développeurs : Nous ne pouvons accepter que les pull-requests provenant d'utilisateurs qui ont signé le contrat de licence Eclipse Foundation Contributor.

Cela pose un problème épineux, car un bot ne peut physiquement signer un contrat de licence. Qui détient la propriété intellectuelle et la responsabilité d'une contribution de bot : l'opérateur du robot, l'implémenteur du bot ou le concepteur de l'algorithme de réparation ? demandez à Monperrus et co.

Ce type de problème devra être résolu avant que les humains et les robots puissent collaborer plus en détail. Mais Monperrus et co sont optimistes. Nous pensons que Repairnator préfigure un certain avenir du développement logiciel, où les bots et les humains collaboreront en douceur et même coopéreront sur des artefacts logiciels, disent-ils.

Franklin, un célèbre inventeur créatif lui-même, aurait sûrement été impressionné.

Réf : arxiv.org/abs/1810.05806 : Correctifs humains compétitifs dans la réparation automatique des programmes avec Repairnator

cacher