Faculty of Engineering and Natural Sciences
FENS CS 551 SEMINARS
Automated Fault Localization
IBM T. J. Watson Research Center
Program debugging is a process of identifying and fixing bugs. At a high level, it consists of three steps: (1) observing symptoms, (2) identifying root causes, and (3) fixing and testing. Among these steps, identifying the root causes is the hardest, thus the most expensive, step of all. Developers often take a slice of the statements involved in a failure, hypothesize a set of potential causes in an ad hoc manner, and iteratively verify and refine their hypotheses until root causes are located. Obviously, this process can be quite tedious and time-consuming. In this talk, I’ll present two fundamentally different automated fault localization approaches that I have been working on for the last couple of years at IBM Research. Both of these approaches have the same ultimate goal that is to help developers quickly pinpoint the root causes of failures, but a different way to achieve it. The first automated fault localization approach I’ll introduce leverages time spectra (e.g., traces of method execution times) as abstractions for program executions. Time spectra have been traditionally used for performance debugging to detect “hotspots” in program code. By contrast, I use them in a novel way for functional correctness debugging by identifying pieces of program code that take a “suspicious” amount of time to execute. The second approach I’ll present leverages behavioral program models to localize faults. In this approach, rather than focusing on how a program behaves by analyzing its source code and/or execution traces, I focus on how the program should behave with respect to its behavioral model. I identify and validate the slices of the behavioral model, which, once implemented incorrectly in the program, can potentially lead to failures. Not only do I identify functional differences between the program and its model, but I also provide a ranked list of diagnoses which might explain (or be associated with) these differences. My empirical evaluations conducted on several real-life software systems strongly suggest that the proposed approaches can effectively narrow down the space of potential root causes for failures, which can in turn reduce the turn around time for fixes.
Short Bio: Cemal Yılmaz received the BS and MS degrees in computer engineering and information science from Bilkent University, Ankara, Turkey, in 1997 and 1999, respectively. In 2002 and 2005, he received the MS and PhD degrees in computer science from the University of Maryland, College Park, MD. He is currently a postdoctoral researcher at the IBM T. J. Watson Research Center, Hawthorne, NY. Dr. Yılmaz’s primary research area is software engineering. His broad research interest is on programmer productivity. He invents practical techniques and develops tools to help programmers create cheaper, better, faster, and more reliable software systems. In particular, Dr. Yılmaz’s research interests include, but not limited to: distributed, continuous quality assurance (a concept that he defined in his dissertation research), automated fault localization, performance debugging and runtime optimization, and highly configurable systems.
December 12, 2007, 13:40, FENS L055