<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Reverse Engineering Feature Models from Software Con gurations using Formal Concept Analysis</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>R. AL-msie'deen</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>M. Huchard</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>A.-D. Seriai</string-name>
          <email>Seriai@lirmm.fr</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>C. Urtado</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>S. Vauttier</string-name>
          <email>Sylvain.Vauttier@mines-ales.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LGI2P / Ecole des Mines d'Ales</institution>
          ,
          <addr-line>N</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>LIRMM / CNRS &amp; Montpellier 2 University</institution>
          ,
          <addr-line>France Al-msiedee, huchard</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>mes</institution>
          ,
          <country>France Christelle.Urtado</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Companies often develop in a non-disciplined manner a set of software variants that share some features and di er in others to meet variant-speci c requirements. To exploit existing software variants and manage them coherently as a software product line, a feature model must be built as a rst 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 con gurations 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 identi ed.</p>
      </abstract>
      <kwd-group>
        <kwd>Software Product Line</kwd>
        <kwd>Feature Models</kwd>
        <kwd>Software Product Variants</kwd>
        <kwd>Formal Concept Analysis</kwd>
        <kwd>Product-by-feature matrix</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        To exploit existing software variants and build a software product line (SPL),
a feature model (FM) must be built as a rst step. To do so, it is necessary to
extract mandatory and optional features in addition to associate each feature
with its name. In our previous work [
        <xref ref-type="bibr" rid="ref1 ref2">1,2</xref>
        ], we have presented an approach called
REVPLINE 1 to identify and document features from the object-oriented source
code of a collection of software product variants.
      </p>
    </sec>
    <sec id="sec-2">
      <title>1 REVPLINE stands for RE-engineering Software Variants into Software Product</title>
      <sec id="sec-2-1">
        <title>Line.</title>
        <p>
          Dependencies between features need to be expressed via a FM which is a
de facto standard formalism [
          <xref ref-type="bibr" rid="ref3 ref4">3,4</xref>
          ]. A FM is a tree-like hierarchy of features and
constraints between them (cf. left side of Figure 1). FMs aim at describing the
variability of a SPL in terms of features. A FM de nes which feature
combinations lead to valid products within the SPL (cf. right side of Figure 1). We
illustrate our approach with the cell phone SPL FM and its 16 valid product
con gurations (cf. Figure 1) [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>
          P-1
P-2
P-3
P-4
P-5
P-6
P-7
P-8
P-9
P-10
P-11
P-12
P-13
P-14
P-15
P-16
t
n
e
n
o
e lreay lreay lppO
lleohnPC lirsseeW fIrreadn ltteoohuB lleccuCA trogSn ieudmM eakW lisaypD seaGm iltuPM ilegnSP iiifrtcaA
cepts from a dataset, called a formal context, composed of objects described by
attributes. In our approach, we consider the AOC-poset (for
Attribute-ObjectConcept poset) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], which is the sub-order of the concept lattice restricted to
attribute-concepts and object-concepts. Attribute-concepts (resp.
object-concepts) are the highest (resp. lowest) concepts that introduce each attribute (resp.
object). AOC-posets scale much better than lattices. For applying Formal
Concept Analysis (FCA) we used the Eclipse eRCA platform2.
        </p>
        <p>
          Manual construction of a FM is both time-consuming and error-prone [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ],
even for a small set of con gurations [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. The existing approaches to extract
FM from product con gurations [
          <xref ref-type="bibr" rid="ref10 ref8">8,10</xref>
          ] su er from a lot of challenges. The main
challenge is that numerous candidate FMs can be extracted from the same input
product con gurations, yet only a few of them are meaningful and correct, while
in our work we synthesize an accurate and meaningful FM using FCA. Moreover
the majority of these approaches extract a basic FM without constraints between
its features [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] while, in our work, we extract all kinds of FM constraints.
        </p>
        <p>The remainder of this paper is structured as follows: Section 2 presents the
reverse engineering FM process step-by-step. Next, Section 3 presents the way
that we propose to evaluate the obtained FMs. Section ?? describes the
experimentation and threats to the validity. Section 4 discusses the related work.
Finally, in Section 5, we conclude this paper.
2</p>
        <sec id="sec-2-1-1">
          <title>Step-by-Step FM</title>
        </sec>
        <sec id="sec-2-1-2">
          <title>Reverse Engineering</title>
          <p>This section presents step-by-step the FM reverse engineering process. According
to our approach, we identify the FM in seven steps as detailed in the following,
using strong properties of FCA to group features among product con gurations.
The AOC-poset is built from a set of known products, and thus does not
represent all possible products. Thus, the FM structure has to be considered only as a
candidate feature organization that can be proposed to an expert. The algorithm
is designed such that all existing products (used for construction of candidate
FM) are covered by the FM. Besides, it allows to de ne possible unused close
variants.</p>
          <p>
            The rst step of our FM extraction process is the identi cation of the
AOCposet. First, a formal context, where objects are software product variants and
attributes are features (cf. Figure 1), is de ned. The corresponding AOC-poset
is then calculated. The intent of each concept represents features common to
two or more products or unique to one product. As AOC-posets are ordered, the
intent of the most general (i.e., top) concept gathers mandatory features that
are common to all products. The intents of all the remaining concepts represent
the optional features. The extent of each of these concepts is the set of products
sharing these features (cf. Figure 2). In the following algorithms, for a Concept C,
we call intent(C), extent(C), simplif ied intent(C), and simplif ied extent(C)
its associated sets. E cient algorithms can be found in [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ].
          </p>
          <p>The other steps are presented in the next sections.
2 The eRCA : http://code.google.com/p/erca/
Algorithm 1 is a simple algorithm for building the Base node (cf. Figure 3).
Features in the top concept of the AOC-poset (Concept 16) are used in every
product con guration. The Cell Phone feature is the root feature of the cell
phone FM (line 5). Then a mandatory Base node is created (lines 8,9). It is
linked to nodes created to represent all the other features in the top concept,
i.e., Accu Cell, Display and Games (lines 12-16).</p>
          <p>Extracting atomic set of features (AND-group)
Algorithm 2 is a simple algorithm for building AND-groups of features
(excluding all the mandatory features, line 3). An AND-group of features is created (line
8) to group optional features that appear in the same simpli ed intent (test line
6), meaning that these features are always used together in all the product
congurations where they appear. Lines 12-16, nodes are created for every feature
of the AND-group and they are attached to an And node. For instance,
Concept 23 in Figure 2 has a simpli ed intent with two features, Single Player and
Arti cial Opponent, leading to the And node of Figure 3.
2.3</p>
          <p>
            Extracting exclusive-or relation
Features that form exclusive-or relation can be identi ed in the concept lattice
using the meet (denoted by u) lattice operation [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], which amounts to compute
Algorithm 1: ComputeRootAndMandatoryFeature
the greatest lower bounds in the AOC-poset. If a feature A is introduced in
concept C1, a feature B is introduced in concept C2 and C1 u C2 = ? (and
extent(?) = ;), that is, if the bottom of the lattice is the greatest lower bound
of C1 and C2, the two features never occur together in a product. In our current
approach, we only build a single Xor group of features, when any group of
mutually exclusive features exists. Computing exclude constraints (see Section
2.6) will deal with the many cases where several Xor group of features exist
(a set of exclude constraints de ning mutual exclusion is equivalent to a Xor
group).
          </p>
          <p>Algorithm 3 is a simple algorithm for building the single Xor group of
features. The principle is to traverse the set of super-concepts of each minimum
elements of the AOC-poset and to keep the concepts that are the super-concepts
of only one minimum concept. Only features that are not used in the previous
steps are considered in FL" (line 2). Lines 6-10, in our example, we consider the
three minimum concepts Concept 11, Concept 12 and Concept 15. The many
SSC sets are the sets of super-concepts for Concept 11, Concept 12 and
Concept 15. Cxor is the set of all concepts, except Concept 11, Concept 12 and
Concept 15. Lines 11-15 only keep in Cxor concepts that do not appear in two
SSC sets. Cxor contains concepts number 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14,
19, 20 and 21. Line 16 eliminates Concept 19 which is not a maximum. As there
are three features (Medium, Strong, Weak, from Concept 21, Concept 20, and
Concept 2 respectively) that are in FL" and in the simpli ed intent of concepts
of Cxor (line 18), an Xor node is created and linked to the root (lines 19-26).
Then, on lines 27-33, nodes are created for the features and linked to the Xor
node. Figure 3 shows this Xor node.
2.4</p>
          <p>Extracting inclusive-or relation
Optional features are features that are used in some (but not all) product
congurations. There are many ways of nding and organizing them. Algorithm 4
is a simple algorithm for building the Or group of features. In our approach, we
pruned the AOC-poset by removing the top concept, concepts that correspond to
AND groups of features, and concepts that correspond to features that form an
exclusive-or relation. The remaining concepts de ne features that are grouped
(lines 8-12) into an Or node (created and linked to the root on lines 4-7). In
the AOC-poset of Figure 2, the Wireless, Infrared, Bluetooth, and Multi Player
features form an inclusive-or relation (cf. Figure 3).
2.5</p>
          <p>Extracting require constraints
Algorithm 5 is a simple algorithm for identifying require constraints. A require
constraint, e.g., saying "variable feature A always requires variable feature B",
can be extracted from the lattice via implications. We say that A implies B
(written A ! B). The require constraints can be identi ed in the AOC-poset:
when a feature F1 is introduced in a subconcept of the concept that introduces
another feature F2, there is an implication F1 ! F2. We only consider the
transitive reduction of the AOC-poset limited to Attribute-concepts (line 2) and
features that are in simpli ed intents (line 3-4). In the AOC-poset of Figure 2,
we nd 6 require constraints from the transitive reduction of the AOC-poset to
Algorithm 3: ComputeExclusive-or Relation (Xor)</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Data: AOCK , s: the AOC-poset associated with K</title>
        <p>Result: part of the FM with XOR group of features
1 // Compute exclusive-or relation
2 FL00 FL0 n AsFs
3 Cxor ;
4 SSCS ; // set of super-concept sets
5 Minimum-set ;
6 for each minimum of AOCK denoted by m do
7 Let SSC the set of super-concepts of m (except &gt;)
8 SSCS SSCS [ fSSCg
9 Minimum-set Minimum-set [ fmg
10 Cxor Cxor [ SSC
11 while SSCS 6= ; do
12 SSC-1 any element in (SSCS)
13 SSCS SSCS n SSC-1
14 for each SSC-2 in SSCS do
15 Cxor Cxor n (SSC-1 \ SSC-2)
16 Cxor Max(Cxor)
17 XFS ;
18 if jCxorj &gt; 1 and jF L00 \ [C2Cxorsimplif ied intent(C)j &gt; 1 then
19 Create node xor with label (xor ) "XOR"
20 type (xor ) abstract
21 create edge e = (root, xor )
22 // if all products are covered by Cxor
23 if [C2Cxorextent(C) = O then
24 type (e) mandatory
attribute-concepts (cf. Figure 3). Remark that implications ending to mandatory
features are useless because they are represented in the FM by the Base node.
In our current proposal, we compute binary exclude constraints :(A ^ B) under
the condition that A and B are not both linked to the Or group. To mine
Algorithm 4: ComputeInclusive-orRelation (Or)</p>
      </sec>
      <sec id="sec-2-3">
        <title>Data: AOCK , s: the AOC-poset associated with K</title>
        <p>Result: part of the FM with OR group of features
1 // Compute inclusive-or relation
2 FL000 FL00 n XFS
3 if FL000 6= ; then
4 Create node or with label (or ) "OR"
5 type (or ) abstract
6 create edge e = (root, or )</p>
      </sec>
      <sec id="sec-2-4">
        <title>7 type (e) optional</title>
        <p>8 for each F in FL000 do</p>
      </sec>
      <sec id="sec-2-5">
        <title>9 create node feature, with label (feature) F 10 type (feature) concrete 11 create edge e = (or, feature) 12 type (e) Or</title>
        <p>Algorithm 5: ComputeRequireConstraint (Requires)</p>
      </sec>
      <sec id="sec-2-6">
        <title>Data: ACK , s: the AC-poset associated with K</title>
        <p>Result: Require - the set of require constraints
1 Require ;
2 for each edge (C1, C2) = e in transitive reduction of AC-poset do
3 for all f1, f2 with f1 2 simpli ed intent(C1) and f2 2 simpli ed intent(C2) do
4 Require Require [ ff1 ! f2g
exclude constraints from an AOC-poset, we use the meet3 of the introducers of
the two involved features. For example, the meet of Concept 2 which introduces
Weak and Concept 22 which introduces Multi Player is the bottom (in the whole
lattice). In the AOC-poset they don't have a common lower bound. We can
thus deduce :(W eak ^ M ulti P layer). In the AOC-poset of Figure 2, there
are three exclude constraints (cf. Figure 3). Algorithm 6 is a simple algorithm
for identifying exclude constraints. It compares features that are below the OR
group with each set of features in the intent of a minimum (line 4), in order to
determine which are incompatible: this is the case for a pair (f1, f2) where f1
is in the OR group and not in the minimum intent, and f2 is in the minimum
intent but not in the OR group (lines 6-10). Figure 3 shows the resulting FM
based on the product con gurations of Figure 1.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 in the lattice</title>
      <p>Algorithm 6: ComputeExcludeConstraint (Excludes)</p>
      <sec id="sec-3-1">
        <title>Data: AOCK, s: the AOC-poset associated with K</title>
        <p>Result: Exclude - the set of exclude constraints.
1 // Minimum-set from Algorithm 3
2 // FL000 from Algorithm 4
3 Exclude ;
4 for each P 2 Minimum-set do
5 P intent intent(P ) n intent(&gt;)
6 Opt-feat-set FL000 n (FL000 \ P intent)
7 Super-feat-set P intent n (FL000 \ P intent)
8 if Opt-feat-set 6= ; and Super-feat-set 6= ; then
9 for each f1 2 Opt-feat-set, f2 2 Super-feat-set do
10 Exclude Exclude [ f:(f1 ^ f2)g
3</p>
        <sec id="sec-3-1-1">
          <title>Experimentation</title>
          <p>
            In order to evaluate the mined FM we rely on the SPLOT homepage4 and the
FAMA Tool5. Our implementation6 converts the FM that has been drawn
using SPLOT homepage into the format of FAMA. Then, we can easily generate
a le containing all valid product con gurations [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ]. Figure 3 shows all valid
product con gurations for the mined FM by our approach (the rst 16 product
con gurations are the same as in Figure 1). We compare the sets of con
gurations de ned by the two FMs (i.e., the initial FM compared to the mined FM).
The mined FM introduces 15 extra product con gurations which correspond to
feature selection constraints that have not been detected by our algorithm.
Evaluation Metrics: In our work, we rely on precision, recall and F-measure
metrics to evaluate the mined FM. All measures have values in [
            <xref ref-type="bibr" rid="ref1">0, 1</xref>
            ]. If
recall equals 1, all relevant product con gurations are retrieved. However, some
retrieved product con gurations might not be relevant. If precision equals 1,
all retrieved product con gurations are relevant. Nevertheless, relevant product
con gurations might not be retrieved. If F-Measure equals 1, all relevant
product con gurations are retrieved. However, some retrieved product con gurations
might not be relevant. F-Measure de nes a trade-o between precision and
recall, so that it gives a high value only in cases where both recall and precision are
high. The result of the product con gurations that are identi ed by the mined
cell phone FM is as follow: (precision: 0.51), (recall : 1.00) and (F-Measure: 0.68).
The recall measure is 1 by construction, due to the fact that the algorithm was
designed to cover existing products.
4 SPLOT homepage : http://gsd.uwaterloo.ca:8088/SPLOT/
5 FAMA Tool Suite : http://www.isa.us.es/fama/
6 Source Code : https://code.google.com/p/sxfmtofama/
P-17
P-18
P-19
P-20
P-21
P-22
P-23
P-24
P-25
P-26
P-27
P-28
P-29
P-30
P-31
t
n
e
n
o
e lreay lreay lppO
lleohnPC ilrsseeW fIrreand ltteoouhB llcceuCA trogSn ieudmM eakW lisaypD seaGm iltuPM ilegnSP iiiftrcaA
          </p>
          <p>
            To validate our approach7, we ran experiments on 7 case studies:
ArgoUMLSPL [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], mobile media software variants [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ], public health complaint-SPL8, video
on demand-SPL [
            <xref ref-type="bibr" rid="ref3 ref8">8,3,14</xref>
            ], wiki engines [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ], DC motor [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] and cell phone-SPL
[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. Table 1 summarizes the obtained results.
          </p>
          <p>Results show that precision appears to be not very high for all case studies.
This means that many of the identi ed product con gurations of the mined FM
are extra con gurations (not in the initial set that is de ned by the original FM).
Considering the recall metric, its value is 1 for all case studies. This means that
product con gurations de ned by the initial FM are included in the product
con gurations derived from the mined FM. Experiments show that if the
generated AOC-poset has only one bottom concept there is no exclusive-or relation
or exclude constraints from the given product con gurations. In our work, the
mined FM de nes more con gurations than the initial FM. The reason behind
this limitation is that some feature selection constraints are not detected.
Nevertheless, the AOC-poset contains information for going beyond this limitation.
We plan to enhance our algorithm to deal with that issue, at the price of an
increase of complexity.
4</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>Related Work</title>
          <p>
            For the sake of brevity, we describe only the work that most closely relates to
ours. The majority of existing approaches are designed to reverse engineer FM
7 Source code: https://code.google.com/p/refmfpc/
8 http://www.ic.unicamp.br/~tizzei/phc/
from high level models (e.g., product descriptions) [
            <xref ref-type="bibr" rid="ref10">10,14</xref>
            ]. Some approaches
offer an acceptable solution but are not able to identify important parts of FM
such as cross-tree constraints, and-group, or-group, xor-group [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ]. The main
challenge of works that reverse engineer FMs from product con gurations ([
            <xref ref-type="bibr" rid="ref3 ref8">8,3</xref>
            ])
is that numerous candidate FMs can be extracted from the same input con
gurations, yet only a few of them are meaningful and correct. The majority of
existing approaches are designed to identify the dependencies between features
regardless of FM hierarchy [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ]. Work that relies on FCA to extract a FM does
not fully exploit resulting lattices. In [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ], authors rely on FCA to extract a
basic FM without cross-tree constraints, while in [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], authors use FCA as a tool
to understand the variability of existing SPL based on product con gurations.
Their work does not produce FMs. In our work, we rely on FCA to extract FMs
from the software con gurations. The resulting FMs exactly describe the given
product con guration set. The proposed approach is able to identify all parts of
FMs.
5
          </p>
        </sec>
        <sec id="sec-3-1-3">
          <title>Conclusion</title>
          <p>In this paper, we proposed an automatic approach to extract FMs from software
variants con gurations. We rely on FCA to extract FMs including con guration
constraints. We have implemented our approach and evaluated its produced
results on several case studies. The results of this evaluation showed that the
resulting FMs exactly describe the given product con guration set. The FMs
are generated in very short time, because our FCA tool (based on traversals of
the AOC-poset) scales signi cantly better than the standard FCA approaches
to calculate and traverse the lattices. The current work extracts a FM with two
levels of hierarchy. As a perspective of this work, we plan to enhance the
extracted FM by increasing the levels of hierarchy based on AOC-poset structure
and to avoid allowing the FM to represent extra con gurations.</p>
          <p>Acknowledgment The authors would like to thank the reviewers for their
valuable remarks that helped improve the paper. This work has been supported
by the CUTTER ANR-10-BLAN-0219 project.</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Al-Msie'deen</surname>
          </string-name>
          , R.,
          <string-name>
            <surname>Seriai</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Urtado</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vauttier</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Salman</surname>
            ,
            <given-names>H.E.</given-names>
          </string-name>
          :
          <article-title>Mining features from the object-oriented source code of a collection of software variants using formal concept analysis and latent semantic indexing</article-title>
          . In: SEKE '
          <fpage>13</fpage>
          . (
          <year>2013</year>
          )
          <volume>244</volume>
          {
          <fpage>249</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Al-Msie'deen</surname>
          </string-name>
          , R.,
          <string-name>
            <surname>Seriai</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Urtado</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vauttier</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Documenting the mined feature implementations from the object-oriented source code of a collection of software product variants</article-title>
          . In: SEKE '
          <fpage>14</fpage>
          . (
          <year>2014</year>
          )
          <volume>264</volume>
          {
          <fpage>269</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Acher</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baudry</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cleve</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hainaut</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          :
          <article-title>Support for reverse engineering and maintaining feature models</article-title>
          .
          <source>In: VaMoS '13</source>
          , New York, NY, USA, ACM (
          <year>2013</year>
          )
          <volume>20</volume>
          :
          <fpage>1</fpage>
          {
          <issue>20</issue>
          :
          <fpage>8</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>She</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lotufo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Berger</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wasowski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Reverse engineering feature models</article-title>
          .
          <source>In: ICSE '11</source>
          , New York, NY, USA, ACM (
          <year>2011</year>
          )
          <volume>461</volume>
          {
          <fpage>470</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Haslinger</surname>
            ,
            <given-names>E.N.</given-names>
          </string-name>
          :
          <article-title>Reverse engineering feature models from program con gurations</article-title>
          .
          <source>Master's thesis</source>
          , Johannes Kepler University Linz, Linz, Austria (
          <year>September 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Ganter</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wille</surname>
          </string-name>
          , R.:
          <source>Formal concept analysis - mathematical foundations</source>
          . Springer (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Berry</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutierrez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Napoli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sigayret</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Hermes: a simple and e cient algorithm for building the AOC-poset of a binary relation</article-title>
          ,
          <source>Annals of Mathematics and Arti cial Intelligence</source>
          (may
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Haslinger</surname>
            ,
            <given-names>E.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopez-Herrejon</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Reverse engineering feature models from programs' feature sets</article-title>
          .
          <source>In: WCRE '11</source>
          ,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2011</year>
          )
          <volume>308</volume>
          {
          <fpage>312</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Andersen</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>She</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wasowski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>E cient synthesis of feature models</article-title>
          .
          <source>In: SPLC (1)</source>
          , ACM (
          <year>2012</year>
          )
          <volume>106</volume>
          {
          <fpage>115</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Acher</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cleve</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perrouin</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vanbeneden</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Collet</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lahire</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On extracting feature models from product descriptions</article-title>
          . In: VaMoS '
          <fpage>12</fpage>
          , New York, NY, USA, ACM (
          <year>2012</year>
          )
          <volume>45</volume>
          {
          <fpage>54</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Ryssel</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ploennigs</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kabitzsch</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Extraction of feature models from formal contexts</article-title>
          .
          <source>In: SPLC '11</source>
          , New York, NY, USA, ACM (
          <year>2011</year>
          )
          <article-title>4:1{4:8</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Loesch</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ploedereder</surname>
          </string-name>
          , E.:
          <article-title>Optimization of variability in software product lines</article-title>
          .
          <source>In: SPLC '07</source>
          , Washington, DC, USA, IEEE Computer Society (
          <year>2007</year>
          )
          <volume>151</volume>
          {
          <fpage>162</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Benavides</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Segura</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz-Cortes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Automated analysis of feature models 20 years later: A literature review</article-title>
          .
          <source>Inf. Syst</source>
          .
          <volume>35</volume>
          (
          <issue>6</issue>
          ) (
          <year>September 2010</year>
          )
          <volume>615</volume>
          {
          <fpage>636</fpage>
          14.
          <string-name>
            <surname>Lopez-Herrejon</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galindo</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benavides</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Segura</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Reverse engineering feature models with evolutionary algorithms: An exploratory study</article-title>
          .
          <source>In: SSBSE</source>
          , Springer (
          <year>2012</year>
          )
          <volume>168</volume>
          {
          <fpage>182</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>