Intel ha revelado hoy ControlFlag, un sistema de investigación de machine programming capaz de detectar errores en el código de manera autónoma. Incluso en una etapa muy incipiente, este novedoso sistema de supervisión automática promete ser una poderosa herramienta de productividad para ayudar a los desarrolladores de software en la laboriosa tarea de corrección. En pruebas preliminares, ControlFlag entrenó y aprendió nuevos defectos en más de 1.000 millones de líneas de código de calidad de producción sin etiquetar.
“Creemos que ControlFlag es una nueva y poderosa herramienta que podría reducir drásticamente el tiempo y el dinero necesario para evaluar y corregir el código. Según diversos estudios, los desarrolladores de software pasan aproximadamente un 50% del tiempo corrigiendo y depurando. Con ControlFlag, y otros sistemas como este, imagino un mundo donde los programadores puedan dedicar menos tiempo a estas correcciones y más tiempo en lo que creo que los programadores humanos hacen mejor: expresar ideas nuevas y creativas a las máquinas”.
— Justin Gottschlich, principal scientist and director/founder of Machine Programming Research at Intel Labs
En un mundo cada vez más dirigido por el software, los desarrolladores siguen dedicando una cantidad desproporcionada de tiempo a arreglar los errores en lugar de codificar. De hecho, se estima que de los 1,25 billones de dólares que el desarrollo de software le cuesta a la industria de la informática cada año, un 50% se gasta en depurar el código.
Además, se espera que la depuración tenga un impacto aún mayor en los desarrolladores y en la industria en general. A medida que avanzamos hacia una era de arquitecturas heterogéneas -definidas por una mezcla de procesadores construidos especialmente para gestionar el enorme mar de datos disponible hoy en día- el software necesario para gestionar estos sistemas se hace cada vez más complejo, lo deriva en una mayor probabilidad de errores. Asimismo, cada vez es más difícil encontrar programadores de software que tengan la experiencia necesaria para programar de forma correcta, eficiente y segura en diversos equipos, lo que a su vez aumenta las posibilidades de que se produzcan nuevos errores de código más difíciles de detectar.
Una vez que se desarrolle por completo, ControlFlag podría contribuir a aliviar este desafío automatizando las partes más tediosas del desarrollo de software, como las pruebas, la supervisión y la corrección o depuración del código. Esto no sólo permitiría a los desarrolladores hacer su trabajo de manera más eficiente y liberar más tiempo para la creatividad, sino que también abordaría uno de los procesos más costosos en el desarrollo de software hoy en día.
ControlFlag es capaz de detectar errores gracias al machine programming, una fusión de machine learning, métodos formales, lenguajes de programación, compiladores y sistemas informáticos.
En este sentido, ControlFlag opera específicamente a través de una función conocida como detección de anomalías. Igual que los humanos aprendemos a considerar ciertos patrones como “normales” a través de nuestra observación del mundo real, ControlFlag aprende de ejemplos verificados a detectar patrones de codificación normales, identificando las anomalías en el código que probablemente provoquen un error. Además, puede detectar estas anomalías independientemente del lenguaje de programación.
Por otro lado, uno de los principales beneficios que ofrece el enfoque no supervisado de ControlFlag para el reconocimiento de patrones es que puede aprender intrínsecamente a adaptarse al estilo de cada desarrollador. Con entradas limitadas para las herramientas de control que el programa debe evaluar, ControlFlag puede identificar variaciones estilísticas en el lenguaje de programación, de manera similar a la forma en que los lectores de un texto en inglés reconocen las diferencias entre las palabras completas o el uso de contracciones.
La herramienta aprende a identificar y etiquetar estas elecciones estilísticas y puede personalizar la identificación de errores, así como las recomendaciones para solucionar dichos problemas basándose en sus conocimientos, lo que minimiza las posibilidades de que ControlFlag caracterice el código como error cuando puede ser simplemente una desviación estilística entre dos equipos de desarrolladores.
Intel incluso ha comenzado a evaluar el uso de ControlFlag internamente para identificar errores en su propia producción de software y firmware. Es un elemento clave del proyecto análisis rápido para desarrolladores de Intel, cuyo objetivo es acelerar la velocidad proporcionando asistencia de expertos.