Testing and debugging are vital but notoriously difficult parts of the software-development process. Languages like C and C++, with weak type systems, exacerbate the problem by making it easy for programmers to introduce memory- and type-safety bugs. These bugs are hard to identify because the actual error and the symptom often seem to have no logical connection.

This research focuses on designing, implementing, and evaluating innovative new ways to identify, reproduce, and eliminate bugs. Questions addressed include: How to determine whether a program failure is due to a memory/type-safety bug, and in that case how to locate the buggy code (not just the code where the symptom occurs); given a failure that is not due to a memory/type-safety bug, how to reproduce that failure, and how to find the source of the problem.

One of the most creative aspects of the work is the combination of complementary techniques to achieve powerful synergies: dynamic memory type inference is combined with static program slicing to attack memory/type-safety bugs, while program slicing is paired with statistical bug identification to implement new algorithms for finding, reproducing, and repairing other kinds of bugs.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
0701957
Program Officer
Sol J. Greenspan
Project Start
Project End
Budget Start
2007-09-01
Budget End
2011-08-31
Support Year
Fiscal Year
2007
Total Cost
$600,000
Indirect Cost
Name
University of Wisconsin Madison
Department
Type
DUNS #
City
Madison
State
WI
Country
United States
Zip Code
53715