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 条
  • [21] Teaching digital holography through an interface in Java']Java
    Araiza-Esquivel, Ma.
    Godina, Pilar C.
    Lopez-Martinez, Alfonso
    Olvera, Carlos
    Villagrana Barraza, Santiago
    Ortiz-Daz, Diana
    FIFTEENTH CONFERENCE ON EDUCATION AND TRAINING IN OPTICS AND PHOTONICS (ETOP 2019), 2019, 11143
  • [22] Tool-Assisted Componentization of Java']Java Applications
    Hammad, Mahmoud M.
    Abueisa, Ibrahim
    Malek, Sam
    IEEE 19TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE (ICSA 2022), 2022, : 36 - 46
  • [23] Class Transformations for Transparent Distribution of Java']Java Applications
    McGachey, Phil
    Hosking, Antony L.
    Moss, J. Eliot B.
    JOURNAL OF OBJECT TECHNOLOGY, 2011, 10
  • [24] Decompilation of Java']Java bytecode to Prolog by partial evaluation
    Gomez-Zamalloa, Miguel
    Albert, Elvira
    Puebla, German
    INFORMATION AND SOFTWARE TECHNOLOGY, 2009, 51 (10) : 1409 - 1427
  • [25] An Empirical Study on Maintainable Method Size in Java']Java
    Chowdhury, Shaiful Alam
    Uddin, Gias
    Holmes, Reid
    2022 MINING SOFTWARE REPOSITORIES CONFERENCE (MSR 2022), 2022, : 252 - 264
  • [26] Predicting Defects in SAP Java']Java Code: An Experience Report
    Holschuh, Tilman
    Paeuser, Markus
    Herzig, Kim
    Zimmermann, Thomas
    Premraj, Rahul
    Zeller, Andreas
    2009 31ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, COMPANION VOLUME, 2009, : 172 - 181
  • [27] Automatic Source Code Summarization of Context for Java']Java Methods
    McBurney, Paul W.
    McMillan, Collin
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2016, 42 (02) : 103 - 119
  • [28] An Analysis of Library Rollbacks: A Case Study of Java']Java Libraries
    Suwa, Hirohiko
    Ihara, Akinori
    Kula, Raula Gaikovina
    Fujibayashi, Daiki
    Matsumoto, Kenichi
    2017 24TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE WORKSHOPS (APSECW), 2017, : 63 - 70
  • [29] Classifying Java']Java Class Transformations for Pervasive Virtualized Access
    McGachey, Phil
    Hosking, Antony L.
    Moss, J. Eliot B.
    ACM SIGPLAN NOTICES, 2010, 45 (02) : 75 - 84
  • [30] Java']Java Bytecode Verification with OCL Why, How and When?
    Bockisch, Christoph
    Taentzer, Gabriele
    Nassar, Nebras
    Wydra, Lukas
    JOURNAL OF OBJECT TECHNOLOGY, 2020, 19 (03): : 1 - 16