Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
A journey among Java neutral program variants
KTH, School of Electrical Engineering and Computer Science (EECS), Computer Science, Software and Computer systems, SCS.ORCID iD: 0000-0002-2491-2771
DGA, Val De Reuil, France..
Vanderbildt Univ, Nashville, TN USA..
KTH, School of Electrical Engineering and Computer Science (EECS), Computer Science, Theoretical Computer Science, TCS.ORCID iD: 0000-0003-3505-3383
Show others and affiliations
2019 (English)In: Genetic Programming and Evolvable Machines, ISSN 1389-2576, E-ISSN 1573-7632, Vol. 20, no 4, p. 531-580Article in journal (Refereed) Published
Abstract [en]

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.

Place, publisher, year, edition, pages
Springer, 2019. Vol. 20, no 4, p. 531-580
Keywords [en]
Neutral program variant, Program transformation, Java, Code plasticity
National Category
Software Engineering
Identifiers
URN: urn:nbn:se:kth:diva-264174DOI: 10.1007/s10710-019-09355-3ISI: 000492843200004Scopus ID: 2-s2.0-85068185414OAI: oai:DiVA.org:kth-264174DiVA, id: diva2:1372273
Funder
Wallenberg AI, Autonomous Systems and Software Program (WASP)Swedish Foundation for Strategic Research , trustfull
Note

QC 20191122

Available from: 2019-11-22 Created: 2019-11-22 Last updated: 2020-01-08Bibliographically approved

Open Access in DiVA

No full text in DiVA

Other links

Publisher's full textScopus

Authority records BETA

Harrand, NicolasMonperrus, MartinBaudry, Benoit

Search in DiVA

By author/editor
Harrand, NicolasMonperrus, MartinBaudry, Benoit
By organisation
Software and Computer systems, SCSTheoretical Computer Science, TCS
In the same journal
Genetic Programming and Evolvable Machines
Software Engineering

Search outside of DiVA

GoogleGoogle Scholar

doi
urn-nbn

Altmetric score

doi
urn-nbn
Total: 85 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf