211service.com
En robot forkledd som en menneskelig programvareutvikler fikser feil
I denne verden kan ingenting sies å være sikkert, bortsett fra død og skatter, skrev Benjamin Franklin i 1789. Hadde han levd i moderne tid, kan Franklin godt ha lagt til programvarefeil på listen sin.
Moderne dataprogrammer er så komplekse at det uunngåelig dukker opp feil under utviklingsprosessen. Det er derfor å finne dem og skrive patcher for å fikse dem er en vanlig del av enhver programvareutviklingsplan. Det er faktisk selskaper som Travis som tilbyr denne tjenesten til utviklere.
Men å finne og fikse oppdateringer er en tidkrevende virksomhet som bruker betydelige ressurser. Ulike forskere har utviklet roboter som automatiserer denne prosessen, men de har en tendens til å være trege eller produsere dårlig skrevet kode som ikke består mønstre. Så utviklere ville elske å være i stand til å stole på en rask, høykvalitets bot som leter etter kode for feil og deretter skriver patcher for å fikse dem.
I dag går drømmene deres i oppfyllelse takket være arbeidet til Martin Monperrus og venner ved KTH Royal Institute of Technology i Stockholm, Sverige. Disse gutta har endelig bygget en bot som kan konkurrere med menneskelige utviklere når det gjelder å finne feil og skrive oppdateringer av høy kvalitet.
Disse gutta kaller boten Repairnator og har testet den med suksess ved å la den konkurrere mot menneskelige utviklere for å finne rettelser. Dette er en milepæl for menneskelig konkurranseevne innen programvareingeniørforskning på automatisk programreparasjon, sier de.
Dataforskere har lenge visst at det er mulig å automatisere prosessen med å skrive patcher. Men det er ikke klart om roboter kan gjøre dette arbeidet like raskt som mennesker og med samme kvalitet.
Så Monperrus og co testet dette ved å skjule Repairnator som en menneskelig utvikler og la den konkurrere med mennesker om å utvikle patcher på GitHub, et nettsted for versjonskontroll for programvareutviklere. Nøkkelideen til Repairnator er å automatisk generere patcher som reparerer byggefeil, for så å vise dem til menneskelige utviklere, for til slutt å se om de menneskelige utviklerne vil akseptere dem som gyldige bidrag til kodebasen, sier Monperrus og co.
Teamet opprettet en GitHub-bruker kalt Luc Esape, som så ut til å være programvareingeniør ved forskningslaboratoriet deres. Luc har et profilbilde og ser ut som en juniorutvikler, ivrig etter å gi åpen kildekode-bidrag på GitHub, sier de.
Men Luc er faktisk Repairnator i forkledning. Dette bedraget var nødvendig fordi menneskelige moderatorer har en tendens til å vurdere arbeidet til roboter og mennesker annerledes. Denne kamuflasjen er nødvendig for å teste vår vitenskapelige hypotese om menneskelig konkurranseevne, sier Monperrus og co, som nå har informert de involverte menneskene om listen.
Teamet gjennomførte to kjøringer for å teste Repairnator. Den første løp fra februar til desember 2017, da teamet kjørte Repairnator på en fast liste med 14 188 GitHub-prosjekter på jakt etter feil. Vi fant ut at prototypen vår er i stand til å utføre omtrent 30 reparasjonsforsøk per dag, sier de.
I løpet av denne tiden analyserte Repairnator over 11 500 bygg med feil. Av disse var den i stand til å gjenskape feilen i over 3000 tilfeller. Det fortsatte deretter med å utvikle et plaster i 15 tilfeller.
Ingen av disse oppdateringene ble imidlertid akseptert i bygget fordi Repairnator tok for lang tid å utvikle dem eller skrev oppdateringer av lav kvalitet som ikke kunne aksepteres.
Den andre eksperimentelle kjøringen var mer vellykket. Denne gangen satte teamet Luc til å jobbe med Travis-tjenesten for kontinuerlig integrering fra januar til juni 2018. Selv om teamet ikke spesifiserte hvilke forbedringer de gjorde på Repairnator, skrev det 12. januar en oppdatering som en menneskelig moderator godtok i en build. Repairnator var med andre ord menneske-konkurransedyktig for første gang, sier de.
I løpet av de neste seks månedene fortsatte Repairnator med å produsere fem patcher som menneskelige moderatorer godtok.
Det er imponerende arbeid som setter scenen for en ny generasjon programvareutvikling. Det reiser også noen interessante spørsmål. Monperrus og co peker på en patch Repairnator utviklet for et GitHub-prosjekt kalt eclipse/ditto 12. mai.
Teamet mottok deretter følgende melding fra en av utviklerne: Vi kan bare godta pull-forespørsler som kommer fra brukere som har signert Eclipse Foundation Contributor License Agreement.
Det reiser et vanskelig problem, siden en robot ikke kan signere en lisensavtale fysisk. Hvem eier den intellektuelle eiendommen og ansvaret for et botbidrag: robotoperatøren, robotimplementatoren eller reparasjonsalgoritmedesigneren? spør Monperrus og co.
Denne typen problemer må løses før mennesker og roboter kan samarbeide mer detaljert. Men Monperrus og co er optimistiske. Vi tror at Repairnator prefigurerer en viss fremtid for programvareutvikling, der roboter og mennesker vil jevnt samarbeide og til og med samarbeide om programvareartefakter, sier de.
Franklin, en berømt kreativ oppfinner selv, ville sikkert ha blitt imponert.
Ref: arxiv.org/abs/1810.05806 : Menneskelig konkurransedyktige patcher i automatisk programreparasjon med Repairnator