211service.com
Un bot travestito da sviluppatore di software umano risolve i bug
In questo mondo nulla si può dire certo, tranne la morte e le tasse, scrisse Benjamin Franklin nel 1789. Se fosse vissuto nell'era moderna, Franklin potrebbe aver aggiunto bug del software alla sua lista.
I moderni programmi per computer sono così complessi che i bug si verificano inevitabilmente durante il processo di sviluppo. Ecco perché trovarli e scrivere patch per risolverli è una parte normale di qualsiasi programma di sviluppo software. In effetti, ci sono aziende come Travis che offrono questo servizio agli sviluppatori.
Ma trovare e correggere le patch è un'attività che richiede tempo e consuma risorse significative. Vari ricercatori hanno sviluppato bot che automatizzano questo processo, ma tendono a essere lenti o a produrre codice scritto male che non passa. Quindi gli sviluppatori apprezzerebbero moltissimo poter fare affidamento su un bot veloce e di alta qualità che setaccia il codice alla ricerca di errori e quindi scrive patch per risolverli.
Oggi, i loro sogni diventano realtà grazie al lavoro di Martin Monperrus e dei suoi amici presso il KTH Royal Institute of Technology di Stoccolma, in Svezia. Questi ragazzi hanno finalmente creato un bot in grado di competere con gli sviluppatori umani nella ricerca di bug e nella scrittura di patch di alta qualità.
Questi ragazzi chiamano il loro bot Repairnator e lo hanno testato con successo consentendogli di competere contro sviluppatori umani per trovare soluzioni. Questa è una pietra miliare per la competitività umana nella ricerca di ingegneria del software sulla riparazione automatica dei programmi, dicono.
Gli informatici sanno da tempo che è possibile automatizzare il processo di scrittura delle patch. Ma non è chiaro se i bot possano svolgere questo lavoro con la stessa rapidità degli umani e con la stessa qualità.
Quindi Monperrus e co lo hanno testato travestendo Repairnator da sviluppatore umano e consentendogli di competere con gli umani per sviluppare patch su GitHub, un sito Web di controllo della versione per sviluppatori di software. L'idea chiave di Repairnator è generare automaticamente patch che riparano gli errori di build, quindi mostrarle agli sviluppatori umani, per vedere finalmente se quegli sviluppatori umani le accetterebbero come validi contributi alla base di codice, affermano Monperrus e co.
Il team ha creato un utente GitHub chiamato Luc Esape, che sembrava essere un ingegnere del software nel loro laboratorio di ricerca. Luc ha un'immagine del profilo e sembra uno sviluppatore junior, desideroso di dare contributi open source su GitHub, dicono.
Ma Luc è in realtà un riparatore sotto mentite spoglie. Questo inganno era necessario perché i moderatori umani tendono a valutare il lavoro dei robot e degli umani in modo diverso. Questo camuffamento è necessario per testare la nostra ipotesi scientifica sulla competitività umana, affermano Monperrus e compagni, che ora hanno informato gli umani coinvolti dello stratagemma.
Il team ha effettuato due prove per testare Repairnator. Il primo è stato eseguito da febbraio a dicembre 2017, quando il team ha eseguito Repairnator su un elenco fisso di 14.188 progetti GitHub alla ricerca di errori. Abbiamo scoperto che il nostro prototipo è in grado di eseguire circa 30 tentativi di riparazione al giorno, dicono.
Durante questo periodo, Repairnator ha analizzato oltre 11.500 build con errori. Di questi, è stato in grado di riprodurre il guasto in oltre 3.000 casi. Ha poi sviluppato una patch in 15 casi.
Tuttavia, nessuna di queste patch è stata accettata nella build perché Repairnator ha impiegato troppo tempo per svilupparle o ha scritto patch di bassa qualità che non potevano essere accettate.
La seconda corsa sperimentale ha avuto più successo. Questa volta, il team ha incaricato Luc di lavorare sul servizio di integrazione continua di Travis da gennaio a giugno 2018. Sebbene il team non abbia specificato quali miglioramenti hanno apportato a Repairnator, il 12 gennaio ha scritto una patch che un moderatore umano ha accettato in una build. In altre parole, per la prima volta Repairnator è stato competitivo tra gli umani, dicono.
Nei sei mesi successivi, Repairnator ha continuato a produrre cinque patch che i moderatori umani hanno accettato.
È un lavoro impressionante che pone le basi per una nuova generazione di sviluppo software. Solleva anche alcune domande interessanti. Monperrus e colleghi indicano una patch che Repairnator ha sviluppato per un progetto GitHub chiamato eclipse/ditto il 12 maggio.
Il team ha quindi ricevuto il seguente messaggio da uno degli sviluppatori: Possiamo accettare solo richieste pull provenienti da utenti che hanno firmato l'Accordo di licenza per i collaboratori di Eclipse Foundation.
Ciò solleva una questione spinosa, dal momento che un bot non può firmare fisicamente un contratto di licenza. Chi possiede la proprietà intellettuale e la responsabilità di un contributo di bot: l'operatore del robot, l'implementatore del bot o il progettista dell'algoritmo di riparazione? chiedi a Monperrus e co.
Questo tipo di problema dovrà essere risolto prima che umani e robot possano collaborare in modo più dettagliato. Ma Monperrus e compagni sono ottimisti. Riteniamo che Repairnator preveda un certo futuro dello sviluppo del software, in cui bot e umani collaboreranno senza problemi e persino coopereranno su artefatti software, dicono.
Franklin, lui stesso un famoso inventore creativo, sarebbe stato sicuramente colpito.
Rif: arxiv.org/abs/1810.05806 : Patch umane competitive nella riparazione automatica del programma con Repairnator