# Reviewing Automated Analysis of Feature Model Solutions for the Product Configuration
## 1 Introduction
FMs permit representing functional commonalities and variabilities of software systems [19], whereas OVMs permit describing the variant parts of the base model of systems [20]. [PERSON] et al. [24] introduced FMs as part of the FODA (Feature-Oriented Domain Analysis) method, and they became the most used VM in the SPL community afterward. An FM defines a set of features and their relationships for defining valid feature combinations or products, that is, sets of features that respect the FM's defined relationships. Such as [PERSON] et al. [25] remark, FM permits representing all the products of an SPL. An FM organizes in a tree-like structure that starts at the root feature that identifies the SPL and from which tree branches of features emerge. We can then define a product in terms of the set of features that compose it, and each feature describes an increment of functionality in the products containing that feature [26]. An FM supports binary and set relationships between parent and child features and cross-tree relationships to symbolize dependencies between features. Figure 1 shows an FM for describing an operating system SPL and a valid configuration of it (the gray-colored features). Figure 2 shows the same FM along with a non-valid configuration of it. FMs permit organizing the configuration space to facilitate the construction of software variants by describing configuration options using interdependent features or functionalities. A set of features in an FM is called a configuration, and each software variant in an FM identifies a valid configuration or product [27]. _Problem Statement, Goal and Contributions_  
Product configuration permits assisting the mass customization production [23]. AAFM operations for helping the obtention of conflict-free FMs and product configuration are high-value tasks. Nonetheless, existing AAFM operations usually follow a sequential computing approach and cannot scale to work on large-scale and high-variability models. As [1] remark, relevant AAFM solutions for assisting the product configuration are those for the minimal conflict set detection, minimal-preferred diagnosis in a set of constraints in conflict, and the completion of partial products. Next, we summarize those operations. * Minimal conflict set detection. For a consistent FM that we can define as a set of constraints, a non-consistent configuration violates those constraints. The features model of Figure 1 exemplifies a consistent configuration; that is, this configuration does not violate the FM constraints. For that FM and configuration, if a user selects the features _game_, _gnuchess_, and _glchess_, the resulting configuration will be non-consistent because a conflict exists between features _gnuchess_ and _glchess_. That is a minimal conflict set (MCS) because we cannot find a subset of it that results in it being a conflict set. As [28] remark, we can solve an MCS by merely deleting one of its constraints. After finding and solving all the MCS instances, the resulting configuration is valid (conflicts-free). * Minimal diagnosis. Given the set of constraints of a consistent FM and a non-consistent configuration that violates the FM constraints, a diagnosis is the set of constraints  
Figure 1: Feature model with a valid configuration example [1]. Figure 2: Feature model with a non-valid configuration example [1]. that permits obtaining a consistent configuration after removing those constraints. For the consistent configuration of Figure 2 after selecting features _game_, _glchess_ and _gnuchess_, we know that {_gnuchess_, _glchess_} is a minimal conflict set (MCS). Then, either deleting _gnuchess_ or _glchess_, we can obtain a valid configuration (conflict-free); that is, _gnuchess_ and _glchess_ are examples of diagnosis. * Minimal completion of products. Achieving valid configurations in large-scale FMs is a time-demanding and complex task. Reasoning tools, usually part of the AAFM process, permit solving that issue.