DCC tiene nuevo Doctor en Ciencias mención Computación

Image preview

De izquierda a derecha: Luis Mateu, Romain Robbes, Guillaume Pothier, Eric Tanter, Johan Fabry y Shigeru Chiba.


Compartir

 

Guillaume Pothier obtuvo dicho grado académico con una investigación que  contribuyó a progresar en el estado del arte en el ámbito de la "depuración omnisciente", entregando nuevos algoritmos que garantizan un tiempo de respuesta corto a las consultas del usuario.

 

“Towards Practical Omniscient Debugging” se titula la tesis con que Guillaume Pothier obtuvo el pasado 13 de junio el grado de Doctor en Ciencias mención Computación, y que fue guiada por el académico del Departamento de Ciencias de la Computación (DCC), Eric Tanter.

 

La comisión evaluadora del examen estuvo integrada por los profesores del DCC: Eric Tanter, Johan Fabry, Romain Robbes y Luis Mateu. Como profesor externo participó Shigeru Chiba del Institute of Technology, Tokyo.

 

Sobre su trabajo de investigación “Towards Practical Omniscient Debugging”, Guillaume Pothier explicó que en el proceso de desarrollo de software, la depuración es la fase en que se corrigen los errores. “Es una actividad tediosa y costosa: representa alrededor del 80% de los costos de desarrollo. Esto se debe a que en la mayoría de los casos, los síntomas visibles de un error ocurren mucho después de su causa original, obligando a veces al programador a ejecutar reiteradamente el programa hasta poder encontrar el error”, comentó el nuevo Doctor en Ciencias.

 

Agrega que la depuración omnisciente da al programador la posibilidad de navegar libremente en el historial de ejecución de su programa, sin necesidad de volver a ejecutarlo. “En particular, permite volver hacia atrás en el tiempo, y también saltar directamente desde el punto en que se observa un estado erróneo hasta el momento en que se generó dicho estado”, enfatizó Guillaume Pothier.

 

Destaca que si bien la depuración omnisciente tiene características muy deseables, también tiene grandes desafíos: primero, registrar el historial completo de un programa hace su ejecución más lenta; segundo, la enorme cantidad de información registrada (varios gigabytes) debe ser procesada rápidamente; tercero, la navegación en esa información debe ser interactiva.

 

“A través de la investigación se permite, en particular, dar grandes avances en los puntos dos y tres, debido a que propusimos junto a Éric Tanter, quien fue mi profesor guía, un mecanismo de indexación y consultas eficiente y que garantiza tiempos de respuesta cortos” señaló Pothier.

 

Sobre su trabajo con el profesor Tanter, Guillaume Pothier señala que fue un apoyo importante, debido a que le dio una gran libertad con el tema, considerando que no tiene relación directa con su línea de investigación. “Me enseñó mucho sobre cómo comunicar mis resultados, tanto con la escritura de artículos como con la preparación de presentaciones, lo que es un aspecto fundamental de un Doctorado”, destacó.

 

Finalizando el nuevo Doctor en Ciencias mención Computación se refirió a sus proyecciones, destacando que actualmente trabaja “en un proyecto de gestión documental, y en un par de meses más debería trabajar en NIC Chile Research Labs, el laboratorio de investigación y desarrollo de NIC Chile”, concluyó.

 

Resumen “Towards Practical Omniscient Debugging”


La depuración representa una parte importante del costo del desarrollo de software. Un estudio del NIST (National Institute of Standards and Technology) del 2002 muestra que los errores de software tienen un costo enorme sobre la economía de EE.UU. y menciona que “los desarrolladores ya gastan aproximadamente el 80 por ciento de los costos en identificar y corregir defectos”. En un estudio empírico de “hazañas” de depuración, Marc Eisenstadt determinó que la principal causa de la dificultad de encontrar los errores es la distancia temporal y espacial entre la causa raíz y el síntoma del error; una vez que un error está precisamente localizado, arreglarlo es a menudo trivial. Desafortunadamente, la mayoría de los depuradores en uso hoy en día otorgan una ayuda muy limitada con respecto a la navegación temporal; los programadores deben frecuentemente simular mentalmente la ejecución de sus programas.

 

Los depuradores omniscientes mejoran de sobremanera esa situación, permitiendo a los programadores navegar fácilmente hacia adelante y hacia atrás en el historial de ejecución de un programa, así como inmediatamente encontrar la causa raíz de los errores gracias a vínculos causales que pueden ser atravesados hacia atrás en el tiempo. Por lo tanto, un depurador omnisciente puede tener un gran impacto sobre la eficiencia del proceso de desarrollo.

 

La depuración omnisciente no es, desde luego, una idea nueva: el primer depurador omnisciente, EXDAMS , fue creado en el 1969. Sin embargo, a pesar de las numerosas propuestas que se han hecho desde entonces, los depuradores omniscientes todavía no forman parte del típico ambiente de desarrollo. Esto se debe a que existen desafíos prácticos importantes para implementar depuradores omniscientes: la cantidad de información que se debe manejar para poder reconstituir el historial completo de ejecución de un programa es enorme, y la captura misma de este historial, o huella de ejecución, hace más lenta la ejecución del programa. Existe también un desafío adicional, aunque no es propio de la depuración omnisciente: el uso de nuevos paradigmas de programación (ej. la programación por aspectos) dificulta más la depuración ya que hacen más borrosa la correspondencia estructural entre el código fuente y lo que finalmente se ejecuta.

 

En esta tesis presentamos soluciones que permiten acercarse a la realización de un depurador omnisciente utilizable en la práctica. Luego de una revisión del estado del arte, exponemos las tres direcciones que hemos explorado:

 

• Creación de dos procesos de indexación y consultas. El primer proceso está basado en la indexación exhaustiva de la huella de ejecución y es altamente escalable. El segundo proceso está basado en la obtención de resúmenes de bloques de la huella de ejecución, y aprovechando el determinismo de las mayoría de las computaciones.

 

• Construcción de un prototipo utilizable en la práctica, junto a un motor de base de datos escalable especializado para la depuración omnisciente.

 

• Extensión del prototipo para soportar la depuración de programas por aspectos.

 

 --
Comunicaciones DCC