posted on 2023-01-25, 11:16authored bySaad bin Abid
Feature dependency is a kind of feature interaction which can be observed in the features that realize the functionality of a software product, and particularly in the features of Software Product Lines (SPLs). In feature modelling for SPLs, common and variable features are organized both in terms of their structural dependencies (e.g., aggregation and specialization) and in terms of their configuration dependencies (e.g., excluded and required). These dependencies are essential but are not sufficient for developing reusable and adaptable SPL components. There are various other types of feature dependencies (e.g., runtime feature dependencies) that are responsible for implementing the behaviour of an end product. The aim of this research is to facilitate a software product line engineer to detect whether the latter types of feature dependencies have been implemented as specified and as intended.
This thesis proposes and evaluates a four-step technique for consistency checking of runtime feature dependencies in SPL artefacts. The four-step process uses a domain-specific language developed for specifying the product line assets (i.e., features, interdependencies among the features and the implementation source code). The proposed technique uses existing reverse engineering techniques to perform a code-to-model transformation. Aspect-oriented (AO) pattern detection algorithms were developed that implement the runtime feature dependencies. The simple detection of AO-patterns does not guarantee that the behaviour is implemented as intended. Model validation constraints are then applied to provide feature dependency related feedback to a product line engineer.
The key contributions of this thesis are: (i) the extension of previous work on the modularization of runtime feature dependencies, by providing a technique for consistency checking of runtime feature dependencies at various abstraction levels, (ii) the theoretical contribution in the form of a model-driven technique based on round-trip engineering (RTE), (iii) a plug-in based prototype realizing the proposed model-driven technique and (iv) a validation mechanism inspired by a technique called mutation testing which is applied using an existing product line case study.