211service.com
En bot förklädd till en mänsklig mjukvaruutvecklare fixar buggar
I den här världen kan ingenting sägas vara säkert, förutom döden och skatter, skrev Benjamin Franklin 1789. Hade han levt i den moderna eran kan Franklin mycket väl ha lagt till programvarubuggar till sin lista.
Moderna datorprogram är så komplexa att buggar oundvikligen dyker upp under utvecklingsprocessen. Det är därför att hitta dem och skriva patchar för att fixa dem är en vanlig del av alla programvaruutvecklingsscheman. Det finns faktiskt företag som Travis som erbjuder denna tjänst till utvecklare.
Men att hitta och fixa patchar är en tidskrävande verksamhet som använder betydande resurser. Olika forskare har utvecklat bots som automatiserar denna process, men de tenderar att vara långsamma eller att producera dåligt skriven kod som inte klarar samlingen. Så utvecklare skulle verkligen älska att kunna lita på en snabb, högkvalitativ bot som letar igenom kod efter fel och sedan skriver patchar för att fixa dem.
Idag går deras drömmar i uppfyllelse tack vare Martin Monperrus och kompisars arbete vid Kungliga Tekniska Högskolan i Stockholm. Dessa killar har äntligen byggt en bot som kan konkurrera med mänskliga utvecklare när det gäller att hitta buggar och skriva högkvalitativa patchar.
Dessa killar kallar sin bot Repairnator och har framgångsrikt testat den genom att tillåta den att tävla mot mänskliga utvecklare för att hitta korrigeringar. Detta är en milstolpe för mänsklig konkurrenskraft inom mjukvaruteknisk forskning om automatisk programreparation, säger de.
Datavetare har länge vetat att det är möjligt att automatisera processen att skriva patchar. Men det är inte klart om bots kan göra detta arbete lika snabbt som människor och med samma kvalitet.
Så Monperrus och co testade detta genom att maskera Repairnator som en mänsklig utvecklare och låta den konkurrera med människor om att utveckla patchar på GitHub, en versionskontrollwebbplats för mjukvaruutvecklare. Nyckelidén med Repairnator är att automatiskt generera patchar som reparerar byggfel och sedan visa dem för mänskliga utvecklare, för att slutligen se om dessa mänskliga utvecklare skulle acceptera dem som giltiga bidrag till kodbasen, säger Monperrus och co.
Teamet skapade en GitHub-användare som heter Luc Esape, som verkade vara en mjukvaruingenjör vid deras forskningslabb. Luc har en profilbild och ser ut som en juniorutvecklare, ivrig att göra bidrag med öppen källkod på GitHub, säger de.
Men Luc är faktiskt Repairnator i förklädnad. Detta bedrägeri var nödvändigt eftersom mänskliga moderatorer tenderar att bedöma bots och människors arbete på olika sätt. Detta kamouflage krävs för att testa vår vetenskapliga hypotes om mänsklig konkurrenskraft, säger Monperrus och co, som nu har informerat de inblandade människorna om listen.
Teamet genomförde två körningar för att testa Repairnator. Det första pågick från februari till december 2017, när teamet körde Repairnator på en fast lista med 14 188 GitHub-projekt som letade efter fel. Vi fann att vår prototyp är kapabel att utföra cirka 30 reparationsförsök per dag, säger de.
Under denna tid analyserade Repairnator över 11 500 byggen med fel. Av dessa kunde den återskapa felet i över 3 000 fall. Det fortsatte sedan med att utveckla ett plåster i 15 fall.
Ingen av dessa patchar accepterades dock i bygget eftersom Repairnator tog för lång tid att utveckla dem eller skrev lågkvalitativa patchar som inte kunde accepteras.
Den andra experimentkörningen var mer framgångsrik. Den här gången satte teamet Luc att arbeta på Travis kontinuerliga integrationstjänst från januari till juni 2018. Även om teamet inte specificerade vilka förbättringar de gjorde i Repairnator, skrev de den 12 januari en patch som en mänsklig moderator accepterade i en build. Repairnator var med andra ord människokonkurrens för första gången, säger de.
Under de kommande sex månaderna fortsatte Repairnator med att producera fem patchar som mänskliga moderatorer accepterade.
Det är ett imponerande arbete som sätter scenen för en ny generation av mjukvaruutveckling. Det väcker också några intressanta frågor. Monperrus och co pekar på en patch Repairnator utvecklad för ett GitHub-projekt som heter eclipse/ditto den 12 maj.
Teamet fick sedan följande meddelande från en av utvecklarna: Vi kan bara acceptera pull-requests som kommer från användare som undertecknat Eclipse Foundation Contributor License Agreement.
Det väcker en svår fråga, eftersom en bot inte fysiskt kan underteckna ett licensavtal. Vem äger den immateriella egendomen och ansvaret för ett botbidrag: robotoperatören, botimplementatorn eller reparationsalgoritmdesignern? fråga Monperrus och co.
Den här typen av problem måste lösas innan människor och bots kan samarbeta mer i detalj. Men Monperrus och co är optimistiska. Vi tror att Repairnator föregår en viss framtid för mjukvaruutveckling, där bots och människor smidigt kommer att samarbeta och till och med samarbeta kring mjukvaruartefakter, säger de.
Franklin, en berömd kreativ uppfinnare själv, skulle säkert ha blivit imponerad.
Ref: arxiv.org/abs/1810.05806 : Människokonkurrenskraftiga patchar i automatisk programreparation med Repairnator