Affiliation:
1. Mother Teresa University, 12 Udarna Brigada 2a, 1000, Skopje, Macedonia
2. IT University of Copenhagen, Rued Langgaards Vej 7, 2300, Copenhagen, Denmark
Abstract
Abstract
Many software systems are today variational: they are built as program families or Software Product Lines. They can produce a potentially huge number of related programs, known as products or variants, by selecting suitable configuration options (features) at compile time. Many such program families are safety critical, yet the appropriate tools only rarely are able to analyze them effeciently. Researchers have addressed this problem by designing specialized
variability-aware
static (dataflow) analyses, which allow analyzing all variants of the family, simultaneously, in a single run without generating any of the variants explicitly. They are also known as
lifted
or
family-based
analyses. They take as input the common code base, which encodes all variants of a program family, and produce precise analysis results corresponding to all variants. These analyses scale much better than “brute force” approach, where all individual variants are analyzed in isolation, one-by-one, using off-the-shelf single-program analyzers. Nevertheless, the computational cost of lifted analyses still greatly depends on the number of features and variants (which is often huge). For families with a large number of features and variants, the lifted analyses may be too costly or even infeasible. In order to speed up lifted analyses and make them computationally cheaper, variability abstractions which simplify variability away from program families and lifted analyses have been introduced. However, the space of possible variability abstractions is still intractably large to search naively, with most abstractions being either too imprecise or too costly.
We introduce here a method to efficiently find suitable variability abstractions from a large space of possible abstractions for a lifted static analysis. The main idea is to use a
pre-analysis
to estimate the impact of variability-specific parts of the program family on the analysis’s precision. The pre-analysis is fully variability-aware while it aggressively abstracts the other semantics aspects. Then we use the pre-analysis results to find out when and where the subsequent abstract lifted analysis should turn off or on its variability-awareness. The abstraction constructed in this way is effective in discarding variability-specific program details that are irrelevant for showing the analysis’s ultimate goal. We formalize this approach and we illustrate its effectiveness on several Java case studies. The evaluation shows that our approach which consists of running a pre-analysis followed by a subsequent abstract lifted analysis achieves competitive the precision-speed tradeoff compared to the standard lifted analysis.
Funder
The Danish Council for Independent Research under a Sapere Aude project
Publisher
Association for Computing Machinery (ACM)
Subject
Theoretical Computer Science,Software
Cited by
12 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Fault localization by abstract interpretation and its applications;Journal of Computer Languages;2024-08
2. Family-based model checking of fMultiLTL properties;Proceedings of the 27th ACM International Systems and Software Product Line Conference - Volume A;2023-08-28
3. Quantitative Program Sketching using Lifted Static Analysis;Fundamental Approaches to Software Engineering;2022
4. Several lifted abstract domains for static analysis of numerical program families;Science of Computer Programming;2022-01
5. A Formal Framework of Software Product Line Analyses;ACM Transactions on Software Engineering and Methodology;2021-07-31