TY - GEN
T1 - Automatically finding patches using genetic programming
AU - Weimer, Westley
AU - Nguyen, Thanh Vu
AU - Le Goues, Claire
AU - Forrest, Stephanie
PY - 2009/12/1
Y1 - 2009/12/1
N2 - Automatic program repair has been a longstanding goal in software engineering, yet debugging remains a largely manual process. We introduce a fully automated method for locating and repairing bugs in software. The approach works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices. Once a program fault is discovered, an extended form of genetic programming is used to evolve program variants until one is found that both retains required functionality and also avoids the defect in question. Standard test cases are used to exercise the fault and to encode program requirements. After a successful repair has been discovered, it is minimized using structural differencing algorithms and delta debugging. We describe the proposed method and report experimental results demonstrating that it can successfully repair ten different C programs totaling 63,000 lines in under 200 seconds, on average.
AB - Automatic program repair has been a longstanding goal in software engineering, yet debugging remains a largely manual process. We introduce a fully automated method for locating and repairing bugs in software. The approach works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices. Once a program fault is discovered, an extended form of genetic programming is used to evolve program variants until one is found that both retains required functionality and also avoids the defect in question. Standard test cases are used to exercise the fault and to encode program requirements. After a successful repair has been discovered, it is minimized using structural differencing algorithms and delta debugging. We describe the proposed method and report experimental results demonstrating that it can successfully repair ten different C programs totaling 63,000 lines in under 200 seconds, on average.
UR - http://www.scopus.com/inward/record.url?scp=70549112781&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=70549112781&partnerID=8YFLogxK
U2 - 10.1109/ICSE.2009.5070536
DO - 10.1109/ICSE.2009.5070536
M3 - Conference contribution
AN - SCOPUS:70549112781
SN - 9781424434527
T3 - Proceedings - International Conference on Software Engineering
SP - 364
EP - 374
BT - 2009 31st International Conference on Software Engineering - Proceedings, ICSE 2009
T2 - 2009 31st International Conference on Software Engineering, ICSE 2009
Y2 - 16 May 2009 through 24 May 2009
ER -