A Journey Among Java Neutral Program Variants

01/08/2019
by   Nicolas Harrand, et al.
0

Neutral program variants are functionally similar to an original program, yet implement slightly different behaviors. 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 speculative transformations remains a key challenge. This work aims at characterizing plastic code regions in Java programs, i.e., the areas that are prone to the synthesis of neutral program variants. Our empirical study relies on automatic variations of 6 real-world Java programs. First, we transform these programs with three state-of-the-art speculative transformations: add, replace and delete statements. We get a pool of 23445 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 speculative 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 speculative transformations, targeted at specific plastic regions. New experiments reveal that respectively 60%, 58% and 73% of the synthesized variants (175688 in total) are neutral and exhibit execution traces that are different from the original.

READ FULL TEXT

page 14

page 16

page 29

research
09/11/2018

Faster Variational Execution with Transparent Bytecode Transformation

Variational execution is a novel dynamic analysis technique for explorin...
research
04/29/2019

A Framework for Debugging Java Programs in a Bytecode

In the domain of Software Engineering, program analysis and understandin...
research
11/21/2020

An Empirical Study on Failed Error Propagation in Java Programs with Real Faults

During testing, developers can place oracles externally or internally wi...
research
03/18/2021

Generating Adversarial Computer Programs using Optimized Obfuscations

Machine learning (ML) models that learn and predict properties of comput...
research
01/30/2018

Automatically Leveraging MapReduce Frameworks for Data-Intensive Applications

MapReduce is a popular programming paradigm for running large-scale data...
research
09/11/2023

Sound Atomicity Inference for Data-Centric Synchronization

Data-Centric Concurrency Control (DCCC) shifts the reasoning about concu...
research
01/30/2017

Autotuning GPU Kernels via Static and Predictive Analysis

Optimizing the performance of GPU kernels is challenging for both human ...

Please sign up or login with your details

Forgot password? Click here to reset