Advanced Techniques for Algorithmic Debugging

Algorithmic Debugging (a.k.a. Declarative Debugging) is a semi-automatic debugging technique that allows the programmer to isolate the code where a bug is located without the need to see the source code. To do so, the programmer answers the questions performed by the debugger until it finds the bug...

Descripción completa

Detalles Bibliográficos
Autor: Insa Cabrera, David
Tipo de recurso: tesis de maestría
Fecha de publicación:2011
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglés
OAI Identifier:oai:riunet.upv.es:10251/15830
Acceso en línea:https://riunet.upv.es/handle/10251/15830
Access Level:acceso abierto
Palabra clave:Software engineering
Algorithmic debugging
Divide and query
LENGUAJES Y SISTEMAS INFORMATICOS
Máster Universitario en Ingeniería del Software, Métodos Formales y Sistemas de Información-Màster Universitari en Enginyeria del Programari, Mètodes Formals i Sistemes D&apos
Informació
Descripción
Sumario:Algorithmic Debugging (a.k.a. Declarative Debugging) is a semi-automatic debugging technique that allows the programmer to isolate the code where a bug is located without the need to see the source code. To do so, the programmer answers the questions performed by the debugger until it finds the bug and shows it to the user. These questions are chosen by the debugger using a strategy, and thus the reduction of the number of questions is a main objective of this debugging technique. In practice, the strategy that performs less questions has been Divide & Query (D&Q for short) since its definition 30 years ago. This strategy has been considered optimal in the worst case. In this work we show that D&Q is not optimal and we introduce two new strategies that have proved to be better. One of them is a new version of D&Q where its behavior is improved in some situations. While the other is the first version of a new strategy that is optimal in the worst case. Moreover, we present new techniques that improve the efficiency of Algorithmic Debugging, allowing the debugger to speed-up the questions asked to the user and to reduce the number of questions performed regardless of the used strategy.