<!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>Reflexive and Evolutional Digital Service Ecosystems with Models at Runtime</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dhaminda B. Abeywickrama</string-name>
          <email>dhaminda.abeywickrama@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Service and Information Architectures VTT Technical Research Centre of Finland Kaitoväylä 1</institution>
          ,
          <addr-line>90570 Oulu</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Service and Information Architectures VTT Technical Research Centre of Finland Kaitoväylä 1</institution>
          ,
          <addr-line>90570 Oulu</addr-line>
          ,
          <country country="FI">Finland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Uncertainty in digital service ecosystems (DSEs) can be attributed to several factors like the dynamic nature of the ecosystem and unknown deployment environment, change and evolution of requirements, and co-evolution among ecosystem members. Managing uncertainties in DSEs is challenging, and therefore, novel and solid software architecting methods, techniques and tools are needed. Our research explores the means to handle uncertainties at the software architecture level of DSEs. In this regard, we apply valuable lessons learnt from the models at runtime (M@RT) technique. This paper proposes a novel, dynamic knowledge engineering approach to handle uncertainties in DSEs at runtime using M@RT. This uncertainty handling approach aims to identify and solve two interrelated research problems: reflexivity and evolution of the ecosystem between the architecture and running system of services. Reflexivity means that the system must have knowledge of its components to make intelligent decisions based on selfawareness. In addition, we provide tool support towards automating reflexivity and evolution. Complex state machines of M@RT that serve as a dynamic knowledgebase are modeled using executable state machines, and generation of software artifacts of the model is performed at execution time. Causal connection is maintained between the runtime models and the running system. We validate and illustrate our approach using a DSE in an ambient-assisted living environment for elderly people.</p>
      </abstract>
      <kwd-group>
        <kwd>dynamic knowledge</kwd>
        <kwd>model-driven development</kwd>
        <kwd>reflexivity</kwd>
        <kwd>evolvability</kwd>
        <kwd>uncertainty</kwd>
        <kwd>digital ecosystems</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Today the entire industrial world is transforming from a
physical world to a digital one. In this context, a new
paradigm has emerged called digital service ecosystems
(DSEs), which are open, loosely coupled, domain-clustered,
demand-driven, self-organizing agents’ environments where
each entity is proactive and responsive for its own benefit [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
In DSEs, the business stakeholders provide the most
significant driving factor, which requires digital services
(DSs) to handle uncertainty. Uncertainty in DSEs can be
attributed to several factors, such as the dynamic nature of the
ecosystem and unknown deployment environment,
composition and users; change and evolution of requirements;
and co-evolution among ecosystem members. Therefore,
managing uncertainties is a challenge, and there is a need for
      </p>
      <p>
        In the past, the concept of uncertainty has been explored
extensively by researchers in different scientific disciplines,
such as economics [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], physics and psychology. There is
extensive literature on model-based system reconfiguration
and on self-adaptive systems at the architecture level (e.g., [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). Also, there are several related works on runtime models
to address uncertainties in DASs (e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]).
However, most of these works have been limited to conceptual
frameworks or reference models. Also, to the best of our
knowledge, none of them provide concrete tool support and
case study validation especially in the context of digital
service engineering. This provides motivation for this study.
The contribution of this paper is twofold. First, this paper
proposes a novel, dynamic knowledge engineering approach
to handle uncertainties in DSEs at runtime using M@RT.
Second, it provides tool support towards automating the
engineering approach.
      </p>
      <p>
        In our approach, M@RT is a dynamic knowledgebase [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
that abstracts important information about the system, its
operational context, and requirements. The approach aims to
identify and solve two interrelated research problems. They
are: reflexivity and evolution of the DSE between architecture
and running system of services (e.g., cloud services).
Reflexivity means that the system must have knowledge of its
components to make intelligent decisions based on
selfawareness [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. To support reflexivity, we propose a set of
quality-driven, self-adaptive architectural patterns. Complex
state machines of M@RT that serve as a dynamic
knowledgebase are modeled using Enterprise Architect’s
executable state machines [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. We support evolution between
architecture and running system of cloud services using
generation of software artifacts of the model at execution time.
The runtime models and the running system are causally
(loosely) connected, so that the both abstractions evolve at the
same time. The approach is validated using a DSE, which
describes an ambient-assisted living (AAL) environment for
elderly people.
      </p>
      <p>The rest of the paper is organized as follows. Section II,
provides background information to our work. In Section III,
we propose our knowledge engineering approach using
M@RT. The case study and the application of the approach
are described in Section IV. In Section V, we present key
related work, and Section VI concludes this paper.</p>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND</title>
      <sec id="sec-2-1">
        <title>A. Definitions</title>
      </sec>
      <sec id="sec-2-2">
        <title>1) Uncertainty:</title>
        <p>
          Uncertainty [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] is a system state of incomplete or
inconsistent knowledge so that an adaptive system is unable to
know which alternative environmental or system
configurations hold at a specific point. It can be caused by
missing or ambiguous requirements, false assumptions,
unpredictable entities or phenomena in the execution
environment, and unresolvable conditions caused by
incomplete and inconsistent information. This information can
be obtained by potentially imprecise, inaccurate, and unreliable
sensors in its monitoring infrastructure [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Uncertainty and
variability are two separate, yet related notions, and in our
research, we aim to deal with uncertainty.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2) Reflexivity and Evolution:</title>
        <p>
          Reflexivity is an important characteristic of a self-managed
autonomic system, which means that the system must have
knowledge of its components, current status, capabilities,
limits, boundaries and interdependencies with other systems
and available resources [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Also, the system must be aware
of its possible configurations and how they affect specific
nonfunctional, quality requirements. In this study, we consider
reflexivity as a technique that can be exploited to support
evolution of the ecosystem.
        </p>
        <p>
          By evolution we refer to the ability of the ecosystem to
evolve in dynamic situations (e.g., see [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]). An ecosystem is
dynamic, evolving all the time as new members, services and
value networks emerge [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Therefore, to adapt to the needs
of the ecosystem, the ecosystem’s knowledge management
model should evolve too.
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>B. ADSEng Methodology and Contribution</title>
        <p>
          Previously in [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], we established several characteristics as
part of an evaluation framework to compare existing autonomic
computing approaches in DSEs. They are: top-down vs.
bottom-up approaches, decentralized control, self-* properties
and context-awareness, reflexivity, quality attributes, and
validation/case study. Later, in [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], these characteristics
corresponded to several key requirements that are significant in
a service engineering method for autonomous DSEs. In this
context, we introduced the ADSEng methodology [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], which is
a novel, systematic service engineering methodology proposed
for ecosystem-based engineering of autonomous DSs. This
integrated and model-based methodology covers from
requirements engineering to architecting, and running systems
of DSs. The current paper is based on the ADSEng
methodology. However, it is a significant step further,
presenting a dynamic knowledge engineering approach as well
as practical tool support and case study validation.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. ENGINEERING OF DYNAMIC KNOWLEDGE MODELS</title>
      <p>In this section, we describe our dynamic knowledge
engineering approach using M@RT to handle uncertainties in
DSEs at runtime. First, an overview of the engineering process
(see Fig. 1) is provided followed by a description of each step.
We use the Sparx Systems’ Enterprise Architect (13.0) case
tool towards automating the engineering process.</p>
      <sec id="sec-3-1">
        <title>A. Approach Overview</title>
        <p>
          In our approach, a runtime model is a dynamic
knowledgebase that abstracts important information about the
system, its operational context, and requirements. MAPE-K is
a reference model introduced by IBM for autonomic control
loops [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. Here, the basic monitor-analyze-plan-execute over
a knowledgebase (MAPE-K) architecture [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] of the DSE is
extended at the architecture level to use models that evolve, so
that the software system is able to better manage uncertainty.
This is realized by analyzing new properties about the
execution environment and the system itself based on
monitoring information collected at runtime. The four key
processes in the architecture - monitor, analyze, plan and
execute – can analyze the system and environmental data to
refine and extend the information stored in the runtime
models.
        </p>
        <p>Towards supporting reflexivity, we propose a set of
quality-driven, self-aware and self-adaptive architectural
patterns, which are extended MAPE-K loops with quality
assurances (see Section III-B). The goal is to use the patterns
to create and customize the dynamic knowledge models in
different domains. We model the complex state machines of
M@RT using Enterprise Architect’s executable state
machines. Evolution between architecture and running system
of cloud services is supported using generation of software
artifacts of the model at execution time. Causal connection is
maintained between runtime models and the running system.</p>
        <p>In this manner, the main steps in the dynamic knowledge
engineering process are (see steps 1-3 in Fig. 1):
(1) create dynamic knowledge models of requirements and
architecture in the example domain (see step 1b in Fig.
1). At the architecture level, this is assisted by a
collection of self-aware and self-adaptive architectural
patterns (step 1a, Fig. 1);
(2) create an executable state machine artifact to run the
knowledge models in architecture and then generate the
code and compile it (step 2, Fig. 1);
(3) execute, simulate and validate the dynamic knowledge
models (step 3, Fig. 1).</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Step 1: Create Dynamic Knowledge Models</title>
        <p>We use two types of knowledge models at the requirements
and architecture levels, respectively. They are: (i) a
KAOSbased goal model that represents the requirements; and (ii)
model-based finite state machines (FSMs) at the architecture
level. For the goal-based requirements model, a simplified
KAOS metamodel is used to represent goals where each goal is
associated with a name and a priority. FSMs, which are
embodied in the architectural patterns, describe the behavior of
the system with respect to the current goals and context. A
FSM runtime model can show the current state information of a
component during its operation.</p>
      </sec>
      <sec id="sec-3-3">
        <title>1) Architectural Patterns Collection for DSEs:</title>
        <p>
          The main step (see also [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]) for supporting reflexivity is
representing the uncertainty factors using architectural
patterns. The main goal is to use them for creating and
customizing the knowledge models in different domains. The
patterns have been modeled in Enterprise Architect using
UML templates (UML activity and state models), which can
be instantiated to a particular domain using UML 2.5 models.
Here the traditional autonomic MAPE-K loops [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] have been
extended with quality guarantees to handle uncertainty at the
software architecture level.
        </p>
        <p>
          Both decentralized and centralized feedback loop
approaches have been suggested to facilitate autonomic
behavior in adaptive systems [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. We integrate these
approaches in the patterns to exploit the benefits of both. With
this our approach aims to support both collective adaptation
and adaptation by subparts. Although centralized approaches
allow global behavior control, they contain a single point of
failure and suffer from scalability issues. Conversely,
decentralized approaches do not require any a priori
knowledge, nor do they contain a single point of failure. In this
paper, we describe two main patterns from the collection——the
autonomic DS pattern and centralized DS pattern (see Fig. 2
and Fig. 3). The former applies the decentralized feedback loop
approach while the latter applies the centralized approach.
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>a) Autonomic DS Pattern:</title>
        <p>The autonomic DS pattern (see Fig. 2), which is modeled as
a UML template, is characterized by the presence of an
explicit, external feedback loop (Autonomic Manager / AM) to
direct the behavior of the DS, which is the managed element.
This pattern exhibits self-* properties, such as self-awareness
and self-adaptation. The DS has sensors, effectors and a
representation of goals. An AM handles the adaptation of the
DS. Several AMs can be associated with the DS, each closing a
feedback loop devoted to controlling a specific adaptation
aspect of the system, and adding different levels of AMs
increases the autonomicity. Here, the novelty is that the
traditional autonomic MAPE-K loop is extended with a quality
assurance component at the architecture level for DSs. This
quality assurance component implements a QoS model that
provides QoS guarantees. It corresponds to the dynamic
knowledgebase in Fig. 1. The quality assurance component can
include three types of runtime models depending on their
subject, such as system models (i.e., abstract view of the
running system), context models (e.g., environment), and
quality requirements of the DS. During the adaptation process,
the MAPE elements of an AM interact with the quality
assurance component to obtain or update information about the
system states, environment, and quality assurance criteria.</p>
      </sec>
      <sec id="sec-3-5">
        <title>b) Centralized DS Pattern:</title>
        <p>This pattern (see Fig. 3) is characterized by a global
feedback loop, which manages a higher-level adaptation of
behavior of multiple autonomic components (e.g., two DSs in
Fig. 3). The adaptation in the centralized DS pattern is handled
by a high-level AM called a super AM. Like an AM, a super
AM also has a quality-driven, extended MAPE-K adaptation
model. This is while the single DSs are able to self-adapt their
individual behavior using their own external feedback loops in
the AMs (Fig. 3).</p>
      </sec>
      <sec id="sec-3-6">
        <title>C. Step 2: Create Executable State Machine Artifact, Generate and Compile Code</title>
        <p>Next, in the knowledge engineering process, we design the
executable state machine artifact, which is used to generate
the code for the model that can be compiled and executed (see
step 2 in Fig. 1). This artifact essentially describes the classes
and objects involved in the DSs and their AMs in the patterns,
their initial properties and relationships. It acts as the binding
script that links multiple objects together and determines how
these will communicate in a simulation at runtime.</p>
        <p>The underlying technique we explore to support evolution
between the architecture and the running system of cloud
services is generation of service software at execution time. In
DSEs, which are characterized by a high level of uncertainty,
the generation of software needs to happen at runtime as it
cannot necessarily be foreseen during design time. In this study
we use the dynamic code generation feature of the executable
state machine artifact to support the evolution between
architecture and running system of services. The automated
model transformations in the code generation process support
the causal connection between the runtime models and the
running system. This means that when the model is modified,
the running system is changed correspondingly. Thus, the two
abstractions synchronize and evolve at the same time.</p>
      </sec>
      <sec id="sec-3-7">
        <title>D. Step 3: Simulate and Validate Knowledge Models</title>
        <p>Finally, we exploit Enterprise Architect’s ability to
perform simulations with its simulation feature which allows
executing the dynamic knowledge models created (step 3, Fig.
1). As the executable state machine executes, the relevant state
machine diagrams are displayed where the active state for the
instance completing a step is highlighted and the other states
remain dimmed. The state machines can be changed at
runtime by user interaction. The simulation provides a visual
reflection of the real compile code as it is executing. When the
execution is completed the generated code can be deployed to
the target system. This code can be further modeled by the
engineer to derive the running system of cloud services.</p>
        <p>We use the debugging features of the Enterprise Architect
environment to validate the complex dynamic knowledge
models of state machines. These can be inserting simulation
breakpoints, firing waiting triggers, tools to pause and run a
simulation, and tools to examine local variables and the call
stack. Thus, it allows us to verify the correct behavior of the
generated code.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. APPLYING THE APPROACH</title>
      <p>After presenting the proposed approach, now we describe
how we have applied it to the AAL case study. The scope of
the knowledge engineering process is large. Therefore, as
applied next using the case study, this paper focuses on step 1
and step 2 to support reflexivity and evolution of DSEs
between architecture and running system of cloud services.
Simulating and validating of knowledge models (step 3) in the
case study will be addressed in a future paper.</p>
      <sec id="sec-4-1">
        <title>A. Problem Domain and Case Study</title>
        <p>
          The case study describes a DSE in digital health revolution,
which provides an AAL environment for elderly people [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]
(see Fig. 4). Advanced smart homes depend on adaptivity to
function properly [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. This can be associated with several
uncertainty factors; e.g., sensors or devices can fail, and the
behavior of the elderly person him/herself can be highly
uncertain. Therefore, in such uncertainty situations, the system
needs to satisfy the requirement in some other way. In AAL,
the DSE includes two main cloud-based services: (i) a
monitoring and security service and (ii) a diagnosis service.
The monitoring and security service utilizes different
monitoring devices to analyze the elderly person’s activities
and provides security services. This service can include several
supporting cloud services; for example, several sensor-based
monitoring services and an elderly care security service. The
service providers can be different businesses that provide
sensor services, and an elderly care security service.
Meanwhile, the diagnosis cloud service is used by a doctor or
another person (e.g., a nurse) to make a diagnosis based on
monitored data. This service can include several supporting
cloud services provided by several service providers; for
example, electric health records, health insurance and clinical
information systems.
        </p>
        <p>In this context, we describe a scenario of an elderly person
called Peter: Peter is 74 years old, and suffers from nocturnal
epileptic seizures; and he is also an alcoholic. The main goal
for Peter is to maintain health (i.e., reduce the triggering of
seizures), which can be dependent on two factors: high
alcohol level and lack of sleep due to disturbances to sleep
pattern. Several devices can be associated with several context
dimensions, such as: a waist-worn fall detector; an intelligent
bed with epileptic sensor to monitor seizures; activity
monitors to monitor sleep level; an intelligent cellar with
RFIDs to monitor the locations of alcohol containers;
intelligent mug with sensors to monitor the alcohol level
consumed.</p>
        <p>The devices——the intelligent cellar and intelligent mug——
are supporting cloud services. They are connected to the
ambient-assisted home hub unit for a more high-level handling
of sensor information and adaptation of the DSs. Thus, there
are two supporting cloud services: iCellar (i.e., RDF
tracking sensor cloud service in Fig. 4) and iMug, and the
ambient-assisted home hub unit can be considered
as a high-level service. Here, a composite DS can be the
orchestration of the iCellar and iMug DSs. The goal of the
ambient-assisted home hub unit service is to
monitor the alcohol volume of the containers in the cellar, and
right configurations is in the priority level of the low
alcohol consumption softgoal where the right
configuration has a higher priority.
alcohol volume consumed from the mug, so the maximum
alcohol intake level is not exceeded. In this example, we
assume that there is a single container in the iCellar. Table
1 summarizes the main goals of these cloud services and their
associated uncertainty factors.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Applying the Approach to Case Study</title>
      </sec>
      <sec id="sec-4-3">
        <title>1) Create Dynamic Knowledge Models: a) Requirements Model:</title>
        <p>In the AAL case study, we use KAOS-based goal models to
represent the requirements, i.e., goals (functional) and softgoals
(non-functional) of the scenario. Fig. 5 provides an excerpt of a
goal graph created to mitigate uncertainties. There the top-level
goal is refined as a goal lattice in which branches and goals are
refined into expectations and requirements. The main goal for
Peter is to maintain his health by avoiding triggering of
seizures. In the goal model, KAOS obstacles are used to
represent the uncertainty factors, e.g., Peter's behavior. More
specifically, it can happen that Peter forgets to control alcohol
intake. That is, it is uncertain whether Peter will avoid high
alcohol intake; he could forget to control drinking and the
effect could mean he exceeds alcohol intake, becomes
intoxicated and eventually unhealthy.</p>
        <p>As stated in Section III-B, a simplified KAOS metamodel is
used to represent goals where each goal is associated with a
name and a priority. The goal priorities can be affected by
context changes, thereby affecting tasks execution by the user
(e.g., Peter) or entity (e.g., iCellar, iMug or
ambientassisted home hub unit) at runtime. The system
depending on the goal priority and the relation between the
goals weighs the requirements during task execution and
selects a set of tasks to be performed. This goal configuration
graph for the ambient-assisted home hub unit
service is shown in Fig. 6. The difference between the left and</p>
        <p>Requirements: goal model to mitigate uncertainties in AAL.</p>
        <p>Fig. 6.</p>
        <p>Two goal configurations for the requirements of the
ambient</p>
        <p>assisted home hub unit service.</p>
      </sec>
      <sec id="sec-4-4">
        <title>b) Architecture Model:</title>
        <p>We now describe the architectural models realized
applying our approach to simulate several feedback loop
structures in the iCellar-iMug DSs composition of the
AAL case study (see Fig. 7). These models are created using
the patterns presented in Section III-B. In this study, UML 2.5
activity models and state machines have been used as the
primary notation to model the behavior of the loops. A
feedback loop provides the interplay between flow (control or
data) and actions on the flows.</p>
        <p>One of our main motivations of the present research is to
address uncertainty. To this end, the approach and the
simulation scenario add unexpected context information to
model uncertainty using state machines. To address
uncertainty, the monitoring needs to be context-aware. The
analysis phase then reasons using new (unknown) context
information and interprets how the goals are affected, thus
planning for the system to cope with such changes.
Managed Elements and Autonomic Managers: There are
two managed elements (DSs) in the AAL case study example:
DigitalService_ICellar and
DigitalService_IMug (Fig. 7). The two AMs—
AutonomicManager_ICellar and
AutonomicManager_IMug——close separate,
decentralized feedback loops to handle the adaptation of
alcohol volume in container and alcohol volume in mug (and
spilled volume), respectively. Also, there is a high-level AM
called a super AM
(SuperAutonomicManager_AmbientAssistedHome
HubUnit) that closes a separate, centralized feedback loop.
Here, this super AM handles the adaptation of alcohol volume
in both the iCellar and the iMug. As stated in Section
IIIB, a super AM can manage the adaptation of multiple SCs.
This example implements and integrates both decentralized
and centralized feedback control loop techniques using the
two patterns——autonomic DS pattern and
centralized DS pattern. In the example, the runtime
model is now a goal model with constraints, an environment
model, and an initial behavior model in the form of FSMs.</p>
        <p>The resolving of uncertainties at runtime by the different
phases (i.e., monitoring, planning, analyzing and executing) of
the extended MAPE-K loop architecture is explained next.
Monitoring: The monitoring process has two main tasks:
monitoring and updating of runtime models. It measures raw
data through sensors (e.g., collect alcohol volume in
Monitor of AutonomicManager_ICellar, Fig. 8)
about the current state and/or occurring events of the system,
the context, and the requirements (goals). It checks for
changes of goals, which can be changed by the user or the
system itself. The monitoring process updates the runtime
model that represents knowledge about the state, context, and
requirements (change of goals).</p>
        <p>Analyzing: There are two main tasks in this process: (i) it
gathers runtime models and interprets data collected by the
monitoring process against goals and constraints; and (ii)
detects system and environmental changes that may need
adaptation. The analyze process decides that a behavior
adaptation is required to satisfy the detected goal changes. In
the example, this can be gathering and interpreting alcohol
volume data from the runtime model and checking against the
goals to detect changes that require adaptation (see Analyze
of AutonomicManager_ICellar, Fig. 8).</p>
        <p>Planning: The planning process reads the runtime model
enhanced by the analysis process. Then some reasoning is
performed to identify how the running system should be best
adapted to changes of the system, context, and requirements.
The planned changes can be in the form of a runtime model. In
the example, the high availability softgoal of the
ambient-assisted home hub unit service
(SuperAutonomicManager_AmbientAssistedHome
HubUnit) has a much high priority than the softgoal low
alcohol consumption (see Fig. 6, left). Therefore, the
planning step for that component can generate a new
iCellar
Digital Service
(Managed
Element)
Autonomic
Manager for
iCellar
behavioral model or adapt the existing one (see M@RT state
machines in Fig. 9, top). Here, there is a reduced alcohol
consumed level safety margin where the critical behavior is
entered only if the alcohol level is greater than 80. The
ambient-assisted home hub unit continues to
perform its tasks according to the specialized state machine
until goals changed by the user or system itself. Let us assume
that the goals change to the situation as depicted in the second
configuration (see Fig. 6, right). Now the low alcohol
consumption goal has a higher priority. The monitoring
step of the loop senses this change of goals, and updates it in
the runtime model. The analyze activity decides that a behavior
adaptation is necessary and the planning step tries to fulfill the
new constraints. In this case, the MAPE loop will generate or
adapt the existing state machine (see M@RT’ state machines in
Fig. 9, bottom). The new behavioral model uses a higher safety
margin for alcohol consumed level (critical stage is entered
when it is greater than 90). In addition, it introduces a new state
called Error to handle the critical behavior of the state
machine by adding additional operations (functions) through
error handling extensions in the ambient-assisted
home hub unit service.</p>
        <p>Executing: The Execution process directly applies a set of
changes for the running system stored in some runtime models
by the planner. In this example, it can be notifications sent on
over alcohol consumption and to control drinking.</p>
        <p>2) Create Executable State Machine Artifact, Generate
and Compile Code:</p>
        <p>As mentioned in Section III-C, after creating the classes
Runtime
model before
goals change
’
’</p>
        <p>Runtime
model after
goals change</p>
        <p>M@RT of the ambient-assisted home hub unit service in AAL.
and state machines on knowledge models then we design the
executable state machine artifact
(AALCaseStudy_ExecutableArtifact, Fig. 10). This
artifact describes the classes and objects involved in the
example (i.e., the DSs and their AMs in the patterns). They
can also describe their initial properties and relationships. We
define initial state of instance by assigning property values to
the class attributes. For example, see property values assigned
to DS_ICellar, DS_IMug and
SAM_AmbientAssistedHomeHub. Also, we define how
each property can reference other properties by defining
relationships based on the class model that they are instances
of.</p>
        <p>Afterwards, using the executable state machine artifact
created in the example, we generate the code in Java and
compile it. See Fig. 10 for system output with code
successfully generated for all classes. The generation of code
from the executable state machine artifact supports causal
connection between the runtime models and the running
system, thus both evolving at the same time. Next, the
compiled code can be executed, simulated and validated using
the simulation and debugging features of Enterprise Architect.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>V. RELATED WORK AND DISCUSSION</title>
      <p>
        A key research area related to our study is model-based
system reconfiguration. Rainbow framework [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a seminal
work on architecture-based self-adaptation. It extends
architecture styles to provide reusable infrastructure with
mechanisms to specialize the infrastructure to the needs of
specific systems. Braberman et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] proposed a
threelayered reference architecture called MORPH for
architecturebased adaptation that involves runtime change of system
configuration and behavior update. Meanwhile, Morin et al.
[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] proposed an approach that combines aspect-oriented and
model-driven techniques to limit the number of artifacts
needed to realize dynamic variability. However, these works
Executable state machine artifact
Classes
      </p>
      <p>System Output</p>
      <p>Generate Code</p>
      <p>Fig. 10. Executable state machine artifact and code generation.
are neither based on M@RT explicitly nor target digital
service ecosystems.</p>
      <p>
        Maes [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] described one of the pioneering works on
reflection with respect to object-oriented programming
languages. The author defines a computational system
causally connected to its domain and a change in its domain is
reflected on it and vice versa. The Twin Peaks model [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]
deals with a similar notion to reflexivity proposed here. It is an
iterative process that develops progressively more detailed
software requirements and architectural specifications
concurrently. Requirement reflection [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] supports runtime
representation of requirements by making requirements
available as runtime objects for DASs. Bencomo [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]
classifies uncertainty and adaptations that a self-adaptive
system need to face. There to deal with uncertainty,
goaloriented requirements modeling has been extended with the
RELAX language. The goal of their work is to manage
uncertainty primarily at the requirements level.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], the authors have proposed a taxonomy of potential
sources of uncertainty and techniques for mitigating them in
the requirements, design, and execution phases of DASs. In
[
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], the authors present a goal-based modeling approach to
develop requirements of an adaptive system with
environmental uncertainty. While our technique of handling
uncertainties using a KAOS-based goal-model follows [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ],
our work differs from [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] in that we handle uncertainty using
M@RT at the architecture level as well.
      </p>
      <p>
        Adaptation patterns have been explored as a technique to
provide self-adaptation in several works (e.g., [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]). However,
the novelty is the patterns defined here for DSEs contain a key
quality assurance component for providing quality guarantees
in addition to the adaptation handling MAPE elements.
      </p>
      <p>
        There are several works (e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]) that use
runtime models as a technique to manage uncertainties and
provide assurance in DASs. The authors in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] propose
extensions to the MAPE-K loop architecture with runtime
models to cope with uncertainty at runtime. In [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], the authors
present a conceptual reference model called MAPE-MART,
which extends the traditional MAPE-K model with quality
assurance mechanisms for self-adaptation. The notion of
dynamic knowledgebase was originally motivated by the work
in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] where the authors identify a runtime model as a dynamic
knowledgebase. However, the MAPE-K extensions proposed
in their approach are only at the conceptual level.
      </p>
      <p>
        DYNAMICO (Dynamic Adaptive, Monitoring and Control
Objectives model) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is a reference model for engineering
context-based self-adaptive software composed of feedback
loops. It aims to guarantee the coherence of adaptation
mechanisms with respect to changes in adaptation goals and
monitoring mechanisms. Tamura et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] present a proposal
for including software validation and verification (V&amp;V)
operations explicitly in MAPE-K loops for achieving software
self-adaptation goals. They discuss runtime V&amp;V enablers,
i.e., requirements at runtime, models at runtime, and dynamic
context monitoring, for providing effective support to
materialize V&amp;V assurances for self-adaptation.
      </p>
      <p>
        To summarize, extensive literature exist on model-based
system reconfiguration and on self-adaptive systems in the
architecture level (e.g., [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). Also, there are several
approaches on runtime models to address uncertainties in
DASs (e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]). However, most of these have
been limited to conceptual frameworks. Also, to the best of our
knowledge, none of them provide concrete tool support and
case study validation especially in the context of DSEs. We
have presented an approach for supporting M@RT in DSEs
that provide reflexivity and evolution.
      </p>
    </sec>
    <sec id="sec-6">
      <title>VI. CONCLUSIONS AND FUTURE WORK</title>
      <p>In this paper, we presented a dynamic knowledge
engineering approach to handle uncertainties in DSEs at
runtime using the M@RT technique. The approach aims to
solve two interrelated research problems, i.e., reflexivity and
evolvability of the ecosystem between the architecture and the
running system of services. Complex state machines of M@RT
that serve as a dynamic knowledgebase have been modeled
using executable state machines, and the generation of software
artifacts has been performed at execution time. Causal
connection has been maintained between the runtime models
and the running system to support evolution. We presented an
example involving a DSE in an AAL environment for elderly
people for validating the approach.</p>
      <p>The aim of our work is not to enhance model-driven
architecture but to create an approach that can be applied to
digital service engineering and is based on service architecture.
The approach needs to be easy to understand as the target
audience is software engineers and not specialists in autonomic
computing. Currently, by using the capability of Enterprise
Architect, our approach can automate the forward
synchronization of the causal connection between the
architecture and running system. At present, we are exploring
techniques for supporting the backward synchronization from
running system of cloud services to the architectural models.
Our future work will include completing the building of the
collection of quality-driven adaptation patterns. Also, so far,
our modeling has considered only a single user in the
ecosystem (i.e., elderly person). This needs to be applied to
multiple users of the ecosystem to further validate our
approach. Finally, in order to provide a true assessment of our
knowledge engineering approach, developing industrial case
studies with empirical cases is significant.</p>
      <p>ACKNOWLEDGMENT</p>
      <p>This work was carried out during the tenure of an ERCIM
“Alain Bensoussan” Fellowship Programme. This research has
also been supported by a grant from Tekes—the Finnish
funding agency for technology and innovation, and VTT as
part of the Digital Health Revolution Programme.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>H.</given-names>
            <surname>Boley</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <article-title>"Digital ecosystems: principles and semantics,"</article-title>
          <source>in Proceedings of the International Conference on Digital EcoSystems and Technologies (DEST '07)</source>
          , Cairns, Australia,
          <year>2007</year>
          , pp.
          <fpage>398</fpage>
          -
          <lpage>403</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.</given-names>
            <surname>Giese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Bencomo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Pasquale</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Ramirez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Inverardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wätzoldt</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Clarke</surname>
          </string-name>
          ,
          <article-title>"Living with uncertainty in the age of runtime models," in Models@run.time: Foundations, Applications, and</article-title>
          <string-name>
            <surname>Roadmaps</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          et al, Eds. Cham: Springer,
          <year>2014</year>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>100</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Laffont</surname>
          </string-name>
          ,
          <source>The Economics of Uncertainty and Information</source>
          , The MIT Press,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Garlan</surname>
          </string-name>
          , S. Cheng, A.
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Schmerl</surname>
            and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Steenkiste</surname>
          </string-name>
          ,
          <article-title>"Rainbow: architecture-based self-adaptation with reusable infrastructure,"</article-title>
          <source>Computer</source>
          , vol.
          <volume>37</volume>
          , pp.
          <fpage>46</fpage>
          -
          <lpage>54</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>V.</given-names>
            <surname>Braberman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D</given-names>
            <surname>'Ippolito</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kramer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Sykes</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Uchitel</surname>
          </string-name>
          ,
          <article-title>"MORPH: A reference architecture for configuration and behaviour selfadaptation,"</article-title>
          <source>in Proceedings of the 1st International Workshop on Control Theory for Software Engineering</source>
          , Bergamo, Italy,
          <year>2015</year>
          , pp.
          <fpage>9</fpage>
          -
          <lpage>16</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B. C.</given-names>
            <surname>Cheng</surname>
          </string-name>
          , K. Eder,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Grunske</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Litoiu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pelliccione</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Perini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Qureshi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Schneider</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Trollmann</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Villegas</surname>
          </string-name>
          ,
          <article-title>"Using models at runtime to address assurance for selfadaptive systems," in Models@run.</article-title>
          <string-name>
            <surname>Time</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          et al, Eds. Springer International Publishing,
          <year>2014</year>
          , pp.
          <fpage>101</fpage>
          -
          <lpage>136</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>N. M.</given-names>
            <surname>Villegas</surname>
          </string-name>
          , G. Tamura,
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Duchien</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Casallas</surname>
          </string-name>
          ,
          <article-title>"DYNAMICO: A reference model for governing control objectives and context relevance in self-adaptive software systems," in Software Engineering for Self-Adaptive Systems II: International Seminar</article-title>
          , Dagstuhl Castle, Germany,
          <source>October 24-29</source>
          ,
          <year>2010</year>
          <article-title>Revised Selected</article-title>
          and
          <string-name>
            <given-names>Invited</given-names>
            <surname>Papers</surname>
          </string-name>
          , R. de Lemos et al, Eds. Springer,
          <year>2013</year>
          , pp.
          <fpage>265</fpage>
          -
          <lpage>293</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Tamura</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. M.</given-names>
            <surname>Villegas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Sousa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Becker</surname>
          </string-name>
          , G. Karsai,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mankovskii</surname>
          </string-name>
          , M. PezzÃ¨,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schäfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Tahvildari</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Wong</surname>
          </string-name>
          ,
          <article-title>"Towards practical runtime verification and validation of selfadaptive software systems," in Software Engineering for Self-Adaptive Systems II: International Seminar</article-title>
          , Dagstuhl Castle, Germany,
          <source>October 24-29</source>
          ,
          <year>2010</year>
          <article-title>Revised Selected</article-title>
          and
          <string-name>
            <given-names>Invited</given-names>
            <surname>Papers</surname>
          </string-name>
          , R. de Lemos et al, Eds. Springer,
          <year>2013</year>
          , pp.
          <fpage>108</fpage>
          -
          <lpage>132</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D. B.</given-names>
            <surname>Abeywickrama</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Ovaska</surname>
          </string-name>
          ,
          <article-title>"ADSEng: a model-based methodology for autonomous digital service engineering,"</article-title>
          <source>in Proceedings of the 8th International ACM Conference on Management of Digital EcoSystems (MEDES'16)</source>
          , Hendaye, France,
          <year>2016</year>
          , pp.
          <fpage>34</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Sparx</given-names>
            <surname>Systems Enterprise Architect</surname>
          </string-name>
          . Executable State Machines [Online]. Available: http://www.sparxsystems.com/resources/userguides/simulation/executable-state-machines.pdf. Last Accessed:
          <volume>6</volume>
          /7/2017.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Ramirez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. C.</given-names>
            <surname>Jensen</surname>
          </string-name>
          and
          <string-name>
            <given-names>B. H. C.</given-names>
            <surname>Cheng</surname>
          </string-name>
          ,
          <article-title>"A taxonomy of uncertainty for dynamically adaptive systems,"</article-title>
          <source>in Proceedings of the 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'12)</source>
          , Zurich, Switzerland,
          <year>2012</year>
          , pp.
          <fpage>99</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. O</given-names>
            <surname>'Brien</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Klein</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wood</surname>
          </string-name>
          ,
          <article-title>"Autonomic computing,"</article-title>
          , Carnegie Mellon University, USA, Rep. Report No.: CMU/SEI-2006
          <string-name>
            <surname>-</surname>
          </string-name>
          TN-006
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>G.</given-names>
            <surname>Briscoe and P. De Wilde</surname>
          </string-name>
          ,
          <article-title>"Digital ecosystems: evolving serviceorientated architectures,"</article-title>
          <source>in Proceedings of the 1st Bio-Inspired Models of Network, Information and Computing Systems Conference (BIONETICS</source>
          <year>2006</year>
          ),
          <source>Madonna di Campiglio</source>
          ,
          <year>2006</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Immonen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Ovaska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kalaoja</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Pakkala</surname>
          </string-name>
          ,
          <article-title>"A service requirements engineering method for a digital service ecosystem,"</article-title>
          <source>Service Oriented Computing and Applications</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>172</lpage>
          2016.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>D. B.</given-names>
            <surname>Abeywickrama</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Ovaska</surname>
          </string-name>
          ,
          <article-title>"A survey of autonomic computing methods in digital service ecosystems,"</article-title>
          <source>Service Oriented Computing and Applications</source>
          , vol.
          <volume>11</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>31</lpage>
          2017.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Kephart</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Chess</surname>
          </string-name>
          ,
          <article-title>"The vision of autonomic computing,"</article-title>
          <source>Computer</source>
          , vol.
          <volume>36</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>50</lpage>
          2003.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>T.</given-names>
            <surname>Haupt</surname>
          </string-name>
          ,
          <article-title>"Towards mediation-based self-healing of data-driven business processes,"</article-title>
          <source>in Proceedings of the 7th International Symposium on Software Engineering for Adaptive</source>
          and
          <string-name>
            <surname>Self-Managing</surname>
            <given-names>Systems</given-names>
          </string-name>
          , Zurich, Switzerland,
          <year>2012</year>
          , pp.
          <fpage>139</fpage>
          -
          <lpage>144</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>B.</given-names>
            <surname>Morin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Nain and J. M. Jezequel</surname>
          </string-name>
          ,
          <article-title>"Taming dynamically adaptive systems using models and aspects,"</article-title>
          <source>in Proceedings of the IEEE 31st International Conference on Software Engineering</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>122</fpage>
          -
          <lpage>132</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>P.</given-names>
            <surname>Maes</surname>
          </string-name>
          ,
          <article-title>"Concepts and experiments in computational reflection,"</article-title>
          <source>in Proceedings of the Object-oriented Programming Systems, Languages and Applications Conference (OOPSLA'87)</source>
          , Orlando, Florida, USA,
          <year>1987</year>
          , pp.
          <fpage>147</fpage>
          -
          <lpage>155</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>B.</given-names>
            <surname>Nuseibeh</surname>
          </string-name>
          ,
          <article-title>"Weaving together requirements and architectures,"</article-title>
          <source>Computer</source>
          , vol.
          <volume>34</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>115</fpage>
          -
          <lpage>117</lpage>
          , mar
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bencomo</surname>
          </string-name>
          ,
          <article-title>"Requirements for self-adaptation," in Generative and Transformational Techniques in Software Engineering IV, R</article-title>
          . Lämmel,
          <string-name>
            <given-names>J.</given-names>
            <surname>Saraiva</surname>
          </string-name>
          and J. Visser, Eds. Berlin Heidelberg: Springer,
          <year>2013</year>
          , pp.
          <fpage>271</fpage>
          -
          <lpage>296</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>B. C.</given-names>
            <surname>Cheng</surname>
          </string-name>
          , P. Sawyer,
          <string-name>
            <given-names>N.</given-names>
            <surname>Bencomo</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          ,
          <article-title>"A goal-based modeling approach to develop requirements of an adaptive system with environmental uncertainty," in Model Driven Engineering Languages and Systems, A. Schürr and B</article-title>
          . Selic, Eds. Berlin Heidelberg: Springer,
          <year>2009</year>
          , pp.
          <fpage>468</fpage>
          -
          <lpage>483</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>D. B. Abeywickrama</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Hoch</surname>
            and
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Zambonelli</surname>
          </string-name>
          ,
          <article-title>"Engineering and implementing software architectural patterns based on feedback loops,"</article-title>
          <source>Scalable Computing: Practice and Experience</source>
          , vol.
          <volume>15</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>291</fpage>
          <lpage>2014</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>