Feature models are a well-known formalism for capturing variability, commonalities and configuration rules of software systems. These models are a compact representation of the set of products in a software product line or configurations of a system at runtime, in terms of features and logical relationships among them. The feature model optimization problem consists of selecting a valid product from the model that satisfies a set of resource or business restrictions and optimizes an objective function commonly related to user preferences. This problem, although computationally intractable, has been addressed in several works with different algorithms. However, these approaches appeal to simplifications of the problem or present drawbacks that limit their application. For example, several approaches do not contemplate feature interactions, and some of them do not guarantee exact solutions or even valid solutions satisfying complex constraints. In this article, we propose a novel algorithm called CSA that overcomes the performance and common weaknesses of existing approaches. CSA can be parameterized with a set of classic search strategies (Backtracking, Branch & Bound, and Best-First Search) and heuristics that allow us to leverage solution optimality and search efficiency. This makes CSA appropriate for automating decisions both at design-time, where exact solutions are generally required, and at run-time, where selection must be done efficiently but suboptimal solutions are acceptable. The algorithm supports different formats of objective functions, including multi-linear polynomial functions that are capable of representing feature interactions. We present an analysis to validate algorithm properties, and then a series of experiments with synthetic and real models to empirically compare CSA with existing alternatives to show the benefits of our approach. In our analysis, CSA showed to be complete, exact, and scalable for searching approximate solutions. The empirical results showed that the approximate variant of CSA can reach an optimality degree of 99%, against a 84% and 93% reached by other approximate alternatives based on genetic and greedy algorithms respectively. In terms of response time, CSA performed a 72% better than other approximate algorithms. Compared to other exact approaches, CSA improves response time on specific problem types. Furthermore, CSA was evaluated with problem instances involving feature interactions, showing that performance properties scale properly when the number of feature interactions increases. (C) 2018 Elsevier B.V. All rights reserved.
Feature modeling has been widely used in domain engineering for the development and configuration of software product lines. A feature model represents the set of possible products or configurations to apply in a given context. Recently, this formalism has been applied to the runtime (re-)configuration of systems with high variability and running in changing contexts. These systems must adapt by updating their component assembly configuration at runtime, while minimizing the impact of such changes on the quality of service. For this reason the selection of a good system configuration is seen as an optimization problem based on quality attribute criteria.
Feature modeling has been widely used in domain engineering for the development and configuration of software products. A feature model represents the set of possible configurations to apply in a given context. Recently, this formalism was applied to the runtime (re-)configuration of systems with high variability and context changes, in which the selection of the best candidate configuration is seen as an optimization problem based on quality criteria. To this end, we propose an approach for the specification, measurement and optimization of runtime quality attributes based on feature models, and furthermore, we describe its integration into a component-based architecture for supporting dynamically adaptive systems. Feature models are annotated with quality-attribute properties and metrics, and then an efficient and flexible algorithm is used to deal with the optimization problem. We report on some examples of adaptation and quality-attribute scenarios in the context of a video surveillance domain, in order to illustrate the pros and cons of our approach.
The Software Architecture is an important asset in a software development process, which serves to share and discuss the main design concerns among the project stakeholders. The architecture knowledge must be properly documented in order to be effectively used by these stakeholders (e.g., using a Wiki). However, the repository of architectural documents usually fails to satisfy the stakeholders' information needs. There are several reasons for this mismatch, namely: documentation efforts not perceived as valuable, little consideration of potential documentation consumers, or documentation generated in one single step but "late" in the lifecycle, among others. Therefore, the value of the architecture as a means for engaging stakeholders and articulating their goals within the project is diminished. To address the problem, we argue for a knowledge management strategy in which: (i) architecture documentation is created incrementally; and (ii) its contents are driven by a model of stakeholder preferences. In this work, we present an information optimization approach applied to the architecture documentation domain, derived from an existing documentation method. Specifically, we propose a tool that recommends a satisficing set of (documentation) tasks for delivering architectural contents that address the main stakeholders' needs. A preliminary evaluation of our approach has shown its potential for cost-effective information management.
Feature models are widely used to capture variability, commonalities and configuration rules of software systems. We apply this technique to model component-based systems with many variants during specification, implementation, or run time. This representation allows us to determine the set of valid configurations befitting a given context, especially at run time. A key challenge is to determine the configuration most suitable, especially with respect to non-functional aspects: quality of service, performance, reconfiguration time... We propose an algorithm for selecting the configuration that optimizes a given quality metrics. This algorithm is a variant of the Best-First Search algorithm, a heuristic technique suitable for feature model optimization. The algorithm is parameterized with several strategies and heuristics on feature models leading to different optimality and efficiency properties. We discuss the algorithm, its strategies and heuristics, and we present experimental results showing that the algorithm meets the requirements for our real time systems.