<!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>Models@Runtime to Support the Iterative and Continuous Design of Autonomic Reasoners?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Franck Chauvel</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nicolas Ferry</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Brice Morin</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alessandro Rossini</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arnor Solberg</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>SINTEF ICT - MOD Group Oslo</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Norway</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>First.Lastg@sintef.no</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Modern software systems evolve in a highly dynamic and open environment, where their supporting platforms and infrastructures can change on demand. Designing and operating holistic controllers able to leverage the adaptation capabilities of the complete software stack is a complex task, as it is no longer possible to foresee all possible environment states and system con gurations that would properly compensate for them. This paper presents our experience in using models@runtime to foster the systematic design and evaluation of self-adaptive systems, by enabling the coevolution of the reasoning engine and its environment. This research was carried out in the context of the Diversify project, which explores how bio-diversity can be used to enhanced the design of self-adaptive mechanisms.</p>
      </abstract>
      <kwd-group>
        <kwd>models@run</kwd>
        <kwd>time</kwd>
        <kwd>self-adaptation</kwd>
        <kwd>cloud computing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Modern software systems are increasingly complex and distributed as they
materialize into large scale assemblies of technologies, such as databases, middleware,
business logics or graphical front-ends. Typically, cloud-based systems push this
complexity even further as their platform and infrastructure, traditionally xed
once and for all, can now be dynamically adjusted [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>
        This complexity exceeds by far the capabilities of IT teams, who need to
rely on software solutions to automate as much as possible the related
maintenance operations [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Load-balancing is a typical example easily automated
by cloud providers using basic rules. This need for automation is addressed by
self-adaptive systems [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], which adjust their behavior to their changing
environment. However, the design of self-adaptive systems, especially of their reasoning
engine, remains an open challenge which often results in ad hoc solutions [
        <xref ref-type="bibr" rid="ref21 ref7">7,21</xref>
        ]
tailored to speci c environments.
? This work has partially been funded by the European Community's Seventh
Framework Programme (FP7/2007-2013) under grant agreement numbers: 318484
(MODAClouds), 317715 (PaaSage), 257793 (REMICS) and 600654 (DIVERSIFY).
      </p>
      <p>
        A key issue, while designing such systems, is the uncertainty pertaining to
their open, dynamic and heterogeneous environment [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Designers and even
tools are no longer able to statically foresee all possible environment states as
well as all the system con gurations that would properly handle them. In the
cloud settings for instance, the virtually in nite set of resources combined with
the ever changing requirements, prevent to anticipate all the possible underlying
platforms and infrastructures. Unfortunately, unforeseen environments are likely
to produce an outage and in turn, to generate undesirable overpriced
maintenance operations.
      </p>
      <p>
        To minimize this risk of not being able to manage unforeseen environments,
our contribution is twofold. We rst propose an iterative process to proactively
explore possible evolutions of the environment, and allow designers to
incrementally adjust the reasoning engines accordingly. We then describe how the
models@runtime paradigm [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] can foster the evolution of the reasoning engine
together with the system's environment.
      </p>
      <p>In the context of the Diversify project 1, we combined existing self-reparation
techniques with a mechanism for exploring environment evolutions driven by an
analogy with the concept of bio-diversity. The loose coupling between the
reasoning engine and the environment provided by the model@runtime paradigm
facilitates their interdependent evolution. On one hand, by replacing the
running system with simulated environments, one can evaluate the e ectiveness of
a given reasoning engine. On the other hand, by plugging alternative reasoning
engines, one can evaluate their robustness to unforeseen environments.</p>
      <p>The remainder of this paper is organized as follows. Section 2 uses a
cloudbased multi-tenant system as an example of a self-adaptive system facing
unforeseen environments. Section 3 presents our design process and its realization on
a models@runtime platform. Section 4 details how this approach was applied to
our example in the context of the Diversify project. Section 5 discusses related
work before Section 6 concludes and discusses possible future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivating Example: Unforeseen Multi-tenancy</title>
      <p>
        SensApp [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] is an open-source platform2 fostering the seamless integration of
the Internet of Things (IoT) with the cloud. SensApp users can register sensors
into the platform, which will push data available to other users or services from
a REST interface. SensApp users and third-party services can subscribe to
noti cations: for instance, when the temperature of a given building is exceeding
a given threshold.
      </p>
      <p>SensApp is implemented as four REST services to: i) register sensors, ii)
store their data, iii) notify third-party services, and iv) to orchestrate these
services from a uni ed facade service (dispatcher). As these services are loosely
coupled (they only use their public REST APIs to communicate between them),
SensApp can thus be distributed in various ways. Each service indeed only
1 http://diversify-project.eu/
2 https://github.com/SINTEF-9012/sensapp
requires a servlet container, such as Apache Tomcat or Jetty, and a set of open
ports to communicate over HTTP.</p>
      <p>
        In order to reduce the management overhead related to operating SensApp
in the cloud, we need to develop a self-adaptive version of SensApp, which
shall recover as much as possible from failures of its own components (i.e., its
four services) and from failures occurring in its environment (i.e., any failures of
the underlying software stack including software, platform and hardware
infrastructure). In a cloud setting, software failures are recovered by reinstalling the
erroneous component, whereas hardware failures require in addition the
provisioning of a new virtual machine. Our rst solution to self-adaptation relies on a
set of event-condition-action rules (ECA) binding some anticipated failures with
imperative repair procedures. These procedures are sequences of atomic actions
such as provisioning a virtual machine or deploying a service, which apply on
a CloudML model (cf. Section 4) describing the system and its environment
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>As cloud-based systems operate in an open environment, it is very di cult
(and even not tractable) to get insight on the impact that unforeseen
environments may have. In a real cloud setting, nothing guarantees for instance that
the SensApp application will run in complete isolation: other applications or
services may be added into the same war container, or simply be hosted on the
same virtual machines. From the SensApp perspective, this kind of
environment with multi-tenancy might alter its performances (e.g., response time) or
the associated reasoning engine (e.g., decision relevance).</p>
      <p>Existing approaches to manage such uncertainty (cf. Section 5) either let
the system learn from its errors using machine learning techniques or directly
leverage a model of the uncertainty itself. Machine learning techniques are robust
but require to let the system's performance drop for a moment, until the system
has learned. Modeling uncertainty to make better decisions implies the existence
of partial knowledge, which is not always available.</p>
      <p>Designing a self-adaptation mechanism, robust to unforeseen environments,
thus remains a challenge. In the following, we explore how an alternative
approach, inspired by agile practices, can be used to enhance the reasoning engine
of our autonomic SensApp in terms of e ectiveness and performances.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Approach Overview</title>
      <p>We present in this section the design process, inspired by agile practices, and its
underlying models@runtime architecture.
3.1</p>
      <sec id="sec-3-1">
        <title>An Iterative Design Process</title>
        <p>Our overall approach relies on an iterative process that successively re nes the
design of the reasoning engine, and the environments in which it operates, until
enough con dence is gained regarding the robustness of the system. The
interdependent evolutions of the reasoning engine and its environment (see the two
cycles in Fig. 1), referred to as coevolution, is organized as follows:
1. Check robustness to unforeseen environment: assess whether
designers have gained enough con dence regarding the robustness of the system
under unforeseen environments. Depending on the concern of interest, this
process can be automated. Once this evaluation is successful, the overall
design process is terminated. Otherwise, a new environment simulator is
designed.
2. Design a new environment simulator: First, the designer identi es an
uncertainty axis along which she suspects that the robustness could be an
issue. Based on this, the simulated environments (potentially including some
randomness) will evolve along this axis.
3. Evaluate the reasoning engine: Evaluates how the reasoner behaves with
respect to the simulated environment. Depending on the concern of interest,
this process can be automated. If the reasoning engine passes the evaluation
then the design process restarts from Step 1, otherwise the reasoning engine
is updated (Step 4).
4. Update the reasoning engine: Adapts the reasoning engine to the
simulated environment. It may lead to a change of reasoning engine as well as in
its con guration. Once updated, the new engine is evaluated again (Step 3).
1. Check
robustness
to unforseen
[pass]</p>
        <p>Evolution of the</p>
        <p>Environment
[fail]
2. Environment
Simulator Design</p>
        <p>
          [pass]
3. Reasoning
engine
evaluation
[fail]
4. Reasoning
engine update
Evolution of the
Reasoning Engine
Appying coevolution to address unforeseen environment assumes that the
Pareto Principle [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] (also known as the 80/20 rule) applies to self-adaptive
systems design. This principle states that 80 % of the e ects are due to 20 % of the
possible causes. This means that 80 % of issues due to unforeseen environments
will be reproduced by only 20 % of them. Our approach aims at exploring
unforeseen environments using random generation techniques, while targeting the key
20 % using a proper control of diversity, as done in evolutionary algorithms [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
for instance.
        </p>
        <p>
          A Models@Runtime Architecture to Support the Process
The proposed architecture is depicted in Fig. 2 and is inspired by our previous
work [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. The models@runtime engine acts as an intermediary layer between
the reasoner and the runtime system with its environment.
refine or calibrate
reasoner
(step 4)
key performance
indicators
        </p>
        <sec id="sec-3-1-1">
          <title>ReasDoensiniggnheErngine</title>
          <p>Evaluator
(step 3)
Reasoning
engines
Evolutionhofhtheh
ReasoninghEngine
target system
model
explore alternative environments (step 1 &amp; 2)</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>MODPELLAST@FROURNMTIME</title>
          <p>Synchronization</p>
          <p>Engine
diff. operator
current system
model</p>
          <p>Evolutionhofhtheh
Environment
adjust
monitor
e
c
a
tIfr
e
n</p>
          <p>Simulated
Unforeseenh
Environments
RealhRuntime
Environment</p>
          <p>The models@runtime idea is reused as such in Fig. 2, where a
synchronization engine maintains the causal link between the system and the model. Any
change in the environment is re ected on the model, and similarly, any change
in the system model is enacted on the system. The interactions between the
models@runtime engine and both interfaces consist in exchanging models or
manipulating the models through an API. A reasoner can retrieve the current
model of the running system and push a new target model to the engine, while
the runtime environment can push a new model of the current running system
to the engine.</p>
          <p>In our approach, the con guration or replacement of a reasoning engine or
of the environment is enacted by a designer. In order to help the designer in this
task, an evaluator is used to assess whether the reasoner behaves correctly with
respect to the simulated environment and its variations.</p>
          <p>The Role of Models@Runtime: In this context, the separation of concerns
o ered by models@runtime brings three main bene ts: (i) easier integration of
the reasoning engine,(ii) easier integration of environment simulators, and (iii)
coevolution of the reasoning engine and the simulator.</p>
          <p>From the reasoning engine's point of view, models@runtime provides both
abstraction and anticipation capabilities. The abstraction provided by the model
let reasoning engine to analyze a simpli ed version of the running system, while
the anticipation allows the reasoning engine to conduct what-if scenarios in a
safe modeling space, with no impact on the running system. If and only if a
valid model is identi ed, it will be automatically enacted via the causal link and
the running system will consequently be dynamically adapted. If the reasoning
engine at some point yields an invalid model, it is simply discarded, with no
need to perform expensive roll-back since the system has not been adapted yet.
The reasoning engine can be applied to any environment including simulators
as far as it can be modelled by the models@runtime engine (i.e., it respects the
interface).</p>
          <p>From the environment point of view, the models@runtime architecture
facilitates the simulation of alternative environments, by replacing the actual runtime
environment by simulated ones. The ability to easily switch between
environments and the loose coupling between the reasoning engine and the environment,
avoid the recurrent design of ad hoc simulators tightly-coupled to a speci c
reasoning engine. Moreover, once the design process is completed, integrating the
resulting reasoning engine with the running system does not require any further
change on the self-adaptation loop.</p>
          <p>The overall architecture relies on models@runtime, as it provides a clear
interface and a loose coupling between both the environment and the reasoning
engine sides, which facilitates their coevolution. This in turn facilitates the
continuous design of complex adaptive systems.</p>
          <p>The next section reports on how we used this process and the related
architecture in the context of the Diversify project.
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>The Diversify Experiment</title>
      <p>The Diversify project aims at creating a synergy between ecology (a
discipline of biology), and software engineering. We aim at understanding the key
mechanisms underlying bio-diversity and how they enhance the robustness and
resilience of biological systems, and thus porting them to software systems. We
in particular focus on cloud systems, which o ers a large scale, distributed and
complex software ecosystem, approaching the complexity of natural ecosystems.
4.1</p>
      <p>Modeling Deployment and Provisioning of Cloud-based Systems
We model the deployment and provisioning of cloud systems with CloudML,
a DSML developed as a joint e ort between the REMICS, MODAClouds and
PaaSage projects. As shown on Fig. 3, a CloudML model captures the
deployment of a cloud-based system, including the platform and infrastructure
level. In this example, SensApp is deployed on three virtual machines
hosting: the \admin" application, the SensApp application, and the underlying
database, respectively. The semantics of such a description is embedded in the
models@runtime platform, which maintains a causal link between the model and
the running cloud system.
ap0:JAdmin
(RUNNING)</p>
      <p>WarContainer
jt1:JJetty
(RUNNING)</p>
      <p>JRE
java1:JJdk1.7
(RUNNING)
ap1:JSensApp
(RUNNING)</p>
      <p>WarContainer
tc1:JTomcat
(RUNNING)</p>
      <p>JRE
java2:JJre1.6
(RUNNING)
vm3:JMedium-Linux
(RUNNING)
NoSQLDB
db1:JMongoDB
(RUNNING)
virtual machine
software artifact
mandatory local
dependency
mandatory remote
dependency
optional remote
dependency
optional local
dependency</p>
      <p>In order to observe how software diversity helps self-repair mechanisms in
recovering failures, the notion of failure is re ected on the model by the state of
the entity being switched from running to error. Failures are also propagated in
the model along mandatory dependencies, as a software artifact cannot operate
without them.</p>
      <p>
        Our rst self-repair algorithm is speci ed as a set of ECA rules, which bind
potential failures to some prede ned repair procedures. We identi ed eleven
atomic modi cations on CloudML models, (e.g., provision of new node,
deployment of a given application, starting a given application), which are
combined into repair procedures. Fig. 4 depicts the repair procedure, which, given
an application, generates the following repair plan: if the application is in an
erroneous state, it rst resets the application, then it resolves all missing
dependencies, and nally starts the application. It is worth to note that the resolution
of a dependency is a separate procedure (called resolve), which is itself resolved
to generate the nal plan. In Fig. 4, the dotted arrows depict the re nements
of repair procedure according to the CloudML model introduced in Fig. 3,
where the vm2 failed. Four procedures are initially de ned: resolve, install
locally, provision and install, and repair. This planning technique is
referred in the literature as hierarchical tasks networks (HTN) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], whose tasks
(in our case) are strictly ordered.
4.2
      </p>
      <sec id="sec-4-1">
        <title>Applying our Iterative Process on SensApp</title>
        <p>The following paragraphs summarize how we executed the iterative process
presented in Fig 1, on SensApp. In our experiment, the random generation of
alternative environments is automated, whereas their integration in the
models@runtime architecture is still done manually, as is the evaluation of key
performance indicators.</p>
        <p>Check Robustness to Unforeseen Environments The rst step of the
process evaluates the con dence the designer has in the system to operate properly
under unforeseen circumstances.
repair ap1
reset ap1
resolve ap1.sensapp
start ap1
pJ&lt;- provisionAndInstall(Sensapp)
bind ap1.sensapp to p
provision vm2
install ap2:sensapp on vm2
resolve ap2.noSqlDb
resolve ap2.wc
start ap2
repair
[a.status = stopped]
1. Having a clear de nition of the objectives of the self-adaptive system is the
sine qua non condition to any assessment of its e ectiveness or its
performance. Some self-adaptation techniques such as control theory, optimization
methods, or planning techniques require a formal de nition of those
objectives, but others, such as ECA rule sets, do not. In SensApp for instance,
these objectives are not explicit, but the e ectiveness and the performance
of the reparation process have implicitly driven the selection of the rules.
2. Once the objectives of the system are de ned, the designer must identify the
key axes of uncertainty in the system's environment. SensApp may be
subject to failures and may be deployed on a multi-tenant environment, where
other applications that cannot be controlled may evolve and impact
SensApp's behavior. Multi-tenancy and failures are thus the axes of uncertainty
investigated hereafter.
3. Finally, designers have to prioritize the di erent axes of uncertainty
according to their impact on the requirements and the system's objectives: the
multi-tenancy hypothesis in the case of SensApp.</p>
        <p>Since the multi-tenancy hypothesis is critical, the designer should then
simulate failures in environments including applications evolving out of SensApp's
control.</p>
        <p>
          Design a \Diversi ed" Environment Simulator The multi-tenancy
hypothesis can be reproduced by breaking down the isolation in which the system
is running, which can be done by arti cially controlling the level of software
diversity in the environment. Indeed, isolation can be seen as a lack of software
diversity in the system's environment. Interested reader may consult [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] for
further details on biodiversity.
        </p>
        <p>vm4:JMedium-Linux
(STOPPED)
vm6:JLarge-Linux
(RUNNING) NoSQLDB
db2:JMongoDB
(STOPPED)
java3:JJdk1.6
(RUNNING)</p>
        <p>Fig. 5 depicts an example of a simulated environment where diversity was
injected into SensApp (see crosshatched virtual machines and applications).
Three extra virtual machines are provisioned (i.e., vm4, vm5, and vm6) where
additional applications are randomly deployed. In addition, applications are also
randomly injected into existing virtual machines (i.e., ap3 is deployed on vm1
and is bound to the existing JRE as well as to the new remote applications). Our
simulation introduces all possible failures of the SensApp system (e.g., failure
of vm2).</p>
        <p>Evaluation of the Reasoning Engine This step evaluates SensApp against
randomly generated diversi ed environments, to check how well its self-adaptation
mechanisms behave under multi-tenancy. This evaluation covers two dimensions:
the e ectiveness of the reparation and its performance.</p>
        <p>The e ectiveness of the self-repair strategies of SensApp are measured by
its ability to restore itself into a running state. A repair is successful if and only
if its execution results in a valid deployment of SensApp. Then, the manual
inspection of simulation results showed that the e ectiveness is not impacted by
multi-tenancy.</p>
        <p>In addition, the performance of the repair procedure is also measured and
is de ned as the cost of executing the resulting repair plan. In a cloud setting,
di erent repair actions may have di erent costs: expensive actions are typically
the provisioning of a new node and the deployment of applications on existing
virtual machines (as it may require heavy network tra c). In this respect,
simulation results revealed that the generated plans are suboptimal, as the planner
provisions new virtual machines for each failure, without leveraging available
opportunities in its environment.</p>
        <p>Update of the Reasoning Engine Several alternative designs may help
mitigating the performance drop under multi-tenancy, namely the modi cation of
ECA rules or the replacement of the reasoning engine.</p>
        <p>The rst update consisted in modifying the set of ECA rules and evaluating
their e ectiveness and performance (Step 3). This updated reasoning engine
preserved the scalability of the reasoning engine, but may still miss optimal
plan.</p>
        <p>A second update led to the use of automated planning techniques able to
reach the optimal solution. Manual investigations of planning traces showed that
generic automated planning techniques do not scale to large systems (about 30
entities in the models).
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>
        Uncertainty has been identi ed has one of the key obstacles to the design and
development of self-adaptive systems [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. We discuss below a selection of
related approaches, namely speci c theoretical frameworks, machine learning
techniques, agile practices and risk analysis methods.
      </p>
      <p>
        From a theoretical standpoint, several frameworks have emerged to capture
di erent types of uncertainty [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]: probability theory focusing on eventuality,
fuzzy sets theory focusing on cognitive imprecision, or grey systems theory to
handle incompleteness. Existing approaches such as RELAX [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], FLAGS [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] or
POISED [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] integrate some of those theories to build reasoning engines making
the most of the partial knowledge available. Our approach is complementary and
can be used to evaluate the robustness of these systems, when they operate in
environments which were not initially taken into account at design time.
      </p>
      <p>
        An alternative approach to uncertainty is to rely on online machine
learning. Approaches such as FUSION [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] or RESIST [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] result in systems able to
learn from their inability to handle unforeseen environments. Whereas these
approaches accept to let the system e ectiveness drop for a short time (until it has
learned), our approach aims at searching, a priori , for possible challenging
environments and adjusting the reasoning engine accordingly. These two approaches
are not con icting either and could be combined to minimize for instance the
need for online learning.
      </p>
      <p>
        In contrast to the above approaches, our iterative process (cf. Fig. 1) shares
more with the ideas of agile practices [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] such as test-driven development
(TDD) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Agile practices advocate the continuous feedback from the end-users
(using more frequent and shorter development iterations). They aim at breaking
down the complexity, by using incremental development, where at each step,
developers augment the system with a small number of features, and then validate
it with the end-users. Similarly, our process also breaks down the complexity of
self-adaptation mechanisms, by gradually addressing the various axes of
uncertainty existing in the environment. To the best of our knowledge, this research
is a rst attempt to apply agile practices to self-adaptive system design.
      </p>
      <p>
        Our iterative process is also inspired by existing risk analysis methods such
as CORAS [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Risk analysis traditionally implies to identify key assets, major
threats on these assets, and possible mitigations which could minimize the
associated risks. In our process, assets are the e ectiveness and performance whilst
threats are the sources of uncertainty and mitigations are update of the
reasoning engine. To the best of our knowledge, this is also a rst attempt to combine
risk analysis and self-adaptive system design.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>This paper presented how models@runtime enables an iterative process to foster
the design of reasoning engines for self-adaptive systems operating under
certainty. This process is broken down into four steps: selection of uncertainty axis,
exploration of unforeseen environments through simulation, evaluation of
reasoning engine, followed by its potential re nement. Models@runtime appeared
to be the architectural pattern which facilitates such a coevolution of the
reasoning engine and its environments. We reported how this process is used in the
Diversify project to develop a self-repair mechanism for large scale cloud-based
systems, inspired by principles de ned in ecology about biological diversity.</p>
      <p>This research e ort is a rst step toward an automated re nement process
for self-adaptive systems. Our future work will consider the continuous design of
distributed and collaborative reasoning engines.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Luciano</given-names>
            <surname>Baresi</surname>
          </string-name>
          , Liliana Pasquale, and
          <string-name>
            <given-names>Paola</given-names>
            <surname>Spoletini</surname>
          </string-name>
          .
          <article-title>Fuzzy goals for requirements-driven adaptation</article-title>
          .
          <source>In RE</source>
          , pages
          <volume>125</volume>
          {
          <fpage>134</fpage>
          . IEEE Computer Society,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Kent</given-names>
            <surname>Beck</surname>
          </string-name>
          .
          <article-title>Test-driven development : by example</article-title>
          .
          <source>Addison-Wesley</source>
          , Boston,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gordon</surname>
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Blair</surname>
          </string-name>
          , Nelly Bencomo, and
          <string-name>
            <surname>Robert</surname>
            <given-names>B. France.</given-names>
          </string-name>
          <article-title>Models@run.time</article-title>
          . IEEE Computer,
          <volume>42</volume>
          (
          <issue>10</issue>
          ):
          <volume>22</volume>
          {
          <fpage>27</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Y.-S.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.P.</given-names>
            <surname>Chong</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.Y.</given-names>
            <surname>Tong</surname>
          </string-name>
          .
          <article-title>Mathematical and computer modelling of the pareto principle</article-title>
          .
          <source>Mathematical and Computer Modelling</source>
          ,
          <volume>19</volume>
          (
          <issue>9</issue>
          ):
          <volume>61</volume>
          {
          <fpage>80</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Deshan</given-names>
            <surname>Cooray</surname>
          </string-name>
          , Sam Malek, Roshanak Roshandel, and David Kilgore.
          <article-title>Resisting reliability degradation through proactive recon guration</article-title>
          . In Charles Pecheur, Jamie Andrews, and Elisabetta Di Nitto, editors,
          <source>ASE</source>
          , pages
          <volume>83</volume>
          {
          <fpage>92</fpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Rogerio de Lemos, Holger Giese, Hausi A. Muller, and Mary Shaw, editors.
          <source>Software Engineering for Self-Adaptive Systems</source>
          II - International
          <string-name>
            <surname>Seminar</surname>
          </string-name>
          , Dagstuhl Castle, Germany,
          <source>October 24-29</source>
          ,
          <source>2010 Revised Selected and Invited Papers</source>
          , volume
          <volume>7475</volume>
          of Lecture Notes in Computer Science. Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Rogerio de Lemos et al.
          <article-title>Software engineering for self-adaptive systems: A second research roadmap</article-title>
          . In de Lemos et al. [
          <volume>6</volume>
          ], pages
          <fpage>1</fpage>
          {
          <fpage>32</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ahmed</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Elkhodary</surname>
            , Naeem Esfahani, and
            <given-names>Sam</given-names>
          </string-name>
          <string-name>
            <surname>Malek</surname>
          </string-name>
          .
          <article-title>Fusion: a framework for engineering self-tuning self-adaptive software systems</article-title>
          .
          <source>In Gruia-Catalin Roman and Kevin J</source>
          . Sullivan, editors,
          <source>SIGSOFT FSE</source>
          , pages
          <volume>7</volume>
          {
          <fpage>16</fpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Naeem</given-names>
            <surname>Esfahani</surname>
          </string-name>
          , Ehsan Kouroshfar, and
          <string-name>
            <given-names>Sam</given-names>
            <surname>Malek</surname>
          </string-name>
          .
          <article-title>Taming uncertainty in selfadaptive software</article-title>
          .
          <source>In Tibor Gyimothy and Andreas Zeller</source>
          , editors,
          <source>SIGSOFT FSE</source>
          , pages
          <volume>234</volume>
          {
          <fpage>244</fpage>
          . ACM,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Naeem</given-names>
            <surname>Esfahani</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sam</given-names>
            <surname>Malek</surname>
          </string-name>
          .
          <article-title>Uncertainty in self-adaptive software systems</article-title>
          . In de Lemos et al. [
          <volume>6</volume>
          ], pages
          <fpage>214</fpage>
          {
          <fpage>238</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Nicolas</surname>
            <given-names>Ferry</given-names>
          </string-name>
          , Alessandro Rossini, Franck Chauvel, Brice Morin, and
          <string-name>
            <given-names>Arnor</given-names>
            <surname>Solberg</surname>
          </string-name>
          .
          <article-title>Towards model-driven provisioning, deployment, monitoring, and adaptation of multi-cloud systems</article-title>
          .
          <source>In CLOUD 2013: IEEE 6th International Conference on Cloud Computing</source>
          , pages
          <volume>887</volume>
          {
          <fpage>894</fpage>
          . IEEE Computer Society,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Malik</surname>
            <given-names>Ghallab</given-names>
          </string-name>
          , Dana Nau, and
          <string-name>
            <given-names>Paolo</given-names>
            <surname>Traverso</surname>
          </string-name>
          .
          <source>Automated Planning: Theory &amp; Practice</source>
          . Morgan Kaufmann Publishers Inc., San Francisco, CA, USA,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Mass Soldal Lund, Bjornar Solhaug, and
          <string-name>
            <given-names>Ketil</given-names>
            <surname>Stolen</surname>
          </string-name>
          .
          <article-title>Model-driven risk analysis: the CORAS approach</article-title>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Anne</surname>
            <given-names>E</given-names>
          </string-name>
          <string-name>
            <surname>Magurran and Anne E Magurran</surname>
          </string-name>
          .
          <article-title>Ecological diversity and its measurement</article-title>
          , volume
          <volume>179</volume>
          . Princeton university press Princeton,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. E. Mainsah.
          <article-title>Autonomic computing: the next era of computing</article-title>
          .
          <source>Electronics Communication Engineering Journal</source>
          ,
          <volume>14</volume>
          (
          <issue>1</issue>
          ):2{
          <issue>3</issue>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Robert Cecil Martin.
          <article-title>Agile software development: principles, patterns, and practices</article-title>
          . Prentice
          <string-name>
            <surname>Hall</surname>
            <given-names>PTR</given-names>
          </string-name>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>Peter</given-names>
            <surname>Mell</surname>
          </string-name>
          and
          <string-name>
            <given-names>Timothy</given-names>
            <surname>Grance</surname>
          </string-name>
          .
          <source>The NIST De nition of Cloud Computing. Special Publication 800-145</source>
          , National Institute of Standards and Technology,
          <year>September 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Brice</surname>
            <given-names>Morin</given-names>
          </string-name>
          , Olivier Barais, Gregory Nain, and
          <string-name>
            <surname>Jean-Marc Jezequel</surname>
          </string-name>
          .
          <article-title>Taming Dynamically Adaptive Systems with Models and Aspects</article-title>
          .
          <source>In 31st International Conference on Software Engineering (ICSE'09)</source>
          , Vancouver, Canada, May
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Sebastien</surname>
            <given-names>Mosser</given-names>
          </string-name>
          , Franck Fleurey, Brice Morin, Franck Chauvel, Arnor Solberg, and
          <string-name>
            <given-names>Iokanaan</given-names>
            <surname>Goutier</surname>
          </string-name>
          .
          <article-title>SENSAPP as a Reference Platform to Support Cloud Experiments: From the Internet of Things to the Internet of Services</article-title>
          .
          <source>In Management of Resources and Services in Cloud and Sky Computing (MICAS)</source>
          , Timisoara,
          <year>September 2012</year>
          . IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>Michael</given-names>
            <surname>Oberguggenberger</surname>
          </string-name>
          .
          <article-title>The mathematics of uncertainty: models, methods and interpretations</article-title>
          . In Wolfgang Fellin, Heimo Lessmann,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Oberguggenberger</surname>
          </string-name>
          , and Robert Vieider, editors,
          <source>Analyzing Uncertainty in Civil Engineering</source>
          , pages
          <volume>51</volume>
          {
          <fpage>72</fpage>
          . Springer Berlin Heidelberg,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>Mazeiar</given-names>
            <surname>Salehie</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ladan</given-names>
            <surname>Tahvildari</surname>
          </string-name>
          .
          <article-title>Self-adaptive software: Landscape and research challenges</article-title>
          .
          <source>TAAS</source>
          ,
          <volume>4</volume>
          (
          <issue>2</issue>
          ),
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Matej</surname>
            <given-names>Crepinsek</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shih-Hsi Liu</surname>
            , and
            <given-names>Marjan</given-names>
          </string-name>
          <string-name>
            <surname>Mernik</surname>
          </string-name>
          .
          <article-title>Exploration and exploitation in evolutionary algorithms: A survey</article-title>
          .
          <source>ACM Comput. Surv.</source>
          ,
          <volume>45</volume>
          (
          <issue>3</issue>
          ):
          <volume>35</volume>
          :1{
          <fpage>35</fpage>
          :
          <fpage>33</fpage>
          ,
          <year>July 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Jon</surname>
            <given-names>Whittle</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Peter</given-names>
            <surname>Sawyer</surname>
          </string-name>
          , Nelly Bencomo,
          <string-name>
            <surname>Betty H</surname>
          </string-name>
          . C. Cheng, and
          <string-name>
            <surname>Jean-Michel Bruel</surname>
          </string-name>
          .
          <article-title>Relax: a language to address uncertainty in self-adaptive systems requirement</article-title>
          . Requir. Eng.,
          <volume>15</volume>
          (
          <issue>2</issue>
          ):
          <volume>177</volume>
          {
          <fpage>196</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>