Een bot vermomd als een menselijke softwareontwikkelaar repareert bugs

In deze wereld kan niets zeker worden gezegd, behalve dood en belastingen, schreef Benjamin Franklin in 1789. Als hij in de moderne tijd had geleefd, zou Franklin softwarefouten aan zijn lijst hebben toegevoegd.





Moderne computerprogramma's zijn zo complex dat er tijdens het ontwikkelingsproces onvermijdelijk bugs opduiken. Daarom is het vinden ervan en het schrijven van patches om ze te repareren een normaal onderdeel van elk softwareontwikkelingsschema. Er zijn inderdaad bedrijven zoals Travis die deze service aan ontwikkelaars aanbieden.

Maar het vinden en repareren van patches is een tijdrovende bezigheid die aanzienlijke middelen verbruikt. Verschillende onderzoekers hebben bots ontwikkeld die dit proces automatiseren, maar die zijn meestal traag of produceren slecht geschreven code die niet door de beugel kan. Dus ontwikkelaars zouden dolgraag willen kunnen vertrouwen op een snelle bot van hoge kwaliteit die code doorzoekt op fouten en vervolgens patches schrijft om ze op te lossen.

Vandaag komen hun dromen uit dankzij het werk van Martin Monperrus en vrienden van het KTH Royal Institute of Technology in Stockholm, Zweden. Deze jongens hebben eindelijk een bot gebouwd die kan concurreren met menselijke ontwikkelaars bij het vinden van bugs en het schrijven van patches van hoge kwaliteit.



Deze jongens noemen hun bot Repairnator en hebben het met succes getest door het te laten concurreren met menselijke ontwikkelaars om oplossingen te vinden. Dit is een mijlpaal voor het concurrentievermogen van mensen in software-engineeringonderzoek naar automatische programmareparatie, zeggen ze.

Computerwetenschappers weten al lang dat het mogelijk is om het proces van het schrijven van patches te automatiseren. Maar het is niet duidelijk of bots dit werk even snel en met dezelfde kwaliteit kunnen doen als mensen.

Dus Monperrus en co hebben dit getest door Repairnator te vermommen als een menselijke ontwikkelaar en het te laten concurreren met mensen om patches te ontwikkelen op GitHub, een website voor versiebeheer voor softwareontwikkelaars. Het kernidee van Repairnator is om automatisch patches te genereren die fouten in de build repareren, en deze vervolgens aan menselijke ontwikkelaars te laten zien, om eindelijk te zien of die menselijke ontwikkelaars ze zouden accepteren als geldige bijdragen aan de codebasis, zeggen Monperrus en co.



Het team creëerde een GitHub-gebruiker genaamd Luc Esape, die een software-engineer in hun onderzoekslab leek te zijn. Luc heeft een profielfoto en ziet eruit als een junior ontwikkelaar, die graag open source bijdragen wil leveren op GitHub, zeggen ze.

Maar Luc is eigenlijk een vermomde Repairnator. Deze misleiding was nodig omdat menselijke moderators de neiging hebben om het werk van bots en mensen anders te beoordelen. Deze camouflage is nodig om onze wetenschappelijke hypothese van menselijk concurrentievermogen te testen, zeggen Monperrus en co, die nu de betrokken mensen op de hoogte hebben gebracht van de list.

Het team voerde twee runs uit om Repairnator te testen. De eerste liep van februari tot december 2017, toen het team Repairnator liet draaien op een vaste lijst van 14.188 GitHub-projecten op zoek naar fouten. We ontdekten dat ons prototype in staat is om ongeveer 30 reparatiepogingen per dag uit te voeren, zeggen ze.



Gedurende deze tijd analyseerde Repairnator meer dan 11.500 builds met fouten. Hiervan was het in staat om de storing in meer dan 3.000 gevallen te reproduceren. Vervolgens ontwikkelde het in 15 gevallen een pleister.

Geen van deze patches werd echter in de build geaccepteerd omdat Repairnator er te lang over deed om ze te ontwikkelen of omdat patches van lage kwaliteit werden geschreven die niet konden worden geaccepteerd.

De tweede experimentele run was meer succesvol. Deze keer zette het team Luc aan het werk aan de Travis-service voor continue integratie van januari tot juni 2018. Hoewel het team niet specificeerde welke verbeteringen ze aan Repairnator hadden aangebracht, schreef het op 12 januari een patch die een menselijke moderator in een build accepteerde. Met andere woorden, Repairnator was voor het eerst mens-concurrerend, zeggen ze.



In de volgende zes maanden ging Repairnator door met het produceren van vijf patches die menselijke moderators accepteerden.

Dat is indrukwekkend werk dat de toon zet voor een nieuwe generatie softwareontwikkeling. Het roept ook enkele interessante vragen op. Monperrus en co wijzen op een patch die Repairnator op 12 mei heeft ontwikkeld voor een GitHub-project genaamd eclipse/ditto.

Het team ontving vervolgens het volgende bericht van een van de ontwikkelaars: We kunnen alleen pull-verzoeken accepteren die afkomstig zijn van gebruikers die de Eclipse Foundation Contributor License Agreement hebben ondertekend.

Dat levert een netelig probleem op, aangezien een bot niet fysiek een licentieovereenkomst kan ondertekenen. Wie is eigenaar van het intellectuele eigendom en de verantwoordelijkheid van een botbijdrage: de robotoperator, de bot-implementator of de ontwerper van het reparatiealgoritme? vraag het aan Monperrus en co.

Dit soort problemen moet worden opgelost voordat mensen en bots meer in detail kunnen samenwerken. Maar Monperrus en co zijn optimistisch. Wij geloven dat Repairnator een voorbode is van een bepaalde toekomst van softwareontwikkeling, waarin bots en mensen soepel zullen samenwerken en zelfs samenwerken aan softwareartefacten, zeggen ze.

Franklin, zelf een beroemde creatieve uitvinder, zou zeker onder de indruk zijn geweest.

Referentie: arxiv.org/abs/1810.05806 : Mens-concurrerende patches in automatische programmareparatie met Repairnator

zich verstoppen