<!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>Leveraging Models at Run-time to Retrieve Information for Feature Location</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lorena Arcega</string-name>
          <email>larcega@usj.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jaime Font</string-name>
          <email>jfont@usj.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Øystein Haugen</string-name>
          <email>oystein.haugen@hiof.no</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carlos Cetina</string-name>
          <email>ccetina@usj.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>San Jorge University, SVIT Research Group</institution>
          ,
          <addr-line>Zaragoza</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Oslo, Department of Informatics</institution>
          ,
          <addr-line>Oslo</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>stfold University College, Department of Information Technology</institution>
          ,
          <addr-line>Halden</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Model Driven Engineering (MDE) has the potential to be used at run-time, to monitor and verify particular aspects of run-time behaviour. Models at run-time provide a kind of formal basis for reasoning about the current system state at run-time, for reasoning about necessary adaptations, and for analyzing or predicting the consequences of possible system adaptations. However, we believe that models at runtime paradigm can be useful in other research areas such as variability extraction and feature location. This work proposes the use of models at run-time for increasing the information for feature location. We have tried this work with a Smart Hotel defined with an architecture model at run-time and driven by a reconfiguration loop. The results indicate that the models at run-time paradigm generates information that can be used in the area of feature location. In addition, the results show that there is potential in combining these two research areas: models at run-time and feature location.</p>
      </abstract>
      <kwd-group>
        <kwd>Models@Run-time</kwd>
        <kwd>Common Variability Language</kwd>
        <kwd>Reverse engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model Driven Engineering (MDE) is used at run-time, to monitor and verify
particular aspects of run-time behaviour [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Models at run-time provide a kind
of formal basis for reasoning about the current system state, for reasoning about
necessary adaptations, and for analyzing the consequences of possible system
adaptations. Models at run-time development approaches have the proven
capability to deliver complex, dependable software efficiently and effectively.
      </p>
      <p>
        Other research areas are focused on variability extraction and feature
location. Currently research efforts in feature location are concerned with
identifying software artifacts (source code) associated with a program functionality (a
feature). Feature location is one of the most important and common activities
performed by developers during software maintenance and evolution [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>In Models at run-time, the approaches define a causal connection between
the system and the run-time model (there is a bidirectional relation between the
source code and the run-time model). We believe that the information extracted
from models at run-time approaches can be useful in the feature location field.</p>
      <p>This work proposes the use of models at run-time for increasing the
information for feature location. We develop an algorithm for retrieving the model
information from a given feature selected by the software engineer (target feature).
The input of the algorithm is an execution trace from a models at run-time
approach. This trace contains all the possible configurations, as well as the number
of times they occurred during the execution time. Then, the software engineer
has to select a model fragment which he believes takes part of the target feature.
Our algorithm considers this model fragment as a seed for the next step. This
seed is mutated taking into account the models of the configurations extracted
from the trace. The result is a ranking of model fragments that can be part of the
target feature. In the last step, the software engineer has to manually select the
model fragment that he believes is the one corresponding to the target feature
taking into account the ranking information.</p>
      <p>We have tried this work with a Smart Hotel defined with an architecture
model at run-time and driven by a reconfiguration loop. In addition, we have
the feature model corresponding to the architecture model. We use this feature
model as an oracle to know the accuracy of the final results. The average of the
comparisons indicates that the software engineer didn’t select the correct
fragment model for the target features. However, the fragment model corresponding
to the target feature was in the top of the ranking. Although we have to tune
the ranking information, the results of the evaluation indicate that the models
at run-time paradigm generates useful information for the feature location.</p>
      <p>Finally, we realize that the combination of models at run-time area with
feature location area requires more research. Some of these open questions are
related to the length of the trace that we need for more accurate information,
and the information that we can extract from the transitions between
configurations. Hence, the number of fragment mutations that is done by our algorithm
needs refinements, as well as the restrictions that we can select in the mutations.
Finally, this work should be compared with other dynamic techniques for
feature location. Thus, this work could be used in combination with other feature
location techniques for extending the information retrieved about the features.</p>
      <p>The remainder of the paper is structured as follows. In Section 2, we present
the motivation of this work. In Section 3, we present the Smart Hotel. In Section
4, we introduce our algorithm. In Section 5, we illustrate our algorithm with the
Smart Hotel.In Section 6, we present the discussion of the results. In Section 7,
we examine the related work, and we present the conclusions in Section 8.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivation</title>
      <p>
        Reverse Variability engineering approaches are focused on variability
extraction and feature location [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. In feature location, some of the techniques include
dynamic analysis. Dynamic analysis refers to examining software system’s
execution. That is, feature location using dynamic analysis relies on a post-mortem
analysis of an execution trace to find the source code of a specific feature.
      </p>
      <p>
        Trace analysis is the main technique used at run-time to extract relevant
information to create the variability model. When the system under study is
executed, it generates a trace indicating which parts of the code have been
executed. Usually, they compare the traces produced when a certain feature is
executed with the traces produced when a certain feature is not executed to
isolate the parts of the code involved in such feature. Some approaches ([
        <xref ref-type="bibr" rid="ref12 ref5">12,
5</xref>
        ]) are based solely on the trace analysis while other works combine dynamic
analysis with other static analysis ([
        <xref ref-type="bibr" rid="ref11 ref4">4, 11</xref>
        ]).
      </p>
      <p>Models at run-time approaches define a causal connection between the system
and the run-time model. That is, there is a bidirectional relation between the
source code and the run-time model. The benefit of using models at run-time is
that they can provide richer traces taking advantage of the source code and the
models.</p>
      <p>Hence, we believe that the information extracted from models at run-time
approaches can be useful in the feature location field. These traces that combine
source code with run-time models can provide more data than the traces that
only take into account the source code.
3</p>
    </sec>
    <sec id="sec-3">
      <title>The Smart Hotel</title>
      <p>
        The example of this paper is performed through a reconfigurable Smart
Hotel [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The run-time reconfigurations are performed by an implementation of
a MAPE-K loop [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] named Model-based Reconfiguration Engine (MoRE) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
In this section, we present MoRE reconfiguration MAPE steps and the Domain
Specific Language (DSL) that MoRE uses as knowledge to switch between
configurations of the Smart Hotel.
      </p>
      <p>
        We use Pervasive Modelling Language (PervML) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] to describe the Smart
Hotel architecture. PervML is a DSL that describes pervasive systems using
high-level abstraction concepts based on Meta-Object Facility (MOF) 1. This
language is focused on specifying heterogeneous services in specific physical
environments such as the services of a Smart Hotel. This DSL has been applied
to develop solutions in the Smart Hotel domain. The PervML language provides
different models to specify the services and devices of a pervasive system.
      </p>
      <p>Due to space constraints, in this work, we only focus on the subset of
PervML that specifies the relationships among devices and services. This subset
specifies the components that define a particular configuration system (services
and devices) and how these components are connected with each other
(channels). Services are depicted by circles, devices are depicted by squares, and the
channels connecting services and devices are depicted by lines (see Fig. 1).</p>
      <p>In MoRE, the Monitor (M) uses the run-time state as input to check context
conditions. If any of these conditions are fulfilled, the Analyzer (A) uses the
1 Meta object facility (MOF) 2.0 core specification, 2003
associated resolution and the previous model operations to query the run-time
models about the necessary modifications. The response of the models is used
by the Planner (P) to elaborate a reconfiguration plan. This plan contains
reconfiguration actions, which modify the system architecture and maintain the
consistency between the models and the system architecture. The Execution (E)
of this plan modifies the architecture by executing reconfiguration actions that
deal with the activation and deactivation of components and the creation and
destruction of channels among components.</p>
      <p>MoRE calculates the architecture increments and decrements in order to
determine the actions necessary to modify the system architecture. The adaptations
policies of the Smart Hotel are expressed by means of optimizations algorithms
that depend on the inputs at run-time. For this reason, the configurations of the
Smart Hotel are not known at the beginning.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Feature location with Models at Run-time</title>
      <p>Our algorithm for feature location is based on identification and extraction of
model fragments related to a given feature. Fig. 2 presents an overview of the
feature location algorithm to identify and extract model fragments, which consists
of four steps.</p>
      <p>The first step (Models@RT Traces) gets the input of the algorithm. It gets
the trace resulting from a system that has been running for a specified time.</p>
      <p>In second step (Fragments Mutation), the software engineer decides which
feature to locate (target feature). The step performs automatic mutations of
Feature Location Loop</p>
      <p>Step 3:
Fragments
Candidates</p>
      <p>Step 4:
Fragments</p>
      <p>Ranking</p>
      <p>Step 2:
Fragments
Mutation</p>
      <p>
        For each
configuration
in the trace
the model fragment designated as seed. The seed is selected by the software
engineer, it is a model fragment of the complete architecture model that the
engineer believes takes part of the target feature. The selection of the model
fragment is based on the intuition of the software engineer of what parts of the
model could be part of the target feature. The fragments are formalized by means
of the Common Variability Language (CVL) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. This step takes as input the
architecture model from the different configurations of the trace and the selected
seed. The result is a set of fragments that are variations of the seed fragment.
      </p>
      <p>The mutations are performed taking into account the model and the seed.
Taking the seed fragment model as starting point, some model elements are
added to or removed from the seed model fragment. The elements added during
mutations are obtained from the corresponding architecture model from each
configuration. The generated fragment is a subset of model elements from the
corresponding architecture model of the configuration. Hence, we can guarantee
that the generated fragments are part of the architecture model of each
configuration. This step is performed as many times as different configurations in the
trace to extract all possible fragments.</p>
      <p>The third step (Fragments Candidates) assesses each fragment obtained in
the second step. This step is performed automatically. The algorithm checks on
how many occasions the model fragment appears in the trace. The values are
assigned depending on the configurations in which the fragment appears and
the number of times that these configurations appear in the trace. That is, each
fragment has a point for each of the different configurations in which it appears,
and each fragment has a point for each time the configuration in which it appears
is present in the trace.</p>
      <p>In the fourth step (Fragments Ranking), the last one, the fragments are
ordered in a ranking taking into account the values obtained in the previous
step. The ranking is composed by all the model fragments obtained from the
different configurations. The model fragments with higher values are in the top
part of the ranking because they are the most relevant to the target feature.</p>
      <p>Taking into account this information, the software engineer can select the
model fragment that best fits their understanding of the target feature. For
instance, he can select the initial seed selection, however some of the model
fragments can provide more relevant information for the feature.</p>
      <p>The algorithm can be repeated until all the recognizable features of the
architecture model have been located. The number of loops needed depends on
the domain where it is being applied and the amount of variability that must be
formalized.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Example: Feature Location in the Smart Hotel</title>
      <p>We tried our algorithm with a Smart Hotel defined with an architecture model
and driven by a reconfiguration loop (MoRE). The role of the software engineer
was carried out by a master student outside this work.</p>
      <p>Configuration 3
Configuration 3 Mutations - Seed: Multimedia service (1)
1
1
h
1
1
g
al
1
1
g
6
1
g
h
al 1 g
h
7
al 1 h
11
al
1
1/12
4/14
Multimedia Service (see circle 1 of Fig. 1) as seed because he believes it is the
model fragment that best fits with the target feature.</p>
      <p>The algorithm performed mutations taking into account each of the models
(one at a time) and the selected seed. Fig. 3 shows the application of the step.
The graph represents all the fragments obtained from the mutations. Each node
(rectangle) represents a fragment. In this case, the image shows the mutations
corresponding to the Configuration 3 architecture model of the Smart Hotel.
There are three mutation levels, however the algorithm can be restricted to
calculating fragments up to a fixed depth level. Top part of Fig. 3 shows the model
fragment selected as seed (Multimedia Service). The rest of the graph contains
possible fragments that can correspond to the target feature (Multimedia).</p>
      <p>Fig. 4 shows the application of the four step of the algorithm. Each column
shows each model fragment while each row shows the information about each one
of the fragments. Second row (Occurrences in configurations) shows in how many
configurations appears the fragment. In this case the numbers are x/12 because
the trace contains twelve configurations. Third row (Occurrences in
reconfigurations) shows how many times appears the configuration in the trace. In this
case the numbers are x/30 because the trace contains thirty reconfigurations.</p>
      <p>After the application of the algorithm the software engineer had to decide
which is the model fragment that corresponds to the searching feature. Fig. 5
first column (Chosen by the user) shows the model fragment that he selected for
the target feature Multimedia.</p>
      <p>In this case, for checking the results we had the feature model that
corresponds to the architecture model of Fig. 1. Then, we could use this feature model
as an oracle to check the response of the software engineer. The oracle indicated
that the fragment chosen was not the correct one for the feature Multimedia.
Fig. 5 second and third columns (Oracle) shows the correct fragment for the
feature Multimedia and the corresponding features corresponding to the software
engineer choice.</p>
      <p>Fig. 5 shows that the correct fragment for the feature was the one which
was chosen as seed. The model fragment selected by the software engineer
corresponds to the target feature and to an optional feature that can be selected
once the target feature is selected (see Fig. 5 third column).
leodM teagnm</p>
      <p>Chosen by the user</p>
      <p>Oracle
1
g
6</p>
      <p>1
Multimedia</p>
      <p>Multimedia
Although the user have not chosen the right model fragment for the feature
Multimedia, Fig. 4 shows that the right model fragment has the same values
than the model fragment selected in the ranking. Both appear in the top part
of the ranking because the two fragments are relevant for the feature.</p>
      <p>This work presents our ongoing work and our preliminary results of the
application of our algorithm in a reconfigurable Smart Hotel. Despite the fact that
the results shown are for locating only one feature, we have done tests for other
features (i.e., Security, Automated Illumination,. . . ) with similar results. The
results and the evaluations performed indicate that we need to tune our algorithm
to get accurate information.</p>
      <p>Two of the main improvements for our algorithm could be the creation of an
heuristic to determine how many mutation levels are needed, and the possibility
of establishing restriction in the mutations of the fragments. The heuristic can
help us to determine the number of levels needed in the mutations depending
on the domain, the size of the architecture model and the accuracy needed. The
restrictions allow us to limit the fragments that can appear in the mutations.
For example, in the Smart Hotel we can restrict the mutations to fragments
that connect one service with one device. The result will be the fragments that
satisfy the restriction while the fragments that don’t satisfy the restriction will
be discarded.</p>
      <p>In addition, future work can contribute to the feature location area providing
data about the trace so that it contains enough information for feature location.
Our example shows that the software engineer has not chosen the right model
fragment. He selected the model fragment that corresponds to the target feature
and to an optional feature that can be selected once the target feature is selected.
This is because in all the configurations of the trace used in the algorithm the
target feature and the optional feature are selected, hence both appear in the
architecture model. This error could have been solved with a longer trace or
other trace containing more relevant information.</p>
      <p>Furthermore, leveraging models at run-time, some extra data from the
transitions between configurations could improve the information that can be shown
to the user to select the correct model fragment for the target feature.</p>
      <p>Finally, we can obtain more information for improving our algorithm if we
perform the same example of our work with other feature location techniques.
Comparing the results may make us realize the weaknesses of our algorithm.
Moreover, we can find some other technique that can cover these weak areas.
Thus, this work could be used in combination with other feature location
techniques for extending the information retrieved about the features.
7</p>
    </sec>
    <sec id="sec-6">
      <title>Related work</title>
      <p>To the best of our knowledge, there are no research efforts in the models at
runtime area to locate features. Some approaches use design-time models to extract
variability as follows.</p>
      <p>
        Zhang et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] present an approach to compare models to obtain the
differences between them. This variability is used to build a variability model that is
presented to the user to be validated and extended. Font et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] propose to
identify model patterns by human-in-the-loop and conceptualize them as reusable
model fragments. Their approach provides the means to identify and extract
those model patterns and further apply them to existing product models.
Martinez et al. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] propose an extensible framework that allows to identify, locate and
extract features from the models. As a result, the task of adopting a software
product line from a family of models reducing the initial investment required
is provided. Wille et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] present an approach to compare products from a
family, focusing on the extraction of the variability between the interfaces of the
different components in the models.
      </p>
      <p>All of these works are based on extract model fragments from a given set
of models. However, these approaches don’t take into account the run-time
behaviour of the systems.
8</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>This work extends the feature location techniques leveraging the models at
runtime paradigm. Specifically, our algorithm retrieves information of the run-time
models for improving feature location in reconfigurable systems.</p>
      <p>Although we realize that the combination of models at run-time area and
feature location area requires more research, our evaluation shows the
preliminary results of how the models at run-time can generate useful information at
model level.</p>
      <p>In the near future, we would like to explore and improve the weak points
of our algorithm: the number of fragment mutations that is necessary, and the
restrictions that we can select in the mutations. In addition more research is
necessary to exploit all the benefits that models at run-time can contribute to
the feature location: the information that we can extract from the transitions
between configurations, and the length of the trace that we need for more
accurate information. Finally, we can obtain more information for our algorithm if
we compare our work with other feature location techniques.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , France, R., Cheng,
          <string-name>
            <given-names>B.H.C.</given-names>
            ,
            <surname>Amann</surname>
          </string-name>
          ,
          <string-name>
            <surname>U</surname>
          </string-name>
          . (eds.):
          <article-title>Models@run</article-title>
          .time. Foundations, Applications, and Roadmaps. Springer International Publishing (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cetina</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Achieving Autonomic Computing through the Use of Variability Models at Run-time</article-title>
          .
          <source>Ph.D. thesis</source>
          , Universidad Politcnica de Valencia (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Dit</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Revelle</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gethers</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poshyvanyk</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Feature location in source code: A taxonomy and survey</article-title>
          .
          <source>In: Journal of Software Maintenance and Evolution: Research</source>
          and Practice (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Eisenbarth</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koschke</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Locating features in source code</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>29</volume>
          (
          <issue>3</issue>
          ),
          <fpage>210</fpage>
          -
          <lpage>224</lpage>
          (
          <year>Mar 2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Eisenberg</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Volder</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Dynamic feature traces: finding features in unfamiliar code</article-title>
          .
          <source>In: Software Maintenance</source>
          ,
          <year>2005</year>
          .
          <source>ICSM'05. Proceedings of the 21st IEEE International Conference on</source>
          . pp.
          <fpage>337</fpage>
          -
          <lpage>346</lpage>
          (
          <year>Sept 2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Font</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arcega</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haugen</surname>
          </string-name>
          , Ø.,
          <string-name>
            <surname>Cetina</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Building software product lines from conceptualized model patterns</article-title>
          .
          <source>In: Proceedings of the 2015 19th International Software Product Line Conference. SPLC '15</source>
          ,
          <string-name>
            <surname>Nashville</surname>
            ,
            <given-names>TN</given-names>
          </string-name>
          , USA. (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Haugen</surname>
          </string-name>
          , Ø.,
          <string-name>
            <surname>Mller-Pedersen</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oldevik</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Olsen</surname>
            ,
            <given-names>G.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Svendsen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Adding standardized variability to domain specific languages</article-title>
          .
          <source>In: Proceedings of the 2008 12th International Software Product Line Conference</source>
          . pp.
          <fpage>139</fpage>
          -
          <lpage>148</lpage>
          . SPLC '08, IEEE Computer Society, Washington, DC, USA (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. IBM:
          <article-title>An architectural blueprint for autonomic computing</article-title>
          .
          <source>Tech. rep.</source>
          ,
          <source>IBM</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Martinez</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ziadi</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bissyand</surname>
            ,
            <given-names>T.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Le Traon</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Bottom-up adoption of software product lines a generic and extensible approach</article-title>
          .
          <source>In: Proceedings of the 2015 19th International Software Product Line Conference. SPLC '15</source>
          ,
          <string-name>
            <surname>Nashville</surname>
            ,
            <given-names>TN</given-names>
          </string-name>
          , USA. (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Muoz</surname>
          </string-name>
          , J.:
          <source>Model Driven Development of Pervasive Systems. Building a Software Factory. Ph.D. thesis</source>
          , Universidad Politcnica de Valencia (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Revelle</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dit</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poshyvanyk</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Using data fusion and web mining to support feature location in software</article-title>
          .
          <source>In: Program Comprehension (ICPC)</source>
          ,
          <year>2010</year>
          IEEE 18th International Conference on. pp.
          <fpage>14</fpage>
          -
          <lpage>23</lpage>
          (
          <year>June 2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Wilde</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scully</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          :
          <article-title>Software reconnaissance: Mapping program features to code</article-title>
          .
          <source>Journal of Software Maintenance</source>
          <volume>7</volume>
          (
          <issue>1</issue>
          ),
          <fpage>49</fpage>
          -
          <lpage>62</lpage>
          (
          <year>Jan 1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Wille</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holthusen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulze</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schaefer</surname>
          </string-name>
          , I.:
          <article-title>Interface variability in family model mining</article-title>
          .
          <source>In: Proceedings of the 17th International Software Product Line Conference Co-located Workshops</source>
          . pp.
          <fpage>44</fpage>
          -
          <lpage>51</lpage>
          . SPLC '13 Workshops,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haugen</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moller-Pedersen</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Model comparison to synthesize a model-driven software product line</article-title>
          .
          <source>In: Software Product Line Conference (SPLC)</source>
          ,
          <year>2011</year>
          15th International. pp.
          <fpage>90</fpage>
          -
          <lpage>99</lpage>
          (
          <year>Aug 2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>