ABSTRACT
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.
- A. Agapitos and S. M. Lucas. Evolving modular recursive sorting algorithms. In Proceedings of the European Conference on Genetic Programming (EuroGP), pages 301--310, 2007. Google ScholarDigital Library
- S. G. Ficici. Solution Concepts in Coevolutionary Algorithms. PhD thesis, Brandeis University, 2004. Google ScholarDigital Library
- W. D. Hillis. Co-evolving parasites improve simulated evolution as an optimization procedure. Physica D, 42(1--3):228--234, 1990. Google ScholarDigital Library
- J. H. Holland. Adaptation in Natural and Artificial Systems, second edition. MIT Press, Cambridge, 1992. Google ScholarDigital Library
- E. D. Jong and J. Pollack. Ideal evaluation from coevolution. Evolutionary Computation, 12(2):159--192, 2004. Google ScholarDigital Library
- J. R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection. The MIT Press, 1992. Google ScholarDigital Library
- S. Luke. Issues in Scaling Genetic Programming: Breeding Strategies, Tree Generation, and Code Bloat. PhD thesis, University of Maryland, 2000.Google Scholar
- P. McMinn. Search-based software test data generation: A survey. Software Testing, Verification and Reliability, 14(2):105--156, June 2004. Google ScholarDigital Library
- G. Myers. The Art of Software Testing. Wiley, New York, 1979. Google ScholarDigital Library
- J. Paredis. Coevolving cellular automata: Be aware of the red queen. In T. Bäck, editor, Proceedings of the Seventh International Conference on Genetic Algorithms (ICGA97), San Francisco, CA, 1997. Morgan Kaufmann.Google Scholar
- C. Rich and R. C. Waters. Automatic programming: myths and prospects. Computer, 21(8):40--51, 1988. Google ScholarDigital Library
- N. J. Tracey. A Search-Based Automated Test Data Generation Framework for Safety-Critical Software. PhD thesis, University of York, 2000.Google Scholar
Index Terms
- Coevolving programs and unit tests from their specification
Recommendations
Representing object models as theories
KBSE '95: Proceedings of The 10th Knowledge-Based Software Engineering ConferenceAlthough techniques for using formal specifications have been progressing, methods for developing formal specifications themselves have improved little. To alleviate this problem, we propose a parallel refinement approach to specification acquisition ...
Automatic Derivation of Formal Software Specifications from Informal Descriptions
SPECIFIER, an interactive system which derives formal specifications of data types and programs from their informal descriptions, is described. The process of deriving formal specifications is viewed as a problem-solving process. The system uses common ...
Generating Proof Obligation to Verify Object-Z Specification
ICSEA '06: Proceedings of the International Conference on Software Engineering AdvancesA formal specification is usable only if it is consistent or non-conflictive. In traditional programming languages, the consistency checking for program is performed at run time. But formal specifications are not executable in general. The syntax ...
Comments