TY - JOUR
T1 - GenProg
T2 - A generic method for automatic software repair
AU - Le Goues, Claire
AU - Nguyen, Thanh Vu
AU - Forrest, Stephanie
AU - Weimer, Westley
N1 - Funding Information:
The authors thank David E. Evans, Mark Harman, John C. Knight, Anh Nguyen-Tuong, and Martin Rinard for insightful discussions. Stephanie Forrest and Westley Weimer gratefully acknowledge the support of the US National Science Foundation (grant CCF-0905236), US Air Force Office of Scientific Research grant FA8750-11-2-0039 and MURI grant FA9550-07-1-0532, and US Defense Advanced Research Projects Agency (DARPA) grant FA8650-10-C-7089. Stephanie Forrest acknowledges the partial support of CCF-0621900 and CCR-0331580; Westley Weimer acknowledges the partial support of CCF-0954024 and CNS-0716478.
PY - 2012
Y1 - 2012
N2 - This paper describes GenProg, an automated method for repairing defects in off-the-shelf, legacy programs without formal specifications, program annotations, or special coding practices. GenProg uses an extended form of genetic programming to evolve a program variant that retains required functionality but is not susceptible to a given defect, using existing test suites to encode both the defect and required functionality. Structural differencing algorithms and delta debugging reduce the difference between this variant and the original program to a minimal repair. We describe the algorithm and report experimental results of its success on 16 programs totaling 1.25 M lines of C code and 120K lines of module code, spanning eight classes of defects, in 357 seconds, on average. We analyze the generated repairs qualitatively and quantitatively to demonstrate that the process efficiently produces evolved programs that repair the defect, are not fragile input memorizations, and do not lead to serious degradation in functionality.
AB - This paper describes GenProg, an automated method for repairing defects in off-the-shelf, legacy programs without formal specifications, program annotations, or special coding practices. GenProg uses an extended form of genetic programming to evolve a program variant that retains required functionality but is not susceptible to a given defect, using existing test suites to encode both the defect and required functionality. Structural differencing algorithms and delta debugging reduce the difference between this variant and the original program to a minimal repair. We describe the algorithm and report experimental results of its success on 16 programs totaling 1.25 M lines of C code and 120K lines of module code, spanning eight classes of defects, in 357 seconds, on average. We analyze the generated repairs qualitatively and quantitatively to demonstrate that the process efficiently produces evolved programs that repair the defect, are not fragile input memorizations, and do not lead to serious degradation in functionality.
KW - Automatic programming
KW - corrections
KW - testing and debugging
UR - http://www.scopus.com/inward/record.url?scp=84856746279&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84856746279&partnerID=8YFLogxK
U2 - 10.1109/TSE.2011.104
DO - 10.1109/TSE.2011.104
M3 - Article
AN - SCOPUS:84856746279
SN - 0098-5589
VL - 38
SP - 54
EP - 72
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 1
M1 - 6035728
ER -