<!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>Enabling End-users Participation in an MDD-SPL Approach</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Francisca Pérez, Pedro Valderas, Joan Fons Research Centre on Software Production Methods Technical University of Valencia Valencia</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Developing smart home systems that properly fit end-user needs is not always an easy task due to the lack of understanding that may exist between end-users and system developers. In the context of Software Product Lines, several approaches have been presented to improve the development of smart home system functionality. However, little support is provided to improve the interaction with end-users. In this work, we extend a Software Product Line based on Model-Driven Development with an interactive design tool that allows end-users to actively participate in the SPL. This tool allows end-users to configure the decision model that drives the production process of the software product line by themselves. In order to develop this tool we have been inspired by well-known and tested enduser techniques and interaction patterns that improve the user interface usability.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>Smart home systems are in charge of providing different
services to support the daily activities of the inhabitants of a
home. In order to do this, smart home systems automatically
perform actions such as turning the lights on [1], controllling a
thermostat, closing the blinds, etc. However, all these actions
must be performed according to the user’s preferences and
needs.</p>
      <p>Adapting smart home systems to end-users needs is not
always an easy task due to the lack of understanding that may
exist between end-users and system developers. End-users are
the owners of the domain of knowledge, the ones with more
indepth knowledge about both the services that must be provided
by the system and the environment in which the system is
going to be deployed. However, many times they do not have
the ability of transmitting this information properly. We think
that this can be improved by providing mechanisms that allow
end-users to actively participate in the development process.</p>
      <p>In the area of Software Product Lines (SPL), many efforts
have already been made to improve the development of smart
home systems [2], [3]. However, these approaches focus
mainly on providing developers with techniques and tools to
develop the system functionality, and they pay little attention
to the interaction with end-users. In this work, we face the
problem of allowing end-users to actively participate in the
development of a smart home within an SPL.</p>
      <p>To do this, we have extended a Software Product Line to
develop smart home systems [4], which is based on Model
Driven Development (MDD). The proposed extension consists
of an interactive design tool that allows end-users to create
tailored solutions that directly reflect their needs and
expectations. To do this, we have been inspired by well-known
and tested end-user techniques and interaction patterns that
improve the user interface usability [5], [6], [7].</p>
      <p>Considering the schema of the MDD-SPL (see Fig. 1),
where a product operation transforms input assets into an
output system according to the configuration specified in a
decision model, the contribution of this work is an end-user
tool that enables end-users to configure the decision model
that drives the production process by themselves.</p>
      <sec id="sec-1-1">
        <title>End-user tool</title>
      </sec>
      <sec id="sec-1-2">
        <title>Decision</title>
      </sec>
      <sec id="sec-1-3">
        <title>Model</title>
      </sec>
      <sec id="sec-1-4">
        <title>Production</title>
      </sec>
      <sec id="sec-1-5">
        <title>Operation</title>
      </sec>
      <sec id="sec-1-6">
        <title>Output</title>
      </sec>
      <sec id="sec-1-7">
        <title>System</title>
        <p>tcdu tsp
ro ec
reP on
tfaw ienC
oS L</p>
      </sec>
      <sec id="sec-1-8">
        <title>Assets</title>
        <sec id="sec-1-8-1">
          <title>Approach overview</title>
          <p>The rest of this paper is structured in the following way:
Section II presents the related work in the field of the end-user
development techniques for smart homes. Section III presents
the MDD-SPL for developing smart home systems. Section IV
introduces the end-user tool and the interaction patterns that
have been applied to improve the interface usability. Section
V presents some aspects of the technology used to implement
this tool. Finally, section VI concludes the paper.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <p>There are several works that show how to combine MDD
and SPLs [8], [2]. Voelter and Groher [2] describe an
approach where development is combined with model-driven
development. They define aspects at the modelling level, the
transformation level, and the implementation level. They apply
their approach to the Smart Home domain. Anastasopoulos
et al. [8] apply a combination of both MDD and SPL to
the Ambient Assisted Living (AAL) domain. They express
variations in smart home functionality as features, and
synthesize AAL specifications by composing features. Compared
to our work, the above approaches do not involve end-user
expectations in the MDD-SPL, which is essential for the
successful development of Smart Homes [9]. Other works
such as [10] presents a tool to support end-users in working
with large-scale product line variability models in product
derivation. This tool is based on derivation models and it
provides end-users with a textual visualization which allows
end-users to set values on decisions by answering questions.
However, the use of a visual language seems to be the best
option since visual languages have demonstrated to be more
intuitive and easier to be used by users than other options like
textual languages [11], [12].</p>
      <p>Many research initiatives seek to allow end-users to
program or customize their systems using end-user techniques
as Pervasive Interactive Programming (PiP) [13], or
CAPpella [14]. Furthermore, other research initiatives allow
endusers to interact with their system using metaphors as jigsaw
puzzle pieces [15], or magnetic refrigerator poetry [16]. Some
of these well-accepted end-user techniques are:</p>
      <p>Natural Programming [17]: it is an application of the
standard user-centered design process to the specific
domain of programming languages and environments. The
premise of this approach is that programmers will have
an easier job if their programming tasks are made more
natural. For example, HANDS [18] is a programming
system for children. HANDS is an event-based system
featuring a concrete model for computation based on
concepts that are familiar with non-programmers. The
computation is represented as an agent named Handy,
sitting at a table handling a set of cards.</p>
      <p>Programming By Example [19]: also called
Programming by demonstration (PBD) because the user shows
examples of the desired behaviour to the computer. For
example, Pervasive Interactive Programming (PiP) [13]
provides a platform that uses the physical user space as
the programming environment providing the user with a
natural and more familiar mechanism to “program” the
functionality they require to suit their particular needs.
Visual Programming [20]: it is the use of visual
expressions in the programming process. For example,
Alice [21] is an innovative 3D programming environment
that allows students to learn fundamental programming
concepts in the context of creating animated movies and
simple video games.</p>
      <p>Jigsaw metaphor [15]: it is based on the familiarity
evoked by the notion and the intuitive suggestion of
assembly by connecting pieces together. Essentially, it
allows end-users to make variability decisions through a
series of left-to-right couplings of pieces. For example,
ACCORD has developed the Tangible Toolbox [22],
based on a shared Data Space, that enables people to
easily administer and re-configure services based on
embedded devices around the home. This toolkit also
enables devices to integrate with each other through
several different editors. One of these editors uses the
jigsaw metaphor to create new services.</p>
      <p>Although these techniques encourage end-users to
participate in the creation of software systems, they do not address
a process where end-users can specify the requirements of the
system. Our approach applies end-user techniques within an
MDD-SPL in order to allow end-users to actively participate
in the configuration of the desired software (in this particular
case, a smart home system).</p>
    </sec>
    <sec id="sec-3">
      <title>III. MDD-SPL FOR SMART HOMES</title>
      <p>In this section, we illustrate the SPL for smart home
systems. Fig. 2 illustrates the models used in the SPL. The input
assets consist of a collection of models describing all smart
homes that can be produced. These models are created by
using the PervML language. A smart home is uniquely defined
by the selections made on the feature model, which plays
the role of decision model. The selected features determine
which elements of the PervML models are used for the initial
configuration of the smart home by means of a Realization
Model. Finally, the output system is obtained through a model
transformation.</p>
      <p>s
e
g
a
u
d gn
te a
la L
e g
R iln
e
d
o
M</p>
      <sec id="sec-3-1">
        <title>PervML</title>
      </sec>
      <sec id="sec-3-2">
        <title>Model</title>
        <p>The following subsections provide details about the models
involved in the SPL.</p>
        <p>A. The PervML model</p>
        <p>
          Pervasive Modeling Language (PevML) [23] is a DSL
for describing pervasive systems using high-level abstraction
concepts. This language focuses on specifying heterogeneous
services in specific physical environments such as the services
of a smart home. These services can be combined to offer
more complex functionality by means of interactions. These
services can also start the interaction as a reaction to changes
in the environment. The main concepts of PervML are: (
          <xref ref-type="bibr" rid="ref1">1</xref>
          )
a Service coordinates the interaction between suppliers to
accomplish specific tasks (these suppliers can be hardware o
software systems); (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) a Binding provider (BP) is a supplier
adapter that embeds the issues of dealing with heterogeneous
technologies; (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) an Interaction is a description of a set of
ordered invocations between Services; and (
          <xref ref-type="bibr" rid="ref4">4</xref>
          ) a Trigger is
an ECA rule (Event Condition Action) that describes how
a Service reacts to changes in its environment. This DSL
has been applied to develop solutions in the smart home
domain [24].
        </p>
        <p>This model (see the bottom of Figure 3) describes the
building blocks for the assembly of a pervasive system [23].
The grey blocks implement the functionality of the selected
features. The white blocks enable an alternative functionality
of the system. The (l), (o), (m) and (p) blocks provide adapters
for the new resources available.</p>
        <p>B. The feature model</p>
        <p>Feature models are widely used to describe the set of
products in a software product line in terms of features. In these
models, features are hierarchically linked in a tree-like
structure and are optionally connected by cross-tree constraints.
There are many proposals for the type of the relationships
and the graphical representation of feature models [25]. We
have chosen the Feature Model [26] as the modeling language
because it is feature reasoning oriented and has a good tool
support [27].</p>
        <p>This model (see the top of Fig. 3) determines the initial and
the potential features of the smart home. The grey features are
selected to specify a member of the smart home family. The
white features represent potential variants. Initially, the smart
home provides Automated illumination, Presence simulation
and a Security system. This security system relies on In home
detection (inside the home) and a siren alarm. The system
can potentially be upgraded with volumetric presence detection
and more alarms to enhance home security.</p>
        <p>The feature model also determines how the features relate
to each other by cross-tree constraints. As the feature model
of Fig. 3 shows, these relationships are: Optional represented
with a small white circle on top of the feature, Mandatory
represented with a small black circle on top of the feature,
Multiple choice represented with a black triangle, Single
choice represented with a white triangle, Requires which it
is represented with a dashed arrow and Excludes represented
with a dashed double-headed arrow.</p>
        <p>C. Realization model</p>
        <p>The realization model is an extension that we have
incorporated to Atlas Model Weaving (AMW) [28] in order to
relate the SPL features to the PervML elements. AMW is
a model for establishing relationships between models. Our
extension augments the AMW relationship with the default
and alternative tags. This augmented relationship is applied
between features and PervML elements (BPs and Services).
In the context of a BP, the default relationship means that
the BP is selected for the initial configuration of the system.
The alternative relationship means that the BP is considered
a quiescent element that should be incorporated to the SPL
product, but does not participate in the initial configuration.
Quiescent BPs provide an alternative BP to replace the default
BP in case of fault. The more quiescent BPs identified, the
more flexible the adaptation will be.</p>
        <p>
          This model (see the middle of Figure 3) establishes the
relationships between the features and the PervML elements.
For instance, the visual alarm feature is related to a BP (p) for
visual alarms, but, alternatively, it can be replaced with a BP
(m) that emulates the visual alarm by using the blink lighting.
(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) Smart Home
(
          <xref ref-type="bibr" rid="ref14">14</xref>
          ) Volumetric
        </p>
        <p>
          Detector
(
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) Security
        </p>
        <p>
          Mandatory
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) Presence
Simulation
(
          <xref ref-type="bibr" rid="ref7">7</xref>
          ) TV
        </p>
        <p>
          Multimedia
(
          <xref ref-type="bibr" rid="ref6">6</xref>
          ) In Home Detection
        </p>
        <p>
          (
          <xref ref-type="bibr" rid="ref4">4</xref>
          ) Automated Illumination
Requires
(
          <xref ref-type="bibr" rid="ref8">8</xref>
          ) Illumination
        </p>
        <p>
          (
          <xref ref-type="bibr" rid="ref9">9</xref>
          ) Light By Presence
(
          <xref ref-type="bibr" rid="ref15">15</xref>
          ) Lamp (
          <xref ref-type="bibr" rid="ref16">16</xref>
          ) Gradual (
          <xref ref-type="bibr" rid="ref17">17</xref>
          ) Infrared (
          <xref ref-type="bibr" rid="ref18">18</xref>
          )Volumetric
        </p>
        <p>
          Lamp Detector detector
Alarm
(
          <xref ref-type="bibr" rid="ref5">5</xref>
          ) &lt;&lt;Default&gt;&gt; (c)
(
          <xref ref-type="bibr" rid="ref10">10</xref>
          )&lt;&lt;Default&gt;&gt; (o)
(
          <xref ref-type="bibr" rid="ref11">11</xref>
          ) &lt;&lt;Default&gt;&gt; (q)
(
          <xref ref-type="bibr" rid="ref12">12</xref>
          ) &lt;&lt;Default&gt;&gt;(p)
(
          <xref ref-type="bibr" rid="ref12">12</xref>
          )&lt;&lt;Alternative&gt;&gt;(m)
Illumination
        </p>
        <p>
          (
          <xref ref-type="bibr" rid="ref8">8</xref>
          ) &lt;&lt;Default&gt;&gt; (e)
Light by presence
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) &lt;&lt;Default&gt;&gt; (f)
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) &lt;&lt;Default&gt;&gt; (g)
(
          <xref ref-type="bibr" rid="ref8">8</xref>
          ) &lt;&lt;Default&gt;&gt; (e)
        </p>
        <p>
          Optional
Multiple
choice
(
          <xref ref-type="bibr" rid="ref5">5</xref>
          ) Alarm
Single
choice
(
          <xref ref-type="bibr" rid="ref10">10</xref>
          ) Silent (
          <xref ref-type="bibr" rid="ref11">11</xref>
          ) Siren (
          <xref ref-type="bibr" rid="ref12">12</xref>
          ) Visual
Alarm Alarm
(
          <xref ref-type="bibr" rid="ref13">13</xref>
          ) Infrared
        </p>
        <p>Detector
Realization Model</p>
        <p>
          Security
(
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) &lt;&lt;Default&gt;&gt; (i)
        </p>
        <p>
          In Home Detection
(
          <xref ref-type="bibr" rid="ref6">6</xref>
          ) &lt;&lt;Default&gt;&gt; (h)
(
          <xref ref-type="bibr" rid="ref6">6</xref>
          ) &lt;&lt;Default&gt;&gt; (b)
(
          <xref ref-type="bibr" rid="ref14">14</xref>
          )&lt;&lt;Default&gt;&gt; (k)
(
          <xref ref-type="bibr" rid="ref13">13</xref>
          )&lt;&lt;Default&gt;&gt; (n)
Automated Illumination
(
          <xref ref-type="bibr" rid="ref4">4</xref>
          ) &lt;&lt;Default&gt;&gt; (d)
        </p>
        <p>
          Light by presence
(
          <xref ref-type="bibr" rid="ref9">9</xref>
          ) &lt;&lt;Default&gt;&gt; (h)
(
          <xref ref-type="bibr" rid="ref9">9</xref>
          ) &lt;&lt;Default&gt;&gt; (a)
(
          <xref ref-type="bibr" rid="ref18">18</xref>
          )&lt;&lt;Default&gt;&gt; (k)
(
          <xref ref-type="bibr" rid="ref17">17</xref>
          )&lt;&lt;Default&gt;&gt; (n)
Presence Simulation
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) &lt;&lt;Default&gt;&gt; (f)
PervML Model Abstraction
&lt;&lt;Service&gt;&gt;
(a)Light by
presence
&lt;&lt;Service&gt;&gt;
(b)In Home
Detection
&lt;&lt; Service&gt;&gt; &lt;&lt; Service&gt;&gt;
(c) Alarm (d) Automated
        </p>
        <p>Lighting
&lt;&lt; Service&gt;&gt;
(e) Lamp
Mediator
&lt;&lt; Service&gt;&gt;
(f) Presence
Simulation
&lt;&lt;Trigger&gt;&gt;
(g) Random
Simulation</p>
        <p>Starter
&lt;&lt; Trigger&gt;&gt;
(h) Presence
Detected
&lt;&lt; Interaction&gt;&gt;
(i) Security
&lt;&lt; BP&gt;&gt;
(j) Automated</p>
        <p>Lighting</p>
        <p>&lt;&lt; BP&gt;&gt;
(k) Volumetric</p>
        <p>Detector
&lt;&lt; BP&gt;&gt;
(l) Perimeter</p>
        <p>Detector
&lt;&lt; BP&gt;&gt;
(m) Blink
Lighting
&lt;&lt; BP&gt;&gt;
(n) Infrared
Detector
&lt;&lt; BP&gt;&gt;
(o) Silent
Alarm</p>
        <p>&lt;&lt; BP&gt;&gt;
(p) Visual Alarm
&lt;&lt; BP&gt;&gt;
(q) Buzzer
D. Model To Text (M2T)</p>
        <p>Once the pervasive system is modelled, the transformation
engine can be applied to generate the code. For this task, we
have used the MOFScript language which provides capabilities
navigating models, creating files, etc. MOFScript takes as
input one model and applies over one selected metaelement
a contextual rule. The applied rule can access the element
properties, navigate over the related model elements and
invoke other rules.</p>
        <p>At 1 there is more information about the transformation rules
and the tools to support the code generation.</p>
        <p>IV. INTRODUCING END-USERS IN THE MDD-SPL
In the presented MDD-SPL, variability engineers set the
smart home configuration by means of the feature model.
Variability engineers make assumptions about the desirable
functionality of end-users. Conversely, end-users are the ones
who best know their activities and their functionality
expectations. End-users and professional developers actually possess
distinct types of knowledge. End-users are the “owners” of the
problem and developers are the “owners” of the technology
to solve the problem. End-users do not understand software
developers’ jargon and developers often do not understand
end-users’ jargon [29]. Although, end-users are not
professional developers they have deep knowledge of their specific
environment and they should be able to develop their own
smart home system according to their needs. Hence, we
involve end-users in the Smart Home configuration in order to
minimize the mismatch between user expectations and system
behaviour.</p>
        <p>In order to tackle this, end-users must be supplied with
visual development tools that allow them to describe their
needs [30]. In this work, we have developed a tool that allows
end-users to configure their smart home system using the
MDD-SPL for smart homes described in the previous section.
Fig. 4 shows an overview of the MDD-SPL with end-users.
The end-user tool allows end-users to indicate which services
and devices must be available in each location and configuring
the feature model accordingly. Thus, when end-users have
finished describing their needs, we obtain the decision model
that determines the output system to be obtained by applying
the model transformation.</p>
        <p>To design the end-user front-end, we have based on
wellaccepted techniques and metaphors in the field of end-user
development such as: Natural Programming, Programming By
Example, Visual Programming and metaphors (see Section II).
We have also applied interaction patterns and design principles
to end-user interface design according to studies [5], [6],
[7] which show how these patterns and principles help
endusers (who may not have any background about computer
applications). According to these studies, the main design
interface decisions that we have applied are:</p>
        <p>Using a wizard: in our process the end-user needs to
achieve a single goal (the description of their needed</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>1www.pros.upv.es/labs/projects/pervml</title>
      <p>Techniques and
metaphors in the field of
end-user development
A. Catalog of available
configurations</p>
      <sec id="sec-4-1">
        <title>Feature</title>
      </sec>
      <sec id="sec-4-2">
        <title>Model</title>
        <p>B. Saving the
configuration</p>
      </sec>
      <sec id="sec-4-3">
        <title>PervML</title>
      </sec>
      <sec id="sec-4-4">
        <title>Model</title>
        <p>Approach overview
system) but several decisions need to be made before
the goal can be fully achieved (several steps), which may
not be known to the user. Thus, the use of a wizard is
recommended in [5] since the user wants to reach the
overall goal but may not be familiar with or interested in
the steps that need to be performed.</p>
        <p>Offering navigation buttons: we use navigation buttons
to suggest end-users that they are navigating a path with
steps. This is recommended in [5] because the learning
and memorization of the task of each step are improved.
In addition, when users are forced to follow the order of
tasks, they are less likely to miss important things and
therefore will make fewer errors.</p>
        <p>Displaying the elements using a grid layout: this is
recommended in [5] to any circumstance where several
information objects are presented and arranged spatially
within a limited area. This improves the presentation and
it minimizes the time to scan, read and view objects on
screen.</p>
        <p>Offering options: an interesting conclusion is reached
in [6]: what people see is what they select from!. The
study states that people tend to select from the entire
list of options what they are first presented with. Rarely
is an effort made to find additional options through
scrolling. If eleven items are presented, the choice is from
these eleven. When options must be compared among
themselves, controls presenting all the options together
will yield the best results.</p>
        <p>Selection rather than introduce text: the studies
presented in [7] show the advantages and disadvantages
of using either entry fields or selection fields for data
collection. Since information became less familiar or
subject to spelling or typing errors they recommend
choosing a selection technique.</p>
        <p>
          Thus, we have developed a user interface based on the
interface decisions presented above which allows end-users to
specify the services and devices that they need. Fig. 5 shows
a snapshot of this interface as end-users configure devices and
services in their home. Each interface is divided into four
areas: (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) Title and navigation buttons, (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) Catalog of available
configurations, (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) End-user environment and (
          <xref ref-type="bibr" rid="ref4">4</xref>
          ) Information
1
2
4
        </p>
        <p>Device configuration
3
Service configuration
where our tool can advise to end-users or assist them. In
particular, we show at the left side of the figure how the
enduser has selected some devices for different locations of their
smart home (i.e. a siren alarm and a Volumetric detector for the
corridor). At the right of the figure we show how the end-user
has selected some services for different locations (i.e. Alarm
service for the corridor).</p>
        <p>
          As Fig. 5 shows, we have applied the interaction patterns
described above. The grid layout pattern is applied to divide
the interface into the four areas presented above. The wizard
pattern is used to guide end-users along the process of creating
a pervasive description by progressively asking them for the
required information (services, devices, etc.). In addition,
navigation buttons are also used in the area (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) to allow
end-users to navigate between the different windows that ask
for the required information. The offer options and selection
rather than introduce text patterns are applied in the area (
          <xref ref-type="bibr" rid="ref2">2</xref>
          )
offering the devices/services available as options and allowing
end-users to select these devices/services into the end-user
environment represented in the area (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ).
        </p>
        <p>The next two subsections describe how the tool uses the
Feature Model. Subsection A. describes how the end-user
front-end uses the feature model to show the catalog of
available configurations (see Fig. 4) and Subsection B.
describes how the tool saves the configuration in the feature
model activating/inactivating features according to the
enduser’s configurations.</p>
        <p>A. Catalog of available configurations</p>
        <p>As we described in subsection III-B, we use the feature
model to describe the system configuration and its variants
in terms of features. In the smart home domain, the system
configuration that end-users have to select is made up of
the services and devices required for each location in the
environment.</p>
        <p>At the top of Fig. 3 is shown the feature model which
determines the initial and potential features of the smart home.
These features represent services and families of devices.
The families of devices are the leaves of the feature model
and the services are the nodes which are not leaves. We
specify families of devices in the feature model rather than
devices because there is a large diversity of devices which are
continuously changing. For each family of devices we offer
a catalog of compatible devices. For example, the Volumetric
Detection device family has a catalog of compatible devices
which contains a Volumetric 360 degree detector as well as
a 160 degree one. Thus, when a new device is supported all
we have to do is update the catalog of that family of devices
rather than the feature model.</p>
        <p>Our tool shows end-users the options from the available
configurations according to the feature model. Fig. 6 shows an
example of service and device options according to the feature
model. Note that these device options match the node leaves
of the feature model presented in the figure (Siren Alarm,
Visual Alarm, Siren Alarm, Infrared Detector and Volumetric
Detector) and the service options match the nodes which are
not leaves of the feature model (Security, Alarm and In Home
Detection).</p>
        <p>The available options are displayed in a tree. Studies
described in [5] recommend using a tree when the number
of groups is high. They also recommend that each option
be explained so that users know of the consequences. Thus,
we show in our tool a representative image for each service
or device and a brief description. Fig. 5 shows the list of
available devices and services that is shown to end-users from
the feature model presented at the top of Fig. 3.</p>
        <p>B. Saving the configuration in the feature model</p>
        <p>Once the catalog of configurations has been shown,
endusers can select services or devices for each location in
the end-user’s tool. When this happens, the end-user tool
sets activated/inactivated features to the feature model. Thus,
when end-users finish setting their system the feature model
will have activated the features according to the end-user
configuration.</p>
        <p>
          To set a configuration end-users have to select the desired
services and devices from the catalog of configurations and put
them into the proper location. Then, a representative image
of the service/device is displayed in the environment. The
service/device can be displayed in two different colours: (
          <xref ref-type="bibr" rid="ref1">1</xref>
          )
red with a dotted frame if the service configuration has not
fulfilled their constraints (services/devices that the service
need) or (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) green if the service configuration has fulfilled
their constraints. Fig.5 shows the specification of devices (see
at the left side of the figure) and services (see at the right side
of the figure).
        </p>
        <p>In order to define these end-user interfaces we have based on
the following end-user principles and interaction patterns [7],
[5]:</p>
        <p>Using autocompletion: The study showed in [7] states
that aided entry, also known as autocompletion, is
preferred over unaided entry methods, and it is also the
fastest method. Autocompletion reduces errors in
comparison to unaided entry. In addition, it also minimizes
the user’s effort by reducing input time and keystrokes.
Using a warning: this is recommended in situations
where the user performs an action that may
unintentionally lead to a problem [5] and the system cannot or
should not automatically resolve this situation so the user
needs to be consulted. The warning might also include a
more detailed description of the situation to help the user
make the appropriate decision by means of two options
at least.</p>
        <p>Offering all options: this is recommended when the
number of options is not large and they can be displayed
without scrolling [7]. Rarely was an effort made to find
additional options through scrolling.</p>
        <p>Offering some options: this is recommended when the
number of options is high and it needs a scroll to be
displayed. Thus, it is recommended to show some options
of the available list [7]. This improves the speed of
performance and satisfaction</p>
        <p>According to the interaction patterns presented above, we
have defined a set of mappings between the feature model
and our end-user front-end and how the interaction patterns
are used depending on the information that is available at the
feature model. Next we present the interaction patterns used
for each relationship of the feature model:</p>
        <p>
          If there is a Mandatory feature, we use
Autocompletion. When a feature A is related to another feature B
with a mandatory relationship, if A is selected B has
to be selected too. In the end-user front-end, features
are represented by services/devices. Thus, when the
enduser selects a service that represents a feature A with
a mandatory relationship to a feature B, the service
representing feature B is automatically added to the same
location of service A. For instance (see Fig. 7) when the
end-user selects the Presence Simulation service for the
living room (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) the TV-Multimedia device is automatically
added to the same location (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) because there is mandatory
relationship between the Presence Simulation feature and
the TV-Multimedia feature. In addition, the feature model
is updated by activating both features (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ).
        </p>
        <p>Feature Model</p>
        <p>…
PresenceSimulation</p>
        <p>
          TV
Multimedia
1
3
2
If there is a Requires or Excludes feature, we use
Warning. When a feature A has a requires relationship
with B, if A is selected feature B has to be selected
too. Similarly, if feature A has an excludes relationship
with B, when feature A is selected feature B does not
have to be selected. In the end-user front-end, when the
end-user selects a service that represents a feature with
a requires or excludes relationship, the end-user
frontend warns end-users by showing a warning. Fig. 8 shows
when the end-user selects the Presence Simulation service
for the living room (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ). As the feature that represents this
service has a requires relationship with the Illumination
feature, the end-user front-end shows a Warning (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ).
Then the end-user adds this required service to the same
location (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) and the feature model is updated activating
the features Illumination and Presence Simulation (
          <xref ref-type="bibr" rid="ref4">4</xref>
          ).
If there is an Optional or single choice feature, we
use Show all options and Autocompletion. When a
feature A has an optional o single choice relationship
with other features, one of them has to be selected. In the
end-user front-end, when the end-user selects a service
        </p>
        <sec id="sec-4-4-1">
          <title>Applying patterns in a requires relationship</title>
          <p>
            that represents a feature with an optional or single choice
relationship, the end-user front-end shows a dialog with
all the services/devices that represent the related features.
Thus, the end-user can select one of them and the
enduser front-end adds the related service/device to the
same location as the selected service/device. Finally, the
feature model is updated. Fig 9 shows, as a representative
example, how the end-user selects the Alarm service (
            <xref ref-type="bibr" rid="ref1">1</xref>
            ).
This service represents a feature that has a Single Choice
relationship. Then, a dialog is shown with all the devices
that represent the related features (
            <xref ref-type="bibr" rid="ref2">2</xref>
            ). Then the end-user
selects the Siren device and the feature model is updated
activating the features Alarm and Siren (
            <xref ref-type="bibr" rid="ref3">3</xref>
            ).
2
Feature Model
          </p>
          <p>…</p>
          <p>Alarm
Silent Siren Visual
Alarm Alarm
1</p>
          <p>3
Fig. 9.</p>
          <p>
            Applying patterns in an optional or single choice relationship
If there is a Multiple choice, we use Show some options
and autocompletion. When a feature A has a multiple
relationship with other features, one or more of them
has to be selected. In the end-user front-end, when the
end-user selects that represents a feature with a multiple
relationship, the end-user front-end shows a dialog with
services/devices that represents the related features. Then,
the end-user can select one of more of them and the
end-user front-end adds them to same location where
the previously selected service is located. In addition, the
feature model is updated according to this selection. Fig
10 shows, as representative example, how the end-user
selects the Security service (
            <xref ref-type="bibr" rid="ref1">1</xref>
            ). The feature that represents
this service has a Multiple Choice relationship. Then, a
dialog is shown with the devices that represent the related
features (
            <xref ref-type="bibr" rid="ref2">2</xref>
            ). Afterwards, the end-user selects the Alarm
          </p>
          <p>
            Feat…ure Model
(
            <xref ref-type="bibr" rid="ref2">2</xref>
            ) Security
Alarm
…
          </p>
          <p>In Home Detection
…
1
3
2
Fig. 10.</p>
        </sec>
        <sec id="sec-4-4-2">
          <title>Applying patterns in a multiple choice relationship</title>
          <p>V. SUPPORTING TECHNOLOGIES FOR THE END-USER</p>
          <p>ORIENTED MDD-SPL</p>
          <p>As we described in the previous section, our end-user tool
uses the Feature Model to offer the catalog of available
services/devices. This model is also used to save the
enduser’s configurations by activating/inactivating features. The
feature model is specified using the MOSkitt Feature Modeller
editor [31], which uses the technology provided by the Eclipse
Modelling Platform [32].</p>
          <p>Thus, in order to connect the end-user front-end with the
feature model we have used the EMF Model Query
framework [33]. EMF Query provides an API to construct and
execute query statements. These query statements can be used
for discovering and modifying model elements. Queries are
first constructed with their query clauses and then they are
ready to be executed.</p>
          <p>There are two query statements available: SELECT and
UPDATE. The SELECT statement provides querying without
modification while the UPDATE statement provides
querying with modification. The SELECT statement requires two
clauses, a "FROM" and a "WHERE." The FROM clause
describes the source of model elements where SELECT can
iterate in order to derive results. The WHERE clause describes
the criteria for a model element that matches. The condition
provided to the WHERE clause falls under a specialized
condition called an EObjectCondition which is specially designed
to evaluate model elements.</p>
          <p>
            We have implemented the interaction patterns described in
the Subsection IV-B by using EMF Model Query. For instance,
when the end-user selects the Alarm service, the tool checks
the feature model for the selected feature. It also checks the
relations with other features. In this case, the Alarm service
is related with a single choice relation with three features
(Silent Alarm, Siren and Visual Alarm). Thus, as the feature
model relation is Single choice, the interaction patterns that
are applied are (see previous section): (
            <xref ref-type="bibr" rid="ref1">1</xref>
            ) Show all options
and (
            <xref ref-type="bibr" rid="ref2">2</xref>
            ) Autocompletion. Then, we need both to obtain the
features related with the selected one in order to show all of
them, and to update the selected feature and also the selected
related feature.
          </p>
          <p>Next, we show the query that we have implemented to
obtain the child features of the single choice relationship by
using EMF Model Query:
SELECT s t a t e m e n t =
new SELECT (
new FROM( c u r r e n t F e a t u r e . g e t C o n t e n t s ( ) ) ,
new WHERE( new E O b j e c t R e f e r e n c e V a l u e C o n d i t i o n (
new E O b j e c t T y p e R e l a t i o n C o n d i t i o n (</p>
          <p>F e a t u r e M o d e l P a c k a g e P a c k a g e . eINSTANCE</p>
          <p>. g e t F e a t u r e R e l a t i o n s h i p ( ) ) ,
F e a t u r e M o d e l P a c k a g e P a c k a g e . eINSTANCE .</p>
          <p>g e t F e a t u r e R e l a t i o n s h i p _ F r o m ( ) ,
new E O b j e c t I n s t a n c e C o n d i t i o n ( S i n g l e C h o i c e ) )
)
) ;</p>
          <p>Given a feature (currentFeature) the select statement
gets all the features related with the currentFeature
with a single choice relationship
(EObjectInstanceCondition(SingleChoice)). Then, these features are shown as service
options on the dialog of Fig. 9.</p>
          <p>Once the end-user chooses one of the presented options, the
state of the selected feature and its related one is updated in
the feature model from inactivated to activated. By contrast, if
the end-user drops this kind of device into the trash, its state
is updated to inactive.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VI. CONCLUSIONS AND FUTURE WORK</title>
      <p>Taking the advantage of current MDD techniques and an
integrated SPL architecture, we have provided an interactive
design tool that allows end-users (rather than engineers) to
create tailored solutions that directly reflect their needs and
expectations. In order to tackle this, we have presented an
MDD-SPL approach based on Model Driven Development
to develop smart home systems which is complemented with
our end-user tool. We have also presented how the end-user
tool gets and sets information of the feature model according
to the end-user configurations. Furthermore, we have applied
interaction patterns to the end-user tool which improve the user
interface usability. Finally, we have presented the technology
implementation for handling the feature model.</p>
      <p>As future work, we plan to validate the end-user
configurations in the end-user tool and assist end-users during the
configuration process. To do this, we plan to use the feature
model Analyser Framework [27]. Furthermore, we plan to
involve end-users in the domain engineering phase. Our goal is
the participation of end-users in the definition of new service
configurations.</p>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGMENT</title>
      <p>This work has been developed with the support of MEC
under the project SESAMO TIN2007-62894 and cofinanced
by FEDER, in the grants program FPI.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Davidoff</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zimmerman</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Dey</surname>
          </string-name>
          .
          <article-title>Smart homes, families and control</article-title>
          .
          <source>In Proceedings of Design &amp; Emotion</source>
          <year>2006</year>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Markus</given-names>
            <surname>Voelter</surname>
          </string-name>
          and
          <string-name>
            <given-names>Iris</given-names>
            <surname>Groher</surname>
          </string-name>
          .
          <article-title>Product line implementation using aspect-oriented and model-driven software development</article-title>
          .
          <source>SPLC</source>
          <year>2007</year>
          , pages
          <fpage>233</fpage>
          -
          <lpage>242</lpage>
          , Sept.
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Javier</given-names>
            <surname>Muñoz</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vicente</given-names>
            <surname>Pelechano</surname>
          </string-name>
          .
          <article-title>Building a software factory for pervasive systems development</article-title>
          . In CAiSE, pages
          <fpage>342</fpage>
          -
          <lpage>356</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>C.</given-names>
            <surname>Cetina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Fons</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Pelechano</surname>
          </string-name>
          .
          <article-title>Applying software product lines to build autonomic pervasive systems</article-title>
          . pages
          <fpage>117</fpage>
          -
          <lpage>126</lpage>
          , Sept.
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Martijn</surname>
            <given-names>van Welie</given-names>
          </string-name>
          and
          <string-name>
            <given-names>Hallvard</given-names>
            <surname>Traetteberg</surname>
          </string-name>
          .
          <article-title>Interaction patterns in user interfaces</article-title>
          .
          <source>In PLoP 2000</source>
          , pages
          <fpage>13</fpage>
          -
          <lpage>16</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Mick</surname>
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Couper</surname>
            , Roger Tourangeau, Frederick G. Conrad, and
            <given-names>Scott D.</given-names>
          </string-name>
          <string-name>
            <surname>Crawford</surname>
          </string-name>
          .
          <article-title>What they see is what we get: response options for web surveys</article-title>
          .
          <source>Soc. Sci. Comput</source>
          . Rev.,
          <volume>22</volume>
          (
          <issue>1</issue>
          ):
          <fpage>111</fpage>
          -
          <lpage>127</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Wilbert</surname>
            <given-names>O. Galitz.</given-names>
          </string-name>
          <article-title>The Essential Guide to User Interface Design: An Introduction to GUI Design Principles and Techniques</article-title>
          . John Wiley &amp; Sons, Inc., New York, NY, USA,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Anastasopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Patzke</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Becker</surname>
          </string-name>
          .
          <article-title>Software product line technology for ambient intelligence applications</article-title>
          . In
          <source>In Proc. Net.ObjectDays, page 179U˝ 195</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Jon O'Brien</surname>
            , Tom Rodden,
            <given-names>Mark</given-names>
          </string-name>
          <string-name>
            <surname>Rouncefield</surname>
            ,
            <given-names>and John</given-names>
          </string-name>
          <string-name>
            <surname>Hughes</surname>
          </string-name>
          .
          <article-title>At home with the technology: an ethnographic study of a set-top-box trial</article-title>
          .
          <source>ACM Trans. Comput</source>
          .-Hum. Interact.,
          <volume>6</volume>
          (
          <issue>3</issue>
          ):
          <fpage>282</fpage>
          -
          <lpage>308</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Rick</given-names>
            <surname>Rabiser</surname>
          </string-name>
          .
          <article-title>Flexible and user-centered visualization support for product derivation</article-title>
          .
          <source>In SPLC (2)</source>
          , pages
          <fpage>323</fpage>
          -
          <lpage>328</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>John</given-names>
            <surname>Steinmetz</surname>
          </string-name>
          . Computers and
          <article-title>Squeak as Environments for Learning</article-title>
          .
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>David</given-names>
            <surname>Canfield</surname>
          </string-name>
          <string-name>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Allen</given-names>
            <surname>Cypher</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Jim</given-names>
            <surname>Spohrer</surname>
          </string-name>
          .
          <article-title>Kidsim: programming agents without a programming language</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>37</volume>
          (
          <issue>7</issue>
          ):
          <fpage>54</fpage>
          -
          <lpage>67</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Chin</surname>
          </string-name>
          ,
          <article-title>Callaghan, and</article-title>
          <string-name>
            <surname>Clarke.</surname>
          </string-name>
          <article-title>An end-user programming paradigm for pervasive computing applications</article-title>
          .
          <source>International Conference on Pervasive Services</source>
          ,
          <volume>0</volume>
          :
          <fpage>325</fpage>
          -
          <lpage>328</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Anind</surname>
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Dey</surname>
            , Raffay Hamid, Chris Beckmann,
            <given-names>Ian</given-names>
          </string-name>
          <string-name>
            <surname>Li</surname>
            , and
            <given-names>Daniel</given-names>
          </string-name>
          <string-name>
            <surname>Hsu</surname>
          </string-name>
          .
          <article-title>A cappella: programming by demonstration of context-aware applications</article-title>
          .
          <source>In CHI '04</source>
          , pages
          <fpage>33</fpage>
          -
          <lpage>40</lpage>
          , New York, USA,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Jan</given-names>
            <surname>Humble</surname>
          </string-name>
          et al.
          <article-title>Playing with the bits: User-configuration of ubiquitous domestic environments</article-title>
          .
          <source>In UbiComp</source>
          <year>2003</year>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Khai</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Truong</surname>
          </string-name>
          ,
          <string-name>
            <surname>Elaine M. Huang</surname>
            , and
            <given-names>Gregory D.</given-names>
          </string-name>
          <string-name>
            <surname>Abowd</surname>
          </string-name>
          .
          <article-title>Camp: A magnetic poetry interface for end-user programming of capture applications for the home</article-title>
          .
          <source>In Ubicomp</source>
          <year>2004</year>
          , pages
          <fpage>143</fpage>
          -
          <lpage>160</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Brad</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Myers</surname>
            , John F. Pane, and
            <given-names>Andy</given-names>
          </string-name>
          <string-name>
            <surname>Ko</surname>
          </string-name>
          .
          <article-title>Natural programming languages and environments</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>47</volume>
          (
          <issue>9</issue>
          ):
          <fpage>47</fpage>
          -
          <lpage>52</lpage>
          ,
          <year>September 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>John</surname>
            <given-names>Francis Pane.</given-names>
          </string-name>
          <article-title>A programming system for children that is designed for usability</article-title>
          .
          <source>PhD thesis</source>
          , Pittsburgh, PA, USA,
          <year>2002</year>
          . Co-Chair-Myers„
          <article-title>Brad A</article-title>
          . and
          <string-name>
            <surname>Co-</surname>
          </string-name>
          Chair-Garlan„ David.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Henry</given-names>
            <surname>Lieberman</surname>
          </string-name>
          .
          <article-title>Programming by example (introduction)</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>43</volume>
          (
          <issue>3</issue>
          ):
          <fpage>72</fpage>
          -
          <lpage>74</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Andrew</surname>
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Ko</surname>
          </string-name>
          and
          <article-title>Brad A. Myers. Designing the whyline: a debugging interface for asking questions about program behavior</article-title>
          .
          <source>In CHI '04</source>
          , pages
          <fpage>151</fpage>
          -
          <lpage>158</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21] Carnegie Mellon University. Alice. http://www.alice.org/index.php,
          <volume>1</volume>
          <fpage>2009</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <article-title>The accord toolkit</article-title>
          . http://www.sics.se/accord/toolkit.html,
          <volume>1</volume>
          <fpage>2009</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Javier</given-names>
            <surname>Muñoz</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vicente</given-names>
            <surname>Pelechano</surname>
          </string-name>
          .
          <article-title>Applying software factories to pervasive systems: A platform specific framework</article-title>
          .
          <source>In ICEIS (3)</source>
          , pages
          <fpage>337</fpage>
          -
          <lpage>342</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Javier</surname>
            <given-names>Muñoz</given-names>
          </string-name>
          , Vicente Pelechano, and
          <string-name>
            <given-names>Carlos</given-names>
            <surname>Cetina</surname>
          </string-name>
          .
          <article-title>Implementing a pervasive meeting room: A model driven approach</article-title>
          .
          <source>In IWUC</source>
          , pages
          <fpage>13</fpage>
          -
          <lpage>20</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Pierre-Yves</surname>
            <given-names>Schobbens</given-names>
          </string-name>
          , Patrick Heymans,
          <string-name>
            <surname>Jean-Christophe Trigaux</surname>
            , and
            <given-names>Yves</given-names>
          </string-name>
          <string-name>
            <surname>Bontemps</surname>
          </string-name>
          .
          <article-title>Generic semantics of feature diagrams</article-title>
          .
          <source>Comput. Networks</source>
          ,
          <volume>51</volume>
          (
          <issue>2</issue>
          ):
          <fpage>456</fpage>
          -
          <lpage>479</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>D.</given-names>
            <surname>Benavides</surname>
          </string-name>
          , Ruiz A.
          <string-name>
            <surname>Cortés</surname>
            , and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Trinidad</surname>
          </string-name>
          .
          <source>Automated reasoning on feature models. CAiSE</source>
          <year>2005</year>
          ,
          <volume>3520</volume>
          :
          <fpage>491</fpage>
          -
          <lpage>503</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>P.</given-names>
            <surname>Trinidad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Benavides</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ruiz-Cortés</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Segura</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Jimenez</surname>
          </string-name>
          .
          <article-title>Fama framework</article-title>
          .
          <source>In SPLC</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>Marcos</given-names>
            <surname>Didonet Del Fabro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Jean</given-names>
            <surname>Bézivin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Patrick</given-names>
            <surname>Valduriez</surname>
          </string-name>
          .
          <article-title>Weaving models with the eclipse amw plugin</article-title>
          .
          <source>In Eclipse Modeling Symposium, Eclipse Summit Europe</source>
          <year>2006</year>
          , Esslingen, Germany,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>Maria</given-names>
            <surname>Francesca</surname>
          </string-name>
          <string-name>
            <surname>Costabile</surname>
          </string-name>
          , Piero Mussio, Loredana Parasiliti Provenza, and Antonio Piccinno.
          <article-title>End users as unwitting software developers</article-title>
          .
          <source>In WEUSE '08</source>
          , pages
          <fpage>6</fpage>
          -
          <lpage>10</lpage>
          , New York, USA,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Henry</surname>
            <given-names>Lieberman</given-names>
          </string-name>
          , Fabio Paternò, and
          <string-name>
            <given-names>Volker</given-names>
            <surname>Wulf</surname>
          </string-name>
          .
          <source>End User Development</source>
          . Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <article-title>Moskitt feature modeller</article-title>
          . www.pros.upv.es/labs/projects/mfm.
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <article-title>Eclipse modelling framework</article-title>
          . http://www.eclipse.org/modeling/.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <article-title>Emf model query</article-title>
          . http://www.eclipse.org/modeling/emf/?project=query.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>