IMDEA Software lanza un nuevo enfoque que mejora la reparación automática de software
La herramienta FIXCHECK ofrece una solución robusta y efectiva en el campo del mantenimiento de software, revela fallos y previene la introducción de correcciones inadecuadas en el software.
Todos actualizamos tarde o temprano nuestras aplicaciones móviles y programas informáticos, ya sea por las mejoras que ofrecen o porque deja de funcionar la versión anterior, entre otras cosas. Estamos habituados a las caídas de WhatsApp o de comercios electrónicos que por lo general tardan unas horas en volver a la normalidad. A lo que no estamos acostumbrados es a que pase algo que paralice el mundo durante días, como ocurrió la semana pasada con la actualización de CrowdStrike, proveedor de seguridad de Microsoft. De un modo u otro, ambos casos se generan por defectos en el software.
Por lo general, si existe un fallo en un software se genera un parche para paliarlo y asegure que el software funcione como debe. Pero algunas veces estos parches no solucionan los problemas para los que fueron creados, o incluso peor, pueden generar fallos adicionales no previstos en el software. Por este motivo generar parches que resuelvan los defectos en el software es una tarea crucial en el mantenimiento de los sistemas informáticos.
¿Como se detectan?
Los defectos de software generalmente se reportan a través de casos de prueba, que revelan comportamientos no deseados en el software. En respuesta a estos defectos, los desarrolladores crean parches que deben someterse a validación antes de ser enviados a la base de código, garantizando que la prueba proporcionada ya no expone el defecto. Sin embargo, es posible que se den parches incorrectos.
La detección de estos parches incorrectos puede repercutir de manera significativa en el tiempo y el esfuerzo dedicados a la corrección de fallos por los desarrolladores y en el mantenimiento general de los sistemas de software.
El estudio
La reparación automática de programas (APR por sus siglas en inglés), proporciona a los desarrolladores de software herramientas capaces de generar automáticamente parches para programas defectuosos. Sin embargo, su uso ha destapado numerosos errores en estos parches que no solventan los fallos de manera adecuada.
Para solucionar este problema los investigadores de IMDEA Software Facundo Molina, Juan Manuel Copia y Alessandra Gorla han creado FIXCHECK, un enfoque novedoso para mejorar los análisis de corrección de parches que combina análisis estáticos, pruebas aleatorias y grandes modelos de lenguaje. FIXCHECK emplea un proceso de dos pasos. El primero consiste en generar pruebas aleatorias, obteniendo un amplio conjunto de casos de prueba. El segundo paso se basa en el uso de grandes modelos de lenguaje, de los cuales se derivan oráculos significativos para cada caso de prueba. Sus innovaciones, plasmadas en el artículo: “Improving Patch Correctness Analysis via Random Testing and Large Language Models” fueron presentadas en la Conferencia Internacional sobre Pruebas, Verificación y Validación de Software (ICST 2024).
Además, FIXCHECK incluye un mecanismo de selección y priorización que ejecuta los nuevos casos de prueba sobre el programa parcheado y a continuación, descarta o clasifica estas pruebas en función de su probabilidad de revelar fallos en el parche.
“La eficacia de FIXCHECK para generar casos de prueba que revelan fallos en parches incorrectos se evaluó en 160 parches, entre los que se incluían tanto parches creados por desarrolladores como generados por herramientas de APR” indica Facundo Molina, investigador postdoctoral del Instituto IMDEA Software.
Resultados
Los resultados muestran que FIXCHECK puede generar eficazmente pruebas de detección de fallos para el 62% de los parches incorrectos escritos por desarrolladores, con un alto grado de confianza. Además, complementa técnicas existentes de evaluación de corrección de parches al proporcionar casos de prueba que revelan fallos para hasta el 50% de los parches incorrectos identificados por las técnicas más avanzadas.
FIXCHECK representa un avance significativo en el campo de la reparación y mantenimiento del software, ya que ofrece una solución robusta para automatizar la generación de pruebas y detectar fallos durante el mantenimiento del software. Este enfoque no sólo mejora la eficacia de la validación de parches, sino que también promueve una adopción más amplia de métodos automatizados de reparación de programas.
**Este trabajo ha sido financiado por el programa de la Comunidad de Madrid S2018/TCS-4339 (BLOQUES-CM) y por el Gobierno de España MCIN/AEI/10.13039/501100011033/ERDF a través de las subvenciones TED2021-132464B-I00 (PRODIGY) y PID2022-142290OB-I00 (ESPADA). Estos proyectos están cofinanciados por los fondos de la Unión Europea FSE, EIE y NextGeneration.