<!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>Reflecting on the past and the present with temporal graph-based models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Antonio García-Domínguez</string-name>
          <email>a.garcia-dominguez@aston.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nelly Bencomo</string-name>
          <email>nelly@acm.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Luis H. Garcia Paucar</string-name>
          <email>a.garcia-dominguez@aston.ac.uk</email>
          <email>garciapl@aston.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Self-explanation, Temporal Graph Models, Runtime models, Self-</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>SEA, SARI, Aston University</institution>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>adaptation</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <abstract>
        <p>Self-adaptive systems (SAS) need to reflect on the current environment conditions, their past and current behaviour to support decision making. Decisions may have diferent efects depending on the context. On the one hand, some adaptations may have run into dificulties. On the other hand, users or operators may want to know why the system evolved in a certain direction. Users may just want to know why the system is showing a given behaviour or has made a decision as the behaviour may be surprising or not expected. We argue that answering emerging questions related to situations like these requires storing execution trace models in a way that allows for travelling back and forth in time, qualifying the decision making against available evidence. In this paper, we propose temporal graph databases as a useful representation for trace models to support self-explanation, interactive diagnosis or forensic analysis. We define a generic meta-model for structuring execution traces of SAS, and show how a sequence of traces can be turned into a temporal graph model. We present a first version of a query language for these temporal graphs through a case study, and outline the potential applications for forensic analysis (after the system has finished in a potentially abnormal way), self-explanation, and interactive diagnosis at runtime.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>CCS CONCEPTS</title>
      <p>• Software and its engineering → Software system models;</p>
      <sec id="sec-1-1">
        <title>Extra-functional properties; Designing software; • Computing methodologies;</title>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>INTRODUCTION</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ], it is argued that self-explanation shown by the running
system helps someone diagnosing the behaviour of the system to
analyze and trace past actions, helping fix potential faults and
fostering the trust of the end users. To enable these capabilities, we
argue that self-adaptive systems should be equipped with
traceability management facilities and ofer temporal links to provide (i)
the impacts of the adaptation actions over the quality properties
of the system over time and (ii) the history of the decisions of the
system and the evidence that supports the decisions made with the
environmental conditions observed.
      </p>
      <p>In this paper we ofer the first contributions towards allowing the
system to support explanations to operators and end users based on
a generic meta-model. Specifically, we define a generic meta-model
for structuring execution traces of SAS, and show how a sequence
of traces can be turned into a temporal graph model. We present a
ifrst version of a query language for these temporal graphs based on
specific cases related to a case study. Our solution relies on temporal
model-based graphs that abstracts decisions, evidence collected and
their corresponding estimated impacts on quality properties of the
system. We foresee two potential applications of our approach:
forensic analysis of SAS once the system has finished, and
selfexplanation supported by the self-adaptive system at runtime.</p>
      <p>The paper is organised as follows. Section 2 presents the basic
concepts in self-explanation and temporal graphs needed to
understand the rest of the text. Section 3 describes our proposed approach
for creating frameworks for reusable self-explanation, and outlines
our proof of concept implementations of the key components.
Section 4 presents a case study on an existing self-adaptive system,
together with a number of time-aware queries targeted at users
and developers. Section 5 relates this work to others in the fields
of self-explanation and model versioning. Section 6 concludes the
paper with some general remarks and our lines of future work.
2</p>
    </sec>
    <sec id="sec-3">
      <title>BACKGROUND</title>
      <p>This section will present some of the basic concepts that underlie
our proposal: the need for self-explanation in self-adaptive system,
and our specific choice among the various definitions available in
the literature for temporal graphs.
2.1</p>
    </sec>
    <sec id="sec-4">
      <title>Self-explanation and diagnosis in self-adaptive systems</title>
      <p>
        Our increasing reliance on software systems has made self-adaptation
a expected capability. However, self-adaptation actions may run
into problems or unexpected behaviour due to uncertainty in the
environment [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Therefore, end users may require explanation
about the reasons the system is showing the current behaviour
and specifically why it has made particular adaptations actions
that were not expected. Further, in case of a failure, the operators
may perform diagnosis during runtime, or forensic studies after
the system has terminated, to therefore identify the origins of the
failure. Surprisingly, this area of research has been rather limited
with scarce research eforts. We describe some of the few initiatives
below.
      </p>
      <p>
        Early work has been done by Roth-Berghofer et al [
        <xref ref-type="bibr" rid="ref28 ref7">7, 28</xref>
        ] on
Explanation-aware Computing. The main idea was to help
designers and engineers to create explanations for users. The explanations
Bob
      </p>
      <p>owns
ti</p>
      <sec id="sec-4-1">
        <title>Eve friend</title>
        <p>
          Video
key:
node: 1
time: i
value:
name: Eve
friend: [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
key:
node: 2
time: i
value:
description: Video
ti+1
        </p>
        <p>Bob</p>
        <p>
          Video
key:
node: 3
time: i
value:
name: Bob
owns: [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]
friend: [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
copy-on-write
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Eve friend</title>
      </sec>
      <sec id="sec-4-3">
        <title>Eve friend</title>
        <p>
          watched owns
watched owns
ti+2
Video
key:
node: 1
time: i+1
value:
name: Eve
friend: [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
watched:[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]
key:
node: 4
time: i+2
value:
name: Alice
friendReq: [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>Bob friendReq Alice</title>
        <p>time
temporal
graph
state
chunks
should cover why specific services were recommended and how
the system infers that the end user will agree, and therefore
maintain the end user satisfied by the recommendations. In their work
explanation generation was an aim.</p>
        <p>
          More recently, the need of self-explanation in self-adaptive
systems was argued in [
          <xref ref-type="bibr" rid="ref29 ref3 ref31">3, 29, 31</xref>
          ]. The authors claim the behaviour of
self-adaptive systems is emergent, and means that the behaviour
exposed by the running system may be seen as unexpected by its
end users or its developers. They further argue that trust in the
system and the resolution of the surprising behaviour can only be
achieved if a self-adaptive system is also capable of self-explaining
itself [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]. In [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] we presented how traceability (i.e. following the
life of a requirement) and versioning (i.e. keeping track of how a
specific artifact evolved over time) are needed for self-explanation
and diagnosis. More recently, in [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], the authors present a
temporal model to support interactive diagnosis of adaptive Systems.
The authors describe a temporal data model to represent, store and
query decisions as well as their relationship with the context,
requirements, and adaptation actions. Self-explanation and diagnosis
support is still a young research area that needs more research
eforts.
2.2
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Temporal graphs</title>
      <p>A graph is a well-understood concept in computer science: in its
most basic form, it is a collection of nodes with edges connecting
them, which may be directed or undirected. There is a number of
ways to extend the concept of a graph with the time dimension: in
this section we will present three, one of which is the base for our
proposal.</p>
      <p>
        Kostakos [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] was one of the first to use the term temporal graph,
as a graph encoding of a temporal dataset of events. Kostakos’
proposal includes an example where the email exchanges between
a number of people through time are transformed into a temporal
graph like the one in Figure 1 in three steps:
(1) One node is created per person and point in time when it
sent an email: a person A would have nodes At1, At2 and so
on.
(2) Directed edges are used to link the various nodes of a person
into a sequence. The edges have weights equal to the time
elapsed between the two timepoints.
(3) Unweighted directed edges are used to link people who
exchanged emails at a specific timepoint: for instance, an edge
from At3 to Bt3 means that at timepoint 3, A sent an email
to B.
      </p>
      <p>This representation lends itself well to variants of traditional
graph metrics, such as temporal distance between two people, or
the temporal availability of a path from one person to another (i.e.
whether there is a chain of emails from one person to another while
considering time ordering). It uses discrete time, where timepoints
act as timeslices and events are assumed to be instantaneous.</p>
      <p>
        In a later survey of temporal networks by Holme and
Sarämaki [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], this type of graph with instantaneous edge activations is
called a contact sequence, and another type of temporal network is
identified: interval graphs, where edges are active over a set of time
intervals rather than at specific timepoints. Holme and Sarämaki
mentioned in the same survey how the use of temporal networks
was becoming common across multiple disciplines, and no
standardized notation had been set out yet.
      </p>
      <p>
        Regardless, these two previous works consider temporal graphs
to be rearrangements of a sequence of events between persistent
entities, which may or may not be instantaneous. In contrast,
Hartmann et al. consider temporal graphs as attributed labelled graphs1
whose state evolves over time [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In the most naive approach,
one would think of simply storing each version of a time-evolving
graph as separate snapshots, and to visit each snapshot as needed.
Unfortunately, the space requirements for such a naive solution
would skyrocket as we increase the number of timepoints, and the
time needed to visit the various versions would raise as well. In
the same paper, Hartmann et al. specifically considered Internet
of Things devices and cyber-physical systems, where a network of
sensors may be picking up readings frequently over a long period
of time, at diferent rates.
      </p>
      <p>Hartmann et al. proposed a more eficient data model and storage
mechanism for these temporal graphs, and made it available as the
1Attributed graphs have key-value pairs in their nodes and edges, and labelled graphs
classify nodes and edges into equivalence sets, e.g. “person” nodes and “emailed” edges.
Neo4j is a well-known implementation of this data structure.
Greycat open source project2. In this data model (shown in Figure 2),
the graph is stored as a collection of nodes, which are conceptual
identifiers that are mapped to specific state chunks depending on
the world and timepoint chosen to visit it. Nodes have a lifespan
between two specific timepoints, and within that lifespan they may
take on a sequence of state chunks. Each state chunk appears at a
specific timepoint and overrides any previous state chunk.</p>
      <p>In the example in Figure 2, during timepoint i + 1 a “watched”
edge is created from “Eve” to “Video”, and in i + 2 “Alice” enters
the graph and posts a “friendReq” to “Bob”. Instead of storing the
three full graphs outright, we only create new state chunks for “Eve”
and “Alice” as needed, using a copy-on-write style. State chunks are
keyed by node, time and (in Greycat) by world. This third coordinate
makes it possible to “fork” the graph into multiple branching paths,
which enables what-if analyses.</p>
      <p>The approach presented in this paper adopts the data model by
Hartmann et al. of an evolving labelled attributed graph. If we can
turn the models that the system operates upon into this type of
temporal graphs, we could allow the system to reflect on what it
has been doing in the long and the short term, and provide clear
explanations about its history to the user.
3</p>
    </sec>
    <sec id="sec-6">
      <title>PROPOSED APPROACH</title>
      <p>Our end goal is to develop a generic and reusable framework to
allow self-adaptive systems using the models@run.time approach
to reflect upon their past execution and to improve the explanations
provided to the users about their behaviour. In this section we will
describe the various components that we see as necessary to achieve
this goal. The next section will present an initial case study for a
SAS which must choose between multiple configurations.
3.1</p>
    </sec>
    <sec id="sec-7">
      <title>Problem-independent execution trace models</title>
      <p>
        Self-adaptive systems are generally built as feedback loops (e.g.
those following the MAPE-K architecture [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]). At each timepoint
or time slice, observations are made and analysed, then future
behaviour is planned, and those plans are executed. Since we want
to make the queries on the execution history reusable, the
history must be expressed in a language that can be reused across
multiple problems (e.g. network management and smart grids).
Whether the language could be further reused across multiple types
of self-adaptive systems would require further research. It may be
necessary to allow extending these metamodels to accommodate
algorithm-specific details.
      </p>
      <p>As an example of a potential execution trace metamodel for
self-adaptive systems that need to switch between multiple
conifgurations, consider the metamodel shown in Figure 3. At the top
level, the Log for a time slice records the requested non-functional
requirements as NFR objects (which have specific satisficement
thresholds between 0 and 1), together with the Metrics to be
measured to check their satisficement, and the alternative Actions
that can be taken. These are used in the various Decisions that
must be taken by the system. The system is pre-configured with a
RewardTable linking the satisfaction of certain NFR with certain
Actions to a reward value. These rewards may evolve over time.
2https://github.com/datathings/greycat</p>
      <p>Each Decision is based on an Observation of the environment,
which produces a set of Measurements of the Metrics. In this
version of the language we do not include specific values, but rather
between which of the various Thresholds the value was. For
instance, if we had three thresholds x and y with values 10 and 20,
position 0 would be for x &lt; 10, position 1 would be 10 ≤ x &lt; 20,
and position 2 would be x ≥ 20. Using these measurements, the
system would derive a set of beliefs about the satisficement of the NFR
and the value of the diferent Actions, and finally pick a specific
Action from the Decision.
3.2</p>
    </sec>
    <sec id="sec-8">
      <title>Transparent temporal graph storage</title>
      <p>
        The next part of the approach is to store the models themselves
in a temporal graph to facilitate querying. In the literature, there
are essentially two approaches to integrate graph databases with
modelling technologies: changing the storage layer of the system
directly (as implemented by NeoEMF [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]), or having an external
system watch the existing storage and update the graph when
changes are detected (as done by our Hawk [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] tool).
      </p>
      <p>
        Either option is valid, but we chose Hawk as it had a number of
advantages over NeoEMF for this problem. First, using Hawk does
not require modifying existing systems: Hawk has a
componentbased architecture, making it possible to change the database
technology, graph updating algorithms and supported model storage
locations to fit the situation. In addition, Hawk has been specifically
designed to detect the parts of a model that have changed, and only
changes the subgraph that is impacted by these changes [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>In our implementation, we have extended Hawk with the ability
to use Greycat as a backend. We have also extended Hawk with
a time-aware version of the incremental graph update algorithm,
which tells time-aware backends (i.e. Greycat) to “travel in time” to
the timepoint when the change has been introduced before applying
the detected changes. This allows for the preservation of the original
graph at the previous timepoint, making it possible to travel back
and forth in time to answer queries about the history of the trace
execution model.
3.3</p>
    </sec>
    <sec id="sec-9">
      <title>Reusable time-aware query language</title>
      <p>Having a convenient way to write queries over the history of the
graph is another important ingredient for reusable self-explanation.
To simplify adoption, the most direct approach is to start from an
existing model querying language (e.g. OCL), and then add the
ability to traverse the history of a model element or a type through
their lifespans. Our definitions for the history of a model element
and a type are as follows:
• The history of a model element starts from the moment it is
created, and ends when it is destroyed. Model elements are
assumed to have a unique identity, which could be a natural
or artificial identifier or its location within the model. There
will be a new version of a model element every time its state
changes, whether by changing the value of an attribute or
the target of one of its references to other model elements.
• Model element types are considered “immortal”, in the sense
that they are created at the first timepoint in the graph and
last to the virtual “end of time” of the graph. We will have a
[0..*] requirements</p>
      <p>NFR</p>
      <p>For model elements and model element types, we consider these
to be the basic time-aware operations that must be supported by
the temporal graph backend (e.g. Greycat): i) retrieving all versions,
ii) all versions within a range, iii) versions from/up to a certain
timepoint (included), iv) earliest/previous/next/latest version, and
v) retrieving the timepoint for that version.</p>
      <p>
        Our approach is heavily inspired by the “history” fields proposed
by Rose and Segev during their work on temporal object-oriented
data models in the 90s [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Rose and Segev went further in their
proposal, suggesting the availability of per-field histories and a
wider variety of predicates covering linear temporal logic. We are
considering providing pre-defined versions of these additional
facilities on top of the basic primitives above.
      </p>
      <p>
        For our proof-of-concept implementation, Hawk already had
most of the elements, as it came with a number of backend-specific
and backend-agnostic query engine components. The most mature
query language at the time of writing is a dialect of the Epsilon
Object Language (EOL) [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], essentially a mix between JavaScript
and OCL. It was a matter of defining a new query engine based on
the EOL one with additional support for the previous primitives:
Table 1 lists the syntax for these new primitives.
3.4
      </p>
    </sec>
    <sec id="sec-10">
      <title>Reusable visualizations</title>
      <p>The last piece in the puzzle would be to have a reusable set of
visualizations for a certain class of self-adaptive system. These
could be dashboards with the key instants in the self-adaptive
Operation
Syntax
All versions, from x.versions
newest to oldest
Versions within a range x.getVersionsBetween(from, to)
Versions from a time- x.getVersionsFrom(from)
point (included)
Versions up to a time- x.getVersionsUpTo(from)
point (included)
Earliest / latest version x.earliest, x.latest
Next / previous version x.next, x.prev/x.previous
Version timepoint x.time
system, to allow users to jump to the main changes in behaviour
that were introduced automatically, or a predefined sequence of
“why”-form questions for common queries: why was it doing this
at that time, why did it stop doing the previous action, why did it
reason that was beneficial, why was the reasoning process in such
a state, and why was the user configuration like that.</p>
      <p>Adding these visualizations to a system should require less
effort once we have achieved the definition of a standardized trace
metamodel, and have reusable temporal storage and querying
capabilities that we can always start from. The visualizations would
be backed by time-aware queries, and could be packaged together
with the configuration of the self-adaptive system for a specific
problem domain.</p>
      <p>Beyond getting the data, another challenge is finding an
accessible way to present it, which steps into the realm of human-computer
interaction and is outside the scope of this paper. Regardless, at this
stage the reusable visualizations remain as a future line of work.
4</p>
    </sec>
    <sec id="sec-11">
      <title>CASE STUDY: DECISION-MAKING SAS FOR</title>
    </sec>
    <sec id="sec-12">
      <title>NETWORKS</title>
      <p>
        As an example to demonstrate the feasibility of the ideas proposed,
let us consider the case of the Remote Data Mirroring (RDM)
selfadaptive system (SAS). RDM is a technique to protect data against
inaccessibility to therefore provide further resistance to data loss
[
        <xref ref-type="bibr" rid="ref17 ref26">17, 26</xref>
        ]. An RDM maintains data availability and prevents data loss
by storing copies (i.e., replicates) on servers (i.e., data mirrors) in
physically remote locations [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        Fig. 4 presents the R-POMDP (Relational Partially Observable
Markov Decision Process [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]) model of the RDM SAS for a given
IT network infrastructure which has been used as the case studies
in [
        <xref ref-type="bibr" rid="ref2 ref25">2, 25</xref>
        ].
      </p>
      <p>
        The RDM described above has been designed to be configured
by using two diferent topologies: minimum spanning tree (MST)
and redundant topology (RT). These two possible configurations
allow the RDM selectively activate and deactivate network links to
change its overall topology at runtime [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>The RDM SAS self-adapts reconfiguring itself at runtime
according to the changes in its environment, which may include either
delayed or dropped messages and network link failures. Each
network link in the RDM brings upon an operational cost and has a
measurable throughput, latency, and loss rate. The performance and
reliability of the RDM are determined by these metrics according
to the following trade-of: while RT is more reliable than MST, RT
can be prohibitively more expensive than MST in some contexts.
Each configuration provides its own levels of reliability and energy
costs which are taken into account while estimating the levels of
Listing 1: Excerpt of the original JSON trace execution logs
from the Remote Data Mirroring self-adaptive system
satisficement of the NFRs observed, the Maximization of
Reliability (MR) and the Minimization of Energy Consumption (MEC). As
such, and RDM makes decisions about the topologies to use. The
operators may find themselves asking the reasons why the RDM
SAS has used one topology instead of the other.</p>
      <p>
        The states of these NFRs are not directly observable.
Observations about their states are obtained by using monitoring variables
(called MON variables). Two MON variables REC=“Ranges of
Energy Consumption" and NCC=“Number of Concurrent
Connections" has been specified. In [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], we have shown the requirements
specification based on Partially Observable Markov Decision
Processes (POMDP) that enables reasoning and decision-making about
partial satisficement of non-functional requirements (NFRs) and
their trade-of based on evidence collected at runtime based on
the formalism for decision-making under uncertainty provided by
POMDPs (See Fig. 4).
4.1
      </p>
    </sec>
    <sec id="sec-13">
      <title>Log preprocessing</title>
      <p>In its current implementation, the RDM SAS produces execution
traces in JSON format for each time slice, mentioning the
observations made, the currently estimated levels of satisficement of the
NFRs, and the preferences currently being applied in the decision
process. The JSON log is made available for forensic purposes to
debug the system after the fact. Listing 1 shows an excerpt of the
log for the first time slice.</p>
      <p>Due to time constraints, for this first feasibility study it was
decided to collect a large number of JSON logs and transform them
into a temporal graph, answering queries away from the system
(in an “of-line” fashion). It is planned to revise the RDM SAS in
future studies to have it maintain the temporal graph while it is
running, so queries can be answered “on-line” for reflection and</p>
      <sec id="sec-13-1">
        <title>Listing 2: EOL query to check the evolution of belief levels through the lifespan of each action choice</title>
      </sec>
      <sec id="sec-13-2">
        <title>Listing 3: EOL query to check the min/max/average shift in reward values through the life of the SAS</title>
        <p>3https://git.aston.ac.uk/garcia-a/hawk-mrt2018
4https://github.com/mondo-project/mondo-hawk
5https://subversion.apache.org/
6A previous version with second-level rather than millisecond-level timestamps
required 2.6MB instead. We intend to investigate this further in future studies.
other times they will want to identify points in time where the
self-adaptive system misbehaved.</p>
        <p>Listing 2 shows a first example of what can be done for the
developers. It allows the RDM SAS developer to check if the internal
reward values in the decision algorithm have evolved over time or
if they have remained the same. It operates as follows:
(1) RewardTableRow.latest returns the latest version of the
RewardTableRow type node in the temporal graph. There
are only two versions for this node: the one at the beginning
of time with no instances, and the second one with all the
instances. RewardTableRows are not created or deleted,
they are simply modified with diferent reward values.
(2) .all returns all instances of that type at that point in time.
(3) .collect(x | expression) visits each instance,
computing an expression and collecting the results into a new list.
(4) r_row.versions.size returns the number of versions for
that instance. This would be the number of times that the
reward values have changed.
(5) .max() computes the maximum value over the list with all
the numbers of versions of the various RewardTableRows.</p>
        <p>Essentially, if the query returns 1 we know that the reward values
have remained the same, whereas if it returns 2 or higher we will
know that it has changed at some point, and depending on the
value we will know how often it happened. For this experiment,
the query returned 442 - there was a reward table row that had
changed that many times in value.</p>
        <p>Developers can easily expand upon the queries to produce more
nuanced results. Listing 3 shows a more advanced example that
computes some basic descriptive statistics of the reward table rows
13
14 }
15 }
16 operation Sequence average() { return self.sum() / self.size(); }
4.2</p>
      </sec>
    </sec>
    <sec id="sec-14">
      <title>Time-aware queries for developers</title>
      <p>We argue that self-explanation needs to be tailored to the reader.
SAS developers and integrators will be interested on a diferent
type of explanations about the system. Particularly, they will often
need to verify that certain desirable properties are being met, while</p>
      <sec id="sec-14-1">
        <title>Listing 4: EOL query to detect the longest sequence of action</title>
        <p>thrashing within the SAS
Listing 5: EOL query to find cases when observations clash
against the understanding of satisficement within the SAS
var decVersions = Decision.latest.all.first.versions;
var dvBeforeLast = decVersions.subList(1, decVersions.size);
var dvWithObs = dvBeforeLast.collect(dv | Sequence {
dv.time, dv.actionTaken.name, dv.supportingObservations()
over time. This query makes use of EOL context operations to
define the “reward shifts” of a specific version of a
RewardTableRow. If we have only one version, it is the empty sequence. If it
has more than one version, then it is the sequence of diferences
between the values of each version and the one immediately before
it. For values (0.1, 0.12, 0.11) we would have shifts of (0.02, −0.01).
This can give us an idea of whether the reward recalculation is
keeping shifts bounded, or if the values are wildly shifting from
one timepoint to the next. In the case of the current log, the SAS
kept shifts bounded to a symmetric range within ±0.034, with an
average of −5.31 × 10−9.</p>
        <p>Continuing with the theme of checking if the SAS is behaving
appropriately, it may be important to notice situations in which
the system may be “thrashing” between two actions, which suggest
that the decision process may benefit from a “tolerance interval”
where it will not react just yet to an observed situation. Listing 4
shows a query designed to find the longest sequence of actions that
are only backed by a single observation, i.e. intervals in which the
(1) Lines 1–5 go from the earliest to the second last versions of
the only Decision in the RDM SAS. For each of them, they
compute a triplet with the timepoint, the name of the action
taken, and the number of supporting observations.
(2) The number of supported operations is defined by the
context operation in lines 24–33, which counts the number of
observations that existed before the next version of that
decision.
(3) Lines 8–21 find the longest sequence of triplets with 1
supporting observation. For our trace, the query finds a sequence
of 8 timepoints when the SAS is switching back and forth
between RT and MST after each observation.</p>
        <p>Queries can also be used to find less intuitive scenarios. Being
probabilistic, R-POMDP may infer that a certain NFR is not being
met even though the current observation may say otherwise: this
simulates sensor failures and noise. Listing 5 shows a query which
found 18 time slices when the Minimization of Energy Consumption
NFR satisfaction did not match the Rate of Energy Consumption
measurement. Either the NFR was met even though we were in the
high ranges of REC, or the NFR was not met even though we were
in the low ranges of REC. As a minor detail, for each version of the
measurement we check the belief level at the same timepoint by
using travelInTime on the belief node.
4.3</p>
      </sec>
    </sec>
    <sec id="sec-15">
      <title>Time-aware queries for users</title>
      <p>Other queries may be more generally useful to the wider community
around the SAS, and could be fed into dashboards. They would
Listing 6: EOL query to compute statistics about NFR
satisifcement above their thresholds
return NFRBelief.latest.all.collect(nfrb | nfrb.stats());
operation NFRBelief stats() {
var versions = self.versions;
var nAbove = versions.select(v |</p>
      <p>v.estimatedProbability &gt;= v.nfr.threshold).size;
var nBelow = versions.size − nAbove;
return Map { 'name' = self.nfr.name,</p>
      <p>'above' = nAbove, 'below' = nBelow };
1
2
3
4
5
6
7
8
9
10 }
essentially start of from the NFRs and give increasingly more
detailed explanations of to what degree they were met, what was 15
done to correct situations when they were not met, and why those 16
corrective actions were chosen. 17</p>
      <p>Listing 6 shows a query which indicates how often the various 18
NFRs were met. The query takes all the NFRBelief instances, and 19
visits all their versions, counting how many are above and below 20
their thresholds7. We compute a simple triplet with the name of 21
the NFR and the number of times we believed it to be above/below 22 }
the threshold. Regarding MEC, out of the 888 unique belief levels 23 }
stated by the SAS, 670 passed the threshold and 218 did not. 665 24 return results;
belief levels passed MR, and 223 did not. 25</p>
      <p>Deeper self-explanation requires looking at how the satisfice- 26
ment of the MRs evolved over time, and how the system reacted 27
to it. Listing 7 shows a query that will produce a timeline of how 28
the NFRs changed between being met and not met, as shown in 29
Listing 8. 30</p>
      <p>Looking at line 1 of the output, we see that the system started 31
with both MR and MEC unmet, that it stayed like that for 1 obser- 32
vation, and that since it observed that REC was low and NCC was 33
high, it decided to go with RT as an action. Line 2 shows that the 34
system started meeting MR and MEC, but then observed energy 35 }
usage (REC) to be in the high ranges, so it went into MST.
Interestingly, MEC started to fail later on, even though the observed energy
usage was not that high: again, this may be due to the probabilistic
nature of R-POMDP observed in Listing 5.</p>
      <p>In general, the main advantage of the presented approach is that
it allows for rapid development and iteration of new queries on the
history of the model, making it possible to create the explanations
for a category of SAS as required, and then later package them as
premade, reusable visualizations.
}
return result;
5</p>
    </sec>
    <sec id="sec-16">
      <title>RELATED WORK</title>
      <p>This paper is based on a combination of various results from the
areas of self-explanation for decision making systems, and model
versioning. In this section we will relate the work to several key
contributions in these fields.
7Interestingly, this query could easily accommodate dynamic NFR thresholds without
any changes, since we visit the NFR through the version of the belief.
var currentStates = computeStates(vNfrMecB.first.time);
var newStates : Map;
var results : Sequence;
var length = 0;
for (v in vNfrMecB) {
newStates = computeStates(v.time);
if (newStates.equals(currentStates)) {</p>
      <p>length += 1;
} else {
var lastDecision = Decision.latest.all.first.travelInTime(v.time);
results.add(Sequence { currentStates, length,
v.time, // time of last decision taken in this interval
lastDecision.observation.description,
lastDecision.actionTaken.name // name of action
});
currentStates = newStates;
length = 1;
operation computeStates(instant: Integer): Map {
var nfrbs = NFRBelief.latest.all</p>
      <p>.collect(nfrb | nfrb.travelInTime(instant));
var result : Map;
for (nfrb in nfrbs) {
result.put(nfrb.nfr.name,</p>
      <p>nfrb.estimatedProbability &gt;= nfrb.nfr.threshold);</p>
      <sec id="sec-16-1">
        <title>Listing 8: Excerpt of output from Listing 7 about justification of the actions taken by the system.</title>
        <p>4 ...]
5.1</p>
      </sec>
    </sec>
    <sec id="sec-17">
      <title>Decision making, self-explanation, interactive diagnosis</title>
      <p>
        The area of research about self-explanation and interactive is still
in its infancy. The need for it is exacerbated due to the use of
artificial intelligence and machine learning. However, few research
initiatives exist. The authors in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] use goal-based requirements
models at runtime to ofer self-explanation of how a system is
meeting its requirements. Our case study also contemplates the use
of runtime goal-based models but supported by POMDPS. Diferent
from the work in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], our work uses Bayesian learning. Further,
new future versions of the temporal graph models will be seen as
runtime models to be consulted at runtime [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] to support decision
making.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], and as in our case, the authors present a temporal model
to support interactive diagnosis of self-adaptive systems. The
authors describe a temporal data model to represent, store and query
decisions as well as their relationship with the context,
requirements, and adaptation actions. So far, we do not include the context
or the requirements, however it is part of our future research
avenues. They have used their approach in the area of smart grids
while we have used RDMs as the case study. While they use Greycat,
only we have extended the Hawk model indexer with the ability
to use Greycat as a backend. Using a model indexer makes it
possible to reason over temporal graphs without the need of making
changes to the existing system.
5.2
      </p>
    </sec>
    <sec id="sec-18">
      <title>Model versioning</title>
      <p>
        As a complex artifact developed within teams, keeping track of
the various revisions that a model goes through is very important.
According to the survey by Brosch et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], versioning approaches
can be classified across two orthogonal dimensions: the way they
represent the artefacts, and the way they identify, represent and
merge diferences between versions. Artifact representations can
be text-based as in most well-known tools (e.g. Subversion or Git),
where they are seen as a collection of lines, or can be graph-based
as a collection of nodes and edges, potentially with attributes and
labels. Merging two versions developed in parallel from a common
ancestor can be done in two ways: by comparing their states, or
by combining the operations that were applied on the common
ancestor in each side.
      </p>
      <p>
        In terms of tools, many practitioners use simple and mature
text-based version control systems (VCS) to keep track of their
models (e.g. Git), and they use standalone state-based model
comparison and merging tools (e.g. EMF Compare8). Others accept the
additional complexity for the sake of additional functionality and
use dedicated model repositories, which handle model revisions in
terms of model elements and their references. Some well-known
examples are Eclipse Connected Data Objects9, which stores model
revisions inside a relational database (usually combined with a
relational database), or EMFStore [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], which actually uses a
collection of XMI files. EMFStore is interesting in that it keeps both the
states of the various revisions, and the individual changes that were
applied between those revisions, so it may use those for merging.
8https://www.eclipse.org/emf/compare/downloads/
9https://www.eclipse.org/cdo/
      </p>
      <p>
        In the last few years, there has been increasing interest in having
time-awareness as a native capability of the modelling framework
itself. In 2012, Holmes et al. implemented a copy-on-write
versioning scheme for models at an element level using UUIDs [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
Hartmann showed in 2014 [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] a first version of the Kevoree
Modelling Framework that supported reusable versioning of individual
model elements, with the ability to travel back and forth in time.
This would eventually evolve to their standalone Greycat temporal
graph database. Our proposal takes this element-level versioning
idea as a base, and proposes a general approach to use it for
selfexplanation across a variety of SAS, adding a generic metamodel
for execution traces and a easy-to-use, database-agnostic query
language. We have also integrated Greycat with a model indexer,
making it possible to reason over temporal graphs without needing
to re-engineer existing systems.
      </p>
      <p>
        Another recent work in the area of temporal graph stores for
models is ChronoSphere, developed by Haeusler et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
Similar to Greycat, it is also based on a key-value store where the key
combines the timepoint and the element identifier. Unlike Greycat,
which is a “pure” temporal graph database, the authors report
capabilities as a model repository, supporting branches (without merges,
for now), transactions, and some capabilities for metamodel
evolution. The authors also mention the application of ChronoSphere
in an “industrial IT Landscape Management tool” called Txture for
model-based visualizations. We intend to evaluate ChronoSphere
as an alternative to Greycat in future versions of our approach, in
terms of performance and feature set.
      </p>
      <p>One last idea that Borsch et al. identified in their survey as an
open research area was intention-aware model versioning, where
merges could be simplified by encoding what the modelers wanted
to accomplish with their changes. We have not found many
research initiatives in the area since then, but we find that the idea of
encoding the intentions of a change in the model could certainly
be relevant and useful for self-explanation. For future work, we are
considering model versioning approaches where the self-adaptive
model-based system would encode their intentions upon the
various changes. These intentions could also be indexed by Hawk into
the temporal graph, and could be accessed from EOL queries.
6</p>
    </sec>
    <sec id="sec-19">
      <title>CONCLUSIONS AND FUTURE WORK</title>
      <p>In this work, we have described the key requirements for a reusable
framework for self-explanation in self-adaptive systems: a generic
and extensible execution trace metamodel, a temporal graph to store
these traces, a time-aware query language that allows to reason
about the history of the models, and a set of reusable
visualizations the main types of self-adaptive systems in the wild. We have
provided proof-of-concept implementations for the first three. We
have also demonstrated diferent queries aimed at explaining the
self-adaptive nature of the systems to developers and end users.</p>
      <p>The present work can be considered as a first step towards that
reusable framework, suggesting several lines of future work. First, it
would be useful to have a taxonomy of the various types of queries
that diferent audiences may ask of a self-adaptive system, and the
diferent levels of detail that we could use for our answers. Some of
those queries may cross over multiple types of SAS, while others
may be specific to a class of SAS. Once we determine which queries
are the most valuable and reusable, we would develop visualizations
based on them.</p>
      <p>The trace execution metamodel shown in the paper captured
most concepts used by the RDM SAS, but it may require further
refinement to cover other SAS. We need to apply the approach to a
wider range of SAS and to allow the extension of the trace
execution metamodel with “profiles” for other types of self-adaptation
approaches. This is a similar approach to UML and the use of
proifles for specific domains.</p>
      <p>The query language is based on a set of basic primitives around
versions, but it lacks the richness of a more formal model such
as linear temporal logic, with richer predicates such as “always”,
“never” or “eventually”.</p>
      <p>We also envision a diferent application of temporal graphs
to produce better simulation models for the development of
selfadaptive systems. If we kept track of the actions and their impacts
in a self-adaptive system “deployed in the wild”, we could produce a
better probability matrix between NFR satisficement levels, actions
and observations. Further, we envision that the temporal graph
models will act as runtime models to support self-explanation,
interactive diagnosis and even decision-making. The language will
provide a way how to access and change the runtime model during
execution.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Barmpis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shah</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          :
          <article-title>Towards Incremental Updates in LargeScale Model Indexes</article-title>
          . In: Taentzer,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Bordeleau</surname>
          </string-name>
          ,
          <string-name>
            <surname>F</surname>
          </string-name>
          . (eds.)
          <source>Modelling Foundations and Applications</source>
          , pp.
          <fpage>137</fpage>
          -
          <lpage>153</lpage>
          . No. 9153
          <source>in Lecture Notes in Computer Science</source>
          , Springer International Publishing (Jul
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Belaggoun</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Issarny</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Dynamic decision networks to support decision-making for self-adaptive systems</article-title>
          .
          <source>In: (SEAMS)</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Welsh</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sawyer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whittle</surname>
          </string-name>
          , J.:
          <article-title>Self-explanation in adaptive systems</article-title>
          .
          <source>In: 17th IEEE International Conference on Engineering of Complex Computer Systems, ICECCS 2012</source>
          , Paris, France,
          <source>July 18-20</source>
          ,
          <year>2012</year>
          . pp.
          <fpage>157</fpage>
          -
          <lpage>166</lpage>
          (
          <year>2012</year>
          ). https://doi.org/10.1109/ICECCS.
          <year>2012</year>
          .34
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Blair</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , France, R.B.,
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          , N.:
          <article-title>Models@ run.time</article-title>
          .
          <source>Computer</source>
          <volume>42</volume>
          ,
          <fpage>22</fpage>
          -
          <lpage>27</lpage>
          (10
          <year>2009</year>
          ). https://doi.org/10.1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2009</year>
          .326
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Brosch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kappel</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seidl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wieland</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>An Introduction to Model Versioning</article-title>
          . In: Bernardo,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Cortellessa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            ,
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <article-title>Formal Methods for Model-Driven Engineering</article-title>
          , vol.
          <volume>7320</volume>
          , pp.
          <fpage>336</fpage>
          -
          <lpage>398</lpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg (
          <year>2012</year>
          ). https://doi.org/10.1007/978- 3-
          <fpage>642</fpage>
          -30982-3_
          <fpage>10</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Daniel</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sunyé</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benelallam</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vernageau</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gómez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>NeoEMF: A multi-database model persistence framework for very large models</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>149</volume>
          ,
          <fpage>9</fpage>
          -
          <lpage>14</lpage>
          (
          <year>Dec 2017</year>
          ). https://doi.org/10.1016/j.scico.
          <year>2017</year>
          .
          <volume>08</volume>
          .002
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Forcher</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agne</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dengel</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gillmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roth-Berghofer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Semantic logging: Towards explanation-aware DAS</article-title>
          .
          <source>In: 2011 International Conference on Document Analysis and Recognition</source>
          ,
          <string-name>
            <surname>ICDAR</surname>
          </string-name>
          <year>2011</year>
          , Beijing, China,
          <source>September 18-21</source>
          ,
          <year>2011</year>
          . pp.
          <fpage>1140</fpage>
          -
          <lpage>1144</lpage>
          (
          <year>2011</year>
          ). https://doi.org/10.1109/ICDAR.
          <year>2011</year>
          .230
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Fredericks</surname>
            ,
            <given-names>E.M.:</given-names>
          </string-name>
          <article-title>Mitigating uncertainty at design time and run time to addressassurance for dynamically adaptive systems</article-title>
          . Michigan State University.
          <source>PhD Thesis</source>
          . (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Garcia-Dominguez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barmpis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wei</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>Stresstesting remote model querying APIs for relational and graph-based stores</article-title>
          .
          <source>Software &amp; Systems</source>
          Modeling pp.
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          (
          <year>Jun 2017</year>
          ). https://doi.org/10.1007/s10270- 017-0606-9
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>García-Domínguez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          , N.:
          <article-title>Non-human modelers: Challenges and roadmap for reusable self-explanation</article-title>
          .
          <source>In: Software Technologies: Applications</source>
          and
          <string-name>
            <surname>Foundations - STAF 2017 Collocated Workshops</surname>
          </string-name>
          , Marburg, Germany,
          <source>July 17- 21</source>
          ,
          <year>2017</year>
          , Revised Selected Papers. pp.
          <fpage>161</fpage>
          -
          <lpage>171</lpage>
          (
          <year>2017</year>
          ). https://doi.org/10.1007/978- 3-
          <fpage>319</fpage>
          -74730-9_
          <fpage>14</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pasquale</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ramirez</surname>
            ,
            <given-names>A.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Inverardi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wätzoldt</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Living with Uncertainty in the Age of Runtime Models</article-title>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>100</lpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2014</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -08915-
          <issue>7</issue>
          _
          <fpage>3</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Haeusler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trojer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kessler</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Farwick</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nowakowski</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Breu</surname>
          </string-name>
          , R.:
          <article-title>Combining Versioning and Metamodel Evolution in the ChronoSphere Model Repository</article-title>
          . In: SOFSEM 2018:
          <article-title>Theory and Practice of Computer Science</article-title>
          . pp.
          <fpage>153</fpage>
          -
          <lpage>167</lpage>
          . Lecture Notes in Computer Science, Edizioni della Normale,
          <source>Cham (Jan</source>
          <year>2018</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -73117-9_
          <fpage>11</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Hartmann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fouquet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jimenez</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rouvoy</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Traon</surname>
            ,
            <given-names>Y.L.</given-names>
          </string-name>
          :
          <article-title>Analyzing Complex Data in Motion at Scale with Temporal Graphs</article-title>
          .
          <source>In: Proceedings of the 29th International Conference on Software Engineering &amp; Knowledge Engineering (SEKE'17)</source>
          . pp.
          <fpage>596</fpage>
          -
          <lpage>601</lpage>
          (
          <year>Jul 2017</year>
          ). https://doi.org/10.18293/SEKE2017-048
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Hartmann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fouquet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nain</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klein</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barais</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Le Traon</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>A Native Versioning Concept to Support Historized Models at Runtime</article-title>
          . In: Dingel,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Schulte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Ramos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            ,
            <surname>Abrahão</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Insfran</surname>
          </string-name>
          , E. (eds.) Model-Driven
          <source>Engineering Languages and Systems</source>
          , vol.
          <volume>8767</volume>
          , pp.
          <fpage>252</fpage>
          -
          <lpage>268</lpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2014</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -11653-2_
          <fpage>16</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Holme</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Saramäki</surname>
          </string-name>
          , J.:
          <article-title>Temporal networks</article-title>
          .
          <source>Physics Reports</source>
          <volume>519</volume>
          (
          <issue>3</issue>
          ),
          <fpage>97</fpage>
          -
          <lpage>125</lpage>
          (
          <year>Oct 2012</year>
          ). https://doi.org/10.1016/j.physrep.
          <year>2012</year>
          .
          <volume>03</volume>
          .001
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Holmes</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zdun</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dustdar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Automating the Management and Versioning of Service Models at Runtime to Support Service Monitoring</article-title>
          .
          <source>In: 2012 IEEE 16th International Enterprise Distributed Object Computing Conference</source>
          . pp.
          <fpage>211</fpage>
          -
          <lpage>218</lpage>
          . IEEE, Beijing, China (Sep
          <year>2012</year>
          ). https://doi.org/10.1109/EDOC.
          <year>2012</year>
          .32
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Ji</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Veitch</surname>
            ,
            <given-names>A.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wilkes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , et al.:
          <article-title>Seneca: remote mirroring done write</article-title>
          .
          <source>In: USENIX Annual Conference</source>
          . pp.
          <fpage>253</fpage>
          -
          <lpage>268</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Kephart</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chess</surname>
            ,
            <given-names>D.M.:</given-names>
          </string-name>
          <article-title>The vision of autonomic computing</article-title>
          .
          <source>Computer</source>
          <volume>36</volume>
          (
          <issue>1</issue>
          ),
          <fpage>41</fpage>
          -
          <lpage>50</lpage>
          (
          <year>Jan 2003</year>
          ). https://doi.org/10.1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2003</year>
          .1160055
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Koegel</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helming</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>EMFStore: A Model Repository for EMF Models</article-title>
          .
          <source>In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume</source>
          <volume>2</volume>
          . pp.
          <fpage>307</fpage>
          -
          <lpage>308</lpage>
          . ICSE '10,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2010</year>
          ). https://doi.org/10.1145/1810295.1810364
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polack</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>The Epsilon Object Language (EOL)</article-title>
          .
          <source>In: Model Driven Architecture - Foundations and Applications</source>
          , Second European Conference, ECMDA-FA
          <year>2006</year>
          , Bilbao, Spain,
          <source>July 10-13</source>
          ,
          <year>2006</year>
          , Proceedings. pp.
          <fpage>128</fpage>
          -
          <lpage>142</lpage>
          (
          <year>2006</year>
          ). https://doi.org/10.1007/11787044_
          <fpage>11</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Kostakos</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Temporal graphs</article-title>
          .
          <source>Physica A: Statistical Mechanics and its Applications</source>
          <volume>388</volume>
          (
          <issue>6</issue>
          ),
          <fpage>1007</fpage>
          -
          <lpage>1023</lpage>
          (
          <year>Mar 2009</year>
          ). https://doi.org/10.1016/j.physa.
          <year>2008</year>
          .
          <volume>11</volume>
          .021
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Monahan</surname>
            ,
            <given-names>G.E.</given-names>
          </string-name>
          :
          <article-title>State of the Art-A Survey of Partially Observable Markov Decision Processes: Theory, Models, and Algorithms</article-title>
          .
          <source>Management Science</source>
          <volume>28</volume>
          (
          <issue>1</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          (
          <year>Jan 1982</year>
          ). https://doi.org/10.1287/mnsc.28.
          <issue>1</issue>
          .
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Mouline</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benelallam</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fouquet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bourcier</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barais</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>A temporal model for interactive diagnosis of adaptive systems</article-title>
          .
          <source>In: 2018 IEEE International Conference on Autonomic Computing, ICAC</source>
          <year>2018</year>
          , Trento, Italy, September 3-
          <issue>7</issue>
          ,
          <year>2018</year>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Paucar</surname>
            ,
            <given-names>L.H.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
          </string-name>
          , N.:
          <article-title>RE-STORM: mapping the decision-making problem and non-functional requirements trade-of to partially observable Markov decision processes</article-title>
          .
          <source>In: Proceedings of the 13th International Conference on Software Engineering for Adaptive and Self-Managing Systems</source>
          . pp.
          <fpage>19</fpage>
          -
          <lpage>25</lpage>
          . SEAMS '18,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2018</year>
          ). https://doi.org/10.1145/3194133.3195537
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Paucar</surname>
            ,
            <given-names>L.H.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fung Yuen</surname>
            ,
            <given-names>K.K.</given-names>
          </string-name>
          :
          <article-title>Juggling Preferences in a World of Uncertainty</article-title>
          .
          <source>RE NEXT</source>
          , Lisbon. (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Ramirez</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          ., Cheng,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Bencomo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Sawyer</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.</surname>
          </string-name>
          :
          <article-title>Relaxing claims: Coping with uncertainty while evaluating assumptions at run time</article-title>
          .
          <source>MODELS</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Rose</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Segev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>TOODM: A Temporal Object-Oriented Data Model with Temporal Constraints</article-title>
          .
          <source>Tech. Rep. LBL-30678; CONF-9110316-1</source>
          , Lawrence Berkeley Lab.,
          <string-name>
            <surname>CA (United</surname>
            <given-names>States)</given-names>
          </string-name>
          (
          <year>Apr 1991</year>
          ), https://www.osti.gov/scitech/biblio/5969182
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Roth-Berghofer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tintarev</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leake</surname>
          </string-name>
          , D.B. (eds.):
          <article-title>Explanation-aware Computing, Papers from the 2011 IJCAI Workshop</article-title>
          , Barcelona, Spain,
          <source>July 16-17</source>
          ,
          <year>2011</year>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Sawyer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whittle</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Letier</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Requirementsaware systems: A research agenda for RE for self-adaptive systems</article-title>
          .
          <source>In: Proceedings of the 2010 18th IEEE International Requirements Engineering Conference</source>
          . pp.
          <fpage>95</fpage>
          -
          <lpage>103</lpage>
          . RE '10, IEEE Computer Society, Washington, DC, USA (
          <year>2010</year>
          ). https://doi.org/10.1109/RE.
          <year>2010</year>
          .21
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Steinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paternostro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
          </string-name>
          , E.: EMF:
          <article-title>Eclipse Modeling Framework</article-title>
          . Addison Wesley, Upper Saddle River, NJ, 2
          <article-title>edition edn</article-title>
          .
          <source>(Dec</source>
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Welsh</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sawyer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whittle</surname>
          </string-name>
          , J.:
          <article-title>Self-explanation in adaptive systems based on runtime goal-based models</article-title>
          .
          <source>Trans. Computational Collective Intelligence</source>
          <volume>16</volume>
          ,
          <fpage>122</fpage>
          -
          <lpage>145</lpage>
          (
          <year>2014</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>662</fpage>
          -44871-
          <issue>7</issue>
          _
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>