Intraprocedural Data-flow Analysis for Software Product Lines


Software product lines (SPLs) developed using annotative approaches such as conditional compilation come with an inherent risk of constructing erroneous products. For this reason, it is essential to be able to analyze such SPLs. However, as dataflow analysis techniques are not able to deal with SPLs, developers must generate and analyze all valid products individually, which is expensive for non-trivial SPLs.
In this paper, we demonstrate how to take any standard intraprocedural dataflow analysis and automatically turn it into a feature-sensitive dataflow analysis in five different ways where the last is a combination of the other four. All analyses are capable of analyzing all valid products of an SPL without having to generate all of them explicitly.
We have implemented all analyses using SOOT’s intraprocedural dataflow analysis framework and experimentally evaluated four of them according to their performance and memory characteristics on five qualitatively different SPLs. On our benchmarks, the combined analysis strategy is up to almost eight times faster than the brute-force approach.

Source Code

The source code of our feature-sensitive dataflow analysis implementation is available at through SVN in our Assembla space.

General Instructions

You can find some instructions about how to install our plug-in along with an architectural overview and implementation details here.


This archive contains the raw data described in the paper; measured analysis time, memory, compilation estimates and other metrics.

The data for the cache experiment is in this separate archive.

Both the data for main and cache experiments are in a spreadsheet format. Every sheet on the spreadsheet files contain information collected about all the methods in each benchmark by our infrastructure for 10 separate runs.

Note: We have found that because Soot may not generate the same name for anonymous classes consistently on every execution, data for methods in anonymous classes should be inspected with when comparing data between different runs.


All SPLs we used are available here.

-- TarsisToledo - 2012-07-12 -- TarsisToledo - 2012-10-16 -- TarsisToledo - 2012-11-12

Topic revision: r5 - 2012-11-12 - TarsisToledo
This site is powered by the TWiki collaboration platformCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort