Investigadores aceleran la localización de fallos durante el desarrollo de software
Las aplicaciones de software modernas suelen estar compuestas por numerosos archivos y varios millones de líneas de código. Debido a la gran cantidad de código, encontrar y corregir fallos, conocido como depuración, es una tarea complicada.
En muchas empresas de software, los desarrolladores aún buscan fallos de forma manual, lo que consume una gran proporción de su tiempo de trabajo. Los estudios indican que esta actividad puede representar entre el 30% y el 90% del tiempo total de desarrollo.
Birgit Hofer y Thomas Hirsch, del Instituto de Tecnología de Software de la Universidad Tecnológica de Graz (TU Graz), han desarrollado una solución basada en métodos de procesamiento de lenguaje natural y métricas existentes que puede acelerar significativamente el proceso de encontrar código defectuoso y, por lo tanto, de depuración.
La localización de fallos consume más tiempo
«Como primer paso, realizamos encuestas entre los desarrolladores para averiguar cuáles son los mayores desperdicios de tiempo al depurar. Resultó que la corrección del fallo en sí no es el gran problema, sino que los programadores se atascan principalmente en la localización de fallos, es decir, en reducir la búsqueda al área correcta en el código del programa,» explica Birgit Hofer.
Basándose en esta comprensión, los investigadores se propusieron encontrar una solución a este problema que también fuera escalable para aplicaciones con mucho código.
Aunque existen enfoques eficientes basados en modelos, en los que un programa se convierte en una representación lógica (llamada modelo), esto solo funciona para programas pequeños, ya que el esfuerzo de computación aumenta exponencialmente con el tamaño del código.
El enfoque adoptado por Birgit Hofer y Thomas Hirsch representa ciertas propiedades del software en números, por ejemplo, la legibilidad o la complejidad del código, y también se puede utilizar para grandes cantidades de código, ya que el esfuerzo computacional solo aumenta linealmente.
Comparación de la descripción del fallo y el código
El punto de partida para la localización de fallos es el informe de error, que los evaluadores o usuarios rellenan en un formulario en el que describen la falla observada e introducen información sobre la versión del software, su sistema operativo, los pasos que dieron antes de que ocurriera el fallo y otros datos relevantes.
Con base en este informe de error, la combinación de procesamiento de lenguaje natural y métricas analiza todo el código con respecto a las clases y nombres de variables, archivos, métodos o funciones, así como las llamadas a métodos y funciones.
La aplicación identifica las secciones de código que mejor corresponden al informe de error. Como resultado, los desarrolladores reciben una lista de cinco a diez archivos clasificados según la probabilidad de que sean responsables de la falla observada.
Los desarrolladores también reciben información sobre el tipo de fallo que probablemente esté involucrado. Estos datos pueden utilizarse para localizar y corregir el error más rápidamente.
«El tiempo de trabajo de los desarrolladores de software es costoso, pero a menudo pasan más de ese tiempo costoso localizando y corrigiendo fallos que desarrollando nuevas funcionalidades,» dice Birgit Hofer.
«Como ya existen varios enfoques para erradicar este problema, hemos investigado cómo podemos combinarlos y mejorarlos para que haya una base para la aplicación comercial. Ahora hemos sentado las bases y el sistema funciona. Sin embargo, para integrarlo en una empresa, aún tendría que adaptarse a las necesidades específicas de la misma.»
El sistema de depuración está disponible a través de la plataforma «GitHub». En el sitio web del proyecto se pueden encontrar los artículos y repositorios asociados con esta investigación.