Software product line engineering aims to provide techniques for the efficient development of software product lines [Czarnecki and Eisenecker 2000; Clements and Northrop 2001; Pohl et al. The software products of a product line are distinguished by the features they offer. In Section 2.3, we briefly discuss how specifications for software product lines can be defined as the basis for product line analyses.
2012], or that every program statement in a software product line appears in at least one product [Tartler et al.
Classification and Survey Methodology
In product-based analysis, the products of a product line are generated and analyzed individually, each using a standard analysis technique. A software product line analysis is product-based if it only works on generated products or models thereof, while the variability model can be used to generate all products or to make optimizations.
Example
A typical strategy is to sample a small number of products, usually based on some coverage criteria, so that reasonable statements about the regularity or other properties of the entire product line are still possible [Oster et al. Product-based analysis is called optimized if it works on a subset of all products (the so-called sample-based analysis) or if the intermediate results of the analysis of some products are reused for other products; otherwise called non-optimized (also exhaustive, comprehensive, coarse analysis and analysis without considering functions).
Advantages and Disadvantages
Although an unoptimized product-based strategy is often not feasible in practice, it serves as a basis for other strategies in terms of soundness, completeness and efficiency. Ideally, an analysis strategy is sound and complete in relation to the basic analysis, and at the same time more efficient than the non-optimized product-based strategy.
Unoptimized Product-Based Analyses
Second, if a code change is required, it should be applied to domain artifacts instead of generated artifacts, and automatic mappings are not always possible [Kuhlemann and Sturm 2010]. However, we will also discuss strategies that are incomplete or inadequate to increase the effectiveness of the overall analysis.
Optimized Product-Based Analyses
Optimized Product-Based Model Checking.Katz [2006] introduces aspect categories to optimize model checking of aspect-oriented programs. Therefore, we classify the two phases of this approach as unoptimized product-based static analysis and optimized product-based model checking.
FAMILY-BASED ANALYSES
- Example
- Advantages and Disadvantages
- Family-Based Syntax Checking
- Family-Based Type Checking
- Family-Based Static Analysis
- Family-Based Model Checking
- Family-Based Theorem Proving
Thus, family-based analysis may be infeasible for large software product lines and expensive analyses. Family-based strategies have been proposed by several authors for type checking of software product lines. Recently, researchers have proposed family-based static analyzes for software product lines, especially intraprocedural ones [Brabrand et al.
In contrast, family-based analyzes have also been proposed to scale existing static analyzes from single-system engineering to product lines. These irrelevant features are then ignored during family-based model checking to reduce the state space. Family-based static analyzes show significant performance speedup compared to product-based static analyses.
2014], whereas family-based static analyzes with respect to late variability model have been proposed recently [Bodden et al. Tool support for family-based model checking is often built on existing tools such as CBMC [Post and Sinz 2008], PROMOVER. 2013] found that family-based model checking with early variability model consideration is about 7% faster than with late consideration.
FEATURE-BASED ANALYSES
Example
In the case of object storage, each of the three function modules can be analyzed separately to some extent. First, we can parse each function module separately to make sure it conforms to the syntax and create an abstract syntax tree for each function module. To check the syntax, it is sufficient to consider each function module separately, since syntactic correctness is independent of other functions and is therefore a compositional property.
Second, type checking uses the abstract syntax tree to infer which types and references can be resolved by a function itself and which must be provided by other functions. As an example, all references to fieldsealed are internal and can be controlled in the implementation of featureAccessControl, as illustrated in Figure 6. However, some of the references cross feature boundaries and cannot be controlled in a feature-based way.
For example, references to the read and read All methods of the feature Access Control cannot be resolved inside the feature.
Advantages and Disadvantages
However, some of the references cross feature boundaries and cannot be checked in a feature-based manner. typing is not a composition property. For example, references to methodsreadand readAll of featureAccessControl cannot be resolved in the function. family-based strategies) instead of operating on generated software artifacts, and thus there are no redundant calculations across products. Second, the feature-based strategy supports open-world scenarios: it is not required that all features are known at analysis time.
Also, it is not required to have a variability model, which is typically not available in an open-world scenario. Nevertheless, a feature-based strategy can also be applied to closed-world scenarios where all features and their valid combinations are known at the time of analysis. In such cases, only changed features need to be reanalyzed in isolation, while with family-based and product-based strategies we need to reanalyze the entire product line or all affected products.
Fourth, the analysis of a software product line is broken down into smaller analysis tasks using a feature-based strategy. Thus, a feature-based strategy is especially useful for software analysis with extensive resource consumption (for example, memory) and for large software product lines, for which some family-based analysis is not feasible. Thus, when the variability model evolves, we no longer need to perform feature-based analysis, as features are only analyzed individually.
Feature-Based Approaches
Third, the effort to analyze a product line is minimal when one or a small set of characteristics is changed.
COMBINED ANALYSIS STRATEGIES
- Feature-Product-Based Analyses
- Feature-Family-Based Analyses
- Family-Product-Based Analyses
- Feature-Family-Product-Based Analyses
An analysis of a software product line is feature-product based if (a) it consists of a feature-based analysis followed by a product-based analysis, and (b) the analysis results from the feature-based analysis is used in the product-based analysis. 2013] evaluated this strategy against family-based type checking and found that feature-product-based type checking was significantly slower. In addition, the field of feature-product-based model checking is less diverse: all investigated approaches.
We found only one empirical evaluation of feature-based model checking: Liu et al. Proof of the property-product theorem. Approaches classified as feature-product based theorem proving are different. A strategy similar to feature product-based analysis is to combine feature-based and family-based analysis.
An analysis of a software product line is family-based if (a) it consists of a (partial) family-based analysis followed by a product-based analysis and (b) the analysis effort of the family-based analysis in the family is reused in the product - based analysis. In the second step, an arbitrary software analysis can be reused in a product-based way. An analysis of a software product line is feature-family-based if (a) it consists of a feature-based analysis followed by a product-family-based analysis and (b) the analysis effort is based on in particular, the analysis based on the family product is used during.
RESEARCH AGENDA
- Comparison of Analysis Strategies
- Quantitative Evaluation of Analysis Strategies
- Product-Line Implementation and Specification
- Product-Line Type Checking
- Product-Line Static Analysis
- Product-Line Model Checking
- Product-Line Theorem Proving
Similarly, whether a strategy based on a family of features requires more or less memory needs to be empirically assessed. In particular, strategies based on products and feature families, as known from other analyses, have not yet been used. In 2001, the first model checking approach following a strategy based on product attributes was proposed.
Compared to type checking, there is no single approach to feature family-based model checking. Regarding type checking, most empirical evaluations compare family-based model checking with product-based model checking. For feature product-based model checking, there is only one evaluation using a product line with four products [Liu et al.
Further empirical evaluations are needed with larger product lines also comparing feature-product-based to family-based model checking. Optimized product-based and feature-family-based theorem proofs have not been compared so far. 2012] compare the time efficiency of family-based strategy with that of unoptimized product-based propositional proofs.
RELATED WORK
However, mainly family-based approaches have been developed since then, as well as several non-optimized product-based approaches. It is particularly surprising that there is only one family approach to proving theorems [Th ¨um et al. The feature-based proof of theorems has been tested against a non-optimized product-based strategy, in terms of the size of handwritten proof scripts [Th ¨um et al.
2011] measured the time needed for the feature-based and the product-based part in feature-product-based theorem proving. In previous work, we proposed first ideas about a classification into product-based and feature-based verification techniques [Th ¨um et al. In this survey, we extend the classification to family-based and combined strategies, generalize it from verification to software analytics in general, and actually classify existing approaches.
Contrary to our early ideas, we have strengthened the notion of feature-based analysis to make researchers and practitioners aware that most analyzes do not work on features alone and that combinations with product- or family-based analyzes are usually required. However, many of the approaches in our research rely on techniques from this line of research to discuss variability (eg, for a family-based strategy). While we started using our classification for testing approaches, it appears that most product line testing approaches are sample-based analyses.
CONCLUSION
Montagud and Abrah ˜ao [2009] conducted a systematic literature review on the quality assessment of software product lines. Disambiguating the Documentation of Variability in Software Product Lines: A Separation of Concerns, Formalization, and Automated Analysis.