Automatic and Efficient Variability-Aware Lifting of Functional Programs

10/01/2020
by   Ramy Shahin, et al.
0

A software analysis is a computer program that takes some representation of a software product as input and produces some useful information about that product as output. A software product line encompasses many software product variants, and thus existing analyses can be applied to each of the product variations individually, but not to the entire product line as a whole. Enumerating all product variants and analyzing them one by one is usually intractable due to the combinatorial explosion of the number of product variants with respect to product line features. Several software analyses (e.g., type checkers, model checkers, data flow analyses) have been redesigned/re-implemented to support variability. This usually requires a lot of time and effort, and the variability-aware version of the analysis might have new errors/bugs that do not exist in the original one. Given an analysis program written in a functional language based on PCF, in this paper we present two approaches to transforming (lifting) it into a semantically equivalent variability-aware analysis. A light-weight approach (referred to as shallow lifting) wraps the analysis program into a variability-aware version, exploring all combinations of its input arguments. Deep lifting, on the other hand, is a program rewriting mechanism where the syntactic constructs of the input program are rewritten into their variability-aware counterparts. Compositionally this results in an efficient program semantically equivalent to the input program, modulo variability. We present the correctness criteria for functional program lifting, together with correctness proof sketches of our program transformations. We evaluate our approach on a set of program analyses applied to the BusyBox C-language product line.

READ FULL TEXT

page 1

page 20

research
12/09/2019

Variability-aware Datalog

Variability-aware computing is the efficient application of programs to ...
research
04/12/2021

Extractive Multi Product-Line Engineering

Cloning is a general approach to create new functionality within variant...
research
10/12/2021

Fast Static Analyses of Software Product Lines – An Example With More Than 42,000 Metrics

Context: Software metrics, as one form of static analyses, is a commonly...
research
08/20/2019

Understanding Conditional Compilation Through Integrated Representation of Variability and Source Code

The C preprocessor (CPP) is a standard tool for introducing variability ...
research
10/19/2021

KernelHaven – An Open Infrastructure for Product Line Analysis

KernelHaven is an open infrastructure for Software Product Line (SPL) an...
research
08/22/2021

Custom-Tailored Clone Detection for IEC 61131-3 Programming Languages

Automated production systems (aPS) are highly customized systems that co...
research
08/20/2021

Fex: Assisted Identification of Domain Features from C Programs

Modern software typically performs more than one functionality. These fu...

Please sign up or login with your details

Forgot password? Click here to reset