  Analyzing a Feature Model (FM) and reasoning on the corresponding
configuration space is a central task in Software Product Line (SPL)
engineering. Problems such as deciding the satisfiability of the FM and
eliminating inconsistent parts of the FM have been well resolved by translating
the FM into a conjunctive normal form (CNF) formula, and then feeding the CNF
to a SAT solver. However, this approach has some limits for other important
reasoning issues about the FM, such as counting or enumerating configurations.
Two mainstream approaches have been investigated in this direction: (i) direct
approaches, using tools based on the CNF representation of the FM at hand, or
(ii) compilation-based approaches, where the CNF representation of the FM has
first been translated into another representation for which the reasoning
queries are easier to address. Our contribution is twofold. First, we evaluate
how both approaches compare when dealing with common reasoning operations on
FM, namely counting configurations, pointing out one or several configurations,
sampling configurations, and finding optimal configurations regarding a utility
function. Our experimental results show that the compilation-based is efficient
enough to possibly compete with the direct approaches and that the cost of
translation (i.e., the compilation time) can be balanced when addressing
sufficiently many complex reasoning operations on large configuration spaces.
Second, we provide a Java-based automated reasoner that supports these
operations for both approaches, thus eliminating the burden of selecting the
appropriate tool and approach depending on the operation one wants to perform.
