CS Faculty Candidate Colloquium
Friday **Special time and location** February 8 10:45 - 11:50 AM Kelley 1007 Andrew Ko EECS Colloquium: Computer Science Faculty Candidate Ph.D. Candidate Carnegie Mellon University - School of Computer Science Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior Most software undergoes a brief period of rapid development, followed by a much longer period of maintenance and adaptation. As a result, software developers spend most of their time exploring a system's underlying source code to determine the parts of the system that are relevant to their tasks. Because these parts are often distributed throughout a system's modules, and because they can interact in complex and unpredictable ways, this process of understanding a program's execution can be extremely difficult. The primary cause of this difficulty is that developers must answer their questions about a system's behavior by guessing. For example, a developer wondering, "Why didn't this button do anything after I pressed it?" must form an answer such as "Maybe because its event handler wasn't called" and then use breakpoint debuggers, print statements, and other low-level tools to verify the explanation. Not only is this process poorly supported by current tools, but worse yet, there are many potential explanations for a system's behavior, so developers rarely formulate a valid explanation on the first attempt. To address this problem, I present a new kind of program understanding tool called a Whyline, which allows a developer to select "why did" and "why didn't" questions directly about the symptoms of a system's behavior. In response, the Whyline determines which parts of the system and its execution are related to the symptom in question, while also identifying false assumptions the developer might have about what occurred during the execution of the program. By using this approach, developers need not guess about potential causes of program behavior: they simply point to some perceptible feature of the faulty behavior and the system identifies the relevant code. Early prototypes of the Whyline for a simplified educational programming language reduced debugging time by a factor of 8. I have since generalized the Whyline to support Java programs with textual and graphical output, inventing several new incremental algorithms to identify program-specific output, derive output-relevant questions, and answer questions about a variety of output. A preliminary study of the Java Whyline found that even people with no program experience using the Whyline could isolate a bug 3 times faster than experts with conventional debugging tools. Biography: Andrew Ko is a Ph.D. candidate at the Human-Computer Interaction Institute at Carnegie Mellon University's School of Computer Science, working with professor Brad Myers. His research interests include social and cognitive factors in software engineering, end user software engineering, user interface software and technology, and programming language design. He has published articles in all of these areas, receiving best paper awards at top conferences such as the International Conference on Software Engineering (ICSE) and the ACM Conference on Human Factors in Computing (CHI), as well as extensive press on the Whyline, a novel debugging tool that supports questions about program output. In 2004, he was also awarded both NSF and NDSEG research fellowships in support of his Ph.D. research. He received Honors BS degrees in Computer Science and Psychology from Oregon State University in 2002.
_______________________________________________ Colloquium mailing list [email protected] https://secure.engr.oregonstate.edu/mailman/listinfo/colloquium
