A journey among Java']Java neutral program variants

被引:15
|
作者
Harrand, Nicolas [1 ]
Allier, Simon [2 ]
Rodriguez-Cancio, Marcelino [3 ]
Monperrus, Martin [1 ]
Baudry, Benoit [1 ]
机构
[1] KTH, Stockholm, Sweden
[2] DGA, Val De Reuil, France
[3] Vanderbildt Univ, Nashville, TN USA
关键词
Neutral program variant; Program transformation; !text type='Java']Java[!/text; Code plasticity; SOFTWARE;
D O I
10.1007/s10710-019-09355-3
中图分类号
TP18 [人工智能理论];
学科分类号
081104 ; 0812 ; 0835 ; 1405 ;
摘要
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.
引用
收藏
页码:531 / 580
页数:50
相关论文
共 50 条
  • [1] A journey among Java neutral program variants
    Nicolas Harrand
    Simon Allier
    Marcelino Rodriguez-Cancio
    Martin Monperrus
    Benoit Baudry
    Genetic Programming and Evolvable Machines, 2019, 20 : 531 - 580
  • [2] Extraction of Java']Java program fingerprints for software authorship identification
    Ding, HB
    Samadzadeh, MH
    JOURNAL OF SYSTEMS AND SOFTWARE, 2004, 72 (01) : 49 - 57
  • [3] Using Program Transformation, Annotation, and Reflection to Certify a Java']Java Type Resolution Function
    Winter, Victor L.
    Reinke, Carl
    Guerrero, Jonathan
    2014 IEEE 15TH INTERNATIONAL SYMPOSIUM ON HIGH-ASSURANCE SYSTEMS ENGINEERING (HASE), 2014, : 137 - 145
  • [4] Certifying a java']java type resolution function using program transformation, annotation, and reflection
    Winter, Victor
    Reinke, Carl
    Guerrero, Jonathan
    SOFTWARE QUALITY JOURNAL, 2016, 24 (01) : 115 - 135
  • [5] Java']Java and Dylan
    Gentleman, R
    Ihaka, R
    JOURNAL OF COMPUTATIONAL AND GRAPHICAL STATISTICS, 2000, 9 (03) : 452 - 458
  • [6] An OpenMP Library for Java']Java
    Cook, Robert P.
    2013 PROCEEDINGS OF IEEE SOUTHEASTCON, 2013,
  • [7] The evolution of Java']Java build systems
    McIntosh, Shane
    Adams, Bram
    Hassan, Ahmed E.
    EMPIRICAL SOFTWARE ENGINEERING, 2012, 17 (4-5) : 578 - 608
  • [8] JMaCS: a Java']Java monitoring and control system
    Dickens, Rob
    ADVANCED SOFTWARE AND CONTROL FOR ASTRONOMY II, PTS 1 & 2, 2008, 7019
  • [9] An Evaluation of Static Java']Java Bytecode Watermarking
    Hamilton, James
    Danicic, Sebastian
    WORLD CONGRESS ON ENGINEERING AND COMPUTER SCIENCE, VOLS 1 AND 2, 2010, : 1 - 8
  • [10] A Public Unified Bug Dataset for Java']Java
    Ferenc, Rudolf
    Toth, Zoltan
    Ladanyi, Gergely
    Siket, Istvan
    Gyimothy, Tibor
    PROMISE'18: PROCEEDINGS OF THE 14TH INTERNATIONAL CONFERENCE ON PREDICTIVE MODELS AND DATA ANALYTICS IN SOFTWARE ENGINEERING, 2018, : 12 - 21