当前位置: X-MOL 学术Genet. Program. Evolvable Mach. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
A journey among Java neutral program variants
Genetic Programming and Evolvable Machines ( IF 2.6 ) Pub Date : 2019-06-25 , DOI: 10.1007/s10710-019-09355-3
Nicolas Harrand , Simon Allier , Marcelino Rodriguez-Cancio , Martin Monperrus , Benoit Baudry

Neutral program variants are alternative implementations of a program, yet equivalent with respect to the test suite. Techniques such as approximate computing or genetic improvement share the intuition that potential for enhancements lies in these acceptable behavioral differences (e.g., enhanced performance or reliability). Yet, the automatic synthesis of neutral program variants, through program transformations remains a key challenge. This work aims at characterizing plastic code regions in Java programs, i.e., the code regions that are modifiable while maintaining functional correctness, according to a test suite. Our empirical study relies on automatic variations of 6 real-world Java programs. First, we transform these programs with three state-of-the-art program transformations: add, replace and delete statements. We get a pool of 23,445 neutral variants, from which we gather the following novel insights: developers naturally write code that supports fine-grain behavioral changes; statement deletion is a surprisingly effective program transformation; high-level design decisions, such as the choice of a data structure, are natural points that can evolve while keeping functionality. Second, we design 3 novel program transformations, targeted at specific plastic regions. New experiments reveal that respectively 60%, 58% and 73% of the synthesized variants (175,688 in total) are neutral and exhibit execution traces that are different from the original.

中文翻译:

Java中性程序变体之间的旅程

中性程序变体是程序的替代实现,但与测试套件等效。诸如近似计算或遗传改进之类的技术都有一种直觉,即增强潜力在于这些可接受的行为差异(例如,增强的性能或可靠性)。然而,通过程序转换自动合成中性程序变体仍然是一个关键挑战。根据测试套件,这项工作旨在表征 Java 程序中的可塑性代码区域,即在保持功能正确性的同时可修改的代码区域。我们的实证研究依赖于 6 个真实世界 Java 程序的自动变体。首先,我们使用三种最先进的程序转换来转换这些程序:添加、替换和删除语句。我们有 23 个池子,445 个中性变体,我们从中收集了以下新颖见解:开发人员自然地编写支持细粒度行为更改的代码;语句删除是一种非常有效的程序转换;高级设计决策,例如数据结构的选择,是可以在保持功能的同时发展的自然点。其次,我们设计了 3 个新颖的程序转换,针对特定的塑料区域。新的实验表明,分别有 60%、58% 和 73% 的合成变体(总共 175,688 个)是中性的,并且表现出与原始变体不同的执行痕迹。高级设计决策,例如数据结构的选择,是可以在保持功能的同时发展的自然点。其次,我们设计了 3 个新颖的程序转换,针对特定的塑料区域。新的实验表明,分别有 60%、58% 和 73% 的合成变体(总共 175,688 个)是中性的,并且表现出与原始变体不同的执行痕迹。高级设计决策,例如数据结构的选择,是可以在保持功能的同时发展的自然点。其次,我们设计了 3 个新颖的程序转换,针对特定的塑料区域。新的实验表明,分别有 60%、58% 和 73% 的合成变体(总共 175,688 个)是中性的,并且表现出与原始变体不同的执行痕迹。
更新日期:2019-06-25
down
wechat
bug