Co-evolutionary automatic programming for software development

Andrea ARCURI, Xin YAO

Research output: Journal PublicationsJournal Article (refereed)peer-review

37 Citations (Scopus)


Since the 1970s the goal of generating programs in an automatic way (i.e., Automatic Programming) has been sought. A user would just define what he expects from the program (i.e., the requirements), and it should be automatically generated by the computer without the help of any programmer. Unfortunately, this task is much harder than expected. Although transformation methods are usually employed to address this problem, they cannot be employed if the gap between the specification and the actual implementation is too wide. In this paper we introduce a novel conceptual framework for evolving programs from their specification. We use genetic programming to evolve the programs, and at the same time we exploit the specification to co-evolve sets of unit tests. Programs are rewarded by how many tests they do not fail, whereas the unit tests are rewarded by how many programs they make to fail. We present and analyse seven different problems on which this novel technique is successfully applied. © 2013 Elsevier Inc. All rights reserved.
Original languageEnglish
Pages (from-to)412-432
Number of pages21
JournalInformation Sciences
Early online date5 Jan 2010
Publication statusPublished - Feb 2014
Externally publishedYes

Bibliographical note

The authors are grateful to Rami Bahsoon, David Robert White, Muhammad Zohaib Iqbal, Thomas Miconi, Damien Jade Duff, Per Kristian Lehre and Ramón Sagarna for insightful discussions. This work was initially supported by an EPSRC Grant ( EP/D052785/1 ).


  • Automatic programming
  • Automatic refinement
  • Co-evolution
  • Genetic programming
  • Software testing


Dive into the research topics of 'Co-evolutionary automatic programming for software development'. Together they form a unique fingerprint.

Cite this