Programador de videojuegos trabajando

Unos investigadores de informática de la Universidad de Zúrich han desarrollado un sistema capaz de predecir la calidad del código basándose en datos biométricos de los programadores que lo producen. Usando datos como la frecuencia cardíaca, estos investigadores pudieron cuantificar la difcultad que un programador concreto había podido tener a la hora de escribir un programa cualquiera. Esta información se podría usar después para identificar posibles secciones de código de mala calidad, algo así como un preanálisis de todo lo escrito antes de que pase por un depurador de software. Y, dicho sea de paso, otro problema añadido a la siempre creciente preocupación por la privacidad.

Estos investigadores responden a los nombres de Sebastian C. Müller y Thomas Fritz, y han presentado su trabajo en un informe presentado durante la última Conference on Software Engineering en Austin, Texas.

Así se corrige el código habitualmente

Según podemos leer en el informe, una creencia muy extendida en el mundo de la programación es que cuanto más se evita pensar en la calidad del código, como podrían ser defectos varios o poca comprensión del mismo, más cuesta arreglar un código de mala calidad.

De hecho, Müller y Fritz consideran que este método es una primera línea de defensa contra bugs y software de mala calidad. Es muy común en una empresa dedicada a la programación que un desarrollador empiece un programa y se lo pase a otro, que puede continuar el trabajo del anterior. Si dicho programa no estaba bien documentado o comentado el resultado final puede ser desastroso. Es por ello habitual que haya una tercera persona que actúa como revisor de código, que busca en cada línea defectos y lugares en los que se podría mejorar.

Tal y como señalan en Motherboard, las revisiones de código son un método muy costoso. Es necesario invertir tiempo y personal en ellas. También existen métodos automáticos de revisión de código, que más o menos funcionan, pero que según el estudio se encuentran con dos barreras fundamentales:

  • Se basan sobre todo en datos métricos, como rotación de código o tamaño de los módulos, que sólo se pueden recoger después de que se complete un cambio en el código y que a menudo requieren acceso a más información, como el historial del código.
  • No tienen en cuenta que cada programador es una persona diferente y que cada uno escribe a su manera cuando interpretan el código. Dicho de otra manera, hay diferencias acusadas entre, por ejemplo, desarrolladores expertos y novatos. Estos métodos ignoran estos datos.
Fragmento de códigoFragmento de código

Beneficios de usar los datos biométricos en la corrección de código

La biométrica haría, básicamente, un estudio del programador mientras trabaja en lugar de observar el código una vez está completado. El sistema que proponen los investigadores ha detectado problemas de calidad de código conforme se produce o, dicho de otra manera, permitiría detectar errores y optimizar el código al momento. Según se recoge, un estudio anterior ha mostrado que la variación de la frecuencia cardíaca o de la actividad electrodermal pueden ser indicadores precisos a la hora de conocer la dificultad de la tarea o de la comprensión del código. Cuanto más difícil es una tarea, mayor es la carga cognitiva. Por tanto, existe más probabilidad de que se cometan errores.

El método se probó con dos equipos de programadores de Canadá y Suiza. Los datos biométricos se recogieron conforme escribían software, que después se cotejó con entrevistas con los desarrolladores y con revisores de código humanos. Tras las pruebas el estudio ha determinado lo siguiente:

  • La biométrica es más precisa que la métrica tradicional y percibe mejor la dificultad con la que un programador ha apreciado en elementos de un código mientras trabajaba con ellos.
  • Los elementos de código que se ven como más dificultosos por los programadores son los que acaban generando más preocupación en las revisiones de código que hacen sus colegas.
  • La biométrica ayudó a detectar el 50% de los bugs que se encontraron después en las revisiones de código y fueron superiores a los métodos tradicionales a la hora de hacerlo.
Manuales de programaciónManuales de programación / Cal Evans editada con licencia CC BY-SA 2.0

¿Qué pasa con la privacidad del programador?

El informe señala de forma muy superficial las preocupaciones por la privacidad del programador pero, insistimos, sólo lo hace de forma somera. Según se ha publicado es algo más que un problema de privacidad, sino de lo invasivo del método y del problema obvio que supone monitorizar el estrés de un desarrollador mientras trabaja, lo que de por sí ya es bastante estresante.

De momento el sistema está en sus primeras fases y es muy pronto aún para valorar su eficacia. Veremos si finalmente se implementa en la industria y de qué manera lo hará.

Sergey Galyonkin editada con licencia CC BY-SA 2.0

Relacionados

Nos encanta escucharte ¿Nos dejas tu opinión?