Reverse Engineering Feature Models from Software Configurations using Formal Concept Analysis

Companies often develop in a non-disciplined manner a set of software variants that share some features and differ in others to meet variant-specific requirements. To exploit existing software variants and manage them coherently as a software product line, a feature model must be built as a first step. To do so, it is necessary to extract mandatory and optional features from the code of the variants in addition to associate each feature implementation with its name. In previous work, we automatically extracted a set of feature implementations as a set of source code elements of software variants and documented the mined feature implementations based on the use-case diagrams of these variants. In this paper, we propose an automatic approach to organize the mined documented features into a feature model. The feature model is a tree which highlights mandatory features, optional features and feature groups (and, or, xor groups). The feature model is completed with requirement and mutual exclusion constraints. We rely on Formal Concept Analysis and software configurations to mine a unique and consistent feature model. To validate our approach, we apply it on several case studies. The results of this evaluation validate the relevance and performance of our proposal as most of the features and their associated constraints are correctly identified.

[1]  Sergio Segura,et al.  Automated analysis of feature models 20 years later: A literature review , 2010, Inf. Syst..

[2]  Felix Lösch,et al.  Optimization of Variability in Software Product Lines , 2007, 11th International Software Product Line Conference (SPLC 2007).

[3]  Alexander Egyed,et al.  Reverse Engineering Feature Models from Programs' Feature Sets , 2011, 2011 18th Working Conference on Reverse Engineering.

[4]  Krzysztof Czarnecki,et al.  Efficient synthesis of feature models , 2012, SPLC '12.

[5]  Amedeo Napoli,et al.  Hermes: a simple and efficient algorithm for building the AOC-poset of a binary relation , 2014, Annals of Mathematics and Artificial Intelligence.

[6]  Mathieu Acher,et al.  Support for reverse engineering and maintaining feature models , 2013, VaMoS.

[7]  Abdelhak-Djamel Seriai,et al.  Mining Features from the Object-Oriented Source Code of a Collection of Software Variants Using Formal Concept Analysis and Latent Semantic Indexing , 2013, SEKE.

[8]  Klaus Kabitzsch,et al.  Extraction of feature models from formal contexts , 2011, SPLC '11.

[9]  Bernhard Ganter,et al.  Formal Concept Analysis: Mathematical Foundations , 1998 .

[10]  Abdelhak-Djamel Seriai,et al.  Documenting the Mined Feature Implementations from the Object-oriented Source Code of a Collection of Software Product Variants , 2014, SEKE.

[11]  Krzysztof Czarnecki,et al.  Reverse engineering feature models , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[12]  Alexander Egyed,et al.  Reverse Engineering Feature Models with Evolutionary Algorithms: An Exploratory Study , 2012, SSBSE.

[13]  Mathieu Acher,et al.  On extracting feature models from product descriptions , 2012, VaMoS.