{'fraction_non_alphanumeric': 0.020077220077220077, 'fraction_numerical': 0.0015444015444015444, 'mean_word_length': 4.917808219178082, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Using microsoft solver foundation to analyse feature models and configurations

Feature Models are widely used in Software Product Lines to represent commonalities and variabilities in a family of products and to support the interactive configuration of these products. They comprise features and options that can be included in a product and constraints about which combinations of features are allowed. Libraries and frameworks such as SPLOT and FaMa help engineers to determine if a feature model is valid, detect errors in the models and validate if a configuration (i.e., a set of features selected by an user) does not contradict the constraints in the model. Regrettably, these libraries are based on Java and cannot be used in .Net platforms such as the recent Windows Phone systems. For that platforms, there is a Microsoft Solver Foundation (MSF) library that provides a set of solvers such as the used to analyse feature models. This paper explains (1) how to translate feature models and configurations into Constraint Satisfaction Problems in MSF, and (2) how to use that library to determine if a model is valid, enumerate all the valid configurations, and detect core and dead features that may exist in the model. In addition, we present a performance evaluation of the approach.