Automatic tests allow software developers to detect a considerable amount of bugs before a software is released. However, the step after the detection of a bug, i.e. debugging, is still done manually in most software companies. This requires many man-hours of expensive developers. While there exist numerous academic approaches to ease the debugging process, these approaches are rarely used in practice. Therefore, automatic debugging has the potential to reduce time and costs of the software development cycle.
This project aims to close the gap between academic research and debugging in practice. We will focus our research on the improvement of existing academic debugging techniques (in particular Slicing, Model-based Software Debugging, and Spectrum-based Fault Localization) in order to prepare them for use in practice. Thereby, we will address the scalability, accuracy and practicability of the approaches. The project is divided into three phases: the assessment phase, the improvement phase, and the integration phase.
In the assessment phase, we examine the reasons for the lack of acceptance of academic debugging approaches in practice. This phase includes observations of software developers when they are debugging a program and follow-up interviews. This observational study is used to develop hypotheses about the current state of debugging in practice. The obtained hypotheses are tested with the data we will collect through a large-scale online survey. We will furthermore identify the weaknesses of the individual debugging approaches and identify possible improvements by laboratory experiments. These experiments include both evaluations of approaches with existing benchmarks and user studies where participants have to use the different debugging approaches to find bugs in given programs.
In the next phase, we will use the insights gained from the assessment phase to improve the individual debugging approaches. There are two particularly interesting research questions in this project phase: (1) Can the combination of debugging approaches help to improve the overall debugging experience? (2) Is it possible to automatically select the best suited debugging method for a given program and test suite?
In the third phase, we will focus on the practical integration of the approaches into development environments and processes. Essential parts of this phase are (1) the integration of the academic debugging approaches into IDEs (e.g. Eclipse), (2) the co-evolution of tests for a given debugging program, and (3) the implementation of additional debugging support (e.g. Cause-Effect-Chains). We plan to conduct extensive laboratory experiments to evaluate the usefulness of the developed debugging tools.