A novel co-evolutionary approach to automatic software bug fixing

Many tasks in software engineering are very expensive, and that has led the investigation to how to automate them. In particular, software testing can take up to half of the resources of the development of new software. Although there has been a lot of work on automating the testing phase, fixing a bug after its presence has been discovered is still a duty of the programmers. In this paper we propose an evolutionary approach to automate the task of fixing bugs. This novel evolutionary approach is based on co-evolution, in which programs and test cases co-evolve, influencing each other with the aim of fixing the bugs of the programs. This competitive co-evolution is similar to what happens in nature for predators and prey. The user needs only to provide a buggy program and a formal specification of it. No other information is required. Hence, the approach may work for any implementable software. We show some preliminary experiments in which bugs in an implementation of a sorting algorithm are automatically fixed.

[1]  Andreas Zeller Automated Debugging: Are We Close , 2001, Computer.

[2]  Mark Harman,et al.  How to Overcome the Equivalent Mutant Problem and Achieve Tailored Selective Mutation Using Co-evolution , 2004, GECCO.

[3]  J. Pollack,et al.  Challenges in coevolutionary learning: arms-race dynamics, open-endedness, and medicocre stable states , 1998 .

[4]  Markus Stumptner,et al.  Model-Based Program Debugging and Repair , 1996, IEA/AIE.

[5]  Sean Luke,et al.  Issues in Scaling Genetic Programming: Breeding Strategies, Tree Generation, and Bloat , 2000 .

[6]  Simon M. Lucas,et al.  Evolving Modular Recursive Sorting Algorithms , 2007, EuroGP.

[7]  Xin Yao,et al.  Coevolving programs and unit tests from their specification , 2007, ASE.

[8]  Michael O'Neill,et al.  Grammatical evolution - evolutionary automatic programming in an arbitrary language , 2003, Genetic programming.

[9]  Sean Luke,et al.  A Comparison of Bloat Control Methods for Genetic Programming , 2006, Evolutionary Computation.

[10]  Thomas H. Cormen,et al.  Introduction to algorithms [2nd ed.] , 2001 .

[11]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[12]  Nigel James Tracey,et al.  A search-based automated test-data generation framework for safety-critical software , 2000 .

[13]  David J. Montana,et al.  Strongly Typed Genetic Programming , 1995, Evolutionary Computation.

[14]  Richard K. Belew,et al.  New Methods for Competitive Coevolution , 1997, Evolutionary Computation.

[15]  McMinnPhil Search-based software test data generation: a survey , 2004 .

[16]  Kenneth E. Kinnear,et al.  Generality and Difficulty in Genetic Programming: Evolving a Sort , 1993, ICGA.

[17]  John H. Holland,et al.  Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence , 1992 .

[18]  Andrea Arcuri,et al.  On the automation of fixing software bugs , 2008, ICSE Companion '08.

[19]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[20]  Gregory Tassey,et al.  Prepared for what , 2007 .

[21]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[22]  Westley Weimer,et al.  Patches as better bug reports , 2006, GPCE '06.

[23]  W. Daniel Hillis,et al.  Co-evolving parasites improve simulated evolution as an optimization procedure , 1990 .

[24]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[25]  Steven P. Reiss,et al.  Fault localization with nearest neighbor queries , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[26]  Clinton Jeffery,et al.  A framework for automatic debugging , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[27]  Peter Nordin,et al.  Evolving Turing-Complete Programs for a Register Machine with Self-modifying Code , 1995, ICGA.

[28]  Sigrid Eldh Software Testing Techniques , 2007 .

[29]  Riccardo Poli,et al.  Foundations of Genetic Programming , 1999, Springer Berlin Heidelberg.