Técnicas basadas en Búsqueda y Aprendizaje para Inferencia de Especificaciones" | Defensa de Tesis del doctorado en Física

11 Abril 2022 - Google Meet Estudiantes

Defensa de tesis para optar al grado de Doctor en Ciencias de la Computación a cargo del Lic. Facundo Joaquín MOLINA

Director: Dr. Nazareno AGUIRRE

Tribunal Especial

Titulares:

Dr. Jorge Andrés DIAZ PACE (UNICEN)

Dr. Diego David GARBERVETSKY (FCEYN - UBA)

Dra. Laura BRANDAN BRIONES (FAMAF)

Meet: https://meet.google.com/nfo-iujs-euo

Resumen: La confiabilidad del software es una preocupación central en el proceso de construcción de software y, por lo tanto, una componente fundamental en la definición de la calidad del software. Analizar la confiabilidad del software requiere una especificación del comportamiento esperado del software bajo análisis. Desafortunadamente, el software muchas veces carece de tales especificaciones. Este problema afecta negativamente, y de manera sustancial, la capacidad de análisis del software con respecto a su confiabilidad. Por lo tanto, encontrar técnicas novedosas para capturar el comportamiento esperado del software en forma de especificaciones nos permitiría explotar a éstas en tareas de análisis de confiabilidad automático. En esta tesis presentamos técnicas basadas en búsqueda y aprendizaje para inferir especificaciones que permitan distinguir los comportamientos correctos de los comportamientos incorrectos del software. En esta tesis, la referencia en relación a comportamiento correcto e incorrecto será el propio software, es decir, las especificaciones serán producidas a partir del comportamiento real del software. El objetivo final es el de utilizar las especificaciones obtenidas para mejorar tareas de análisis de programas y reducir el esfuerzo de los desarrolladores en la construcción de especificaciones. Los enfoques que presentamos, basados principalmente en técnicas de aprendizaje como redes neuronales y computación evolutiva, son capaces de producir especificaciones que pueden capturar más detalladamente comportamientos de software complejo, en comparación con técnicas relacionadas, y también lograr una mejora considerable en una serie de tareas de análisis de programas como bug finding, ejecución simbólica y verificación, entre otras.