211service.com
Un bot disfrazado de desarrollador de software humano corrige errores
En este mundo no se puede decir que nada sea seguro, excepto la muerte y los impuestos, escribió Benjamin Franklin en 1789. Si hubiera vivido en la era moderna, Franklin bien podría haber agregado errores de software a su lista.
Los programas informáticos modernos son tan complejos que inevitablemente surgen errores durante el proceso de desarrollo. Es por eso que encontrarlos y escribir parches para corregirlos es una parte común de cualquier programa de desarrollo de software. De hecho, hay empresas como Travis que ofrecen este servicio a los desarrolladores.
Pero encontrar y corregir parches es una tarea que requiere mucho tiempo y recursos significativos. Varios investigadores han desarrollado bots que automatizan este proceso, pero tienden a ser lentos o a producir un código mal escrito que no pasa la prueba. Por lo tanto, a los desarrolladores les encantaría poder confiar en un bot rápido y de alta calidad que busque errores en el código y luego escriba parches para corregirlos.
Hoy, sus sueños se hacen realidad gracias al trabajo de Martin Monperrus y sus amigos en el Instituto Real de Tecnología KTH en Estocolmo, Suecia. Estos muchachos finalmente han construido un bot que puede competir con los desarrolladores humanos en la búsqueda de errores y la creación de parches de alta calidad.
Estos muchachos llaman a su bot Repairnator y lo han probado con éxito al permitirle competir contra desarrolladores humanos para encontrar soluciones. Este es un hito para la competitividad humana en la investigación de ingeniería de software sobre reparación automática de programas, dicen.
Los informáticos saben desde hace tiempo que es posible automatizar el proceso de escritura de parches. Pero no está claro si los bots pueden hacer este trabajo tan rápido como los humanos y con la misma calidad.
Así que Monperrus y compañía probaron esto disfrazando a Repairnator como un desarrollador humano y permitiéndole competir con humanos para desarrollar parches en GitHub, un sitio web de control de versiones para desarrolladores de software. La idea clave de Repairnator es generar automáticamente parches que reparan fallas de compilación, luego mostrárselos a desarrolladores humanos, para finalmente ver si esos desarrolladores humanos los aceptarían como contribuciones válidas a la base de código, dicen Monperrus y compañía.
El equipo creó un usuario de GitHub llamado Luc Esape, que parecía ser un ingeniero de software en su laboratorio de investigación. Luc tiene una foto de perfil y parece un desarrollador junior, ansioso por hacer contribuciones de código abierto en GitHub, dicen.
Pero Luc es en realidad Repairnator disfrazado. Este engaño era necesario porque los moderadores humanos tienden a evaluar el trabajo de los bots y el de los humanos de manera diferente. Este camuflaje es necesario para probar nuestra hipótesis científica de la competitividad humana, dicen Monperrus y compañía, quienes ahora han informado a los humanos involucrados sobre la artimaña.
El equipo llevó a cabo dos pruebas para probar Repairnator. El primero se realizó de febrero a diciembre de 2017, cuando el equipo ejecutó Repairnator en una lista fija de 14 188 proyectos de GitHub en busca de errores. Descubrimos que nuestro prototipo es capaz de realizar aproximadamente 30 intentos de reparación por día, dicen.
Durante este tiempo, Repairnator analizó más de 11 500 compilaciones con fallas. De estos, pudo reproducir la falla en más de 3.000 casos. Luego pasó a desarrollar un parche en 15 casos.
Sin embargo, ninguno de estos parches fue aceptado en la compilación porque Repairnator tardó demasiado en desarrollarlos o escribió parches de baja calidad que no pudieron aceptarse.
La segunda corrida experimental fue más exitosa. Esta vez, el equipo puso a Luc a trabajar en el servicio de integración continua de Travis de enero a junio de 2018. Aunque el equipo no especificó qué mejoras le hicieron a Repairnator, el 12 de enero escribió un parche que un moderador humano aceptó en una compilación. En otras palabras, Repairnator fue humano-competitivo por primera vez, dicen.
Durante los siguientes seis meses, Repairnator produjo cinco parches que los moderadores humanos aceptaron.
Es un trabajo impresionante que sienta las bases para una nueva generación de desarrollo de software. También plantea algunas preguntas interesantes. Monperrus y compañía señalan un parche que Repairnator desarrolló para un proyecto de GitHub llamado eclipse/ditto el 12 de mayo.
Luego, el equipo recibió el siguiente mensaje de uno de los desarrolladores: Solo podemos aceptar solicitudes de extracción que provienen de usuarios que firmaron el Acuerdo de licencia de colaborador de la Fundación Eclipse.
Eso plantea un problema espinoso, ya que un bot no puede firmar físicamente un acuerdo de licencia. ¿Quién posee la propiedad intelectual y la responsabilidad de la contribución de un bot: el operador del robot, el implementador del bot o el diseñador del algoritmo de reparación? pregúntale a Monperrus y compañía.
Este tipo de problema deberá resolverse antes de que los humanos y los bots puedan colaborar con más detalle. Pero Monperrus y compañía son optimistas. Creemos que Repairnator prefigura un cierto futuro del desarrollo de software, donde los bots y los humanos colaborarán sin problemas e incluso cooperarán en artefactos de software, dicen.
Franklin, un famoso inventor creativo, seguramente habría quedado impresionado.
Ref: arxiv.org/abs/1810.05806 : parches humanos-competitivos en la reparación automática de programas con Repairnator