Using Genetic Programming for Software Reliability

Software reliability methods, such as testing and model checking, are well integrated into the software development process. They are complemented by safety enforcement mechanisms such as run time verification. However, even with a wealth of techniques and methodologies for developing reliable systems, it is still quite challenging to eliminate all the bugs from software systems. One of the reasons is the magnitude of software systems, having to handle a very large number of use cases and possible interactions with an environment or between concurrent components. Genetic algorithms and programming provide a powerful heuristic search that involves randomization based on operators that simulate natural reproduction. We show various ways where genetic algorithms and programming can be integrated with formal methods to enhance software reliability.

[1]  John R. Koza,et al.  Human-competitive results produced by genetic programming , 2010, Genetic Programming and Evolvable Machines.

[2]  Gadi Taubenfeld,et al.  Automatic Discovery of Mutual Exclusion Algorithms , 2003, DISC.

[3]  Colin G. Johnson,et al.  Genetic Programming with Fitness Based on Model Checking , 2007, EuroGP.

[4]  Edsger W. Dijkstra,et al.  Solution of a problem in concurrent programming control , 1965, CACM.

[5]  Doron A. Peled,et al.  Synthesizing Solutions to the Leader Election Problem Using Model Checking and Genetic Programming , 2009, Haifa Verification Conference.

[6]  O. Kupermann,et al.  Synthesizing distributed systems , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[7]  Edmund M. Clarke,et al.  State space reduction using partial order techniques , 1999, International Journal on Software Tools for Technology Transfer.

[8]  Mark Harman,et al.  Software engineering using metaheuristic innovative algorithms: workshop report , 2001, Inf. Softw. Technol..

[9]  Doron A. Peled,et al.  Model Checking-Based Genetic Programming with an Application to Mutual Exclusion , 2008, TACAS.

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

[11]  José Antonio Pérez,et al.  An order‐based algorithm for implementing multiparty synchronization , 2004, Concurr. Pract. Exp..

[12]  Doron A. Peled,et al.  Genetic Programming and Model Checking: Synthesizing New Mutual Exclusion Algorithms , 2008, ATVA.

[13]  Doron A. Peled,et al.  Code Mutation in Verification and Automatic Code Correction , 2010, TACAS.

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

[15]  Kumar Chellapilla,et al.  Evolving computer programs without subtree crossover , 1997, IEEE Trans. Evol. Comput..

[16]  Doron A. Peled,et al.  MCGP: A Software Synthesis Tool Based on Model Checking and Genetic Programming , 2010, ATVA.

[17]  Edmund M. Clarke,et al.  Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic , 1981, Logic of Programs.

[18]  Pierre Wolper,et al.  Synthesis of Communicating Processes from Temporal Logic Specifications , 1981, TOPL.

[19]  Krzysztof R. Apt,et al.  Limits for Automatic Verification of Finite-State Concurrent Systems , 1986, Inf. Process. Lett..

[20]  Sarfraz Khurshid,et al.  Exploring very large state spaces using genetic algorithms , 2004, International Journal on Software Tools for Technology Transfer.

[21]  Zohar Manna,et al.  How to cook a temporal proof system for your pet language , 1983, POPL '83.

[22]  Radu Grosu,et al.  Monte Carlo Model Checking , 2005, TACAS.

[23]  Amir Pnueli,et al.  Distributed reactive systems are hard to synthesize , 1990, Proceedings [1990] 31st Annual Symposium on Foundations of Computer Science.

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