<!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>Towards a time-e±cient algorithm to calculate the total number of products of a Software Product Line</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Completed Research</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dpto. de Ingenieria de Software y Sistemas Informaticos Universidad Nacional de Educacion a Distancia Madrid</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Dpto. de Lenguajes y Sistemas Informaticos Universidad Nacional de Educacion a Distancia</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Ruben Heradio Gil</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <abstract>
        <p>Feature Diagrams (FDs) are widely used to scope the domain of Software Product Lines (SPLs). In addition, valuable information can be inferred from FDs; for instance, the total number of possible products of a SPL. A common approach to calculate the number of products is translating FDs into propositional logic formulas, which are processed by o®-the-shelf tools, such as SAT solvers. However, this approach only works for small FDs. We think more scalable solutions can be reached avoiding the diagram-to-logic transformation and taking advantage of the tree organization of FDs. Due to the profusion of feature modeling notations, this paper formally de¯nes a pivot language, named Neutral Feature Tree (NFT), where FDs are restricted to be trees. Most popular FD notations can be easily and e±ciently translated to NFT. The paper also proposes a general and time-e±cient algorithm to calculate the number of products without considering crosstree constraints.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Software Product Line (SPL) practice has become an important and widely
used approach for the e±cient development of complete portfolios of software
products [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. The domain of a SPL must be carefully scoped, identifying the
common and variable requirements of its products and the interdependencies
between requirements. In a bad scoped domain, relevant requirements may not be
implemented, and some implemented requirements may never be used, causing
unnecessary complexity and both development and maintenance costs [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. To
avoid these serious problems, SPL domains are usually modeled with variability
languages.
      </p>
      <p>
        Since FODA's feature modeling language was proposed in 1990 [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], a number
of extensions and alternative languages have been devised to model variability
in families of related systems:
1. As part of the following methods: FORM [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], FeatureRSEB [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], Generative
      </p>
      <p>
        Programming [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Software Product Line Engineering [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], PLUSS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
2. In the work of the following authors: M. Riebisch et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], J. van Gurp et
al. [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], A. van Deursen et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], H. Gomaa [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
3. As part of the following tools: Gears [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and pure::variants [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        Unfortunately, this profusion of languages hinders the e±cient
communication among specialists and the portability of variability models between tools.
In order to face this problem, P. Schobbens et al. [
        <xref ref-type="bibr" rid="ref13 ref16 ref20">20, 13, 16</xref>
        ] propose the Varied
Feature Diagram+ (VFD+) as a pivot notation for variability languages. VFD+
is expressively complete and many variability languages can be easily and
e±ciently translated into it.
      </p>
      <p>
        D. Benavides [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] has surveyed a number of analysis operations that infer
valuable information from feature diagrams. One these operations is calculating
the total number of products of a SPL. This value is used by economic models,
such as the Structured Intuitive Model for Product Line Economics (SIMPLE)[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
and the Constructive Product Line Investment Model (COPLIMO)[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], to
estimate the SPL costs and bene¯ts. For instance, SIMPLE estimates the cost of
building a SPL using equation 1, where: Corg expresses how much it costs for an
organization to adopt the SPL approach, Ccab is the cost of developing the SPL
core asset base3, n is the number of products of the SPL, Cunique(producti) is
the cost of developing the unique parts of a product, and Creuse(producti) is the
development cost of reusing core assets to build a product.
      </p>
      <p>CSPL = Corg + Ccab +
n
X(Cunique(producti) + Creuse(producti))
i=1
(1)</p>
      <p>
        The importance of knowing the number of products of a feature diagram
is recognized by many commercial tools for SPL development, such as Gears
and pure::variants, which provide the calculation without considering textual
constraints between features 4. On the other hand, some researchers have
proposed a full calculation, that includes textual constraints, by translating feature
diagrams d into some kind of logic. For instance:
{ D. Batory [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] proposes a translation of d into propositional logic. Resulted
formulas are processed by o®-the-shelf Logic-Truth Maintenance Systems
and Boolean Satis¯ability (SAT) solvers.
{ D. Benavides [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] provides an abstract conversion of d into Constraint
Satisfaction Problems (CSP). FaMa Tool Suite [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] adapts this abstract
conversion to general CSP solvers, SAT solvers and Binary Decision Diagrams
(BDD) solvers.
3 According to the SPL approach, products are built from a core asset base, a collection
of artifacts that have been designed speci¯cally for reuse across the SPL.
4 Textual constraints will be explained in section 2.2.
{ Gheyi et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] provides a translation of d into Alloy's logic. Internally, Alloy
checks models by converting them into propositional logic and using
o®-theshelf SAT solvers.
      </p>
      <p>
        Unfortunately, the diagram-to-logic approach is only scalable for small
feature diagrams. However, in SPLs with complex domains, companies have
reported feature models with over 1000 features (e.g., M. Steger et al. [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] present
a case study with 5200 features).
      </p>
      <p>This paper proposes a time-e±cient algorithm to calculate the SPL number
of products without considering textual constraints. Thus, we provide an upper
bound for the number of products. In contrast with evaluated commercial tools,
the algorithm is fully general and deals with a VFD+ subset, named Neutral
Feature Tree (NFT), where diagrams are restricted to be trees5. This paper
formally de¯nes NFT and demonstrates that NFT and VFD+ are completely
equivalent. We think NFT is a good starting point for future implementations
of analysis operations which take advantage of feature diagrams structured as
trees.</p>
      <p>The remainder of this paper is structured as follows. Section 2 formally
de¯nes the abstract syntax and semantics of NFT. Section 3 presents the sketch of
our algorithm6. Finally, section 4 summarizes the paper and outlines directions
for future work.
2</p>
      <p>An abstract notation for modeling SPL variability
Section 2.1 outlines the main parts of a formal language; sections 2.2 and 2.3
de¯ne the abstract syntax and semantics of NFT, respectively; and ¯nally, section
2.4 demonstrates the equivalence between NFT and VFD+.</p>
      <p>We emphasize NFT is not meant as a user language, but only as a formal
\back-end" language used to de¯ne semantics and allow for automated
processing.
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Anatomy of a formal language</title>
      <p>
        According to J. Green¯eld et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], the anatomy of a formal language includes
an abstract syntax, a semantics and one or more concrete syntaxes.
1. The abstract syntax of a language characterizes, in an abstract form, the
kinds of elements that make up the language, and the rules for how those
elements may be combined. All valid element combinations supported by an
abstract syntax conform the syntactic domain L of a language.
      </p>
      <sec id="sec-2-1">
        <title>5 VFD+ diagrams are single-rooted Directed Acyclic Graphs.</title>
        <p>
          6 There is available an implementation of the algorithm on
http://www.issi.uned.es/miembros/pagpersonales/ruben heradio/rheradio english.html
2. The semantics of a language de¯ne its meaning. According to D. Harel et al.
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], a semantic de¯nition consists of two parts: a semantic domain S and
a semantic mapping M from the syntactic domain to the semantic domain.
        </p>
        <p>That is, M : L ! S.
3. A concrete syntax de¯nes how the language elements appear in a concrete,
human-usable form.</p>
        <p>
          Following sections de¯ne NFT abstract syntax and semantics. Most
variability languages may be considered as concrete syntaxes or \views" of NFT.
2.2
A NFT diagram d 2 LNFT is a tuple (N; §; r; DE; ¸; Á), where:
1. N is the set of nodes of d, among r is the root. Nodes are meant to represent
features. The idea of feature is of widespread usage in domain engineering
and it has been de¯ned as a \distinguishable characteristic of a concept (e.g.,
system, component and so on) that is relevant to some stakeholder of the
concept" [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
2. § ½ N is the set of terminal nodes (i.e., the leaves of d).
3. DE µ N £N is the set of decomposition edges; (n1; n2) 2 DE is alternatively
denoted n1 ! n2. If n1 ! n2; n1 is the parent of n2, and n2 is a child of n1.
4. ¸ : (N ¡§) ! card labels each non-leaf node n with a card boolean operator.
        </p>
        <p>
          If n has children n1; :::; ns, cards[i::j](n1; :::; ns) evaluates to true if at least
i and at most j of the s children of n evaluate to true. Regarding the card
operator, the following points should be taken into account7:
(a) whereas many variability notations distinguish between mandatory,
optional, or and xor dependencies, card operator generalizes these
categories. For instance, ¯gure 1 depicts equivalences between the feature
notation proposed by K. Czarnecki et al. [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] and NFT.
(b) whereas, in many variability notations, children nodes may have di®erent
types of dependencies on their parent, in NFT all children must have
the same type of dependency. This apparent limitation can be easily
overcome by introducing auxiliary nodes. For instance, ¯gure 2 depicts
the equivalence between a feature model and a NFT diagram. Node A
has three children and two types of dependencies: A ! B is mandatory
and (A ! C, A ! D) is a xor -group. In the NFT diagram, the di®erent
types of dependencies are modeled by introducing the auxiliary node
aux.
5. Á8 are additional textual constraints written in propositional logic over any
type of node (Á 2 B(N )).
        </p>
        <sec id="sec-2-1-1">
          <title>Additionally, d must satisfy the following constraints:</title>
          <p>1. Only r has no parent: 8n 2 N ¢ (9n0 2 N ¢ n0 ! n) , n 6= r.</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>7 The same considerations are valid for VFD+. 8 also named cross-tree constraints [2].</title>
        <sec id="sec-2-2-1">
          <title>2. d is a tree. Therefore,</title>
          <p>(a) a node may have at most one parent:</p>
          <p>8n 2 N ¢ (9n0; n00 2 N ¢ ((n0 ! n) ^ (n00 ! n) ) n0 = n00))
(b) DE is acyclic: @n1; n2 : : : ; nk 2 N ¢ n1 ! n2 ! : : : ! nk ! n1.
3. card operators are of adequate arities:
8n 2 N ¢(9n0 2 N ¢n ! n0) ) (¸(n) = cards)^(s = kf(n; n0)j(n; n0) 2 DEgk)
Feature diagrams are meant to represent sets of products, and each product is
seen as a combination of terminal features. Hence, the semantic domain of NFT
is P(P(§)), i.e., a set of sets of terminal nodes.</p>
          <p>The semantic mapping of NFT (MNFT : LNFT ! P(P(§))) assigns to every
feature diagram d, a product line SPL, according to the next de¯nitions:
1. A con¯guration is a set of features, that is, any element of P(N ). A
con¯guration c is valid for a d 2 LNFT, i®:
(a) The root is in c (r 2 c).
(b) The boolean value associated to the root is true. Given a con¯guration,
any node of a diagram has associated a boolean value according to the
following rules:
i. A terminal node t 2 § evaluates to true if it is included in the
con¯guration (t 2 c), else evaluates to false.
ii. A non-terminal node n 2 (N ¡ §) is labeled with a card operator.</p>
          <p>If n has children n1; :::; ns, cards[i::j](n1; :::; ns) evaluates to true if
at least i and at most j of the s children of n evaluate to true.
(c) The con¯guration must satisfy all textual constraints Á.
(d) If a non-root node s(s 6= r) is in the con¯guration, one of its parents n,
called its justi¯cation, must be too: 8s 2 N ¢ s 2 c ^ s 6= r ¢ 9n 2 N ¢ n 2
c ^ (n; s) 2 DE.
2. A product p, named by a valid con¯guration c, is the set of terminal features
of c: p = c \ §.
3. The product line SPL represented by d 2 LNFT consists of the products
named by its valid con¯gurations (SPL 2 P(P(§))).
2.4</p>
          <p>
            Equivalence between NFT and VFD+
NFT di®erentiates from VFD+ in the following points:
1. Terminal nodes vs. primitive nodes. As noted by some authors [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], there
is currently no agreement on the following question: are all features equally
relevant to de¯ne the set of possible products that a feature diagram stands
for? In VFD+, P. Schobbens et al. have adopted a neutral formalization:
the modeler is responsible for specifying which nodes represent features that
will in°uence the ¯nal product (the primitive nodes P ) and which nodes are
just used for decomposition (N ¡ P ). P. Schobbens points that primitive
nodes are not necessarily equivalent to leaves, though it is the most common
case. However, a primitive node p 2 P , labeled with cards[i::j](n1; :::; ns),
can always become a leaf (p 2 §) according to the following transformation
TP !§ :
(a) p is substituted by an auxiliary node aux1.
(b) the children of aux1 are p and a new auxiliary node aux2.
(c) aux1 is labeled with card2[2::2](p; aux2).
(d) p becomes a leaf. aux2's children are the former children of p.
(e) aux2 is labeled with the former cards[i::j](n1; :::; ns) of p.
          </p>
          <p>Figure 3 depicts the conversion of a primitive non-leaf node B into a leaf
node.
2. DAGs vs. trees. Whereas diagrams are trees in NFT, in VFD+ are DAGs.</p>
          <p>
            Therefore, a node n with s parents (n1; :::; ns) can be translated into a node
n with one parent n1 according to the following transformation TDAG!tree:
(a) s ¡ 1 auxiliary nodes aux2; :::; auxs are added to the diagram.
(b) edges n2 ! n; :::; ns ! n are replaced by new edges n2 ! aux2; :::; ns !
auxs.
(c) D. Batory [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ] demonstrated how to translate any edge a ! b into a
propositional logic formula Áa;b. Using Batory's equivalences, implicit
edges aux2 ! n; :::; auxs ! n are converted into textual constraints
Áaux2;n:::Áauxs;n and are added to Á (Á0 ´ Á ^ Áaux2;n ^ ::: ^ Áauxs;n).
Figure 4 depicts the conversion of a node D with two parents B and C into
a node with a single parent.
          </p>
          <p>
            In order to identify when a transformation on a diagram keeps (1) the
diagram semantics and (2) the diagram structure, P. Schobbens [
            <xref ref-type="bibr" rid="ref20">20</xref>
            ] de¯nes the
notion of graphical embedding. A graphical embedding is a translation T : L ! L0
that preserves the semantics of L and is node-controlled, i.e., T is expressed as a
set of rules of the form d ! d0, where d is a diagram containing a de¯ned node or
edge n, and all possible connections with this node or edge. Its translation d0 is a
subgraph in L0, plus how the existing relations should be connected to nodes of
this new subgraph. According to this de¯nition, TP !§ and TDAG!tree are
graphical embeddings that guarantee the equivalency between NFT and VFD+.
3
          </p>
          <p>Calculating the total number of products represented
by an NFT diagram without considering textual
constraints
This section presents how to calculate the total number of products of a SPL
modeled by a NFT diagram without considering textual constraints.</p>
          <p>The number of products of a node n is denoted as P (n). Thus, the total
number of products represented by a NFT diagram is P (r), where r is the root.
For a leaf node l, P (l) = 1. Table 3 includes equations to calculate P (n) for a
non-leaf node n that has s children ni of type mandatory (i.e., n is labeled with
cards[s::s]), optional (cards[0::s]), xor (cards[1::1]) and or (cards[0::s]). Hence,
time-complexity for calculating P (n) in these cases is O(s). Therefore,
timecomplexity for computing P (r) is quadratic on the diagram number of nodes,
i.e., O(N 2).</p>
          <p>type of relationship equation
mandatory (cards[s::s]) P (n) = Qs</p>
          <p>i=1 P (ni)
optional (cards[0::s]) P (n) = Qs</p>
          <p>i=1 (P (ni) + 1)
or (cards[1::s]) P (n) = (Qis=1 (P (ni) + 1)) ¡ 1
xor (cards[1::1]) P (n) = Ps
i=1 P (ni)
In general, when a node n has s children and is labeled with cards[low::high],
P (n) is calculated by equation 2, where Sk is the number of products
choosing any combination of k children from s. For the sake of clarity, let us
denote P (n1); P (n2); : : : P (ns) as p1; p2; : : : ; ps. In a straightforward approach,
Sk can be calculated by summing the number of products of all possible
kcombinations (see equation 3). Unfortunately, this calculation has the following
time-complexity C for P(r): O(N 2N ) µ C µ O(N 22N ).
k=low</p>
          <p>Sk
(2)</p>
          <p>Sk =</p>
          <p>X
pi1 pi2 : : : pik</p>
          <p>A better time-complexity can be reached by using recurrent equations. The
base case is S0 = 1. According to equation 3, S1 = Pis=1 pi. Calculating S2,
the number of products for combinations of 2 siblings that include n1 is p1p2 +
p1p3::: + p1ps = p1(p2 + p3 + ::: + ps) = p1(S1 ¡ p1). Similarly, the number of
products of 2-combinations that include n2 is p2(S1 ¡ p2). Adding up every
2combinations, we get Ps</p>
          <p>i=1 pi(S1 ¡ pi). However, in the sum each term pipj is
being accounted for twice; once in the round for i and another in the round for
j. Thus, removing the redundant calculus:
(3)
S2 == 1122 (PS1is=P1 spi(Sp1 ¡ pPi)is=1 pi2)</p>
          <p>= 12 (S12 ¡ iP=1is=1i ¡pi2)</p>
          <p>Calculating S3, the number of products for combinations of 3 siblings that
include n1 is p1 multiplied by the number of products for 2-combinations that
do not contain n1, i.e., p1(S2 ¡ p1(S1 ¡ p1)). Adding up every 3-combinations,
we get:</p>
          <p>s s s
X pi(S2 ¡ pi(S1 ¡ pi)) = S2S1 ¡ S1 X pi2 + X pi3
i=1
1 Pik=¡01 ((¡1)iSk¡i¡1 Pjs=1 pij+1) if 1 · k · s
k
if k = 0
(4)
3.1</p>
          <p>Supporting the calculus for an extension of card
As pointed in ¯gure 1, an important contribution of VFD+ is the card
generalization of the di®erent kinds of relations between features (i.e., mandatory,
optional...). At the moment, VFD+ (and NFT) card syntax is:</p>
          <p>Nevertheless, our proposed calculus for the total number of products supports
the following more general syntax:</p>
          <p>cardshlisti(children)</p>
          <p>Where list is a non-void list which may include one or more:
1. index i 2 N ¢ 0 · i · s
2. range [low::high] ¢ 0 · low &lt; high · s</p>
          <p>Broadly speaking, list provides an easy way to express the selection of more
than one range of node sons. For instance, cardsh[0::1]; 3; [5::6]i(n1; :::; ns)
expresses the selection of:
{ zero to one of n1; :::; ns</p>
          <p>or
{ three of n1; :::; ns</p>
          <p>or
{ ¯ve to six of n1; :::; ns</p>
          <p>Formally de¯ning the list extension semantics: in a valid con¯guration c, all
non-terminal nodes n 2 (N ¡§) are labeled with the operator cardshlisti(n1; :::; ns)
and the operator always evaluates to true for some e 2 list, according to the
following rules:
{ if e is an index, exactly e of the s children of n evaluate to true.
{ if e is a range [low::high], at least low and at most high of the s children of
n evaluate to true.</p>
          <p>To calculate the total number of products using cardhlisti, equation 2 should
be substituted by equation 5.
Variability notations are widely used to scope the domain of a SPL.
Unfortunately, there is a profusion of notations that hinders the e±cient communication
among specialists and the portability of variability models between tools. P.
Schobbens et al. have faced this problem by proposing the pivot notation VFD+
and demonstrating that many kinds of variability diagrams can be easily and
e±ciently translated into VFD+ diagrams. Valuable information can be inferred
from VFD+ diagrams; for instance, the total number of products of a SPL, that is
used by economic models to predict SPL costs and bene¯ts. A common approach
to infer the SPL number of products is translating diagrams into propositional
logic formulas, which are processed by o®-the-self tools, such as SAT solvers.
However, this approach only works for small diagrams.</p>
          <p>We think more scalable solutions can be reached avoiding the
diagram-tologic transformation and taking advantage of the tree organization of diagrams.
Since VFD+ diagrams are single-rooted directed acyclic graphs, we have formally
de¯ned a VFD+ subset, named NFT, where diagrams are restricted to be trees.
We have also demonstrated that NFT and VFD+ are completely equivalent. We
have proposed a time-e±cient algorithm to calculate the number of products of a
SPL from a NFT diagram, without considering textual constraints among nodes.
The algorithm has quadratic complexity if the diagram only includes mandatory,
optional, or and xor relations, and, in general, has cubic complexity for any value
of VFD+'s card operator. In fact, we have demonstrated that the algorithm also
supports an extension of card to express disjunction of ranges. For future work,
we plan to extend the algorithm to compute textual constraints.</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Batory</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>Feature models, grammars, and propositional formulas</article-title>
          .
          <source>Proc. 9th Int. Conf. Software Product Lines</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Benavides</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>On the automated analysis of software product lines using feature models. a framework for developing automated tool support</article-title>
          .
          <source>PhD Dissertation</source>
          . University of Seville, Spain,
          <year>June 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>BigLever</given-names>
            <surname>Software</surname>
          </string-name>
          , Inc. Gears. http://www.biglever.com/index.html
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Brown</surname>
          </string-name>
          , A.;
          <string-name>
            <surname>Madachy</surname>
            ,
            <given-names>R.; Ye</given-names>
          </string-name>
          <string-name>
            <surname>Yang</surname>
          </string-name>
          .
          <article-title>A software product line life cycle cost estimation model</article-title>
          .
          <source>International Symposium on Empirical Software Engineering</source>
          ,
          <year>2004</year>
          , page(s):
          <fpage>156</fpage>
          -
          <lpage>164</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Clements</surname>
            ,
            <given-names>P. C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>McGregor</surname>
            ,
            <given-names>J. D.</given-names>
          </string-name>
          ; Cohen,
          <string-name>
            <surname>S. G.</surname>
          </string-name>
          <article-title>The Structured Intuitive Model for Product Line Economics (SIMPLE) (CMU</article-title>
          /SEI-2005
          <string-name>
            <surname>-</surname>
          </string-name>
          TR-
          <volume>003</volume>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Eisenecker</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          <article-title>Generative Programming: Methods, Tools, and Applications</article-title>
          . Addison-Wesley,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Eriksson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Borstler</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Borg</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <article-title>The PLUSS Approach - Domain Modeling with Features</article-title>
          ,
          <source>Use Cases and Use Case Realizations. Software Product Lines, 9th International Conference, SPLC 2005</source>
          , pp.
          <fpage>3344</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Gheyi</surname>
            , R.; Massoni,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Borba</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <article-title>A Theory for Feature Models in Alloy</article-title>
          .
          <source>First Alloy Workshop, colocated with the Fourteenth ACM SIGSOFT Symposium on Foundations of Software Engineering</source>
          ,
          <year>2006</year>
          , pages:
          <fpage>71</fpage>
          -
          <lpage>80</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Gomaa</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <article-title>Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures</article-title>
          . Addison-Wesley
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Green</surname>
          </string-name>
          <article-title>¯eld</article-title>
          , J.;
          <string-name>
            <surname>Short</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Software</surname>
          </string-name>
          <article-title>Factories: Assembling Applications with Patterns, Models, Framworks, and Tools</article-title>
          . Wiley,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Griss</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Favaro</surname>
            , J.; dAlessandro,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Integrating feature modeling with the RSEB</article-title>
          .
          <source>Proceedings of the Fifth International Conference on Software Reuse</source>
          , Vancouver, BC, Canada,
          <year>June 1998</year>
          , pp.
          <fpage>7685</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>Modeling languages: Syntax, semantics and all that stu® - part I: The basic stu®</article-title>
          .
          <source>Technical Report MCS00-16, Faculty of Mathematics and Computer</source>
          .
          <source>The Weizmann Institute of Science</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ; Schobbens,
          <string-name>
            <given-names>P.</given-names>
            ;
            <surname>Trigaux</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ; Bontemps,
          <string-name>
            <given-names>Y.</given-names>
            ;
            <surname>Matulevicius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ;
            <surname>Classen</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Evaluating formal properties of feature diagram languages</article-title>
          .
          <source>Software, IET</source>
          . Volume:
          <volume>2</volume>
          , Issue: 3. June 2008, pp:
          <fpage>281</fpage>
          -
          <lpage>302</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kang</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Hess</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Novak</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ;Peterson,
          <string-name>
            <given-names>S.</given-names>
            <surname>Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report</surname>
          </string-name>
          <string-name>
            <given-names>CMU</given-names>
            /SEI
            <surname>-</surname>
            90-
          </string-name>
          TR-
          <volume>21</volume>
          , Software Engineering Institute, Carnegie Mellon University,
          <year>November 1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Kang</surname>
            ,
            <given-names>K. C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <article-title>FORM: a feature-oriented reuse method</article-title>
          .
          <source>Annals of Software Engineering</source>
          <volume>5</volume>
          (
          <year>1998</year>
          )
          <fpage>143168</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Metzger</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pohl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ; Schobbens,
          <string-name>
            <surname>P.</surname>
          </string-name>
          ; Saval,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Disambiguating the Documentation of Variability in Software Product Lines: A Separation of Concerns, Formalization</article-title>
          and
          <string-name>
            <given-names>Automated</given-names>
            <surname>Analysis</surname>
          </string-name>
          .
          <source>Requirements Engineering Conference</source>
          ,
          <year>2007</year>
          . RE'
          <volume>07</volume>
          . 15th IEEE International (
          <year>2007</year>
          ), pp.
          <fpage>243</fpage>
          -
          <lpage>253</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Pohl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bockle</surname>
            ,
            <given-names>G</given-names>
          </string-name>
          ,;
          <string-name>
            <surname>Linden</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Software Product</surname>
          </string-name>
          Line Engineering: Foundations, Principles and Techniques. Springer,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>18. Pure Systems. pure::variants. http://www.pure-systems.com/</mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Riebisch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bollert</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Streitferdt</surname>
            ,
            <given-names>D</given-names>
          </string-name>
          ; Philippow,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Extending feature diagrams with UML multiplicities</article-title>
          .
          <source>Sixth Conference on Integrated Design and Process</source>
          Technology (IDPT'
          <year>2002</year>
          ), Pasadena, CA,
          <year>June 2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Schobbens</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ; Heymans,
          <string-name>
            <given-names>P.</given-names>
            ;
            <surname>Trigaux</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ; Bontemps,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          <article-title>Generic semantics of feature diagrams</article-title>
          .
          <source>Computer Networks</source>
          <volume>51</volume>
          (
          <issue>2</issue>
          ):
          <fpage>456</fpage>
          -
          <lpage>479</lpage>
          (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Steger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Tischer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Boss</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Muller</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pertler</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Stolz</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ; Ferber,
          <string-name>
            <surname>S. Introducing</surname>
          </string-name>
          <article-title>PLA at Bosch Gasoline Systems</article-title>
          .
          <source>Software Product Line Conferences</source>
          <year>2004</year>
          , Boston, MA, Aug/Sep 2004, Springer-Verlag LNCS 3154, pp
          <fpage>34</fpage>
          -
          <lpage>50</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Trinidad</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Ruiz-Cortes</surname>
            ,
            <given-names>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>Jimenez</surname>
            ,
            <given-names>A. FAMA</given-names>
          </string-name>
          <string-name>
            <surname>Framework</surname>
          </string-name>
          . 12th
          <source>International Software Product Line Conference (SPLC</source>
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>van Deursen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Klint</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <article-title>Domain-speci¯c language design requires feature descriptions</article-title>
          .
          <source>Journal of Computing and Information Technology</source>
          (
          <year>2001</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24. van Gurp,
          <string-name>
            <given-names>J.</given-names>
            ;
            <surname>Bosch</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ; Svahnberg,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>On the notion of variability in software product lines</article-title>
          .
          <source>Working IEEE/IFIP Conference on Software Architecture (WICSA 01)</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>