CGenProg: Adaptation of cartesian genetic programming with migration and opposite guesses for automatic repair of software regression faults - Khalilian, Alireza; Baraani-Dastjerdi, Ahmad; Zamani, Bahman (Expert systems with applications, 2021)
•We propose CGenProg for automatic repair of software regression faults in Java programs.•We adapted and modified cartesian genetic programming as the core evolutionary algorithm.•We adapted biogeography-based optimization (migration) as the crossover.•We adapted opposition-based learning (opposite guesses) as the mutation. In the last decade, the research community has been actively working to develop the techniques that can automatically find a solution to a software fault, namely, automatic program repair (APR). As of today, a multitude of APR techniques has been proposed. The techniques could have effectively repaired a wide variety of fault classes. However, the development of effective APR techniques for software regression faults, which are prevalently occurred in the maintenance stage of the software lifecycle, have received little attention. By incorporating specific knowledge in the domain of software regression faults, we have developed a novel technique for automatic repair of software regression faults in Java programs, which we call CGenProg. To achieve this, we have extensively adapted and modified the original cartesian genetic programming (CGP), biogeography-based optimization (BBO), and opposition-based learning (OBL). The modified CGP serves us as the core evolutionary process while the modified BBO and OBL act as crossover and mutation, respectively. The significance of CGenProg is that it contributes to the solution of a practical problem faced by developers in the maintenance stage of the software lifecycle. For expert and intelligent systems, it extends what is known about the application of optimization algorithms in the context of APR. Further, it demonstrates a novel use of CGP, BBO, and OBL for automatic repair of software regression faults. To evaluate CGenProg, we have developed a prototype tool using the Java language. Then, we conducted experiments on several programs in Code4Bench where each program is released with multiple consecutive versions comprising software regression faults. In the experiments, CGenProg could repair 17 out of 30 faulty programs. We conclude that CGenProg proves relevant and effective for repairing software regression faults. The impact of this study is to incentivize researchers for further exploitation and adaptation of the wealth of existing metaheuristics to develop effective APR techniques for different fault classes.