Tuesday, March 6, 2007
4:15 pm
B17 Upson Hall

Computer Science
Spring 2007

Manu Sridharan
UC Berkeley

Practical Analysis Tools for Large-Scale Software Development


Program analysis tools are starting to change how real software is developed: verifiers can now eliminate certain complex bugs, and automatic refactoring tools can greatly simplify code cleanup. Nevertheless, writing robust large-scale software remains a challenge, as greater use of component frameworks complicates debugging and program understanding.  Developers need more powerful programming tools to combat this complexity and produce reliable code.

This talk will present two techniques---refinement-based pointer analysis and thin slicing---that enable powerful new tools for debugging and understanding large-scale software.  Our refinement-based pointer analysis is the first to compute precise answers in interactive time, allowing tools to handle previously inscrutable program behaviors interactively.  Thin slicing is the first technique to give usable answers to code relevance questions---e.g., "What code might have caused this crash?"---a long-standing challenge for analysis tools.  I will conclude by describing new tools enabled by the two techniques.