A General-Purpose Framework for Genetic Improvement

Genetic Improvement is an evolutionary-based technique. Despite its relatively recent introduction, several successful applications have been already reported in the scientific literature: it has been demonstrated able to modify the code complex programs without modifying their intended behavior; to increase performance with regards to speed, energy consumption or memory use. Some results suggest that it could be also used to correct bugs, restoring the software’s intended functionalities. Given the novelty of the technique, however, instances of Genetic Improvement so far rely upon ad-hoc, language-specific implementations. In this paper, we propose a general framework based on the software engineering’s idea of mutation testing coupled with Genetic Programming, that can be easily adapted to different programming languages and objective. In a preliminary evaluation, the framework efficiently optimizes the code of the md5 hash function in C, Java, and Python.

[1]  Anna Dereziska,et al.  Operators for Mutation Testing of Python Programs , 2014 .

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

[3]  Henri Pierreval,et al.  Using genetic programming and simulation to learn how to dynamically adapt the number of cards in reactive pull systems , 2015, Expert Syst. Appl..

[4]  Giovanni Squillero,et al.  A Framework for Automated Detection of Power-related Software Errors in Industrial Verification Processes , 2010, J. Electron. Test..

[5]  Anna Derezinska,et al.  Improving Mutation Testing Process of Python Programs , 2015, CSOC.

[6]  Justyna Petke,et al.  Reducing Energy Consumption Using Genetic Improvement , 2015, GECCO.

[7]  Mark Harman,et al.  An Analysis and Survey of the Development of Mutation Testing , 2011, IEEE Transactions on Software Engineering.

[8]  Doina Bucur,et al.  The impact of topology on energy consumption for collection tree protocols: An experimental assessment through evolutionary computation , 2014, Appl. Soft Comput..

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

[10]  Fan Wu,et al.  Deep Parameter Optimisation , 2015, GECCO.

[11]  Harry T. Larson,et al.  On Whistle Blowing , 1971, Computer.

[12]  Anna Derezinska,et al.  Quality Evaluation of Object-Oriented and Standard Mutation Operators Applied to C# Programs , 2012, TOOLS.

[13]  Giovanni Squillero,et al.  Evolving assembly programs: how games help microprocessor validation , 2005, IEEE Transactions on Evolutionary Computation.

[14]  A. Jefferson Offutt,et al.  MuJava: an automated class mutation system , 2005, Softw. Test. Verification Reliab..

[15]  Ronald L. Rivest,et al.  The MD5 Message-Digest Algorithm , 1992, RFC.

[16]  K. N. King,et al.  A fortran language system for mutation‐based software testing , 1991, Softw. Pract. Exp..

[17]  Westley Weimer,et al.  Repairing COTS Router Firmware without Access to Source Code or Test Suites: A Case Study in Evolutionary Software Repair , 2015, GECCO.

[18]  Giovanni Squillero,et al.  Artificial evolution in computer aided design: from the optimization of parameters to the creation of assembly programs , 2011, Computing.

[19]  Giovanni Squillero,et al.  A Memetic Approach to Bayesian Network Structure Learning , 2013, EvoApplications.

[20]  Mark Harman,et al.  Using Genetic Improvement and Code Transplants to Specialise a C++ Program to a Problem Class , 2014, EuroGP.

[21]  Giovanni Squillero,et al.  MicroGP—An Evolutionary Assembly Program Generator , 2005, Genetic Programming and Evolvable Machines.

[22]  Mark Harman,et al.  Ieee Transactions on Evolutionary Computation 1 , 2022 .