CGenProg: Adaptation of cartesian genetic programming with migration and opposite guesses for automatic repair of software regression faults

•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...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Expert systems with applications 2021-05, Vol.169, p.114503, Article 114503
Hauptverfasser: Khalilian, Alireza, Baraani-Dastjerdi, Ahmad, Zamani, Bahman
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:•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.
ISSN:0957-4174
1873-6793
DOI:10.1016/j.eswa.2020.114503