TY - GEN
T1 - A genetic programming approach to automated software repair
AU - Forrest, Stephanie
AU - Nguyen, Thanhvu
AU - Weimer, Westley
AU - Le Goues, Claire
PY - 2009
Y1 - 2009
N2 - Genetic programming is combined with program analysis methods to repair bugs in off-the-shelf legacy C programs. Fitness is defined using negative test cases that exercise the bug to be repaired and positive test cases that encode program requirements. Once a successful repair is discovered, structural differencing algorithms and delta debugging methods are used to minimize its size. Several modifications to the GP technique contribute to its success: (1) genetic operations are localized to the nodes along the execution path of the negative test case; (2) high-level statements are represented as single nodes in the program tree; (3) genetic operators use existing code in other parts of the program, so new code does not need to be invented. The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.
AB - Genetic programming is combined with program analysis methods to repair bugs in off-the-shelf legacy C programs. Fitness is defined using negative test cases that exercise the bug to be repaired and positive test cases that encode program requirements. Once a successful repair is discovered, structural differencing algorithms and delta debugging methods are used to minimize its size. Several modifications to the GP technique contribute to its success: (1) genetic operations are localized to the nodes along the execution path of the negative test case; (2) high-level statements are represented as single nodes in the program tree; (3) genetic operators use existing code in other parts of the program, so new code does not need to be invented. The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.
KW - Genetic programming
KW - Software engineering
KW - Software repair
UR - http://www.scopus.com/inward/record.url?scp=72749113538&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=72749113538&partnerID=8YFLogxK
U2 - 10.1145/1569901.1570031
DO - 10.1145/1569901.1570031
M3 - Conference contribution
AN - SCOPUS:72749113538
SN - 9781605583259
T3 - Proceedings of the 11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009
SP - 947
EP - 954
BT - Proceedings of the 11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009
T2 - 11th Annual Genetic and Evolutionary Computation Conference, GECCO-2009
Y2 - 8 July 2009 through 12 July 2009
ER -