Concepedia

TLDR

This paper presents GenProg, an automated method for repairing defects in legacy programs without requiring formal specifications, annotations, or special coding practices. GenProg uses extended genetic programming to evolve a variant that preserves required functionality while eliminating a defect, guided by existing test suites, and then applies structural differencing and delta debugging to reduce the changes to a minimal repair. Experiments on 16 programs totaling 1.25 M lines of C code and 120 K lines of module code across eight defect classes demonstrate that GenProg successfully repairs defects in an average of 357 seconds, producing evolved programs that are not fragile input memorizations and do not cause serious functional degradation.

Abstract

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.

References

YearCitations

Page 1