211service.com
En bot forklædt som en menneskelig softwareudvikler retter fejl
I denne verden kan intet siges at være sikkert, undtagen død og skatter, skrev Benjamin Franklin i 1789. Havde han levet i den moderne æra, kan Franklin meget vel have tilføjet softwarefejl til sin liste.
Moderne computerprogrammer er så komplekse, at der uundgåeligt dukker fejl op under udviklingsprocessen. Det er derfor, at finde dem og skrive patches for at rette dem er en almindelig del af enhver softwareudviklingsplan. Faktisk er der virksomheder som Travis, der tilbyder denne service til udviklere.
Men at finde og reparere patches er en tidskrævende forretning, der bruger betydelige ressourcer. Forskellige forskere har udviklet bots, der automatiserer denne proces, men de er tilbøjelige til at være langsomme eller til at producere dårligt skrevet kode, der ikke består mønstret. Så udviklere ville elske at være i stand til at stole på en hurtig, højkvalitets bot, der gennemsøger kode for fejl og derefter skriver patches for at rette dem.
I dag går deres drømme i opfyldelse takket være arbejdet fra Martin Monperrus og venner på KTH Royal Institute of Technology i Stockholm, Sverige. Disse fyre har endelig bygget en bot, der kan konkurrere med menneskelige udviklere i at finde fejl og skrive patches af høj kvalitet.
Disse fyre kalder deres bot Repairnator og har med succes testet den ved at lade den konkurrere mod menneskelige udviklere for at finde rettelser. Dette er en milepæl for menneskelig konkurrenceevne i softwareingeniørforskning om automatisk programreparation, siger de.
Dataloger har længe vidst, at det er muligt at automatisere processen med at skrive patches. Men det er ikke klart, om bots kan udføre dette arbejde lige så hurtigt som mennesker og i samme kvalitet.
Så Monperrus og co testede dette ved at skjule Repairnator som en menneskelig udvikler og lade den konkurrere med mennesker om at udvikle patches på GitHub, et versionskontrolwebsted for softwareudviklere. Nøgleideen med Repairnator er automatisk at generere patches, der reparerer byggefejl, for derefter at vise dem til menneskelige udviklere, for endelig at se, om disse menneskelige udviklere ville acceptere dem som gyldige bidrag til kodebasen, siger Monperrus og co.
Holdet oprettede en GitHub-bruger ved navn Luc Esape, som så ud til at være softwareingeniør i deres forskningslaboratorium. Luc har et profilbillede og ligner en juniorudvikler, ivrig efter at lave open source-bidrag på GitHub, siger de.
Men Luc er faktisk Repairnator i forklædning. Dette bedrag var nødvendigt, fordi menneskelige moderatorer har en tendens til at vurdere bots og menneskers arbejde forskelligt. Denne camouflage er påkrævet for at teste vores videnskabelige hypotese om menneskelig konkurrenceevne, siger Monperrus og co, som nu har informeret de involverede mennesker om listen.
Holdet udførte to kørsler for at teste Repairnator. Den første løb fra februar til december 2017, hvor teamet kørte Repairnator på en fast liste over 14.188 GitHub-projekter, der ledte efter fejl. Vi fandt ud af, at vores prototype er i stand til at udføre cirka 30 reparationsforsøg om dagen, siger de.
I løbet af denne tid analyserede Repairnator over 11.500 builds med fejl. Af disse var det i stand til at genskabe fejlen i over 3.000 tilfælde. Det fortsatte derefter med at udvikle et plaster i 15 tilfælde.
Ingen af disse patches blev dog accepteret i bygningen, fordi Repairnator tog for lang tid at udvikle dem eller skrev lavkvalitets-patches, som ikke kunne accepteres.
Den anden forsøgskørsel var mere vellykket. Denne gang satte holdet Luc til at arbejde på Travis kontinuerlig integrationstjeneste fra januar til juni 2018. Selvom holdet ikke specificerede, hvilke forbedringer de lavede til Repairnator, skrev det den 12. januar en patch, som en menneskelig moderator accepterede i en build. Med andre ord, Repairnator var menneskelig konkurrencedygtig for første gang, siger de.
I løbet af de næste seks måneder fortsatte Repairnator med at producere fem patches, som menneskelige moderatorer accepterede.
Det er imponerende arbejde, der sætter scenen for en ny generation af softwareudvikling. Det rejser også nogle interessante spørgsmål. Monperrus og co peger på en patch Repairnator udviklet til et GitHub-projekt kaldet eclipse/ditto den 12. maj.
Holdet modtog derefter følgende besked fra en af udviklerne: Vi kan kun acceptere pull-anmodninger, som kommer fra brugere, der har underskrevet Eclipse Foundation Contributor License Agreement.
Det rejser et vanskeligt problem, da en bot ikke fysisk kan underskrive en licensaftale. Hvem ejer den intellektuelle ejendom og ansvaret for et botbidrag: robotoperatøren, botimplementatoren eller reparationsalgoritmedesigneren? spørg Monperrus og co.
Denne form for problemer skal løses, før mennesker og bots kan samarbejde mere detaljeret. Men Monperrus og co er optimistiske. Vi mener, at Repairnator forudsætter en bestemt fremtid for softwareudvikling, hvor bots og mennesker gnidningsløst vil samarbejde og endda samarbejde om softwareartefakter, siger de.
Franklin, en berømt kreativ opfinder selv, ville helt sikkert have været imponeret.
Ref: arxiv.org/abs/1810.05806 : Menneske-konkurrencedygtige patches i automatisk programreparation med Repairnator