中文

Java 中性程序变体探索之旅

软件工程 2019-07-01 v2

摘要

中性程序变体在功能上与原程序相似,但实现了略微不同的行为。近似计算或遗传改进等技术共享这样一种直觉:在这些可接受的行为差异(例如增强的性能或可靠性)中蕴含着改进的潜力。然而,通过推测性变换自动合成中性程序变体仍然是一项关键挑战。本研究旨在刻画 Java 程序中的可塑代码区域,即易于合成中性程序变体的区域。我们的实证研究基于对 6 个真实世界 Java 程序的自动变体。首先,我们使用三种最先进的推测性变换对这些程序进行变换:添加、替换和删除语句。我们得到了 23445 个中性变体的池,从中收集到以下新见解:开发者自然地编写支持细粒度行为变化的代码;语句删除是一种出奇有效的推测性变换;高层设计决策(例如数据结构的选择)是能够在保持功能的同时演进的自然点。其次,我们设计了 3 种针对特定可塑区域的新型推测性变换。新实验表明,分别有 60%、58% 和 73% 的合成变体(总计 175688 个)是中性变体,并展现出与原程序不同的执行轨迹。

关键词

引用

@article{arxiv.1901.02533,
  title  = {A Journey Among Java Neutral Program Variants},
  author = {Nicolas Harrand and Simon Allier and Marcelino Rodriguez-Cancio and Martin Monperrus and Benoit Baudry},
  journal= {arXiv preprint arXiv:1901.02533},
  year   = {2019}
}

备注

Previously, this work appeared as arXiv:1509.00144v2, which was incorrectly submitted as a replacement