Co-evolving parasites improve simulated evolution as an optimization procedure
CNLS '89 Proceedings of the ninth annual international conference of the Center for Nonlinear Studies on Self-organizing, Collective, and Cooperative Phenomena in Natural and Artificial Computing Networks on Emergent computation
Adaptation in natural and artificial systems
Adaptation in natural and artificial systems
Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
Art of Software Testing
Solution concepts in coevolutionary algorithms
Solution concepts in coevolutionary algorithms
Search-based software test data generation: a survey: Research Articles
Software Testing, Verification & Reliability
Ideal Evaluation from Coevolution
Evolutionary Computation
Evolving modular recursive sorting algorithms
EuroGP'07 Proceedings of the 10th European conference on Genetic programming
On the automation of fixing software bugs
Companion of the 30th international conference on Software engineering
Multi-objective Improvement of Software Using Co-evolution and Smart Seeding
SEAL '08 Proceedings of the 7th International Conference on Simulated Evolution and Learning
Evolutionary repair of faulty software
Applied Soft Computing
Search based software engineering: techniques, taxonomy, tutorial
Empirical Software Engineering and Verification
Search-based software engineering: Trends, techniques and applications
ACM Computing Surveys (CSUR)
An orchestrated survey of methodologies for automated software test case generation
Journal of Systems and Software
Co-evolutionary automatic programming for software development
Information Sciences: an International Journal
Hi-index | 0.00 |
Writing a formal specification before implementing a program helps to find problems with the system requirements. The requirements might be for example incomplete and ambiguous. Fixing these types of errors is very difficult and expensive during the implementation phase of the software development cycle. Although writing a formal specification is usually easier than implementing the actual code, writing a specification requires time, and often it is preferred, instead, to use this time on the implementation. In this paper we introduce for the first time a framework that might evolve any possible generic program from its specification. We use the Genetic Programming to evolve the programs, and at the same time we exploit the specifications to coevolve sets of unit tests. Programs are rewarded on how many tests they do not fail, whereas the unit tests are rewarded on how many programs they make fail. We present and analyse four different problems on which this novel technique is successfully applied.