<!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>Using Answer Set Programming for Feature Model Representation and Configuration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Juha Tiihonen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikko Raatikainen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Alexander Felfernig</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Feature models are a wide-spread approach used for expressing variability in software product lines. Answer set programming (ASP) is nowadays an increasingly popular approach to configuration knowledge representation. In this paper, we study the similarities between feature modeling and configuration knowledge representation with ASP. We define the feature configuration problem utilizing ASP, and show two different ways using an example of translating the basic feature modeling concepts embodied in the graphical feature models into ASP programs. This way we want to emphasize the role of ASP as a means to tackle the feature configuration problem.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Features and feature models [
        <xref ref-type="bibr" rid="ref11 ref17 ref18">11, 17, 18</xref>
        ] have been proposed as a
means to represent the variability of a software system. Variability in
software is defined as the ability of a system to be efficiently
extended, changed, customized or configured for use in a particular
context [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Correct and efficient management of variability is
especially important for software product lines. A software product line
is a set of products that share a common, managed set of features,
a common architecture and a set of reusable assets, thus enabling
the preplanned production of products with slightly varying
capabilities [
        <xref ref-type="bibr" rid="ref10 ref7">7, 10</xref>
        ]. In fact, feature modeling has become the de facto means
to represent and reason about variability in software product lines
in academia [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Within software product lines, feature models can
be used for two purposes: to manage and reason about commonality
and variability at the domain engineering level, and to support the
derivation of valid products at the application engineering level.
      </p>
      <p>
        Software product line variability, and consequently, feature
models, can grow large and complex. Due to the combinatorial explosion,
analyzing feature models and finding a valid feature configuration is
infeasible to do manually with large-scale feature models [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Thus,
there is a need for automated analysis and reasoning of feature
models [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. However, it seems that current feature model analysis focuses
on the analysis of the variability, that is, analysis at the domain
engineering level, rather than on analysis of the derivation or
configuration task. Out of the feature analysis operations listed in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], only a
few analyses are related to derivation: whether a given feature
configuration is a valid product, and the operation to enumerate all possible
valid configurations [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The problem of feature configuration has
been studied to some extent, for example, for staged feature
configuration [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] that elaborates several stages of making selections and
pruning the variability space. Within this paper, we are interested in
the simple configuration problem: given a set of requirements for a
product, what are the valid feature configurations?
      </p>
      <p>
        In the field of mechanical and physical products, configuration has
a long and successful history as a basis for mass-customization, see,
e.g., [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. The variability of the product is captured in a configuration
model that represents the taxonomy and compositional structure of a
product along with relevant constraints. The configuration task for
a configuration model results in a configuration, a specification of a
product individual [
        <xref ref-type="bibr" rid="ref19 ref23 ref30">19, 30, 23</xref>
        ] that meets the customer requirements.
      </p>
      <p>
        As a supporting tooling, Answer Set Programming (ASP) is an
increasingly important formalism for the representation of
configuration models. Configuration is one of the first applications of ASP
solving; the requirements of configuration problems were taken into
account already in the development of the early ASP tool Smodels
[
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. On the one hand, ASP programs have been applied directly to
model configuration [
        <xref ref-type="bibr" rid="ref24 ref28">24, 28</xref>
        ] and reconfiguration [
        <xref ref-type="bibr" rid="ref13 ref24">13, 24</xref>
        ] problems
in research systems. On the other hand, another approach is to model
configuration models with a high-level language and to translate the
resulting model into a corresponding ASP program [
        <xref ref-type="bibr" rid="ref29 ref31">31, 29</xref>
        ].
      </p>
      <p>
        The two disciplines of software product lines and configurable
products have similar goals and challenges in the variability
management [
        <xref ref-type="bibr" rid="ref16 ref4">16, 4</xref>
        ]. A major goal of this paper is to show in an easily
accessible manner and through concrete examples how ASP can be
applied in the context of feature modeling. Previous work has
described these aspects on a higher level of abstraction. Therefore, our
research problem is to study the similarities between feature
modeling and configuration knowledge representation with ASP. For this
purpose, the following research questions are set:
      </p>
      <p>RQ1: How can the feature configuration problem be stated
through ASP?
RQ2: What are the different ways to represent a feature model
diagram as an ASP program?
RQ3: What are the synergies in the variability management
between feature modeling and product configuration?</p>
      <p>Figure 1 illustrates the strategy that this paper utilizes to answer
the research problem and questions. In particular, it shows how the
graphical feature diagrams are represented with textual languages,
and these textual languages are then automatically translated to ASP
programs. Since the same graphical feature model can be represented
both with the textual feature modeling language (Kumbang) as well
as with the product configuration language (PCML), it is possible
to compare and identify conceptual similarities and differences
between software variability management and product configuration.
Moreover, the figure illustrates the strategy of utilizing intermediate
level languages: this omits the need to manually write ASP programs
directly, and consequently, any inherent cognitive difficulties.</p>
      <p>
        The contributions of this paper are the following. Firstly, we adapt
the existing work [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] to define the feature configuration problem
based on answer sets and stable model semantics. Secondly, we show
how the basic concepts of feature models can be represented as ASP
programs utilizing a concrete running example. This enables the use
of existing ASP solvers to efficiently solve the feature
configuration problem. Thirdly, for translating the feature models to ASP
programs, we utilize two existing intermediate level languages; these
languages enable the product line engineer to operate on
domainspecific modeling constructs. Since these two languages originate
from different paradigms, this highlights the conceptual similarities
between software product line engineering and product
configuration.
      </p>
      <p>The remainder of this paper is organized as follows. Section 2 lays
out the background as a previous work. Section 3 defines the
feature configuration task and problem with ASP. Section 4 shows how
graphical feature models can be represented as ASP programs by
translating them through a textual feature modeling language called
Kumbang (cf. Figure 1). Section 5 demonstrates that the same
graphical feature model can be represented by Product Configuration
Modeling Language (PCML) and its translation to ASP. Section 6
discusses the similarities of the software variability and traditional
product configuration. Section 7 concludes.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
    </sec>
    <sec id="sec-3">
      <title>Feature modeling</title>
      <p>
        A feature in a feature model can be seen as a characteristic of a
system that is visible to the end-user [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. For example, for a software
product line for mobile phones, feature MP3 might represent the
capability to listen to and store audio files in MP3 format (see
Figure 2). Since features can be used to capture also technological or
implementation decisions [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], the definition of a feature has been
extended to be a system property that is relevant to some stakeholder
and is used to capture commonalities or discriminate among product
variants [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        Given a set of features, a feature model represents the variability
and relations of those features. A feature model is represented as a
hierarchically arranged set of features that consists of relations between
a parent (or compound) feature and its child features (or subfeatures)
and cross-hierarchy constraints [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Typically, feature models are
presented as graphical diagrams. An example feature model for mobile
phones is illustrated in Figure 2.
      </p>
      <p>
        At least four basic relations between parent and child features can
be identified [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Firstly, a child feature can be mandatory in
relation to its parent feature: the child feature must be included in all
products that include the parent feature. For example, feature Calls
is mandatory in relation to feature Mobile Phone (see Figure 2).
Secondly, a child feature can be optional in relation to its parent
feature, for example, feature GPS can either be selected or left out for
all mobile phones. Thirdly, a set of child features can be alternative
in relation to their parent feature, which means that exactly one of
the child features must be selected when the parent feature is in the
product. As an example, exactly one of features Basic, Colour, and
High resolution must be present in the product that has feature
Screen. Fourthly, a set of child features can be in or relation to their
parent feature, which means that one or more of them are present in
the product that has the parent feature; this is exemplified by features
Camera and MP3 in Figure 2.
      </p>
      <p>Additionally, there can be cross-hierarchy constraints. For
example, features GPS and Basic are mutually exclusive, which
means they cannot be in the same product, whereas feature High
resolution must always be included in a product that contains
feature Camera. These constraints are presented as annotations in
Figure 2.</p>
      <p>
        Various feature models and extensions to basic feature models
have been proposed, as discussed in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Firstly, there can be feature models with attributes [
        <xref ref-type="bibr" rid="ref12 ref5">12, 5</xref>
        ], as
illustrated in Figure 2. Feature Storage has been characterized with
attribute that describes the size in gigabytes, with an enumerated value
range. Attributes are typically defined by stating a name and a
specific range of values. Typically, a variation point that has a finite
number of variants can be represented both as a set of features and as an
attribute in a feature.
      </p>
      <p>
        Secondly, there can be feature models with cardinality [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ]. It
has been argued that cardinalities can be used to express similar
relations as with basic feature relations. For example, Figure 3 illustrates
how a part of the model in Figure 2 is represented with cardinalities.
      </p>
      <p>
        The usage of feature models varies from an informal
documentation or visualization to more rigorous usages enabling even
automated analysis. Respectively, the research has matured from the early
notations [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] to various formalizations and analyses [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. One
possible usage of feature models is with configurable software product
lines [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]: a product can be derived without further development [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
by configuring features, resulting in a model of a product individual.
2.2
      </p>
    </sec>
    <sec id="sec-4">
      <title>Answer Set Programming</title>
      <p>
        As summarized in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], Answer Set Programming (ASP) has become
a popular approach to declarative problem solving. The attractiveness
of ASP stems from a combination of a rich and yet simple modeling
language and the availability of high-performance solvers. The roots
of ASP include knowledge representation, logic programming,
(nonmonotonic) reasoning, databases, and Boolean constraint solving.
      </p>
      <p>
        ASP makes it possible to express the problem as a theory
consisting of logic program rules with clear declarative semantics, and the
stable models, i.e., the answer sets of the theory correspond to the
solutions to the problem [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>
        Programs that follow the Answer Set Programming paradigm are
a generalization of normal logic programs. A generalized and
unified syntax of ASP programs called ASP-Core-2 has been defined
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. This input language has been adopted by many ASP solvers [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
Optimality criteria, variables and built-in functions can be defined.
The syntax of ASP programs is close to Prolog, but the computation
method via model generation is different [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>
        There are a number of ASP solvers available, see [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ], that can
tackle a number of complex problems. The best ASP solvers
perform well for a range of hard problems; see, for example, problems
and results of the Fourth Answer Set Programming Competition [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
The competition tasks included 3 problems in complexity class P , 15
problems in N P , 3 problems Beyond-NP (P2P ), and 5 optimization
problems; the domains of the tasks include combinatorial, database,
diagnosis, graph, planning and scheduling problems. An example of
current, well performing set of tools is Potassco, the Potsdam Answer
Set Solving Collection[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], available from [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        The authors of this paper have applied weight constraint rule
language (WCRL) that is almost a genuine subset of ASP-Core-2. The
languages ASP-Core-2 and WCRL are compatible enough so that the
concrete WCRL logic programs generated by our tools are valid
input to systems based on ASP-Core-2. This was verified with Clingo
version 4.3, available from [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. Thus, when describing WCRL, we
actually describe a part of ASP-Core-2 that is sufficient for this
paper. We can do this in a slightly more intuitive yet compact way than
we could describe the full ASP-Core-2.
      </p>
      <p>
        In the following, we describe the basic concepts of weight
constraint rules focusing on the concepts needed in the rest of the paper.
Instead of explaining the concepts utilizing a running example, these
concepts are exemplified for Kumbang in Section 4 and for PCML in
Section 5. For further details and examples, please see [
        <xref ref-type="bibr" rid="ref25 ref9">25, 9</xref>
        ].
      </p>
      <p>Cardinality constraints are used as the primary basic building
blocks of the product configuration rules. Cardinality constraints are
of the form</p>
      <p>lfa1; : : : ; an; not b1; : : : ; not bmgu
where l and u are the lower and upper bounds of the constraint.
Basic atoms are the smallest lexical units, for example a, or b. A
literal is an atom b or a not-atom not b. A cardinality constraint
is satisfied by a set of atoms S if the number of those literals in
fa1; : : : ; an; not b1; : : : ; bmg that are satisfied by S is between the
bounds l and u.</p>
      <p>A constraint rule is an expression of the form</p>
      <p>C0 :- C1; : : : ; Cn
where the body of the rule consists of a number of cardinality
constraints Ci, and the head C0 cannot contain negated atoms. A
program P is then a set of constraint rules.</p>
      <p>For product configuration, the following rules are often useful.
Firstly, in choice rules the number of satisfied atoms in the head must
be between l and u:</p>
      <p>lfa1; : : : ; angu :- C1; : : : ; Cn
Secondly, a rule with an empty head yields an integrity constraint
:- C1; : : : ; Cn, that is, an unsatisfiable constraint that allows
specifying inconsistent situations where finding the answer is not possible.
Finally, a rule with an empty body is called a fact. For example, a
fact C0 states that C0 is always true.</p>
      <p>Given a set of atoms S, a rule C0 :- C1; : : : ; Cn is satisfied iff S
satisfies C0 whenever S satisfies each of C1; : : : ; Cn. A program P
is satisfied by S if each rule in P is satisfied by S. A stable model or
answer set of a weight constraint rule program is defined as a set of
atoms that 1) satisfies the program (is a classical model of the
program) and 2) every atom in a stable model is justified (grounded) by
the rules in the program. For example, consider the logical formula
b ^ (b ^ :c ! a) that has three (classical) models fb; cg, fa; bg and
fa; b; cg. The answer set program</p>
      <p>
        b: a :- b; not c:
has one stable model fa; bg. For the formalization of this definition,
refer to [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>Variable-free ground weight constraint rules discussed up to now
become more practical by allowing the use of variables, function
symbols, and predicates. A rule with variables is treated as a short
hand for all its ground instantiations with respect to the Herbrand
universe of the program. Decidability is retained by allowing only
domain-restricted rules. Ignoring the details, each variable in a rule
must appear in a domain predicate which occurs positively in the
body of the rule. For example, p(X) :- q(X) over constants fa; b; cg
is an abbreviation of</p>
      <p>p(a) :- q(a); p(b) :- q(b); p(c) :- q(c)</p>
      <p>Given predicates and domains, rules with the so called conditional
literals are frequently applied in product configuration. For example,
a fact with predicate chair and domain predicate member states that
every board must have exactly one chair that must also be a member:
1 fchair(X) : member(X)g 1:
3</p>
    </sec>
    <sec id="sec-5">
      <title>Feature Configuration Problem Utilizing ASP</title>
      <p>
        Research question RQ1 identified the need to address the feature
configuration problem with ASP. In order to utilize ASP and existing
solvers (see Section 2.2), one needs to define the basic concepts of the
feature configuration problem. Figure 4 defines the feature
configuration problem. Here, we adapt the definition of [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] to the domain
of feature models in a straightforward manner. We describe each key
concept in the definition informally and through examples from the
domain of feature models. For further information about the
configuration problem in more general terms, see [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>Definition of the feature configuration task. Given
CM a feature configuration model CM translated to a set
of rules,
GF a set of ground facts representing the types in CM and
unique identifiers for the instances of types, and
R a set of rules R representing requirements,
is there a feature configuration C, that is,
a stable model of CM [ S, such that C satisfies R?</p>
      <p>Firstly, a feature configuration model CM in Figure 4 specifies the
entities, such as features; their properties, such as feature attributes;
and composition structure, i.e. the feature tree structure; and the rules
how the entities and their properties can be combined in a proper
manner for a valid product. More informally, a feature configuration
model represents the variability in the product line. For example, the
feature model in Figure 2 is represented as one configuration model
CM .</p>
      <p>Within the definition in Figure 4, a distinction is made between
types in a configuration model and instances in a configuration.
Types in a configuration model define the properties of their
individuals that can appear in a configuration. For example, in Figure 2,
feature type storage defines the different attributes and their values,
whereas feature instance storage in the actual product has a specific
value for the size, for example 16 GB.</p>
      <p>Ground facts GF in Figure 4 describe the possible feature
instances and the attribute values of instances that can exist in a feature
configuration. For example, for the feature Storage in Figure 2, a
ground fact featStorage(i). indicates that feature instance with a
unique identifier i is of feature type Storage. Additionally, a ground
fact hasattr(i,attrsizeGB,16). tells that this instance has a
specific attribute value assignment to indicate 16GB storage.</p>
      <p>The set of rules R define requirements thus having a different
status from the rules in the configuration model: these requirements
represent the requirements that a specific product instance must satisfy.
In a valid product configuration, the requirements must be satisfied
by a configuration but cannot justify any elements in it. For a feature
configuration problem, the requirements are stated as features that
must be present in the configuration, or as attribute values that these
features have. For example, for Figure 2, one requirement could be
stated as hasattr(i,attrsizeGB,16)., meaning that there must
be 16 GB storage in the product.</p>
      <p>A feature configuration C consists of a set of positive and negative
atoms. Positive atoms represent the feature instances and attribute
values that are in the configuration. Due to the characteristics of ASP
and stable models discussed in Section 2.2, the feature instances and
attribute values in the configuration C, that is, the positive atoms in
C, both satisfy the configuration model and its requirements, and are
justified by them. For example, among the atoms that would be in the
feature configuration for Figure 2, an atom in(i) indicates the
inclusion of feature Storage. Further, if the storage is set to 16GB, an
atom hasattr(i,attrsizeGB,16) is true, while atoms
representing other attribute values, such as hasattr(i,attrsizeGB,32),
are false.</p>
      <p>Consequently, the feature configuration C in the definition above
is both consistent and complete. Informally, a consistent feature
configuration is such that no rules of the configuration model are
violated. A complete feature configuration is such that all the necessary
selections have been made.</p>
      <p>An ASP solver can be used to find consistent and complete
configurations that meet a set of given requirements, given that such
configurations exist. Therefore, the configuration problem definition above
and its ASP solution can be used to support both domain and
application engineering activities. At the domain engineering level, it
can be checked whether the given feature configuration model CM
doesn’t have any consistent and complete configurations, which
implies a self-contradictory model. At the application engineering level,
the configuration task can support the finding of consistent and
complete configurations, potentially even specifying the requirements R
in an iterative manner.</p>
      <p>For supporting the user in the configuration task, deducing the
consequences of requirements is based on computing an approximation
of the set of configurations satisfying the requirements that are valid
but not necessarily all consequences are found. Intuitively, the
consequences contain a set of facts that must hold for the configurations
satisfying the requirements, a set of facts that cannot be true for the
given requirements, and a set of unknown facts.</p>
      <p>From the practical point of view, a product line engineer needs
to capture the product line features and their commonality and
variability into a configuration model CM . There are two options for
this representation. The first option is to represent the informal
feature model, for example, the visual notation in Figure 2, directly as
an ASP program. However, this kind of a modeling task requires
skills in logic programming, which may not be the case with an
average product line engineer. The second option is to capture the
feature model with a machine-processable, but human-readable textual
language that utilizes directly the concepts known to a product line
engineer, and then automatically translate the resulting middle-level
model to an ASP program. This translation to ASP also gives the
semantics to the middle-level representation language, as well as
enables the use of existing ASP solvers for the configuration task. As is
illustrated in Figure 1, this paper takes the latter approach.</p>
      <p>In the following, we discuss how feature models can be
represented as ASP programs, and consequently, how to represent the
configuration model CM .
4</p>
    </sec>
    <sec id="sec-6">
      <title>Representing Feature Models as ASP Programs through Textual Feature modeling Language</title>
      <p>
        Section 3 presented the feature configuration problem utilizing ASP
programs and identified the need to represent a given feature model
as an ASP program. In the following, we show how the graphical
feature model in Figure 2 and the basic feature modeling concepts
can be represented as ASP programs. This is done in two phases,
as illustrated in Figure 1: firstly, Section 4.1 shows how the feature
model is represented as a textual model in Kumbang, and thereafter
Section 4.2 shows how the textual model in Kumbang is translated to
WCRL automatically with the Kumbang tool set [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Thus, for the
purpose of this paper, we utilize WCRL as an example language to
construct ASP programs (see also Section 2.2).
4.1
      </p>
    </sec>
    <sec id="sec-7">
      <title>Representing the Feature Model in Kumbang</title>
      <p>
        In order to enable the feature configuration with ASP, the feature
model in Figure 2 needs to be represented in a form that is both
understandable to a product line engineer, and can be unambiguously
translated to an ASP program. For this purpose, we utilize
Kumbang language [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], which is a modeling language and an ontology for
modeling variability in software product line architectures from the
Forfamel model mobilephone
      </p>
      <p>root feature MobilePhone
feature type MobilePhone {
contains</p>
      <p>
        Calls calls;
GPS gps[
        <xref ref-type="bibr" rid="ref1">0-1</xref>
        ];
Screen screen;
Media media[
        <xref ref-type="bibr" rid="ref1">0-1</xref>
        ];
      </p>
      <p>
        Storage storage;
sitional relations between features, such as mandatory, optional, and
alternative. As illustrated in Figure 3, the multitude of these
relations can be expressed with one relation: cardinality. In order to
define such relations in the configuration model, the cardinality needs
a placeholder in the textual notation: such a placeholder in Kumbang
is called a part definition. For example, the part definition Media
media[
        <xref ref-type="bibr" rid="ref1">0-1</xref>
        ] in feature type MobilePhone states that Media is an
optional feature i.e. has a cardinality from zero to one. Part
defini% Definitions of feature types
featureType(featMobilePhone). featureType(featCalls).
featureType(featGPS). featureType(featScreen).
featureType(featColour). featureType(featBasic).
featureType(featHighResolution).
featureType(featMedia). featureType(featMP3).
featureType(featCamera). featureType(featStorage).
% Root feature MobilePhone
froot(X) :- featMobilePhone(X).
% The feature root is always in the configuration
1 { in(F) : froot(F) } 1.
% Some example part definitions (not all shown)
1{haspart(X1,X2,partDeftype):ppart(X1,X2,partDeftype,I)}1
:- featScreen(X1), in(X1).
1{haspart(X1,X2,partDefapps):ppart(X1,X2,partDefapps,I)}2
:- featMedia(X1), in(X1).
% Attribute definition for feature Storage
1 {hasattr(X,attrDefsizeGB,V):attrSize(V)} 1
:- in(X), featStorage(X).
% Definition of attribute value type Size
attrSize(8). attrSize(16). attrSize(32). attrSize(64).
% Constraint "Camera requires HighResolution"
% Other constraints omitted
constr5(X) :- in(X0),featHighResolution(X0),featCamera(X).
cf(5,X) :- featCamera(X), in(X), not constr5(X).
cff :- cf(5,X), featCamera(X).
% Possible feature instances in the configuration
% are enumerated with unique identifiers and
% corresponding possible parts are defined.
featMobilePhone(i0).
featCalls(i1). ppart(i0,i1,partDefcalls,1).
featGPS(i2). ppart(i0,i2,partDefgps,1).
featScreen(i3). ppart(i0,i3,partDefscreen,1).
featBasic(i4). ppart(i3,i4,partDeftype,1).
featColour(i5). ppart(i3,i5,partDeftype,1).
featHighResolution(i6). ppart(i3,i6,partDeftype,1).
featMedia(i7). ppart(i0,i7,partDefmedia,1).
featCamera(i8). ppart(i7,i8,partDefapps,1).
featMP3(i9). ppart(i7,i9,partDefapps,1).
featStorage(i10). ppart(i0,i10,partDefstorage,1).
% A feature instance is in the configuration
% if it is both actual and possible part of something
in(X2) :- haspart(X1, X2, N), ppart(X1, X2, N, I).
to be in a configuration, and if two are selected, they need to be
diffrom the root type, defined using predicate froot.
      </p>
      <p>Thirdly, the compositional structure of the features must be
defined. For each part definition, a rule with the following format is
added:
nfhaspart(X1; X2; P ) : ppart(X1; X2; P; I)gm :- F (X1); in(X1):
where F and P are replaced with feature and part names, and n; m
replaced with the lower and upper bounds of the cardinality.
Predicate haspart is used to indicate that a feature instance is instantiated
as a part in the configuration, whereas predicate ppart is merely
stating the possible parts. Together, these predicates justify the inclusion
of a feature instance through composition:</p>
      <p>in(X2) :- haspart(X1; X2; N ); ppart(X1; X2; N; I):
Fourthly, attribute definitions are captured with the following rule:
1fhasattr(X; Ad; V ) : Av(V )g1 :- in(X); F (X):
where Ad is replaced with the name of the attribute definition, Av
with the name of the attribute value type, and F with the name of the
defining feature type.</p>
      <p>Finally, the configuration model must also define the identifiers
for each feature instance. This enables, for example, to state
requirements R about the features that must be present in the configuration
(see Figure 4). In Figure 6, the feature instances are given
identifiers by enumerating all possible instances in the configuration, for
example, fact featMobilePhone(i0). gives identifier i0 to
feature MobilePhone. Additionally, the identifiers are used to state the
possible compositional relations between the instances with the
predicate ppart. Using these identifiers, it is possible to state the
requirements about the feature instances that must be in the configuration,
for example, in(i8). requires that feature Camera must be present
in the configuration.</p>
    </sec>
    <sec id="sec-8">
      <title>5 Representing Feature Models as ASP Programs</title>
      <p>through Product Configuration modeling</p>
    </sec>
    <sec id="sec-9">
      <title>Language</title>
      <p>In this Section, the example feature model of Figure 2 is represented
with a configuration modeling language designed to model the
variability of physical products. We also exemplify the corresponding
ASP presentation.
5.1</p>
    </sec>
    <sec id="sec-10">
      <title>Representing the Feature Model in PCML</title>
      <p>
        For illustrating the application of a configuration modeling language,
we apply PCML, Product Configuration Modeling Language [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
PCML is used by the WeCoTin configurator [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] as the language for
representing configuration models. PCML is object-oriented,
declarative and has formal implementation-independent semantics.
      </p>
      <p>The main concepts of PCML are feature types, their compositional
structure, attributes, and constraints. Feature types define the
subfeatures (parts) and attributes of their individuals that can appear in
a configuration. In a configuration, subfeatures (parts) of a feature
individual are realized with feature individuals. The realizing feature
individual(s) “fill the role” created by the subfeature definition. If
the cardinality includes 0, an empty realization is possible. A
configuration is a non-empty tree of feature individuals and individuals
representing attribute values. In addition, the compositional structure
is explicitly presented.</p>
      <p>The main modeling mechanism of this example is the
compositional structure. Feature type Mobile Phone t in 7 serves as the root
of the compositional structure ’configuration type’, see Figure 7. An
individual of the type serves as the root of the configuration.</p>
      <p>Feature type Mobile Phone t defines it’s compositional structure
through a set of subfeature definitions. A subfeature definition
specifies a subfeature name, a non-empty set of possible subfeature types
(allowed types for brevity) and a cardinality indicating the valid
number of subfeatures. Note that the example of Figure 7 applies a
naming convention where the names of feature types end with t and
names of subfeatures (parts) with p.</p>
      <p>A mandatory subfeature is represented by specifying cardinality
1 and by specifying exactly one allowed type. An example is the
mandatory feature Calls p. An optional subfeature is modeled with
a subfeature definition whose cardinality is 0 to 1, e.g. the feature
GPS p. Alternative features are modeled with cardinality 1 and more
than one allowed type. E.g., feature Screen p. Or-subfeatures are
not directly supported by PCML, because with large cardinalities
individuals of the same type would be allowed. Therefore for
modeling Media t, further subfeatures were defined and a constraint added
that enforces the presence of at least one subfeature.</p>
      <p>The only attribute of the example is Storage t defining an
enumerated integer attribute Size GB.
5.2</p>
    </sec>
    <sec id="sec-11">
      <title>Representing the PCML Model in WCRL</title>
      <p>% if an individual C2 is as part of C1 -&gt; in(C2)
in(C2) :- pa(C1,T,C2,Pn), ppa(T,C1,C2,Pn).
% exclusive parthood: same individual cannot
% be a part of several whole individuals
:- 2{pa(C1,T,C2,Pn):ppa(T,C1,C2,Pn)}, compT_Feature(C2).
%transitivity of is-a hierachy
isa(X,Z):- isa(X,Y), isa (Y,Z),</p>
      <p>compTDom(X), compTDom(Y), compTDom(Z).
% reflexivity of is-a
isa(X,X):- compTDom(X).
%Example types
% Screen_t is a component type and a subtype of ’Feature’
compTDom(compT_Feature).
%Screen types are direct subtypes of ’Feature’
compTDom(compT_Basic_t).
compT_Feature(C) :- compT_Basic_t(C).
isa(compT_Basic_t,compT_Feature).
compTDom(compT_Colour_t).
compT_Feature(C) :- compT_Colour_t(C).
isa(compT_Colour_t,compT_Feature).
compTDom(compT_High_resolution_t).
compT_Feature(C) :- compT_High_resolution_t(C).
isa(compT_High_resolution_t,compT_Feature).
% Storage_t
compTDom(compT_StoraStorage_t).
compT_Feature(C) :- compT_Storage_t(C).
isa(compT_Storage_t,compT_Feature).
% attribute Size_GB of Storage_t
1{prop_Storage_t_Size_GB(X,compT_Storage_t,Y):prSpec(Y)}1
:- in(X),compT_Storage_t(X).
prSpec(8).
prSpec(16).
prSpec(32).
prSpec(64).
%part name Screen_p
pan(part_Screen_p).
%cardinality 1
1{pa(C1,compT_Mobile_Phone_t,C2,part_Screen_p):
ppa(compT_Mobile_Phone_t,C1,C2,part_Screen_p)}1
:in(C1),compT_Mobile_Phone_t(C1).
% assignment of possible part individuals of allowed
% types for part screen_p with helper predicate for.
% The automated translation makes such an allocation
% for symmetry breaking, which this example
% does not need
ppa(compT_Mobile_Phone_t,C1,C2,part_Screen_p)
:compT_Mobile_Phone_t(C1),compT_Basic_t(C2),
for(compT_Mobile_Phone_t,C1,C2,part_Screen_p).
ppa(compT_Mobile_Phone_t,C1,C2,part_Screen_p)
:compT_Mobile_Phone_t(C1),compT_Colour_t(C2),
for(compT_Mobile_Phone_t,C1,C2,part_Screen_p).
ppa(compT_Mobile_Phone_t,C1,C2,part_Screen_p)
:compT_Mobile_Phone_t(C1),compT_High_resolution_t(C2),
for(compT_Mobile_Phone_t,C1,C2,part_Screen_p).
% Constraint compilation omitted for brevity.
% it is performed by subexpression.</p>
    </sec>
    <sec id="sec-12">
      <title>6 Discussion</title>
      <p>
        In this paper, we showed two ways to represent feature models as
ASP programs by utilizing existing textual modeling languages
designed for feature modeling and product configuration modeling. The
use of an intermediate, textual language between the graphical
feature models and logic programs is not that common: it seems
typical that graphical feature diagrams are directly translated, e.g., to
propositional logic [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], rather than utilizing an intermediate textual
Colour, Calls, Storage, Storage size GB=16. Ground atoms were
derived from the WCRL of Figure 8. Long atoms are split into two lines.
      </p>
      <p>The benefit of using such intermediate languages and models is
that they may be more approachable to product line engineers: they
utilize modeling concepts that more or less directly correspond to
the concepts used to represent software variability. Such intermediate
languages can serve a multitude of purposes: they can be represented
graphically and modelled with the aid of graphical tools; they can be
created or edited directly if need arises; and they can be automatically
translated to ASP programs.</p>
      <p>Another option would have been to directly represent or encode
the entities and relations in feature models as ASP programs. The
benefit of writing directly ASP programs is that the resulting ASP
programs most probably are more compact and directly
humanreadable. The drawback is that logic programming even in the form
of ASP programs might be challenging for a product line engineer
not trained in computational logic programming.</p>
      <p>For simplicity, our representation in this paper covered some basic
concepts of feature models. Nevertheless, the languages discussed
in Sections 4 and 5 cover much richer sets of modeling constructs.
For example, the capability to represent feature inheritance was not
utilized in the examples. Similarly, the literature contains numerous
proposed extensions of feature models. Some of them are included in
our conceptualizations and corresponding tools (e.g. attributes,
cardinalities) while some are not. In any case, a detailed discussion about
the needed modeling concepts is a future work item.</p>
      <p>By mapping the feature modeling notation to both Kumbang and
PCML, we demonstrated that both approaches, one tailored for
feature modeling and one for product configuration, can be utilized for
modeling software variability. A specific addition to the traditional
feature modeling concepts done in this paper is to differentiate
between feature instances and feature types. This dichotomy, however,
parallels with domain and application engineering in software
product families and is, therefore, quite natural for software variability
although it has not been applied explicitly in feature modeling.</p>
      <p>The product configuration community has applied configuration
modeling and configuration techniques in full scale production use
for decades. It may be that some modeling constructs and approaches
related to managing variability could be carried over to describe and
analyze feature models. In such a case, existing analyses and
respective tools could be readily utilized.</p>
      <p>However, the derivation of product lines is not just about
configuration: feature models are applicable to a wide range of settings, not
just to configurable software product lines. Because of this, the tools
intended for product configuration do not necessarily support all the
relevant activities in the application engineering phase of software
product lines.</p>
      <p>
        In general, due to the availability of a variety of different
efficient ASP solvers, it seems beneficial to represent feature models
as ASP programs. Despite the fact that the theoretical computational
complexity inherent in the feature configuration problem is NP-hard,
the current ASP solvers are efficient in calculating the stable models
even for programs that represent real-life feature models. We believe
that it is more important to find and utilize real problems in testing
scalability instead of generated random problems. Consequently, we
have configured real problems interactively, without no noticeable
delay: see the configuration model with slightly less than 500
variation points [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] and the configuration model with dozens of different
types [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] as examples.
      </p>
    </sec>
    <sec id="sec-13">
      <title>Conclusions</title>
      <p>This study shows how feature models can be represented as ASP
programs by means of two different mappings of a graphical feature
diagram through intermediate languages. The representation of
feature models as ASP programs enables utilizing existing inference
engines that are efficient for practical problems. Moreover, the mapping
shows significant similarities between feature modeling and
product configuration, in particular demonstrating how a feature model
diagram can be presented using a product configuration language.
This is one concrete step towards better unification between these
two similar disciplines of research.</p>
    </sec>
    <sec id="sec-14">
      <title>Acknowledgment</title>
      <p>We acknowledge the financial support of TEKES as part of the Need
4 Speed (N4S) program of DIGILE and the Austrian Research
Promotion Agency (Casa Vecchia, 825889).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Fourth</surname>
          </string-name>
          <article-title>(open) answer set programming competition - 2013</article-title>
          . https://www.mat.unical.it/aspcomp2013,
          <year>2013</year>
          . retrieved 2014-
          <volume>05</volume>
          -05.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Timo</given-names>
            <surname>Asikainen</surname>
          </string-name>
          , Tomi Ma¨nnisto¨, and Timo Soininen, '
          <article-title>Kumbang: A domain ontology for modelling variability in software product families'</article-title>
          ,
          <source>Advanced engineering informatics journal</source>
          ,
          <volume>21</volume>
          (
          <issue>1</issue>
          ), (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>D.</given-names>
            <surname>Benavides</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Segura</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ruiz-Cortes</surname>
          </string-name>
          , '
          <article-title>Automated analysis of feature models 20 years later: A literature review'</article-title>
          ,
          <source>Information Systems</source>
          ,
          <volume>35</volume>
          ,
          <fpage>615</fpage>
          -
          <lpage>636</lpage>
          , (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>David</given-names>
            <surname>Benavides</surname>
          </string-name>
          , Alexander Felfernig, JosA. Galindo, and Florian Reinfrank, '
          <article-title>Automated analysis in feature modelling and product configuration'</article-title>
          , in Safe and Secure Software Reuse, eds.,
          <source>John Favaro and Maurizio Morisio</source>
          , volume
          <volume>7925</volume>
          of Lecture Notes in Computer Science,
          <volume>160</volume>
          -
          <fpage>175</fpage>
          , Springer Berlin Heidelberg, (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>David</given-names>
            <surname>Benavides</surname>
          </string-name>
          ,
          <article-title>Pablo Trinidad Mart´ın-</article-title>
          <string-name>
            <surname>Arroyo</surname>
          </string-name>
          , and Antonio Ruiz Corte´s, '
          <source>Automated reasoning on feature models'</source>
          ,
          <source>in International Conference on Advanced Information Systems Engineering</source>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>T.</given-names>
            <surname>Berger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>She</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lotufo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wasowski</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          , '
          <article-title>A study of variability models and languages in the systems software domain', Software Engineering</article-title>
          , IEEE Transactions on,
          <volume>39</volume>
          (
          <issue>12</issue>
          ),
          <fpage>1611</fpage>
          -
          <lpage>1640</lpage>
          , (
          <year>Dec 2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Jan</given-names>
            <surname>Bosch</surname>
          </string-name>
          ,
          <article-title>Design and Use of Software Architectures: Adapting and Evolving a Product-Line Approach</article-title>
          , Addison-Wesley,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Jan</given-names>
            <surname>Bosch</surname>
          </string-name>
          , '
          <article-title>Maturity and evolution in software product lines: Approaches, artefacts</article-title>
          and organization',
          <source>in Proc. of Software Product Line Conference</source>
          , (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Calimeri</surname>
          </string-name>
          , Wolfgang Faber, Martin Gebser, Giovambattista Ianni, Roland Kaminski, Thomas Krennwallner, Nicola Leone, Francesco Ricca, and
          <string-name>
            <given-names>Torsten</given-names>
            <surname>Schaub</surname>
          </string-name>
          .
          <article-title>ASP-Core-2: Input language format (v.2.03b)</article-title>
          . ASP Standardization Working Group, https://www.mat.unical.it/aspcomp2013/files/ASP-CORE2.
          <year>03b</year>
          .pdf,
          <year>2012</year>
          . retrieved 2014-
          <volume>05</volume>
          -05.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Paul</given-names>
            <surname>Clements</surname>
          </string-name>
          and Linda Northrop,
          <source>Software Product Lines-Practices and Patterns</source>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Krzysztof</surname>
            <given-names>Czarnecki</given-names>
          </string-name>
          , Simon Helsen, and Ulrich W. Eisenecker, '
          <article-title>Formalizing cardinality-based feature models and their specialization', Softw</article-title>
          .
          <source>Proc. Improv</source>
          . Pract.,
          <volume>10</volume>
          (
          <issue>1</issue>
          ),
          <fpage>7</fpage>
          -
          <lpage>29</lpage>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Krzysztof</surname>
            <given-names>Czarnecki</given-names>
          </string-name>
          , Simon Helsen, and Ulrich W. Eisenecker, '
          <article-title>Staged configuration through specialization and multilevel configuration of feature models'</article-title>
          ,
          <source>Software Process: Improvement and Practice</source>
          ,
          <volume>10</volume>
          (
          <issue>2</issue>
          ),
          <fpage>143</fpage>
          -
          <lpage>169</lpage>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Gerhard</surname>
            <given-names>Friedrich</given-names>
          </string-name>
          , Anna Ryabokon, Andreas A.
          <string-name>
            <surname>Falkner</surname>
          </string-name>
          , Alois Haselbo¨ck, Gottfried Schenner, and Herwig Schreiner, '
          <article-title>(Re)configuration using Answer Set Programming'</article-title>
          ,
          <source>in 22nd International Joint Conference on Artificial Intelligence (IJCAI</source>
          <year>2011</year>
          ), Workshop on Configuration, eds.,
          <string-name>
            <surname>Kostyantyn</surname>
            <given-names>Shchekotykhin</given-names>
          </string-name>
          , Markus Zanker, and Dietmar Jannach, pp.
          <fpage>17</fpage>
          -
          <lpage>25</lpage>
          , (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Benjamin Kaufmann, Roland Kaminski, Max Ostrowski, Torsten Schaub, and Marius Schneider, '
          <article-title>Potassco: The potsdam answer set solving collection'</article-title>
          ,
          <source>AI Communications</source>
          ,
          <volume>24</volume>
          (
          <issue>2</issue>
          ),
          <fpage>107</fpage>
          -
          <lpage>124</lpage>
          , (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>L.</given-names>
            <surname>Hotz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Felfernig</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Gu¨nter, and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          , '
          <article-title>A Short History of Configuration Technologies', in Knowledge-based Configuration -</article-title>
          From Research to Business Cases, eds.,
          <string-name>
            <given-names>A.</given-names>
            <surname>Felfernig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hotz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bagley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          , chapter
          <volume>2</volume>
          ,
          <fpage>9</fpage>
          -
          <lpage>19</lpage>
          , Morgan Kaufmann Publishers, (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Arnaud</surname>
            <given-names>Hubaux</given-names>
          </string-name>
          , Dietmar Jannach, Conrad Drescher, Leonardo Murta, Tomi Mnnist, Krzysztof Czarnecki, Patrick Heymans, Tien Nguyen, and Markus Zanker, '
          <article-title>Unifying software and product configuration: A research roadmap'</article-title>
          ,
          <source>in Proceedings of the workshop on configuration (confws12)</source>
          , (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>K.C. Kang</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          <string-name>
            <surname>Hess</surname>
            ,
            <given-names>W.E.</given-names>
          </string-name>
          <string-name>
            <surname>Novak</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.S.</given-names>
            <surname>Peterson</surname>
          </string-name>
          , '
          <article-title>Feature-oriented domain analysis (foda) feasibility study'</article-title>
          ,
          <source>Technical Report CMU/SEI-90-TR-21</source>
          , ADA 235785,
          <string-name>
            <surname>Software</surname>
            <given-names>Engineering Institute</given-names>
          </string-name>
          , (
          <year>1990</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>K.C. Kang</surname>
            ,
            <given-names>Jaejoon</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
            , and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Donohoe</surname>
          </string-name>
          , '
          <article-title>Feature-oriented product line engineering'</article-title>
          , IEEE Software,
          <volume>19</volume>
          (
          <issue>4</issue>
          ),
          <fpage>58</fpage>
          -
          <lpage>65</lpage>
          , (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Mittal</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Frayman</surname>
          </string-name>
          , '
          <article-title>Towards a Generic Model of Configuration Tasks'</article-title>
          ,
          <source>in 11th International Joint Conference on Artificial Intelligence (IJCAI-89)</source>
          , volume
          <volume>2</volume>
          , pp.
          <fpage>1395</fpage>
          -
          <lpage>1401</lpage>
          , Detroit, Michigan, USA, (
          <year>1989</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] Varvana Mylla¨rniemi, Mikko Raatikainen, and Tomi Ma¨nnisto¨, 'Kumbang tools',
          <source>in Software Product Line Conference</source>
          , volume
          <volume>2</volume>
          , pp.
          <fpage>135</fpage>
          -
          <lpage>136</lpage>
          , (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Hannu</surname>
            <given-names>Peltonen</given-names>
          </string-name>
          , Juha Tiihonen, and
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Anderson</surname>
          </string-name>
          .
          <article-title>Configurator tool concepts and model definition language</article-title>
          . Unpublished working document of Helsinki University of Technology,
          <source>Software Business and Engineering Institute</source>
          , Product Data Management Group, Espoo, Finland,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Potassco</surname>
          </string-name>
          .
          <article-title>Potassco, the Potsdam Answer Set Solving Collection, bundles tools for answer set programming developed at the university of potsdamanswer set programming</article-title>
          .
          <source>SourceForge</source>
          project http: //potassco.sourceforge.net/.
          <source>Accessed</source>
          <year>2014</year>
          -
          <volume>05</volume>
          -06.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Daniel</given-names>
            <surname>Sabin</surname>
          </string-name>
          and Reiner Weigel, '
          <article-title>Product Configuration Frameworks - A Survey'</article-title>
          ,
          <source>IEEE Intelligent Systems</source>
          ,
          <volume>13</volume>
          (
          <issue>4</issue>
          ),
          <fpage>42</fpage>
          -
          <lpage>49</lpage>
          , (
          <year>1998</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Gottfried</surname>
            <given-names>Schenner</given-names>
          </string-name>
          , Andreas Falkner, Anna Ryabokon, and Gerhard Friedrich, '
          <article-title>Solving object-oriented configuration scenarios with asp'</article-title>
          , in 15 th International Configuration Workshop, eds.,
          <source>Michel Aldanondo and Andreas Falkner</source>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>62</lpage>
          , (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Patrik</surname>
            <given-names>Simons</given-names>
          </string-name>
          , Ilkka Niemela¨, and Timo Soininen, '
          <article-title>Extending and implementing the stable model semantics'</article-title>
          ,
          <source>Artificial Intelligence</source>
          ,
          <volume>138</volume>
          ,
          <fpage>181</fpage>
          -
          <lpage>234</lpage>
          , (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Timo</surname>
            <given-names>Soininen</given-names>
          </string-name>
          , Ilkka Niemela¨,
          <string-name>
            <given-names>Juha</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          , and Reijo Sulonen, '
          <article-title>Representing Configuration Knowledge with Weight Constraint Rules'</article-title>
          ,
          <source>in 1st International Workshop on Answer Set Programming: Towards Efficient and Scalable Knowledge (AAAI Technical Report SS-01-01)</source>
          , eds.,
          <source>Alessandro Provetti and Tran Cao Son</source>
          , pp.
          <fpage>195</fpage>
          -
          <lpage>201</lpage>
          , (
          <year>2001</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Mikael</surname>
            <given-names>Svahnberg</given-names>
          </string-name>
          , Jilles van Gurp, and Jan Bosch, '
          <article-title>A taxononomy of variability realization techniques'</article-title>
          ,
          <source>Software-Practice and Experience</source>
          ,
          <volume>35</volume>
          (
          <issue>8</issue>
          ),
          <fpage>705</fpage>
          -
          <lpage>754</lpage>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>Tommi</given-names>
            <surname>Syrja</surname>
          </string-name>
          <article-title>¨nen, 'Including diagnostic information in configuration models'</article-title>
          ,
          <source>in First International Conference on Computational Logic (CL</source>
          <year>2000</year>
          ), eds., John Lloyd, Veronica Dahl, Ulrich Furbach, Manfred Kerber,
          <string-name>
            <surname>Kung-Kiu</surname>
            <given-names>Lau</given-names>
          </string-name>
          , Catuscia Palamidessi, Lu´ısMoniz Pereira, Yehoshua Sagiv, and
          <string-name>
            <surname>Peter J. Stuckey</surname>
          </string-name>
          , volume
          <source>LNCS 1861</source>
          , pp.
          <fpage>837</fpage>
          -
          <lpage>851</lpage>
          . Springer, (
          <year>2000</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Juha</surname>
            <given-names>Tiihonen</given-names>
          </string-name>
          , Mikko Heiskala,
          <string-name>
            <surname>Andreas Anderson</surname>
          </string-name>
          , and Timo Soininen, '
          <article-title>Wecotin-a practical logic-based sales configurator'</article-title>
          ,
          <source>AI Communications</source>
          ,
          <volume>26</volume>
          (
          <issue>1</issue>
          ),
          <fpage>99</fpage>
          -
          <lpage>131</lpage>
          , (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>Juha</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          and Timo Soininen, '
          <article-title>Product Configurators - Information System Support for Configurable Products'</article-title>
          ,
          <source>Technical Report TKO-B137</source>
          , Helsinki University of Technology,
          <source>Laboratory of Information Processing Science</source>
          , (
          <year>1997</year>
          ).
          <article-title>also publsihed in: Increasing Sales Productivity through the Use of Information Technology during the Sales Visit</article-title>
          , Hewson Consulting Group.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Juha</surname>
            <given-names>Tiihonen</given-names>
          </string-name>
          , Timo Soininen, Ilkka Niemela¨, and Reijo Sulonen, '
          <article-title>A practical tool for mass-customising configurable products'</article-title>
          ,
          <source>in Proceedings of the 14th International Conference on Engineering Design</source>
          , eds.,
          <string-name>
            <given-names>A.</given-names>
            <surname>Folkeson</surname>
          </string-name>
          , K. Grale´n,
          <string-name>
            <given-names>M.</given-names>
            <surname>Norell</surname>
          </string-name>
          , and U. Sellgren, pp.
          <source>CDROM, paper number 1290</source>
          , 10 pp.,
          <source>(August 19-21</source>
          ,
          <year>2003 2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Rob</surname>
            <given-names>van Ommering</given-names>
          </string-name>
          , Frank van der Linden, Jeff Kramer, and Jeff Magee, '
          <article-title>The Koala component model for consumer electronics software'</article-title>
          ,
          <source>Computer</source>
          ,
          <volume>33</volume>
          (
          <issue>3</issue>
          ),
          <fpage>78</fpage>
          -
          <lpage>85</lpage>
          , (
          <year>March 2000</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Wikipedia</surname>
          </string-name>
          .
          <article-title>Answer set programming</article-title>
          . http://en.wikipedia. org/wiki/Answer_set_programming.
          <source>Accessed</source>
          <year>2014</year>
          -
          <volume>05</volume>
          -06.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>