Fixing software bugs is a difficult and time-consuming process, accounting for up to 90% of the lifetime cost of a typical program. Because the number of defects outstrips the resources available for repairing them, most software is shipped with both known and unknown bugs. This research builds upon a novel, fully-automated method for repairing bugs in existing software, producing trustworthy repairs for real-world programs. The research will be broadly applicable, targeting large legacy applications with many testcases.

The technical focus of the work is a scalable and trustworthy technique to automatically repair program bugs. Program variants are evolved, using analogues of biological processes such as mutation, until one is found that both retains required functionality and avoids the defect. Thousands of standard software testcases, program invariants, mined specifications, and "fuzz" inputs are used to represent bugs, encode program requirements, and build trusted repairs. Empirical evaluations include an automated hardening scenario: programs and attacks against them are coevolved over time, simulating parts of the security arms race. Significant potential outcomes include: a scalable and trustworthy automated program repair methodology and freely available tools; advances in formal program analyses; significant efforts in outreach and education; and dissemination of the results.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
0954024
Program Officer
Sol J. Greenspan
Project Start
Project End
Budget Start
2010-09-01
Budget End
2015-08-31
Support Year
Fiscal Year
2009
Total Cost
$323,062
Indirect Cost
Name
University of Virginia
Department
Type
DUNS #
City
Charlottesville
State
VA
Country
United States
Zip Code
22904