sliderTecnología

Repairnator, el bot que detecta y arregla fallos de software igual que un humano

«En este mundo no se puede estar seguro de nada, salvo de la muerte y de los impuestos», escribió Benjamin Franklin en 1789. Si siguiera vivo a día de hoy, había añadido otra certeza a su lista: los errores de programación. Los programas informáticos modernos son tan complejos que es prácticamente inevitable que aparezcan fallos durante su desarrollo. Por eso, detectarlos y crear parches para solucionarlos se ha convertido en una parte habitual de cualquier desarrollo de software (ver Empleos 2.0: el cazador de errores de código que nos protege en la sombra y El hacker que gana 250.000 dólares al año por encontrar errores de software). De hecho, existen empresas que se dedican expresamente a ofrecer este servicio a los desarrolladores (ver El Uber de la ciberseguridad une a empresas con cazadores de virus).

Pero encontrar errores de software y crear parches para repararlos es un trabajo que consume mucho tiempo y recursos. Varios investigadores han desarrollado bots para automatizar el proceso (ver Muchos errores, y poco tiempo), pero suelen ser lentos o producen códigos mal escritos, con lo que no cumplen su objetivo de seguridad. Por eso, a los desarrolladores les encantaría disponer de un bot rápido y de alta calidad capaz de detectar errores de código y desarrollar parches para corregirlos automáticamente.

Este sueño acaba de hacerse realidad gracias al trabajo del investigador del Real Instituto de Tecnología KTH de Estocolmo (Suecia) Martin Monperrus y sus compañeros. El equipo ha creado un bot que puede competir con los desarrolladores humanos en la búsqueda de errores y en la creación de parches de alta calidad.

Los investigadores han bautizado a su máquina como Repairnator y lo han enfrentado contra desarrolladores humanos para demostrar su eficacia. La investigación detalla: «Se trata de un hito para la competitividad humana en la investigación de ingeniería de software para la reparación automática de programas», afirman.

Los informáticos saben desde hace tiempo que es posible automatizar la creación de parches. Pero no estaba claro si los bots serían capaces de hacerlo tan rápido como los humanos y con la misma calidad.

Así que para probar su sistema, Monperrus y sus compañeros disfrazaron a Repairnator como si fuera un desarrollador humano para que pudiera competir con profesionales en GitHub, una página web de control de versiones para desarrolladores de software. «La clave de Repairnator consiste en generar automáticamente parches que reparan errores de compilaciones y mostrarlos a desarrolladores humanos para ver si esos desarrolladores los aceptarían como contribuciones válidas al código base», explica Monperrus.

El equipo creó un usuario de GitHub llamado Luc Esape, quien pretendía ser un ingeniero de software de su laboratorio de investigación. «La foto de perfil de Luc parecía la de un desarrollador júnior, con ganas de hacer contribuciones de código abierto en GitHub», detalla la investigación.

Pero en realidad Luc era Repairnator disfrazado de humano, algo que resultaba imprescindible porque los moderadores humanos tienden a evaluar de manera diferente el trabajo de los bots y el de los humanos. El texto continúa: «El camuflaje era necesario para comprobar nuestra hipótesis científica de la competitividad humana». Después del experimento, el equipo añade que informó a los humanos involucrados sobre su artimaña.

El equipo llevó a cabo dos ensayos para probar las capacidades de Repairnator. El primero se llevó a cabo desde febrero de 2017 hasta diciembre del mismo año, cuando el equipo dio de alta a Repairnator para poder acceder a una lista de 14.188 proyectos de búsqueda de errores en GitHub. Monperrus detalla: «Descubrimos que nuestro prototipo era capaz de realizar, aproximadamente, 30 intentos de reparación al día».

Durante ese primer periodo, Repairnator analizó más de 11.500 compilaciones con errores, de los cuales, pudo reproducir el fallo en más de 3.000 casos de los que logró desarrollar un parche para 15 de ellos. Pero ninguno fue aceptado por los moderadores porque Repairnator (o Luc Esape) tardó demasiado en desarrollarlos o porque la calidad de los parches era demasiado baja.

La segunda parte del experimento tuvo más éxito. En esta ocasión, el equipo puso a Luc a trabajar en el servicio de integración continua de Travis (una empresa especializada en servicios de detección y reparación de errores de software) de enero a junio de 2018. Aunque el equipo no especificó qué mejoras incorporó a Repairnator, el 12 de enero, el bot creó un parche que un moderador humano aceptó. «En otras palabras, por primera vez, Repairnator estaba a la altura de los profesionales humanos», detalla la investigación.

Durante los siguientes seis meses, Repairnator produjo cinco parches que fueron aceptados por los moderadores humanos.

Se trata de un trabajo impresionante que allana el camino hacia una nueva generación de desarrollo de software. También plantea algunas cuestiones interesantes. Monperrus y sus compañeros inciden en uno de los parches desarrollados por Repairnator para el proyecto de GitHub llamado «eclipse / ditto» el 12 de mayo. Después de enviarlo a los moderadores, el equipo recibió el siguiente mensaje de uno de los desarrolladores: «Solo podemos aceptar solicitudes que provengan de usuarios que firmaron el Acuerdo de Licencia de Colaborador de la Fundación Eclipse».

Dado que un bot no puede firmar físicamente un acuerdo de licencia, surge una cuestión espinosa. «¿De quién es la propiedad intelectual y la responsabilidad de una contribución de un bot: del operador, del ejecutor o del diseñador del algoritmo de la reparación?», preguntan Monperrus y sus colegas.

Habrá que resolver este tipo de problemas antes de que los humanos y los bots puedan colaborar de forma más estrecha. Pero Monperrus y sus colegas son optimistas y concluyen: «Creemos que Repairnator presagia un futuro más seguro para el desarrollo de software, donde bots y seres humanos colaborarán sin problemas e incluso cooperarán en las características de software».

Franklin, que también fue famoso por su faceta de inventor creativo, seguramente estaría impresionado.

Fuente: technologyreviews.es