<!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>A Multi-Level Approach for Supporting Configurations: A new Perspective on Software Product Line Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ulrich Frank</string-name>
          <email>ulrich.frank@uni-due.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Iris Reinhartz-Berger</string-name>
          <email>iris@is.haifa.ac.il</email>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arnon Sturm</string-name>
          <email>sturm@bgu.ac.il</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tony Clark</string-name>
          <email>t.clark@shu.ac.uk</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ben-Gurion University of the Negev</institution>
          ,
          <country country="IL">Israel</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Sheffield-Hallam University</institution>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Universität Duisburg-Essen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of Haifa</institution>
          ,
          <country country="IL">Israel</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Configuration is a common way in many markets to cope with reducing costs and improving customer satisfaction. There are various approaches to represent product configurations, the most common of which is feature modeling. However, feature models suffer from principal limitations, including ambiguity and lack of abstraction, increasing maintainability effort and limiting lifecycle support. In this paper, we suggest using a multi-level modeling approach to improve flexibility, reuse, and integrity and demonstrate the advantages of the approach over feature modeling.</p>
      </abstract>
      <kwd-group>
        <kwd>multi-level modelling</kwd>
        <kwd>domain specific modelling languages</kwd>
        <kwd>configuration</kwd>
        <kwd>variability</kwd>
        <kwd>software product line engineering</kwd>
        <kwd>feature modeling</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The variety and complexity of systems have dramatically increased in the last two
decades. These introduce challenges to the development of software that the
wellknown modeling paradigms could not handle without modifications and adaptations.
Software Product Line Engineering (SPLE) [
        <xref ref-type="bibr" rid="ref10">10, 16</xref>
        ] suggests reducing variety and
complexity of development and management by handling product families rather than
individual products and promoting systematic reuse across products. In this context,
variability management plays an essential role. Variability is defined as the ability of
a software system or a software artifact to be changed so that it fits a specific context
[19]. A common way to realize variability is through configuration [
        <xref ref-type="bibr" rid="ref14 ref4">4, 14</xref>
        ].
Configuration enables choosing alternatives that may be specified either explicitly or implicitly.
Particularly, potential configurations are all alternatives of an artifact, whereas valid
configurations are all potential alternatives that satisfy given constraints.
      </p>
      <p>
        Current approaches to SPLE adopt a two-layered framework [16]: domain
engineering containing the specification and implementation of product line artifacts
(potential configurations) and application engineering consisting the specification and
implementation of specific product artifacts (valid configurations). The rigid division
into these two levels imposes limitations on the ability to abstract concepts that are
used across these levels and to define the semantics of the various models which may
be expressed in different languages. Moreover, checking models for consistency and
correctness is challenging in the general context of SPLE and particularly with respect
to variability management. Scalability and visualization/graphical overload are
mentioned among the most prominent challenges [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        To address the above challenges, we propose to adopt a Multi-Level Modeling
(MLM) approach. Generally, MLM [
        <xref ref-type="bibr" rid="ref1 ref11 ref2">1, 2, 11</xref>
        ] is a new modeling paradigm that
supports abstraction through the use of both inheritance and meta-types, the latter is used
to allow the modeler to integrate the language used for modeling together with the
models themselves. As such MLM has the potential to support semantics integration,
abstraction and reuse, as well as to define Domain-Specific Modeling Languages
(DSML).
      </p>
      <p>
        In [18], we have explored MLM in the context of SPLE variability mechanisms –
techniques applied in order to adapt software product line artifacts to the context of
particular products. Here, we aim to analyze prospects of applying MLM to SPLE in
the context of variability management. Particularly, we demonstrate the limitations of
feature modeling [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], a well-known paradigm for variability management, which
supports configuration specification. We further propose an MLM approach [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] to
address those drawbacks. This approach enables the creation of DSMLs on different
levels of abstraction, where a lower level DSML is specified by a higher level DSML.
In such an architecture the traditional dichotomy between modeling language and
model is relaxed: each DSML is specified through a model which in turn was created
with a higher level language. The approach enables a common representation of
models and code, which promotes elegant specification and implementation of software
product lines.
      </p>
      <p>The rest of the paper is structured as follows. Section 2 reviews current approaches
to variability modeling, focusing on feature modeling and exemplifying its
limitations. Section 3 introduces the MLM approach and demonstrates its potential to model
configurations and to address feature modeling drawbacks. Finally, Section 4
discusses future research directions.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Current Approaches to Model Variability</title>
      <p>
        Variability management has gained interest in the past decade [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Many of the
approaches refer to modeling, utilizing feature modeling, UML extensions, formal
(mathematical) techniques, and more. Of those, feature modeling is the mostly used
paradigm, both in research [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and in industry [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Commonality and variability
specification is supported in feature modeling through the notion of features – prominent or
distinctive user-visible aspects, qualities, or characteristics of a software system or
systems. Dependencies among features enable constraining valid configurations
through different utilities, such as mandatory and optional features and variants (using
OR and XOR relations). Over the years, various extensions to the original feature
models [15] have been suggested to address limitations in expressiveness. These
extensions include among others adding cardinalities to features to enable specifications
other than mandatory and optional features, adding cardinalities to dependencies
(groups of features) to enable specifications other than OR and XOR relations, and
supporting the specification of value choice from large or infinite domains (attributes)
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Moreover, feature-oriented programming (FOP) [17] has been proposed in order
to percolate feature modeling concepts into code and support software modularization
based on composition mechanisms, called refinements. Yet, to the best of our
knowledge, the transition from feature models to feature-oriented code is not fully
automated.
      </p>
      <p>While feature modeling may serve as a versatile tool for representing variability in
requirements, they are limited in specifying and designing software product lines. In
order to demonstrate the limitations, we use the feature model depicted in Fig. 1. The
model specifies a family of software systems for bicycle dealerships. Each system
needs to represent and manage domain objects – bicycles, which exist in a remarkable
variety. Some dealers need to cover the full range in great detail (including the actual
distinction between racing bikes and pro-racers). Others are more satisfied with a
more generic concept of bicycle, which is characterized by its weight, its parts (fork,
frame, two wheels), and so on.</p>
      <p>Analyzing the bicycles model, we observe the following limitations.</p>
      <p>Ambiguity: Apparently, a feature may represent a class (e.g., frame or fork), an
attribute (e.g., size or weight), a possible attribute value (e.g., alum or carbon), or even
the result of an operation (e.g., the weight of a bicycle is the sum of its constituents’
weights). In an early stage of requirements analysis, it can be a good idea to use such
an abstraction. However, the closer one gets to the design phase, the more
problematic this abstraction may be: the concept of a feature does not allow for a clear
correspondence to software design concepts such as class, attribute, etc. Therefore, feature
models do not allow for a straightforward transformation to design documents such as
object models, and the synchronization of design documents and feature models is a
remarkable challenge that requires introduction of additional languages and tracing
capabilities, such as in orthogonal variability modeling [16].</p>
      <p>Lack of abstraction: The lack of classification will not only prevent modellers
from expressing knowledge they have, it also creates a threat to maintainability and
integrity. Since it is not possible to define classes that are characterized by a certain
feature configuration, it is not possible to define constraints that apply to these
classes. Defining corresponding constraints directly on features is not only cumbersome,
it may in the end even be a wasted exercise, because it can create additional
complexity that compromises a model's readability. Since feature models lack the concept
of class, they do not support a well-founded concept of generalization/specialization
either. Therefore, redundancy will often be unavoidable, which jeopardizes a model's
integrity.</p>
      <p>To demonstrate this limitation, consider the need to specify classes of racing bikes
and pro-racers. Both are specializations of bicycles, whereas pro-racers are special
racing bikes. The following constraints can be introduced for constraining valid
configurations of those classes of bicycles:
1.
2.</p>
      <p>Racing =&gt; ¬Suspension ∧ ¬SaftyRelf ∧ ¬AllTerrain ∧ ¬AllTerrain1 ∧ Race
∧ Race1 ∧ City</p>
      <p>ProRacer =&gt; Racing ∧ ¬MudMount ∧ Tubless ∧ UClcretified ∧ Carbon1</p>
      <p>This specification hinders the hierarchy of the three domains (regular bicycles,
racing bikes, and pro racers). It makes the models less understandable for the modellers,
especially when analyzing the consequences of feature modification, as all features
appear in the same (domain engineering) level without separation into the different
bicycles classes.</p>
      <p>
        Another example of the lack of abstraction refers to the need to specify that the
size of the front wheel equals to the size of the back wheel, but its weight is lighter.
Here, we need the distinction between classes, attributes, and attribute values. The
expressiveness of feature models is insufficient, and hence we have to use extensions
that support specification of feature cardinalities and attributes, e.g., the extension
proposed in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The cardinality of the feature wheel should be specified as [2..2]
(exactly 2) and the features size and weight3 should be replaced by attributes (of type
real). The constraints can be then specified as follows:
3. Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Location.Front =&gt;
4. Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Location.Back =&gt;
      </p>
      <p>
        Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Location.Back ∧
Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Size = Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Size ∧
Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Weight3 &lt; Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Weight3
Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Location.Front ∧
Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Size = Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Size ∧
      </p>
      <p>
        Wheel[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].Weight3 &lt; Wheel[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].Weight3
      </p>
      <p>This specification is complicated and its maintainability and comprehensibility are
further questioned. Hence, in the following we propose a multi-level modelling
language for supporting variability modeling in software product lines without forcing
overload of concepts.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Beyond Feature Models: Prospects of an MLM Approach</title>
      <p>To develop a convincing rationale for this proposal we first give a brief overview
of core concepts of MLM. Then, we outline why the additional abstraction enabled by
MLM is promising for designing and managing product lines. Finally, we illustrate
the potential of MLM for overcoming the aforementioned limitations using the
bicycles example.
3.1</p>
      <sec id="sec-3-1">
        <title>Multi-Level Modelling in a Nutshell</title>
        <p>•
•
•</p>
        <p>In the traditional paradigm, all entity types or classes of a model are located on the
same level of classification, which is usually M1. Therefore, it is not possible to
express knowledge about classes of classes. Furthermore, classes cannot be modelled as
objects that have a state and can execute operations. This lack of abstraction is
sometimes handled by overloading one level of classification. However, the ambiguity
caused by overloading creates a serious threat to integrity. A further option would be
to extensionally model all cases that were otherwise covered by a metaclass.
Unfortunately, that may tremendously increase a model’s complexity and, therefore,
jeopardize its integrity and maintainability.</p>
        <p>
          Multi-level modelling [
          <xref ref-type="bibr" rid="ref1 ref11 ref2">1, 2, 11</xref>
          ] aims at overcoming the limitations of the
traditional object-oriented paradigm. It is characterized by the following key
characteristics:
•
        </p>
        <p>Unlimited number of classification levels: A class can be defined on any
classification level.</p>
        <p>Classes as objects: Every class is an object at the same time, that is, it may have a
state and may execute operations.</p>
        <p>Deferred instantiation: Classes may define properties that apply not only to their
direct instances, but to instances of instances of instances etc. Therefore, it is
possible to specify that a property is to be instantiated only on a lower level.
Classes on different classification levels may co-exist in one model: In the
traditional paradigm, there is a strict distinction between model and modelling
language. A multi-level model may include objects on different classification levels,
which may located on M0 or M1 or may be part of languages or meta-languages.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Prospects of Using MLM for Modelling Product Lines</title>
        <p>Modelling product lines is aimed at a clear definition of all relevant kinds of
variability. To foster modelling productivity, a language for modelling product lines should
promote reuse, which recommends powerful abstractions. Furthermore, such a
language should support the maintenance of product lines, which recommends powerful
abstractions, too. In ideal case, the concepts provided with the language should be
suited for the entire software lifecycle, at least on different levels of precision and
detail.</p>
        <p>Classification is a powerful concept to express variability. A class defines the
properties that are shared by all its instances. The property types define the extension
of the set of instances. From another point of view a class can be regarded as a set of
constraints that need to be satisfied by its instances. The more restrictive the
properties, or more general: the constraints are, the better is the chance to clearly
discriminate valid against invalid variants. Nevertheless, the variation that can be defined
through classification is limited to the variation of instances of the class. Possible
variations of the class (and of other similar classes) cannot be accounted for. This is
different with MLM. Metaclasses can be used to define variations of classes. In
addition, they may serve to account for possible, future variability that is not known yet.
For example, we know that types of bicycle frames are made of aluminum, carbon,
and so on. Therefore, these materials can be used in a metaclass to define a range of
possible variants. At the same time, we know that there may be other materials in the
future, which can be accounted for by extending the set of materials at a later time.
Hence, extending metaclasses on any level improves the chance to modify a product
line in an elegant and convenient way.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Illustration: A Multi-Level Model of a Product Line</title>
        <p>
          The diagram in Fig. 2 illustrates how variability can be represented in a multi-level
model. In the example, we use the FMMLx [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], which is based on Xcore and
implemented in the Xmodeler [
          <xref ref-type="bibr" rid="ref10">98, 10</xref>
          ]. Its concrete syntax indicates the level of a class
by the background color of the class name field. The name of the metaclass is placed
on top of the class name. Deferred instantiation is expressed by intrinsic features,
where a feature may be an attribute, an operation, or an associated class. The
instantiation level is defined through a white number printed on a black rectangle next to the
name of a feature. In the case of intrinsic associations both sides of an association
may have an instantiation level, which can be different. The state of an object (which
may be a class at the same time) can be represented in a separate compartment
(printed in green) as well as the values returned by operations (yellow on black).
        </p>
        <p>The upper levels of Fig. 2 can be considered as models of products and
corresponding software systems at different levels of abstraction. Software vendors will
benefit from introducing (domain-specific) concepts in various levels and receiving
those concepts all the way down the hierarchy of products. Moreover, the transition
among levels is smooth: each level reduces the number of valid configurations of its
upper level by introducing constraints or assigning values to attributes. The transition
from M4 to M3, for example, is done by specifying that a racing bike, as well as its
frame, is not suited for tough terrains but suited for races, a racing bike is suited for
cities, a racing fork does not have a suspension, and so on. Note that the constraint
marked as c1 in the figure could be specified in feature modeling, yet its specification
would require complicated dependencies between features in the single level model.</p>
        <p>The models in the MLM approach can be easily mapped into code as they already
specify the type of the various elements. For example, a wheel, a frame, and a fork are
classes, while size and weight are attributes. The three classes of bicycles, regular,
racing, and pro-racers, are clearly shown in different abstraction levels of the MLM
approach, M2, M3 and M4 in the figure, allowing their separation for different types
of bicycle dealers, e.g., those who require differentiation between racing bikes and
pro-racers (level M2) and those who do not require this (level M3).
2,2
1,*
0 ofInstance
1 ofType
0 ofInstance
1 ofType
0
0
0,1
1
1,*
0,1
1
1,*</p>
        <p>Bicycle
allTerrain: Boolean
race: Boolean
city: Boolean
1 weight: Float
1 salesPrice: Float
0 partSalesPrice: Float
2 highestPrice() : Float
1 getFrontWheel() : Wheel
1 getBackWheel() : Wheel
2 averagePrice()
^Bicycle^</p>
        <p>
          RacingBike
UCIcertified: Boolean
1 weight: Float
1 salesPrice: Float
0 partSalesPrice: Float
2 highestPrice() : Float
1 getFrontWheel() : Wheel
1 getBackWheel() : Wheel
2 averagePrice() : Float
allTerrain = false
race = true
city = true
(1) Bicycle.instances[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ](b)
        </p>
        <p>
          Wheel.instances&lt;3&gt;(w1,w2)
b.getFrontWheel() = w1 and b.getBackWheel()
= w2 and w1 &lt;&gt; w2)
(2) Bicycle.instances[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ](b)
b.getFrontWheel().size =
b.getBackWheel().size)
0 1 2
value
value
        </p>
        <p>Metaclass
Intristic attribute/operation/association,
instantiated in objects on level M0/M1/M2
Object state
Object returned by an operation</p>
        <p>Frame
0
0,1
1
1,*
over feature modeling which include better abstraction and expressiveness,
unambiguity, and integrity. Those properties ease the reuse and
maintenance of models and
allows for easy transformation into later stages of design and implementation.</p>
        <p>To take full advantage of the potential of the MLM approach, we plan to devise a
multi-level constraint language which allows defining constraints that span over
multiple levels of classification. In addition, we plan to develop a comprehensive method
to guide the construction of multilevel DSMLs. While a method for developing
DSMLs within the MOF paradigm provides useful support, it does not help with
decisions concerning the appropriate number of levels or the separation of levels. We
further intend to evaluate the usefulness of the approach for performing different
SPLE activities, including constraining valid software configurations and deriving
specific configurations to certain requirements.
15. Kang, K. C., Cohen, S. G., Hess, J. A., Novak, W. E., &amp; Peterson, A. S. (1990).
Featureoriented domain analysis (FODA) feasibility study (No. CMU/SEI-90-TR-21).
CarnegieMellon Univ Pittsburgh Pa Software Engineering Inst.
16. Pohl, K., Böckle, G., van der Linden, F. (2005) Software Product-line Engineering:
Foundations, Principles, and Techniques, Springer.
17. Prehofer, C. (1997). Feature-oriented programming: A fresh look at objects. ECOOP'97—</p>
        <p>Object-Oriented Programming, 419-443.
18. Reinhartz-Berger, I., Sturm, A., &amp; Clark, T. (2015). Exploring Multi-Level Modeling
Relations Using Variability Mechanisms. In MULTI@ MoDELS, pp. 23-32.
19. Van Gurp, J., Bosch, J. &amp; Svahnberg, M. (2001). On the notion of variability in software
product lines. In proceedings of the Working IEEE/IFIP Conference on Software
Architecture, pp. 45-54.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Atkinson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Kühne</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>Reducing accidental complexity in domain models</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          <volume>7</volume>
          (
          <issue>3</issue>
          ), pp.
          <fpage>345</fpage>
          -
          <lpage>359</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Atkinson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutheil</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kennel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>A Flexible Infrastructure for Multilevel Language Engineering</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>35</volume>
          (
          <issue>6</issue>
          ), pp.
          <fpage>742</fpage>
          -
          <lpage>755</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bashroush</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garba</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rabiser</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Groher</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Botterweck</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <article-title>CASE Tool Support for Variability Management in Software Product Lines</article-title>
          .
          <source>ACM Comput. Surv</source>
          .
          <volume>50</volume>
          ,
          <issue>1</issue>
          , Article 14.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bass</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clements</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Kazman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2012</year>
          ).
          <source>Software Architecture in Practice. SEI Series in Software Engineering, 3rd Edition.</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Berger</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rublack</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nair</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Atlee</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Wąsowski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2013</year>
          ,
          <article-title>January). A survey of variability modeling in industrial practice</article-title>
          .
          <source>In Proceedings of the Seventh International Workshop on Variability Modelling of Software-intensive Systems</source>
          (p.
          <fpage>7</fpage>
          <lpage>)</lpage>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Chen</surname>
            <given-names>L</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babar</surname>
            <given-names>M A</given-names>
          </string-name>
          (
          <year>2011</year>
          )
          <article-title>A systematic review of evaluation of variability management approaches in software product lines</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>53</volume>
          :
          <fpage>344</fpage>
          -
          <lpage>362</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helsen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Eisenecker</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          (
          <year>2004</year>
          ).
          <article-title>Staged Configuration Using Feature Models</article-title>
          ,
          <source>Software Product Lines: Third International Conference, SPLC 2004</source>
          , Boston, MA, USA,
          <source>August 30-September 2</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Clark</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Willans</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2012</year>
          ).
          <article-title>Software language engineering with XMF and Xmodeler. Formal and Practical Aspects of Domain Specific Languages: Recent Developments</article-title>
          .
          <source>IGI Global</source>
          , USA.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Clark</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sammut</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Willans</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>Applied Metamodelling: A Foundation for Language Driven Development</article-title>
          . Ceteva,
          <volume>2</volume>
          <fpage>edition</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Clements</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Northrop</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          (
          <year>2001</year>
          ).
          <article-title>Software Product Lines: Practices and Patterns</article-title>
          . Addison-Wesley.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>De Lara</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerra</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Cuadrado</surname>
            ,
            <given-names>J. S.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>When and How to Use Multi-Level Modelling</article-title>
          .
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM) 24</source>
          (
          <issue>2</issue>
          ), Article no.
          <volume>12</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <source>Multilevel Modeling: Toward a New Paradigm of Conceptual Modeling and Information Systems Design. Business and Information Systems Engineering</source>
          <volume>6</volume>
          (
          <issue>6</issue>
          ), pp.
          <fpage>319</fpage>
          -
          <lpage>337</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Power-Modelling: Toward a more Versatile Approach to Creating and Using Conceptual Models</article-title>
          .
          <source>In Proceedings of the Fourth International Symposium on Business Modelling and Software Design.</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jacobson</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Griss</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Jonsson</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          (
          <year>1997</year>
          ).
          <article-title>Software reuse: architecture, process and organization for business success</article-title>
          . ACM, Addison-Wesley.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>