Emergent Interfaces and Data-flow Analysis for Software Product Lines

Intra-Procedural Data-flow Analysis for Software Product Lines

Abstract:

Software product lines (SPLs) are commonly developed using annotative approaches such as conditional compilation that come with an inherent risk of constructing erroneous products. For this reason, it is essential to be able to analyze SPLs. However, as dataflow analysis techniques are not able to deal with SPLs, developers currently have to brute force generate all valid methods and analyze all of them 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 three different ways. All are capable of analyzing all valid methods of an SPL without having to generate all of them explicitly. We have implemented all analyses as extensions of SOOT’s intraprocedural dataflow analysis framework and experimentally evaluated their performance and memory characteristics on four qualitatively different SPLs. The results indicate that the feature-sensitive analyses may be up to eight times faster than the brute force approach and that the analyses have different time and space tradeoffs.

Source Code

Our implementation is available at our Assembla space.

General Instructions

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

Results

Feature-oblivious (Brute force approach) data

Consists of building all valid method variants and analyzing them one by one using a conventional data-flow analysis. The results can be found here.

Feature-sensitive (Consecutive, Simultaneous and Lazy-sharing approaches), memory data, and cache misses data.

The data collected are packed into 2 rar files:

The cache misses numbers are also packed in 2 files: normal and full cache. More specifically, we compare cache misses of two feature-sensitive approaches: consecutive (A2) and simultaneous (A3). To collect data with respect to cache misses, we used the Overseer tool.

The equivalence proofs of the feature-sensitive approaches are available here.

Benchmarks

All SPLs we used are available here. Their features are annotated by using CIDE.

Histograms of each benchmark:

Members:

CIn-UFPE

IT University of Copenhagen

-- TarsisToledo - 23 Jan 2012 -- MarcioRibeiro - 26 Dec 2011 -- TarsisToledo - 20 Dec 2011 -- MarcioRibeiro - 11 Dec 2011 -- MarcioRibeiro - 09 Dec 2011 -- MarcioRibeiro - 10 Apr 2011 -- MarcioRibeiro - 10 Dec 2010

Edit | Attach | Print version | History: r17 | r15 < r14 < r13 < r12 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r13 - 2012-01-23 - TarsisToledo
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2022 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