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 条
  • [31] Mining Common Syntactic Patterns used by Java']Java Programmers
    Losada, Alvaro
    Facundo, Guillermo
    Garcia, Miguel
    Ortin, Francisco
    IEEE LATIN AMERICA TRANSACTIONS, 2022, 20 (05) : 753 - 762
  • [32] Automatic Detection of Java']Java Cryptographic API Misuses: Are We There Yet?
    Zhang, Ying
    Kabir, Md Mahir Asef
    Xiao, Ya
    Yao, Danfeng
    Meng, Na
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2023, 49 (01) : 288 - 303
  • [33] The Qualitas Corpus: A Curated Collection of Java']Java Code for Empirical Studies
    Tempero, Ewan
    Anslow, Craig
    Dietrich, Jens
    Han, Ted
    Li, Jing
    Lumpe, Markus
    Melton, Hayden
    Noble, James
    17TH ASIA PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC 2010), 2010, : 336 - 345
  • [34] Semantics-Driven Migration of Java']Java Programs: A Practical Application
    Aleksyuk, A. O.
    Itsykson, V. M.
    AUTOMATIC CONTROL AND COMPUTER SCIENCES, 2018, 52 (07) : 581 - 588
  • [35] A parallel computing framework and a modular collaborative CFD workbench in Java']Java
    Sengupta, S.
    Sinhamahapatra, K. P.
    ADVANCES IN FLUID MECHANICS VI, 2006, 52 : 21 - +
  • [36] Evaluation of a model-based testing platform for Java']Java applications
    Villalobos-Arias, Leonardo
    Quesada-Lopez, Christian
    Martinez, Alexandra
    Jenkins, Marcelo
    IET SOFTWARE, 2020, 14 (02) : 115 - 128
  • [37] Evaluation of the 'replace constructors with creation methods' refactoring in Java']Java systems
    Counsell, S.
    Loizou, G.
    Najjar, R.
    IET SOFTWARE, 2010, 4 (05) : 318 - 333
  • [38] A Java']Java application to characterize biomolecules and nanomaterials in electrolyte aqueous solutions
    Marucho, Marcelo
    COMPUTER PHYSICS COMMUNICATIONS, 2019, 242 : 104 - 119
  • [39] Safe Automated Refactoring for Intelligent Parallelization of Java']Java 8 Streams
    Khatchadourian, Raffi
    Tang, Yiming
    Bagherzadeh, Mehdi
    Ahmed, Syed
    2019 IEEE/ACM 41ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2019), 2019, : 619 - 630
  • [40] Transparent mobile middleware integration for Java']Java and .NET development environments
    Marques, Edgar
    Veiga, Luis
    Ferreira, Paulo
    EURO-PAR 2008 PARALLEL PROCESSING, PROCEEDINGS, 2008, 5168 : 47 - 57