Gin: genetic improvement research made easy

Genetic improvement (GI) is a young field of research on the cusp of transforming software development. GI uses search to improve existing software. Researchers have already shown that GI can improve human-written code, ranging from program repair to optimising run-time, from reducing energy-consumption to the transplantation of new functionality. Much remains to be done. The cost of re-implementing GI to investigate new approaches is hindering progress. Therefore, we present Gin, an extensible and modifiable toolbox for GI experimentation, with a novel combination of features. Instantiated in Java and targeting the Java ecosystem, Gin automatically transforms, builds, and tests Java projects. Out of the box, Gin supports automated test-generation and source code profiling. We show, through examples and a case study, how Gin facilitates experimentation and will speed innovation in GI.

[1]  Westley Weimer,et al.  Software mutational robustness , 2012, Genetic Programming and Evolvable Machines.

[2]  Matias Martinez,et al.  ASTOR: a program repair library for Java (demo) , 2016, ISSTA.

[3]  Mark Harman,et al.  Evolving a CUDA kernel from an nVidia template , 2010, IEEE Congress on Evolutionary Computation.

[4]  Gabriela Ochoa,et al.  Visualising the Search Landscape of the Triangle Program , 2017, EuroGP.

[5]  Todd M. Austin,et al.  The SimpleScalar tool set, version 2.0 , 1997, CARN.

[6]  P. Parrend,et al.  Software is Not Fragile , 2016 .

[7]  Mark Harman,et al.  Applying Genetic Improvement to MiniSAT , 2013, SSBSE.

[8]  Claire Le Goues,et al.  A novel fitness function for automated program repair based on source code checkpoints , 2018, GECCO.

[9]  Shin Yoo,et al.  Comparing line and AST granularity level for program repair using PyGGI , 2018, GI@ICSE.

[10]  Mark Harman,et al.  Automated software transplantation , 2015, ISSTA.

[11]  Eric Schulte,et al.  Neutral Networks of Real-World Programs and their Application to Automated Software Evolution , 2014 .

[12]  Olivier Temam,et al.  MicroLib: A Case for the Quantitative Comparison of Micro-Architecture Mechanisms , 2004, 37th International Symposium on Microarchitecture (MICRO-37'04).

[13]  Gang Huang,et al.  Identifying Patch Correctness in Test-Based Program Repair , 2017, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[14]  Claire Le Goues,et al.  Representations and operators for improving evolutionary software repair , 2012, GECCO '12.

[15]  John R. Woodward,et al.  Exploring Fitness and Edit Distance of Mutated Python Programs , 2017, EuroGP.

[16]  Sean Luke,et al.  ECJ then and now , 2017, GECCO.

[17]  Mark Harman,et al.  Approximate Oracles and Synergy in Software Energy Search Spaces , 2019, IEEE Transactions on Software Engineering.

[18]  Wolfgang Banzhaf,et al.  ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming , 2017, IEEE Transactions on Software Engineering.

[19]  Gordon Fraser,et al.  EvoSuite: automatic test suite generation for object-oriented software , 2011, ESEC/FSE '11.

[20]  Yuriy Brun,et al.  Is the cure worse than the disease? overfitting in automated program repair , 2015, ESEC/SIGSOFT FSE.

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

[22]  John R. Woodward,et al.  Fixing bugs in your sleep: how genetic improvement became an overnight success , 2017, GECCO.

[23]  Edgar Galván López,et al.  locoGP: Improving Performance by Genetic Programming Java Source Code , 2015, GECCO.

[24]  Mark Harman,et al.  Improving CUDA DNA Analysis Software with Genetic Programming , 2015, GECCO.

[25]  Westley Weimer,et al.  Neutrality and epistasis in program space , 2018, GI@ICSE.

[26]  Claire Le Goues,et al.  GenProg: A Generic Method for Automatic Software Repair , 2012, IEEE Transactions on Software Engineering.

[27]  Robert C. Seamans,et al.  The Business of AI Startups , 2018 .

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

[29]  Mark Harman,et al.  Multi Objective Higher Order Mutation Testing with Genetic Programming , 2009, 2009 Testing: Academic and Industrial Conference - Practice and Research Techniques.

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

[31]  Mark Harman,et al.  Genetic Improvement of Software: A Comprehensive Survey , 2018, IEEE Transactions on Evolutionary Computation.

[32]  Yuan Yu,et al.  TensorFlow: A system for large-scale machine learning , 2016, OSDI.