<!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>On Unifying Development Models and Runtime Models (Position Paper)</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Thomas Vogel and Holger Giese Hasso Plattner Institute, University of Potsdam</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Models@run.time research primarily focuses on developing and using selfrepresentations, that is, runtime models reflecting running software systems. Such models are the basis for feedback loops to monitor, analyze, and adapt these systems while the goal is typically to completely automate these feedback loops (cf. self-adaptation). This focus ignores (1) the beneficial use of runtime models for (manual) maintenance, which can already be observed in practice, and (2) the inevitable coexistence of self-adaptation and maintenance. Both issues require the integration of development (or maintenance) models and runtime models. In this position paper, we envision the unification of development and runtime models to systematically realize the integration and we discuss the benefits of this unification for addressing these issues with an illustrative example. We claim that Models@run.time research should broaden its focus to the unification to support an incremental adoption of runtime models from manual maintenance to automated self-adaptation, and the coexistence. Finally, we discuss Models@run.time challenges for achieving this claim.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Models@run.time [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] research focuses on developing self-representations, that is, runtime
models that are causally connected to running software systems, and feedback loops operating on
these models to realize self-adaptation [
        <xref ref-type="bibr" rid="ref15 ref3">3, 15</xref>
        ]. Self-adaptation promises that software adjusts
itself by automating and shifting some development, maintenance, and evolution activities to
the runtime [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] but we cannot expect that this holds for all activities. This requires manual
maintenance (and evolution) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] of self-adaptive software, which has to go hand in hand with
automated self-adaptation [
        <xref ref-type="bibr" rid="ref1 ref6">1, 6</xref>
        ]. However, the current focus of Models@run.time research
ignores (1) the beneficial use of runtime models for (manual) maintenance, which can already be
observed in practice, and (2) the inevitable coexistence of self-adaptation and maintenance. Both
issues require the integration of development (or maintenance) models and runtime models.
      </p>
      <p>
        In this position paper, we envision the unification of development and runtime models to
systematically realize the integration. We use an illustrative example based on [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], in which a
faulty application is adjusted to handle failures, to discuss both issues and how the unification
may support them. In particular, the required adjustments can be achieved by maintenance,
selfadaptation, or a coexistence of both. Similar to self-adaptation, maintenance can be considered
as a feedback loop [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] such that we discuss the beneficial use of unified development and
runtime models for maintenance, self-adaptation, and the coexistence using the feedback loop
concepts of monitor, analyze, plan, and execute [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. We claim that Models@run.time research
should broaden its focus from pure self-representations of and embedded in running systems to
this unification as it supports an incremental adoption of runtime models from maintenance to
self-adaptation and the inevitable coexistence of self-adaptation and maintenance.
      </p>
      <p>The rest of the paper is structured as follows. In Sec. 2, we outline the maintenance and
selfadaptation feedback loops, their coexistence, and the state of the art in unifying development
and runtime models for these loops. Using the illustrative example, we discuss traditional
maintenance (Sec. 3) that incrementally adopts runtime models by unifying development and runtime
models (Sec. 4 and 5) until self-adaptation (Sec. 6) and the coexistence (Sec. 7) are achieved.
Finally, we conclude and discuss Models@run.time challenges for the envisioned unification.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Feedback Loops for Maintenance and Self-Adaptation</title>
      <p>
        Fig. 1 depicts an overview of the individual feedback loops. Mod- Development Environment
els@run.time research focuses on feedback loops for self-adaptation
(SA), that is, the runtime system monitors and analyzes itself, and
if required, plans and executes its adaptation. Models@run.time re- Engineers
search investigates the development and use of runtime models for (M)
these loops in runtime environments and already has achieved
significant results [
        <xref ref-type="bibr" rid="ref15 ref3">3, 15</xref>
        ]. However, it has not addressed feedback loops for (SA) (H)
maintenance (M) regardless whether the system is self-adaptive or not. Runtime
That is, engineers analyze and plan the software evolution in the devel- System Users
opment environment by using development models and they may inter- Runtime Environment(s)
act with the runtime environment to monitor the running system and to Fig. 1. Feedback Loops.
execute updates. Though human-driven maintenance is often decoupled from the running
system [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], it is conceivable that runtime and development models are exchanged between engineers
and the system to seamlessly close the maintenance feedback loop. In general, self-adaptation
and maintenance feedback loops may involve end users, for instance, to report bugs or execute a
patch for maintenance, or to provide preferences for self-adaptation. Thus, involved humans (H)
may interact with the runtime system or engineers ideally by exchanging user-friendly models.
      </p>
      <p>
        Besides the individual self-adaptation and maintenance feedback loops potentially involving
users, both feedback loops are present and must coordinate if the system is self-adaptive [
        <xref ref-type="bibr" rid="ref1 ref6">1, 6</xref>
        ].
Hence, some of the maintenance activities have been automated and shifted from the
development to the runtime environment, which leads to a blurring boundary between these
environments [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. For instance, coordination is needed to synchronize changes caused by self-adaptation
with changes caused by maintenance. The coexistence requires the seamless exchange of
runtime and development models between self-adaptation and maintenance feedback loops.
      </p>
      <p>
        All this calls for a unification of development and runtime models to support seamless
maintenance spanning the development and runtime environments and to enable the coexistence of
self-adaptation and maintenance. The need for the coexistence has been recognized in [
        <xref ref-type="bibr" rid="ref1 ref2 ref6">1, 2, 6</xref>
        ]
but without elaborating on runtime models. The state of the art in Models@run.time either
provides approaches that exchange events between the development and runtime environments [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
or that allow engineers to upload new runtime models to the runtime environment [
        <xref ref-type="bibr" rid="ref16 ref7">7, 16</xref>
        ]. All
of these approaches just use runtime models—as employed in the runtime environment—in the
development environment and they do not relate or even unify them with development models.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Illustrative Example and Traditional Maintenance</title>
      <p>
        The illustrative example is derived from [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. It considers an application that uses a faulty library
in a certain way. If this way of use leads to a failure, workarounds as alternative uses of the
library are available that result in the same functionality but that avoid the failure. The rationale
of workarounds is the intrinsic redundancy of libraries in providing variants of the same
functionality. Exploiting this redundancy, the application must be patched to employ a workaround.
Scenario. Such a patch can be achieved by traditional maintenance, that is, human-driven
maintenance processes decoupled from the running system [
        <xref ref-type="bibr" rid="ref14 ref9">9, 14</xref>
        ]. Considering maintenance as a
feedback loop [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], we employ a subset of the EUREMA modeling language—originally
designed to model feedback loops for self-adaptation [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]—to describe the maintenance scenario
for the example (cf. Fig. 2). Hexagon block arrows describe activities, and solid arrows the
control flow between activities. Rectangles represent artifacts (e.g., development and runtime
models), and dotted arrows define the use of artifacts by activities (e.g., to create, annotate,
read, and write a model). The colors in the figure highlight the roles performing the activities
while some artifacts lie on the boundary between roles as these artifacts are shared among roles.
ttfuprharoaieerlcutkIrornaieennppglpoFaylrniictgscdyo.aisntncit2toeraa,enminana.tsediissTenusthfuesaoieecsrr/tfmbsaruioaelga---f &lt;&lt;DfMaeoilnt&lt;ueit&lt;rocCerMrte&gt;roep&gt;naoittorftdaeerte&gt;icl-ut&gt;eredrcerepaotretdc &lt;&lt;RFAarAerneinplapauolloyryrezrztete&gt;&gt;r raaelnyp-azoeDrMdteosdigernl D&lt;w&lt;pePavltaeccnlPh&gt;oap&gt;tchldporaeptvecedh&lt;-&lt;REpexaleretcacuths&lt;ee&gt;&lt;&gt;EpAxapelrpetcepacau-tlsthcyeeh&gt;d&gt; apEpantpgcliihnedeers
tion that the user can pro- Monitor Users Patched
vide based on her observa- Fig. 2. Traditional Maintenance.
tions such as how she used the application and how the failure has reified. Engineers analyze
such reports using a design model (incl. code) to identify the fault. Typically, engineers have
implicit knowledge (i.e., a mental model) about the application such as the faulty library with
its workarounds. This knowledge is the basis for developing a patch such that the application
employs another workaround in using the library. Engineers release the patch by publishing it
for download. Finally, users obtain and apply the patch to their installed applications.
Observations. For the scenario of traditional maintenance, we observe that the feedback loop
is divided in a monitor and execute part performed by users and in an analyze and plan part
performed by engineers. Fixing the fault is based on design models, implicit knowledge of
engineers, and the information provided by users. Particularly, the latter only refers to failures but
not to faults as the user can only observe failures and is not aware of the faults or generally the
internals of the application. Hence, the runtime information provided to the engineers is limited
and not necessarily well-structured, which likely requires more efforts by engineers to
identify the fault. However, artifacts such as user-written reports or patches are exchanged between
engineers in the development environment and users in runtime environments.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4 Runtime Models for Monitoring in Maintenance</title>
      <p>
        Based on the observations from traditional maintenance (Sec. 3), monitoring can be improved to
provide richer and well-structured runtime information to engineers. One approach is to
instrument the application with sensors, automate monitoring, and employ runtime models (cf. Fig 3).
isuSnescgleefrnfstaaadikrleiueotsre.ecostv,Iinnethgrectahonsenydstsertraeetsmaptsokritstto--. &lt;&lt;CrMeroepnaoittorert&gt;&gt; rcerepaotretdc F&lt;a&lt;iAlrAurnenrapaelloyyRzrTzete&gt;&gt;r raaelnyp-azoeDrMdteosdigernl D&lt;w&lt;pePavltaeccnlh&gt;op&gt; ldporaeptvecedh&lt;-&lt;REpexaleetcacuthsee&gt;&gt; lrpeeaa-tscehd Engineers
tBheessiedetsasfkres,eitnhge ubseenrsefifrtoomf &lt;&lt;DfMaeoilntueitrocert&gt;&gt; ftdaeeicl-utered SRnepaporsth&amp;ot Patch r &lt;&lt;EpAxapetcpculthye&gt;&gt; appatpclihed
automated monitoring is Monitor System Users Patched
that the system may report Fig. 3. Runtime Models for Monitoring in Maintenance.
information internal to the system and not known to the users. For instance, architectural or
configuration snapshots of the failing application can be created automatically and sent to engineers.
Such snapshots provide richer and precise, and likely more useful information for engineers to
identify the fault more quickly as user-created failure reports can only refer to the observable
failure but not to the internal (indications of the) fault. If we consider such a Failure Report
&amp; Snapshot as a runtime (RT) model (cf. Fig. 3), the monitored information is well-structured
and well-defined (e.g., by standardized exchange formats such as XMI and by metamodels) and
engineers may directly employ model-based analysis techniques. Moreover, further specialized
and abstract views of the running system can be efficiently created from a runtime model [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
Observations. For this scenario, we can observe in practice that tools are already embedded
into applications to automatically create and send crash reports to engineers (e.g., Apport,
https://wiki.ubuntu.com/Apport). However, such tools work at the code level and require
transformations of the reports to raise the abstraction level and to enable tool-supported analysis. In
this context, Models@run.time can be beneficial to provide abstract model-based views/reports
that are more accessible for engineers and that can be directly analyzed with model-based
analysis tools. In general, we think that Models@run.time can support the seamless transition between
runtime system monitoring and engineers. Moreover, adopting Models@run.time for
monitoring provides well-structured and well-defined information to ease and speed up the subsequent
work by engineers. This requires that runtime and development models are designed in a unified
manner such that both can be reasonably used at the same time by engineers.
      </p>
    </sec>
    <sec id="sec-5">
      <title>5 Runtime Models for Execution in Maintenance</title>
      <p>
        Likewise to disburdening users from the monitoring tasks (Sec. 4), the execute activity can be
automated (i.e., instrumenting the application with effectors) and based on runtime models.
tfsShaycieseltunerpamerreiivoasin.odAruesspeodnrisgstceicendunesaesbrreyisod,dtfhoeea-r &lt;&lt;CrMeroepnaoittorert&gt;&gt; rcerepaotretdc F&lt;a&lt;iAlrAurnenrapaelloyyRzrTzete&gt;&gt;r raaelnyp-azoeDrMdteosdigernl D&lt;w&lt;pePavltaeccnlh&gt;op&gt; ldporaeptvecedh&lt;-&lt;REpexaleetcacuthsee&gt;&gt; lrpeeaa-tscehd Engineers
vBeultopthaisptaimtche, (tchfe. Fuisge.r4i)s. &lt;&lt;DfMaeoilntueitrocert&gt;&gt; ftdaeeicl-utered SRnepaporsth&amp;ot w PatcRhT rr &lt;&lt;EpAxapetcpculthye&gt;&gt; appatpclihed
not involved in executing Monitor System Patched
the patch. In contrast, engi- Fig. 4. Runtime Models for Execution in Maintenance.
neers release a patch as a runtime (RT) model describing the patch itself and how it should be
executed. The system receives and automatically applies the patch. Being a runtime model, the
patch can be analyzed or tested by the system at the model level, for instance, on the latest
snapshot created by the automated monitoring activity (cf. Sec. 4), before it is actually applied.
Thereby, the patch execution can be related to the monitored observations of the specific
application instance since engineers typically develop patches for all instances of the application.
Observations. In general, automating the execution disburdens the user from maintenance tasks
and reduces the turnaround time of the maintenance process. The latter enables faster patches
for all application instances. In practice, we can already observe that patches or generally
updates are largely executed automatically, that is, users are notified about updates and only must
agree to install them (e.g., in Ubuntu, https://wiki.ubuntu.com/SoftwareUpdates) or that updates
are checked with local configurations in separate test environments before they are actually
applied (e.g., [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]). Models@run.time can be beneficial to support the seamless transition from
building patches in the development environment to the applicability analyses and execution in
individual runtime environments. In particular, it can be beneficial to address the variability of
(self-adaptive) application instances in heterogeneous runtime environments.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6 Runtime Models for Self-Adaptation</title>
      <p>For our example, we may close the maintenance feedback loop in the system itself by further
isaapdSnydulecasttaeaenotpnecmftamaetacraetaititdoiionmvbnn.diagotc(iAntrcekheifsstep.l.oooFaTrbosrniehtgpafi.iolsffty5aorsrzei)erel.e,lussfuaretenllhttfsdoes-. &lt;&lt;DfMaeoi&lt;lntu&lt;eitCrroMceerrto&gt;epn&gt;aoittorertftd&gt;aeeic&gt;l-uteredrcerepaotretd c &lt;RFa&lt;eAirArpnleunoaparrlleoyytzrRzetTe&gt;r&gt;rWraaoelnwyrp-kzoaeardtroSuynsdrtsweR&lt;morT&lt;SrkPMelaaloernod&gt;cuet&gt;RnlTPdattswceewarhdRleTcc- c &lt;rC&lt;prSwPaele&lt;taoacnl&lt;retrh&gt;kEepAc&gt;xaapteretcpocudlucpthyerane&gt;tRadcT&gt;thedappatpclihed
The report is automatically Monitor System Patched
analyzed to find applicable Fig. 5. Runtime Models for Self-Adaptation.
workarounds that are specified in the Workarounds runtime model, one of which will then be
selected. From the selected workaround, an executable patch is created and finally applied by
the system before the failure reaches the user, that is, the feedback loop masks the failure. These
activities operate on the System Model—a self-representation of the running system—that is
kept up-to-date by monitoring and that is the basis for automated analysis and planning.
Observations. Completely automating the feedback loop enables the immediate and in-situ
handling of failures before users notice them, hence making the system resilient to failures. In the
maintenance scenarios (Sections 3-5), the user is interrupted as the failure might impede the use
of the system until engineers provide a patch. Generally, automating the analyze and plan
activities requires two things. First, the system must have a self-representation of itself (cf. System
Model) as a basis for the analysis and planning, which is achieved in maintenance by a Design
Model plus optionally a system Snapshot. Second, the implicit knowledge of the engineers about
the workarounds must be explicitly specified, for instance, in a runtime model as adaptation rules
(cf. Workarounds). Besides its benefits for self-adaptation, Models@run.time can be beneficial
in supporting an incremental transition of shifting some maintenance tasks to the self-adaptive
system. This requires the seamless connection of development and runtime models, for instance,
to exploit development-time knowledge such as design rationale for self-adaptation. We envision
the unification of development and runtime models to achieve such a seamless connection.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Runtime Models for the Coexistence</title>
      <p>Though self-adaptation with runtime models provides several benefits with respect to
maintenance (cf. previous sections), maintenance does not become dispensable.</p>
      <p>Scenario. In our example, Design Model w New workarounds
the deployed Workarounds r a r c r
(acrfe. spFeicgi.fied5)bybeunt gintheeesres Engineers Evolve &lt;e&lt;xAAtn.naarlleyyrpzzeoe&gt;r&gt;t rraaelnyp-zoerdt r wo&lt;Dr&lt;ekPvalaernrol&gt;ou&gt;pnd ldwoeapveed- &lt;U&lt;paEaxrteoecuunwtedo&gt;sr&gt;k- udapt-ed Evolved
workarounds are likely not w Extended failure RT
complete in the sense that r WorkaroundrsRT creport &amp; SysteBmreaMkodel
tffsowhoohfoeruoeyrnwfksadeaniearlounidanruduenorFstednoisgems(sm.sa)u6.itagc,icHlhhalatelslnacunycslioaettas,(usbcbanelfeess-. &lt;&lt;DfMaeoi&lt;lntu&lt;eitCrroMceerrto&gt;epn&gt;aoittorertftd&gt;aeeic&gt;l-uteredrcerepaotretd c &lt;RFa&lt;eAirArpnleunoaparrlleoyytzrRzetTe&gt;r&gt; raaelnwayp-zoerdt Systwe&lt;mor&lt;SrkPMelaaloernod&gt;cuet&gt;RnlTPdatlfwwecoaacwurhRtnsneTdeod-tc &lt;rC&lt;prPael&lt;taaccn&lt;th&gt;EepAr&gt;xapeSwtcpecuolcptlhyreerake&gt;tcaca&gt;tthreeoddapupantpRcldihTed
bottom layer), which calls Monitor System Patched
for maintenance activities Fig. 6. Runtime Models for the Coexistence.
(cf. top layer). In this case, an Extended failure report &amp; System Model is created for engineers
to specify new workarounds and update the workarounds deployed in the runtime system.
Observations. Combining self-adaptation and maintenance requires their coexistence such as
when and how engineers evolve a self-adaptive system. For instance, to address a failure for
which the deployed workarounds are not sufficient, engineers may directly develop and enact a
patch as described in Fig. 4. Such an approach, however, competes with self-adaptation because
the system may adapt itself while the patch is developed making the patch useless. Hence, the
maintenance and self-adaptation feedback loops must be coordinated, for instance, by enacting
maintenance changes via the self-adaptation feedback loop as shown in Fig. 6, that is, engineers
provide new workarounds for the self-adaptation loop rather than directly patching the
underlying system to handle the failure. Models@run.time are beneficial for the coexistence as they
provide the flexibility in self-adaptation feedback loops for maintenance. Moreover, they
provide the same benefits for exchanging models between engineers and the self-adaptive system
as for automated monitoring and execution discussed in Sec. 4 and 5. But they also have to be
unified with development models to simultaneously support self-adaptation and maintenance.
In this paper, we have discussed the benefits and use of runtime models for traditional
maintenance, maintenance that incrementally adopts Models@run.time principles, self-adaptation, and
the coexistence of maintenance and self-adaptation. Leveraging these benefits requires a
unification of development and runtime models. In our opinion, this unification should be more in the
focus of Models@run.time research that is currently more concerned with self-representations
and self-adaptation. We think that this broadened focus supports maintenance as well as an
incremental adoption of Models@run.time principles to achieve the inevitable coexistence. Finally,
we outline major challenges with respect to the unification of development and runtime models:
– How can we systematically derive runtime models from development models?
– How to co-design, co-evolve, and co-assure the self-adaptive system (product) and the
processes for development, maintenance, and self-adaptation with Models@run.time?
– Can we find an MDE style that works for the development and runtime environment such as
a common API with different capabilities? Which capabilities are key for each environment?
– How do interfaces of runtime models should be designed such that engineers can use and
interact with them when maintaining a system employing Models@run.time?
– What are the specifics of runtime models for the individual MAPE steps of feedback loops
supporting automated self-adaptation and manual maintenance?
– How can we efficiently exchange or synchronize models between development and runtime
environments? Which formats and protocols are suitable for exchanging runtime models?
– How can Models@run.time support the maintenance of multiple runtime environments by
one development environment, particularly, when each instance of the runtime system has
a different configuration due to self-adaptation? How can we efficiently aggregate runtime
models from all these instances, and distribute runtime models to them? How to extend this
setting to software ecosystems with multiple development/runtime environments? In this
context, what can we learn for Models@run.time from software product line research?
– Exchanging models between runtime and development environments, what are fundamental
criteria (if any) distinguishing runtime models from development models?</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Andersson</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baresi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          , N.,
          <string-name>
            <surname>de</surname>
            <given-names>Lemos</given-names>
          </string-name>
          , R.,
          <string-name>
            <surname>Gorla</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Inverardi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vogel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Software Engineering Processes for Self-Adaptive Systems</article-title>
          . In:
          <string-name>
            <surname>SEfSAS</surname>
            <given-names>II</given-names>
          </string-name>
          , LNCS 7475, pp.
          <fpage>51</fpage>
          -
          <lpage>75</lpage>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Baresi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghezzi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>The disappearing boundary between development-time and run-time</article-title>
          .
          <source>In: FoSER'10</source>
          . pp.
          <fpage>17</fpage>
          -
          <lpage>22</lpage>
          . ACM (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , France, R., Cheng,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Assmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>U</surname>
          </string-name>
          . (eds.):
          <source>Models@run.time, LNCS 8378</source>
          . Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Blair</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , France, R.B.:
          <article-title>Models@ run.time</article-title>
          .
          <source>Computer</source>
          <volume>42</volume>
          (
          <issue>10</issue>
          ),
          <fpage>22</fpage>
          -
          <lpage>27</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Carzaniga</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gorla</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mattavelli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perino</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pezze</surname>
            <given-names>`</given-names>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Automatic Recovery from Runtime Failures</article-title>
          .
          <source>In: ICSE'13</source>
          . pp.
          <fpage>782</fpage>
          -
          <lpage>791</lpage>
          . IEEE (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gacek</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hadar</surname>
          </string-name>
          , E.: Friends or Foes?
          <article-title>- A Conceptual Analysis of Self-Adaptation and IT Change Management</article-title>
          .
          <source>In: SEAMS'08</source>
          . pp.
          <fpage>121</fpage>
          -
          <lpage>128</lpage>
          . ACM (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Iftikhar</surname>
            ,
            <given-names>M.U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weyns</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          : Activforms:
          <article-title>Active formal models for self-adaptation</article-title>
          .
          <source>In: SEAMS'14</source>
          . pp.
          <fpage>125</fpage>
          -
          <lpage>134</lpage>
          . ACM (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kephart</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chess</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The vision of autonomic computing</article-title>
          .
          <source>Computer</source>
          <volume>36</volume>
          (
          <issue>1</issue>
          ) (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kitchenham</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , et. al.:
          <article-title>Towards an ontology of software maintenance</article-title>
          .
          <source>Journal of Software Maintenance: Research and Practice</source>
          <volume>11</volume>
          (
          <issue>6</issue>
          ),
          <fpage>365</fpage>
          -
          <lpage>389</lpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Ko¨segi,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Nerding</surname>
          </string-name>
          , R.:
          <article-title>SAP Change and Transport Management</article-title>
          . SAP Press (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Lehman</surname>
            ,
            <given-names>M.M.:</given-names>
          </string-name>
          <article-title>Feedback in the software evolution process</article-title>
          .
          <source>Information and Software Technology, Special Issue on Software Maintenance</source>
          <volume>38</volume>
          (
          <issue>11</issue>
          ),
          <fpage>681</fpage>
          -
          <lpage>686</lpage>
          (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. de Lemos, R.,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Mu¨ller,
          <string-name>
            <given-names>H.A.</given-names>
            ,
            <surname>Shaw</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          , et al.:
          <article-title>Software Engineering for Self-Adaptive Systems: A second Research Roadmap</article-title>
          . In:
          <string-name>
            <surname>SEfSAS</surname>
            <given-names>II</given-names>
          </string-name>
          , LNCS 7475, pp.
          <fpage>1</fpage>
          -
          <lpage>32</lpage>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Morin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ledoux</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassine</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chauvel</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barais</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          , Je´ze´quel,
          <string-name>
            <surname>J.M.</surname>
          </string-name>
          :
          <article-title>Unifying Runtime Adaptation and Design Evolution</article-title>
          . In: CIT'
          <fpage>2009</fpage>
          - Vol.
          <volume>02</volume>
          . pp.
          <fpage>104</fpage>
          -
          <lpage>109</lpage>
          . IEEE (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Sommerville</surname>
            ,
            <given-names>I.: Software</given-names>
          </string-name>
          <string-name>
            <surname>Engineering.</surname>
          </string-name>
          Addison-Wesley,
          <volume>9</volume>
          <fpage>edn</fpage>
          . (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Szvetits</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zdun</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Systematic literature review of the objectives, techniques, kinds, and architectures of models at runtime</article-title>
          .
          <source>Software &amp; Systems</source>
          Modeling pp.
          <fpage>1</fpage>
          -
          <lpage>39</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Vogel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
          </string-name>
          , H.:
          <article-title>Model-driven engineering of self-adaptive software with eurema</article-title>
          .
          <source>ACM Trans. Auton. Adapt. Syst</source>
          .
          <volume>8</volume>
          (
          <issue>4</issue>
          ),
          <volume>18</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          :
          <fpage>33</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Vogel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neumann</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hildebrandt</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Incremental model synchronization for efficient run-time monitoring</article-title>
          .
          <source>In: Models in Software Engineering, LNCS 6002</source>
          , pp.
          <fpage>124</fpage>
          -
          <lpage>139</lpage>
          . Springer (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>