<!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>Interactive Configuration of Embedded Systems Product Lines</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Goetz Botterweck</string-name>
          <email>goetz.botterweck@lero.ie</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Polzer and Stefan Kowalewski</string-name>
          <email>fpolzer, kowalewskig@embedded.rwth-aachen.de</email>
          <email>kowalewskig@embedded.rwth-aachen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ca</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Embedded Software Laboratory, RWTH Aachen University</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Implemented</institution>
          ,
          <addr-line>Product</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Lero - The Irish Software Engineering Research Centre, University of Limerick</institution>
          ,
          <addr-line>Limerick</addr-line>
          ,
          <country country="IE">Ireland</country>
        </aff>
      </contrib-group>
      <issue>03</issue>
      <abstract>
        <p>-This paper addresses product configuration and product derivation in product lines of embedded systems. We show how domain-specific languages (DSLs), which are used to describe the implementation of the product, can be translated into configurable models with formal semantics. This facilitates, tool support during configuration including (1) side-byside visualization of features and corresponding implementation components, (2) automated reasoning to calculate consequences of the user's configuration decisions and (3) visual explanations for automatically calculated consequences. In addition, we discuss (4) how a completed configuration can be turned into a productspecific model in the domain-specific language, using negative variability and subsequent pruning of the implementation model. The approach is demonstrated for product lines of embedded systems using Simulink as an domain-specific language for the model-based engineering of embedded systems. We report on first evaluation results with a product line of parking assistant applications, including experimentation on a rapid prototyping platform with a 1:5 model car.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>I. INTRODUCTION</p>
      <p>Many approaches in Software Product Lines (SPL) structure
the applied models into two areas (see figure 1): A model
describing the available choices, e.g., a feature or variability
model d and, one or more implementation models, which
describe how these choices are implemented Cd. Usually these
two types of models are mapped onto each other to support
further techniques.</p>
      <p>During Product Configuration the user (i.e., a customer or
an application engineer supporting him) decides which of the
available product options to choose. In Product Derivation,
he generates or assembles the product implementation that
corresponds to these configuration decisions.</p>
      <p>
        There are well-known techniques and tools for the
interactive configuration of feature models, for instance in
commercial tools such as pure::variants [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] or our earlier work on
interactive configuration with formal semantics [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>Interestingly, during product configuration the developer
typically configures the feature model d only – even though
the mappings between the feature model and other SPL models
are available . Interaction with the implementation models Cd
is usually not provided at this stage.</p>
      <p>While there might be good reasons to abstract from the
implementation deliberately (e.g., to hide complexity), the
g
ian iren
oDm igenn</p>
      <p>E
g
n
i
r
e
e
n
i
g
n
E
n
o
i
t
a
c
li
p
p
A
s
t
tc en
rPduo ireuq
m
e
R</p>
      <p>Ad
Aa</p>
    </sec>
    <sec id="sec-2">
      <title>Features</title>
    </sec>
    <sec id="sec-3">
      <title>Implementation</title>
      <p>Cd</p>
    </sec>
    <sec id="sec-4">
      <title>Implementation</title>
    </sec>
    <sec id="sec-5">
      <title>Components Product Derivation</title>
      <p>In this paper, we address this side-by-side configuration
by integrating the implementation model into the
configuration process. This allows us to provide the functionality
sketched above. To further motivate our research, we will first
use a sample case from product lines of embedded systems
(section II). We will then explain our approach (sections III
g
n
i
r
e
e
n
i
g
n
E
n
i
a
m
o
D
g
n
i
r
e
e
n
i
g
n
E
n
o
i
t
a
c
i
l
p
p
A</p>
      <p>Ad Feature</p>
      <p>Model
(*.fm)
s
t
tc en
rPduo ireuq
m
e
R</p>
      <p>Aa</p>
      <sec id="sec-5-1">
        <title>Feature</title>
      </sec>
      <sec id="sec-5-2">
        <title>Configuration</title>
        <sec id="sec-5-2-1">
          <title>Dd Domain</title>
        </sec>
      </sec>
      <sec id="sec-5-3">
        <title>Simulink</title>
      </sec>
      <sec id="sec-5-4">
        <title>Model (*.mdl)</title>
        <p>5
sl2mdl</p>
      </sec>
      <sec id="sec-5-5">
        <title>Generator</title>
        <sec id="sec-5-5-1">
          <title>Da Application</title>
        </sec>
      </sec>
      <sec id="sec-5-6">
        <title>Simulink</title>
      </sec>
      <sec id="sec-5-7">
        <title>Model (*.mdl)</title>
        <p>6</p>
      </sec>
      <sec id="sec-5-8">
        <title>Code</title>
      </sec>
      <sec id="sec-5-9">
        <title>Generation</title>
      </sec>
      <sec id="sec-5-10">
        <title>Executable</title>
      </sec>
      <sec id="sec-5-11">
        <title>Program</title>
        <p>
          to VI). The paper concludes with a discussion (section VII),
an overview of related work (section VIII) and some final
remarks.
control (observed by the sensors, influenced by the actuators)
is called the plant. The whole system (consisting of sensors,
controller, actuators, and the plant) is called a control loop [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
II. SAMPLE CASE: EMBEDDED SYSTEMS IN CONTROL
        </p>
        <p>ENGINEERING</p>
        <p>As a sample case for this paper, we want to apply Software
Product Line techniques to the domain of control engineering.
Such control system are typically developed using
modelbased tools like Matlab/Simulink. They can be considered as
(or implemented as) a special form of embedded systems.</p>
        <p>The task of a controller is to influence an environment with
actuators to achieve a certain behavior. To this end, the
controller gathers information of the environment using sensors.
With the information provided by the sensors the controller
uses the actuators to influence the controlled environment. In
many cases, the part of the environment that is the object of
When developing the code for such a controller, the main
requirements are the reaction time, the input-output stability
and the control error. The behavior of the control loop depends
on both the controller and the plant. To understand the
behavior of the plant and the controller, models of both are
developed in a first step. These models are improved using the
results of simulation.</p>
        <p>If the desired behavior is achieved, a next development step
is performed. The model of the controller will be translated
to source code and executed using a prototyping hardware.
During this development step either a prototyping plant or a
real-time model of the plant is influenced by the controller.
In this development timing requirements can be observed and
tested.</p>
        <p>During the third development step the controller code is
executed on the real product hardware. This is the first time
the real plant (and not the simulated one) is tested with the
controller. Cost and safety issues are the main reasons for the
late testing with the real plant. One important task during this
stage is to optimize the controller. To this end, the controller
has parameters that can adopted until the control loop finally
meets the requirements.</p>
        <p>To built such systems, model-based design is a common
engineering practice. Simulink is a very well-known example
of a domain-specific modeling language for embedded
systems, including corresponding tools. Using such development
frameworks is one way to tackle the increasing complexity.</p>
        <p>While this is already a nice foundation, in an industrial
context we require additional techniques that help us to build
whole product lines of such systems. To this end,
modelbased design techniques for embedded systems are extended
with mechanisms for variability and model-driven product
derivation.</p>
        <p>
          We discussed some concepts and techniques for this in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ],
[
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] where we extend domain specific implementation models
with variability. In this paper we focus on how feature models
and the related implementation models can be combined to
support their integrated, interactive configuration.
        </p>
        <p>III. OVERVIEW OF OUR APPROACH</p>
        <p>Before we explain the details of our approach, we first
want to give an overview as an orientation for the reader, see
figure 2. Similar to common SPL Engineering methods our
approach can be structured into Domain Engineering (upper
layer) and Application Engineering (lower layer).</p>
        <p>The overall goal of this process is to turn a product line
implementation Dd (upper right corner of figure 2) into an
product-specific implementation Da (lower right corner) and
finally an executable program.</p>
        <p>To support common techniques and processes from
Embedded Systems Engineering, we integrated our approach with
the domain specific language Simulink. Hence, the chain of
processes to begins in the Simulink world (right-hand
side of figure 2) moves over ( ) to the Eclipse-based Models
(left-hand side), which are configured and processed. Finally,
by code generation ( ) we return to the implementation DSL.
In the following sections we will now discuss these processes
in more detail.</p>
        <p>IV. DOMAIN ENGINEERING</p>
        <p>
          For the context of this paper, we will assume that most
processes, which are necessary to create the product line
artefacts ( d to Dd) have already been performed. See [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] for
more details.
        </p>
        <p>Those processes that are of interest here, start off with the
mdl2sl transformation , which converts the implementation
given in Simulink’s native .mdl format Dd into an
corresponding Eclipse-based implementation model Cd. Subsequently, we
are able to map this model to the feature model and perform</p>
        <p>
          The elements created in the target model are fine
grained elements of a feature model, which we call feature
model primitives. Examples for such feature model
primitives are f1-hasOptionalSubfeature-f 2, f3-requires-f4 or f
1hasBeenSelected. These primitives have clearly defined
semantics, including the corresponding behavior of our S2T2
Configurator tool during interactive configuration. These
semantics are given by further translation of the feature model
primitives into propositional logic. For instance,
f3-requiresf4 would be translated into :f3 _f4. Details of this translation
can be found in [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          In summary, the transformations provide the following
result: We now have (1) an integrated model presenting features,
further processing with Eclipse-based frameworks, such as
the numerous frameworks from the Eclipse Modeling Project
(EMP) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] or openArchitectureWare (oAW) [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
        </p>
        <p>To enable the integrated configuration of feature and
implementation models, we transform these models and the
mappings between them into an integrated SPL model .
The basic idea is to represent all configurable parts of the
product line (feature selected? component present?) as one
large feature tree, where different subtree represent different
SPL models. So, for instance, we can have one subtree with
the real feature model i and one subtree representing the
configuration status of components i , as well as mappings
and between them i . This enables us to interactively configure
the whole product line within one integrated model.</p>
        <p>
          This translation is realized by an model transformation
in ATL (Atlas Transformation Language) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. It applies an
semantic interpretation of the domain-specific concepts in the
Simulink model, translating them into feature model elements,
which make up the integrated SPL model . Some rules
for translation are shown in Table I for the Simulink model
(translating from Cd to i ) and Table II for the mapping model
(translating from d to i ).
        </p>
        <p>Representation within
the integrated
SPL model i
mandatory feature f (m)
optional feature f (s)
optional feature f (b)
subfeatures
f (b) requires f (a)
but not vice-versa
Representation within
the integrated
SPL model i
f (f ) requires f (c)
Simulink Cd
(concepts in the meta-model)
Simulink Model m
System s
Block b
contained blocks/systems
in blocks/systems
Line from block a
to block b
Mapping d
(concepts in the meta-model)
Feature f mapped to
component c
List of feature model primitives
f1 exludes f3
f2 requires f3
Eliminated feature</p>
        <p>Selected feature
f1 is implemented by c1
f2 is implemented by c2
User asking why c2 is
automatically selected
Visual explanations:
user selected f3 and
f3 requires c2
their implementation, and relations between them in one model
and (2) this model can be used in an interactive configuration
tool.
exclusive; f2 requires f3). The features and components are
connected via requires edges, which represent that features are
implemented by certain components.</p>
        <p>V. PRODUCT CONFIGURATION</p>
        <p>After converting the given SPL artefacts into one integrated
model, we can use our tool S2T2 Configurator to
perform an interactive configuration .</p>
        <p>
          Whenever a model is loaded, the Configurator internally
transforms it into a formal representation, which is used by a
reasoning engine to keep the configured model in an consistent
state, to calculates consequences of the user’s decisions and,
on demand, and to provides visual explanations for such
consequences [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>Figure 3 shows the Configurator with a very simple model
with just three features f1 to f3 (left-hand side) and two
components c1 and c2 (right-hand side). Within the feature
model, we have two dependencies (f1 and f3 are mutually
In the example, the user decided earlier that f2 is eliminated
and f3 is selected (this is indicated by the red cross in front
of f2 and the green check mark in front of f3). From these
decisions and information in the model the tool derived that,
f1 has to be eliminated and c2 has to be selected. In the
screenshot, the user just asked why c2 was selected (see the
open context menu). The tool responded by highlighting f3,
c2 and the requires edge between them.</p>
        <p>We can apply this tool to handle more realistic models,
which have been derived from a real Simulink
implementation model (using the model transformation briefly explained
earlier).
i1
i2
i3
i4
i5
i6</p>
        <sec id="sec-5-11-1">
          <title>Block 2</title>
        </sec>
        <sec id="sec-5-11-2">
          <title>Block 4 (optional, selected)</title>
        </sec>
        <sec id="sec-5-11-3">
          <title>Block 3 (optional, eliminated)</title>
          <p>switch</p>
          <p>Block 5</p>
          <p>bus
creator
o1
o2
o3
o4
o5
o6
Implementation Model (Simulink)
Feature‐Implementation Mappings</p>
        </sec>
        <sec id="sec-5-11-4">
          <title>Application</title>
        </sec>
        <sec id="sec-5-11-5">
          <title>Subsystem 1</title>
          <p>Given the product configuration a we now have to turn
this into an executable product. In the overview in figure 2
this corresponds to the process of Product Derivation .
A. Negative Variability</p>
          <p>The first step towards the executable product is the
derivation of the Application Simulink Model Ca.</p>
          <p>Here, we apply a well-known technique called negative
variability: The Domain Simulink Model Cd contains the union
of all possible product-specific Simulink Models Ca. Based
on the configuration decisions in the product configuration a
we then copy the Simulink models while filtering out all
elements, which correspond to eliminated features. Hence, the
term negative variability.</p>
          <p>
            This technique can, for instance, be implemented with ATL
model transformations (as demonstrated in earlier work [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ])
or with openArchitectureWare’s XVar component. For the
approach discussed here we are currently experimenting with
a connector that connects our Configurator to
openArchitectureWare [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ].
          </p>
          <p>B. Pruning</p>
          <p>The technique of negative variability is a first step, but it
is not sufficient to get a consistent model. We will briefly
discuss two situations, where we have to adapt more than just
removing some affected blocks.</p>
          <p>The first situation arises with alternative features. With
such alternative groups of features, often the outputs of the
corresponding implementation blocks are connected to the
same port of a third block. This pattern is not a legal Simulink
model, because Simulink does not know anything about the
alternative group and the elements which will be removed later
to obtain a legal model.</p>
          <p>Hence, to create and test such a model within the Simulink
tools, we have to introduce helper mechanism like Switch
blocks. When we later apply negative variability, these helper
mechanisms have to be adapted (or removed) as well. An
example is depicted in the figure 4, where two signals lead
into Block 5 and are handled by a switch block. Whenever,
only one of these two signals is left, we can remove the switch
block altogether.</p>
          <p>A second situation, where we have to adopt additional
components in the Simulink model are Bus elements. These
elements allow to combine multiple signals into one logical
bus, to simplify the model (Bus Creator). In a different
location in the same model, such a bus can again be separated
into the single signals (Bus Separator). Whenever we apply
negative variability, some signals within these buses might
have to be removed (because the blocks providing these signals
are no longer present). Hence, we have to adapt the bus. See
the bus creator and bus separator in figure 4. In the given
example, the signals i3, o2 and o3 could be pruned.</p>
          <p>VII. DISCUSSION</p>
          <p>In this work we implemented an approach, where we
combined the feature, the mapping, and the implementation
model into one big feature model. To this end, we transformed</p>
        </sec>
        <sec id="sec-5-11-6">
          <title>Rear Brake</title>
        </sec>
        <sec id="sec-5-11-7">
          <title>Throttle</title>
          <p>the Simulink blocks of the implementation model into features realistic Simulink models and evaluate the configuration
apand the mappings into constraints between the features and the proach.
blocks represented as features. During the implementation we made the experience that</p>
          <p>We experimented with this approach by using a product line Simulink is less strict about the syntax and the contents of
of parking assistant applications, which is implemented using values and parameters. This causes problems during
transfora Simulink model and a Rapid-Control-Prototyping system mation because the mechanisms further down the tool chain,
called VeRa. The model of the parking assistant can be simu- such as Eclipse Modeling Framework (EMF, for handling
late within Simulink or executed on a 1:5 model car, which is models), ATLAS Transformation Language (ATL, for
transshown in figure 5. The application contains variability because forming models) and our Configurator are more strict about
of alternative distance sensors and an optional compass sensor, values.
which helps the car to orientate itself in a parking bay. For instance, it is perfectly legal to name a Block
”S</p>
          <p>This model contains a large number of blocks, subsystems Function” in Simulink, actually including the quotes in the
and buses. Two parking algorithms are implemented to deal value. However, this will lead to technical problem when
with the variability: One which uses the compass information converting this to an EMF model. Similarly, Simulink does
and one without this information. not care if names of blocks are unique. In EMF, however,</p>
          <p>The transformation of a big Simulink model like our parking it is desirable to have unique names since these are used as
assistant into a feature model does not need remarkable time. identifiers in references.</p>
          <p>So scalability in terms of execution time of the transformation
seems to stay in reasonable bounds. VIII. RELATED WORK</p>
          <p>
            However, for larger models, during configuration the cog- In earlier work we presented the basic architecture of the
nitive complexity and usability become an issue. Some tech- configurator [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ] and discussed interaction techniques [
            <xref ref-type="bibr" rid="ref3">3</xref>
            ]. Here
niques how to mitigate these problem with interaction tech- we extend this work by (1) a new approach of visualizing
niques introduced to our S2T2 Configurator have been features and implementation, (2) using a configured feature
described in [
            <xref ref-type="bibr" rid="ref3">3</xref>
            ]. Up to now, we do not know if our approach model for product derivation and (3) pruning approaches
scales in terms of usability. Hence, we intend to use large, to adapt the implementation model. The whole approach is
evaluated using a parking assistant as application and a tool
chain using a Rapid Control Prototyping System.
          </p>
          <p>Approaches which are related to our work can be roughly
grouped in two categories, (1) approaches to deal with
variability in domain-specific languages and (2) approaches to model
variability in model-based development with Matlab/Simulink.</p>
          <p>
            Weiland [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] addresses the challenges of variability in
Matlab/Simulink. He uses marked standard Simulink blocks
like switches to represent the different choices. Hence, the
Simulink model contains the whole variability, a variant is then
chosen by setting the corresponding parameters and selecting
a specific signal path.
          </p>
          <p>
            Kubica [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ] starts from a feature model modeled in
pure::variants, where the developer has to choose the desired
features. Subsequently, the corresponding Simulink model
is build automatically from templates and fragment models
stored in the configuration tool.
          </p>
          <p>
            There are other approaches, which are dealing with
domainspecific techniques as well. For instance, Voelter and
Groher [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] describe how to use openArchitectureWare [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ] for
Software Product Line Engineering. They use aspect-oriented
and model-driven methods to generate products. To evaluate
their approach they discuss a product line of Smart Home
applications.
          </p>
          <p>
            When dealing with variability, a typical challenge is the
mapping of features or variation points to their
implementation. Czarnecki and Antkiewicz [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ] used a template-based
approach where visibility conditions for model elements are
described in OCL. Heidenreich et al. [
            <xref ref-type="bibr" rid="ref15">15</xref>
            ] present
FeatureMapper, a tool-supported approach which can map features to
arbitrary EMF-based models [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ].
          </p>
          <p>IX. CONCLUSIONS</p>
          <p>In this paper, we presented an approach to the configuration
of product lines within an existing tool for feature
configuration.</p>
          <p>The necessary translation from the implementation model
into feature models and the targeted feature modeling
language, present some limits with respect to expressive power.</p>
          <p>We can only “translate” model structures that are related to
configuration, such as selection/elimination or x requires y
dependencies. More domain-specific concepts, e.g., voltages
or oscilloscopes cannot be represented in a feature model in
a meaningful way.</p>
          <p>On the other hand, this translation enables us to configure
an integrated model of the whole product line within one
configuration tool. In particular, it provide the functionality
described in the introduction:
1) The user can browse dependencies between features and</p>
          <p>the related elements in other models.
2) After applying configuration decisions he/she can
im</p>
          <p>mediately see consequences in related models.
3) It is possible to apply configuration decisions in the
implementation model first and derive implications for
the feature model from that.</p>
          <p>In future work, we intend to improve (1) the product
derivation mechanisms, including the connector which links
our Configurator to openArchitectureWare and (2) the model
transformation that implements the pruning.</p>
          <p>X. ACKNOWLEDGMENTS</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Beuche</surname>
          </string-name>
          , “
          <article-title>Modeling and building software product lines with pure::variants,”</article-title>
          <source>in 12th International Software Product Line Conference (SPLC</source>
          <year>2008</year>
          ), Limerick, Ireland,
          <year>September 2008</year>
          . [Online]. Available: http://doi.ieeecomputersociety.
          <source>org/10</source>
          .1109/SPLC.
          <year>2008</year>
          .53
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Botterweck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Janota</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Schneeweiss</surname>
          </string-name>
          , “
          <article-title>A design of a configurable feature model configurator</article-title>
          ,”
          <source>in Proceedings of the 3rd International Workshop on Variability Modelling of Software-Intensive Systems (VAMOS 09)</source>
          ,
          <year>January 2009</year>
          . [Online]. Available: http: //www.vamos-workshop.net/proceedings/VaMoS 2009 Proceedings.pdf
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Botterweck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Schneeweiss</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pleuss</surname>
          </string-name>
          , “
          <article-title>Interactive techniques to support the configuration of complex feature models</article-title>
          ,
          <source>” in 1st International Workshop on Model-Driven Product Line Engineering (MDPLE</source>
          <year>2009</year>
          ),
          <article-title>held in conjunction with ECMDA 2009, Twente, The Netherlands</article-title>
          ,
          <year>June 2009</year>
          . [Online]. Available: https://feasiple.de/public/ proceedings-mdple2009.pdf
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lunze</surname>
          </string-name>
          , Regelungstechnik 1. Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Polzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kowalewski</surname>
          </string-name>
          , and G. Botterweck, “
          <article-title>Applying software product line techniques in model-based embedded systems engineering</article-title>
          ,”
          <source>in 6th International Workshop on Model-based Methodologies for Pervasive and Embedded Software (MOMPES</source>
          <year>2009</year>
          ), Workshop at the 31st
          <source>International Conference on Software Engineering (ICSE</source>
          <year>2009</year>
          ), Vancouver, Canada, May
          <year>2009</year>
          . [Online]. Available: http://doi.ieeecomputersociety.
          <source>org/10</source>
          .1109/MOMPES.
          <year>2009</year>
          .5069132
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Polzer</surname>
          </string-name>
          , G. Botterweck, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kowalewski</surname>
          </string-name>
          , “Variabilita¨
          <article-title>t im modellbasierten Engineering von eingebetteten Systemen,” in 7</article-title>
          . Workshop Automotive Software Engineering,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Eclipse-Foundation</surname>
          </string-name>
          , “Eclipse Modeling Project.” [Online]. Available: http://www.eclipse.org/modeling/
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>[8] “openArchitectureWare homepage.” [Online]. Available: http://www. openarchitectureware.org/</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Eclipse-Foundation</surname>
          </string-name>
          ,
          <article-title>“ATL (ATLAS Transformation Language)</article-title>
          .” [Online]. Available: http://www.eclipse.org/m2m/atl/
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Botterweck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. O</given-names>
            <surname>'Brien</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Thiel</surname>
          </string-name>
          , “
          <article-title>Model-driven derivation of product architectures,” in Proceedings of the twenty-second</article-title>
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          /ACM international conference on
          <source>Automated software engineering (ASE</source>
          <year>2007</year>
          ), Atlanta,
          <string-name>
            <surname>GA</surname>
          </string-name>
          , USA,
          <year>2007</year>
          , pp.
          <fpage>469</fpage>
          -
          <lpage>472</lpage>
          . [Online]. Available: http://dx.doi.org/10.1145/1321631.1321711
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Weiland</surname>
          </string-name>
          and E. Richter, “
          <article-title>Konfigurationsmanagement variantenreicher simulink-modelle,” in Informatik 2005 - Informatik LIVE!, Band 2</article-title>
          . Koellen Druck+Verlag GmbH, Bonn,
          <year>September 2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kubica</surname>
          </string-name>
          , “
          <article-title>Variantenmanagement modellbasierter funktionssoftware mit software-produktlinien,”</article-title>
          <source>Ph.D. dissertation</source>
          , Universita¨t ErlangenNu¨rnberg,
          <source>Institut fu¨r Informatik</source>
          ,
          <year>2007</year>
          , arbeitsberichte des Instituts fu¨r Informatik,
          <string-name>
            <surname>Friedrich-</surname>
          </string-name>
          Alexander-Universita¨
          <article-title>t Erlangen Nu¨rnberg.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Voelter</surname>
          </string-name>
          and
          <string-name>
            <surname>I. Groher</surname>
          </string-name>
          , “
          <article-title>Product line implementation using aspect-oriented and model-driven software development</article-title>
          ,
          <source>” in 11th International Software Product Line Conference (SPLC</source>
          <year>2007</year>
          ), Kyoto, Japan,
          <year>September 2007</year>
          . [Online]. Available: http://www.voelter.de/data/ pub/VoelterGroher SPLEwithAOandMDD.pdf
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Antkiewicz</surname>
          </string-name>
          , “
          <article-title>Mapping features to models: A template approach based on superimposed variants,”</article-title>
          <source>in GPCE'05</source>
          , Tallinn, Estonia, September 29 - October 1
          <year>2005</year>
          . [Online]. Available: http://dx.doi.org/10.1007/11561347 28
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>F.</given-names>
            <surname>Heidenreich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kopcsek</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Wende</surname>
          </string-name>
          , “Featuremapper:
          <article-title>Mapping features to models,” in ICSE Companion '08: Companion of the 13th international conference on Software engineering</article-title>
          . New York, NY, USA: ACM,
          <year>2008</year>
          , pp.
          <fpage>943</fpage>
          -
          <lpage>944</lpage>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1370175.1370199
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Eclipse-Foundation</surname>
          </string-name>
          , “EMF - Eclipse Modelling Framework.” [Online]. Available: http://www.eclipse.org/modeling/emf/
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>