Coevolving programs and unit tests from their specification

Coevolving programs and unit tests from their specification
复制标题

DOI:
10.1145/1321631.1321693
复制
发表时间:
2007-11
期刊:
Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering
影响因子:
--
通讯作者:
Andrea Arcuri;X. Yao
Andrea Arcuri;X. Yao
中科院分区:
其他
文献类型:
--
作者:
Andrea Arcuri;X. Yao

文献摘要

被引文献

相似文献

在实现一个程序之前编写一个正式的规格说明有助于发现系统需求的问题。例如,要求可能不完整和模糊。在软件开发周期的实现阶段,修复这些类型的错误是非常困难和昂贵的。虽然编写一个正式的规范通常比实现实际的代码更容易,但编写规范需要时间,而且通常更倾向于将这段时间用于实现。在本文中,我们第一次介绍了一个框架,可能会发展任何可能的通用程序从其规范。我们使用遗传程序设计来进化程序,同时我们利用规范来共同进化单元测试集。程序的奖励取决于它们没有失败的测试次数,而单元测试的奖励取决于它们使程序失败的次数。我们提出并分析了四个不同的问题上,这种新技术的成功应用。
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.