<!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>A Microservice Reference Case Study for Design-Runtime Interaction in MDE ?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Daniele Di Pompeo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michele Tucci</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alessandro Celi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Romina Eramo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Information Engineering</institution>
          ,
          <addr-line>Computer Science and Mathematics</addr-line>
          ,
          <institution>University of L'Aquila</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Design-runtime interaction</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Microservice architec-</institution>
        </aff>
      </contrib-group>
      <fpage>23</fpage>
      <lpage>32</lpage>
      <abstract>
        <p>Model-Driven Engineering techniques may achieve major support to the software development of nowadays complex systems when they allow managing relationships between a running system and its design models. These relationships can be exploited for dierent goals, such as the software evolution due to new functional requirements. In order to address this challenge, researchers need to better understand the nature of the available runtime information and related correspondences as well as how leveraging such knowledge. Typically, to this end, they rely on reference applications. In this paper, we present a reference case study for design-runtime interaction in MDE. It is based on Train Ticket, a microservice-based web application, and its monitoring infrastructure. Also, the case study provides its software modeling artifacts designed in UML, a dataset of monitoring logs, and the denition of design-runtime correspondence as traceability links. We invite researchers to consider this case study as a reference for extending or new contribution to this topic.</p>
      </abstract>
      <kwd-group>
        <kwd>MDE ture</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        need to be further developed to scale up for real-life industrial projects [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. To
this intent, one of the major challenges is to work on achieving a more ecient
integration between the design and runtime aspects of systems. For instance,
through observation and instrumentation, logs and metrics can be collected and
related to the original software design in order to comprehend, extrapolate and
analyze the inner behavior of running software system [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        In support of this, a recent European project 1 has been founded and
supported by both industry and academic partners. As part of its continuous system
engineering approach [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], the project notably aims at providing a runtime-design
time feedback loop that could be deployed and used in dierent industrial
domains. Such a feedback from runtime to architectural design level can certainly
be exploited to let the developers have some sort of control and manipulation
possibilities over elements they would not be able to access otherwise.
      </p>
      <p>
        Methods and tools have been proposed for monitoring system execution and
measuring several aspects of the running systems (eg., performance). However,
many of them do not envisage a solid integration with architectural design
models [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In order to address this challenge, researchers need to better understand
the nature of the available runtime information and related correspondences
as well as how leveraging such knowledge. Typically, to this end, they rely on
reference applications.
      </p>
      <p>
        In this paper, we present a reference case study for design-runtime interaction
in MDE. It is based on Train Ticket, a microservice-based web application,
and its monitoring infrastructure. Also, the case study provides its software
modeling artifacts designed in the UML language [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], a dataset of monitoring
logs, and the denition of design-runtime correspondence as traceability links.
We invite researchers to consider this case study as a reference for extending or
new contribution to this topic.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>The Train Ticket application</title>
      <p>
        Recently, microservice architectures have become more relevant in the software
engineering community due to their production exibility. Among the few
complex approaches available within the software engineering community, Xiang et
al. [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] presented a benchmark that involves the Train Ticket system. Train
Ticket is a microservice web-based application composed by 40 microservices,
each one with a specic aim, developed with dierent programming languages,
such as Java and Go. The application is composed of several scenarios (e.g.,
users can search specic destinations or can book a train ticket) and supports
dierent kind of users with dierent kind of permissions (e.g., a guest user, or
an admin one).
      </p>
      <p>Figure 1 shows the Train Ticket logical architecture. Each rectangle
represents a microservice, whereas the topmost and the leftmost boxes depict
infrastructural microservices, such as Service Discovery. In particular, Gateway is
in charge of catching an HTTP request and sending the message to the right</p>
      <sec id="sec-2-1">
        <title>1 MegaM@Rt2 project: https://megamart2-ecsel.eu/</title>
        <p>microservice, Service Discovery and Registry are in charge of managing
microservices, whereas the Load Balance microservice is in charge of distributing
the trac by following pre-dened rules, e.g., round robin.</p>
        <p>The Java-based part of the application were developed through the
springcloud framework 2 that provides the needed features. Additionally, a distributed
tracing system is used to collect real time information, for instance Xiang et
al. used Spring Cloud Sleuth 3 distributed tracing solution, which is the ocial
tracer within spring framework. In this work, we used Zipkin 4 and
Elasticsearch 5 in our environment. Zipkin shows a graphical time-based representation
of traces, whereas elastic search is a clustered database.</p>
        <p>In the rest of the paper, we consider the Train Ticket design models and the
trace/log artifacts to produce a reference case study for design-runtime
interactions 6.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Train Ticket Design Modeling</title>
      <p>The Train Ticket architecture and software design have been obtained by means
of a both manual and automatic reverse engineering from the source code. It
is modeled by means of UML; in particular, the multi-views UML modeling
is composed of the static views (i.e., Component and Class diagrams) and the
dynamic views (i.e., Sequence and State Machine Diagrams).
2 Spring Cloud: https://spring.io/projects/spring-cloud
3 Spring Cloud Sleuth: https://spring.io/projects/spring-cloud-sleuth
4 Zipkin: https://zipkin.io/
5 Elasticsearch: https://www.elastic.co/
6 Please, refer to the following repository for the complete resources:
https://github.com/SEALABQualityGroup/train-ticket</p>
      <p>Altough in this case study the design models were reverse engineered from the
source code, the same approach can be applied to models created at design-time,
with the assumption that the implementation exactly follows the design.</p>
      <p>In order to design the Train Ticket microservice architecture, we map each
microservice into a UML Component. Figure 2 depicts a simplied version of the
Component Diagram; in particular, we refer to the components that are involved
in the Rebook ticket scenario (it allows to modify a ticket booking). As said,
each UML Component describes a microservice, thus component’s name maps
one-to-one with the name of the microservice. Additionally, for each Component
the operation discovered by the tracing analysis have been reported. We have
also highlighted relations among microservices by means of UML Usage relations,
i.e., the dashed arrows labelled with use.</p>
      <p>A sample of the dynamic view of the application is depicted in Figures 3
and 4. In particular, Figure 3 shows a fragment of the Sequence Diagram of the
Rebook ticket scenario, whereas Figure 4 shows a State Machine Diagram of the
Travel Service microservice. In fact, each state machine represents the internal
behavior of a component, thus the aforementioned state machine represents the
internal behavior of the Travel Service microservice to accomplish the Rebook
ticket request. Each state represents the invoked method, the arrows represent
the event that have been triggered, while the Stand by state has been added to
represent the microservice waiting state.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Runtime Information Mining</title>
      <p>
        The monitoring infrastructure mentioned in Section 2 generates and collects
runtime information in the form of traces, following the OpenTracing
specication [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. A trace consists of a series of casually related events that are triggered by
a request as it moves through a distributed system. These events are called spans
and they represent a timed operation occurring in a component. Spans contain
references to other spans, which allow a trace to be assembled as a complete
workow.
      </p>
      <p>According to the OpenTracing specication, a span always contains a set
of basic information: the name of the operation, the name of the component
providing the operation, the start timestamp and duration (or, alternatively, the
nish timestamp), the role of the span in the request and a set of user-dened
annotations called tags. In the case study we are considering, spans also contain
additional information such as: the IP address and port number of the service,
the Java class and method implementing the operation as well as the unique
identier of the Spring Cloud instance. Figure 5 reports an example of a raw log
containing spans that are generated by the Train Ticket application and stored
in the Elasticsearch database.
Depending on the intended use, it may be necessary to analyze runtime
information to compute complex metrics that the designer may want to link to design
models. For instance, when considering the duration of a span as the response
time of an operation, it may be required to calculate the average response time
in a time interval. Other examples of performance metrics may be the average
response time of traces corresponding to a specic scenario or the number of
times an operation is invoked in a time interval. In the eld of dependability
assessment, the designer may want to link errors and components in design models
to establish their reliability and understand error propagation in the distributed
system. To this extent, it is possible to include the HTTP status code of each
request as a tag in the spans. Status codes corresponding to specic errors can
be aggregated by error type or by time interval, obtaining, in this way, a metric
that can be related to system components.</p>
      <p>The detection of changes in the considered metrics may represent another
use case for log analysis. Non-functional metrics, such as the ones previously
described, may change over time due to a variety of reasons, including system
evolution and changes in deployment congurations. As an example, the
detection of deviations from the average response time of a scenario can guide the
designer in localizing the components that may have caused the deviation. In
this respect, being able to link metrics to design elements may represent a pivotal
asset to maintain and evolve complex distributed systems.
4.2</p>
      <sec id="sec-4-1">
        <title>Logs representation</title>
        <p>
          In order to obtain a model-based representation of the previously described raw
logs, we used a specic metamodel [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] that allows to specify Log models. A Log
is characterized by a set of Traces representing the requests the system served
during the monitoring period. Each Trace consists of a set of Spans representing
execution events. A Span is dened by the following attributes: a timestamp at
which the execution started, its duration in microseconds, and kind specifying
the role of the call in the scenario ( SERVER, CLIENT, or undened for internal
calls). Each Span has a reference to a Service, that is the component providing
the operation, and a reference to the mapped EndPoint. Figure 6 shows a sample
of a Log Model obtained from the raw log in Figure 5.
        </p>
        <p>Log Models conforming to the Log Metamodel are automatically generated
by means of a Java transformation. Such transformation queries Elasticsearch to
access raw logs in text format and subsequently transforms them in XMI-encoded
EMF 7 models.
5</p>
        <p>
          Design-Runtime Interactions via Traceability Links
In the previous section, we showed how it is possible to obtain runtime log
models in a suitable format. These models can now be used along with the UML
model to dene design-runtime interactions. While dierent approaches exist to
specify and implement such interactions, we propose a solution based on the
JTL (Janus Transformation Language) framework [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. It is an Eclipse
EMFbased framework designed to mantain consistency between software artefacts.,
furthermore its traceability engine [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] allows to specify correspondences between
elements that are dened at metamodel level as a set of relations between two
domains.
1 transformation Log2UML ( log :Log , uml : UML ) {
2 ...
3 top relation Trace2UseCase {
4 checkonly domain log t : Log :: Trace { spans = s: Log :: Span {} };
5 checkonly domain uml uc : UML :: UseCase {
6 ownedBehavior = ob : UML :: Interaction { message = m: UML :: Message {} }
7 };
8 where { Span2Message (s , m ); }
9 }
10 relation Span2Message {
11 checkonly domain log s : Log :: Span { endpoint = ep : Log :: EndPoint {} };
12 checkonly domain uml m : UML :: Message { signature = s: UML :: Operation {} };
13 where { EndPoint2operation (ep , s ); }
14 }
15 relation EndPoint2Operation {
7 Eclipse Modeling Framework: https://www.eclipse.org/modeling/emf/
16 n : String ;
17 checkonly domain log ep : Log :: EndPoint { name = n };
18 checkonly domain uml s : UML :: Operation { name = n };
19 }
20 top relation Service2Component {
21 n : String ;
22 checkonly domain log s : Log :: Service { name = n };
23 checkonly domain uml c : UML :: Component { name = n };
24 checkonly domain uml l : UML :: Lifeline { name = n };
25 }
26 ...
27 }
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Listing 1. Log2UML correspondences specication</title>
        <p>
          For instance, Listing 1 reports an excerpt of the correspondences between
Log and UML metamodels in the JTL syntax.; in detail:
- the top relation Trace2UseCase (Lines 3-9) creates a correspondence between
a trace and a scenario by relating Trace elements in the Log domain and
UseCase elements in the UML domain.
- the Span2Message relation (Lines 10-14) maps a Span element to the
corresponding UML Message by relating variables ep and s of type EndPoint
and Operation, respectively.
- the EndPoint2Operation relation (Lines 15-19) creates a correspondence
between an EndPoint of a Span and the UML Operation matching the same
name;
- the top relation Service2Component (Lines 20-25) maps a Service element
in Log to both the UML Component and Lifeline with the same name.
The JTL traceability engine is able to produce a design-runtime traceability
model by executing the correspondences specication in Listing 1. The resulting
traceability model is conform to the Traceability Metamodel presented in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
Figure 7 shows a fragment of the traceability model (in the middle) connecting a
Train Ticket Log model (left-hand side) and the UML model (right-hand side).
A dataset containing logs and traceability models obtained from extensive
monitoring is publicly available 8. Links among elements on both sides are depicted
as arrows in the gure and implemented as EMF inter-model references.
        </p>
        <sec id="sec-4-2-1">
          <title>8 https://github.com/SEALABQualityGroup/traceability-datasets</title>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>
        Achieving an ecient integration between the design and runtime aspects of
complex systems proved to be an interesting challenge for MDE methods and tools,
as advocated during the rst edition of the Model-Driven Engineering for
DesignRuntime Interaction in Complex Systems (MDE@DeRun 2018) workshop [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In
this context, we identify such lack of existing approaches that explicitly exploit
design-runtime interaction with the aim at improving software design.
      </p>
      <p>
        As mentioned in Section 1, the European project MegaM@Rt2 aims at
providing a runtime-design time feedback loop in the development of complex
systems. Within the project, we presented the following contributions on this topic.
In [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] design-runtime relationships have been dened and used to support the
performance improvement of a running system; the approach has been applied
to an e-commerce web application designed by means of UML software
models proled with MARTE. In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] the authors present a model-based approach
that analyzes runtime data and automatically infers potential design issues that
might need to be xed in order to solve detected system malfunctioning. The
approach is applied in the context of a real railway industrial system.
      </p>
      <p>
        With the aim to extend the applicability of software models produced in MDE
approaches to the runtime environment, the modeling community proposed the
use of models at runtime (known as Models@run.time) [
        <xref ref-type="bibr" rid="ref6 ref7">7, 6</xref>
        ] . Such models should
represent the system and its current/updated state and behavior to support
adaptive systems, e.g., to drive subsequent adaptation decisions, to x design
errors or to explore new design decisions.
      </p>
      <p>
        In the software engineering community, other approaches have introduced
reference case studies with specic aims, e.g., for performance analysis [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Von
Kistowsk et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] have presented a micro-service reference application for
performance benchmarking, and modelling. In particular, Teastore is a Java
microservice oriented application and the authors exploit the Palladio Component
Model (PCM) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] as modelling formalism; thus they can apply dierent
nonfunctional analyses by exploiting runtime data information. Herold et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
have presented a UML reference model for a bank system. They have produced
dierent diagrams, such as a Component Diagram, Sequence Diagrams for
different scenarios as Larman described in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Similarly to the above mentioned
works, we provided the modeling of a given application. While they focused on
performance analysis scope, we reversed the software architecture by
exploiting runtime traces (i.e., log) and we dened traceability links between design
elements and runtime data.
7
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we present a reference case study for design-runtime interaction
in MDE. We presented the Train Ticket microservice-based web application and
its monitoring infrastructure. The proposed case study is composed of a set of
software modeling artifacts designed in UML, a dataset of monitoring logs, and a
set of design-runtime correspondence dened as traceability links. The complete
resources of the case study have been made available with the scope to provide
a reference case both for a better understanding of the related challenges and
for extending or new contribution to this topic.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1. The OpenTracing project</article-title>
          , https://opentracing.io/
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <article-title>Unied modeling language</article-title>
          .
          <source>OMG</source>
          (
          <year>2015</year>
          ), http://www.omg.org/spec/UML/2.5/, version 2.
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Afzal</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , BruneliŁre, H.,
          <string-name>
            <given-names>Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Sadovykh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Mazzini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Cariou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Truscan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Gmez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Gorroaeogoitia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Pomante</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Smrz</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.:</surname>
          </string-name>
          <article-title>The megam@rt2 ECSEL project: Megamodelling at runtime - scalable model-based framework for continuous development and runtime validation of complex systems</article-title>
          .
          <source>MICPRO 61</source>
          ,
          <issue>8695</issue>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Arcelli</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cortellessa</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Di</given-names>
            <surname>Pompeo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Eramo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Tucci</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Exploiting architecture/runtime model-driven traceability for performance improvement</article-title>
          .
          <source>In: ICSA</source>
          . pp.
          <volume>8190</volume>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koziolek</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.H.</given-names>
          </string-name>
          :
          <article-title>The Palladio component model for modeldriven performance prediction</article-title>
          .
          <source>Systems and Software</source>
          <volume>82</volume>
          (
          <issue>1</issue>
          ),
          <volume>322</volume>
          (Jan
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gtz</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Song</surname>
          </string-name>
          , H.:
          <article-title>Models@run.time: a guided tour of the state of the art and research challenges</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Blair</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bencomo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , France, R.B.:
          <article-title>Models@run.time</article-title>
          .
          <source>Computer</source>
          <volume>42</volume>
          (
          <issue>10</issue>
          ),
          <volume>2227</volume>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Bruneliere</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gomez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Besnard</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruel</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kastner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rutle</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Model-Driven Engineering for Design-Runtime Interaction in Complex Systems: Scientic Challenges and Roadmap - Report on the MDE@DeRun 2018 workshop</article-title>
          . In
          <source>: Proc. of STAF Collocated Workshops</source>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Cicchetti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di Ruscio</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>JTL: A bidirectional and change propagating transformation language</article-title>
          .
          <source>In: SLE Proc</source>
          . pp.
          <volume>183202</volume>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Cito</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leitner</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bosshard</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knecht</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mazlami</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gall</surname>
          </string-name>
          , H.C.:
          <article-title>PerformanceHat: augmenting source code with runtime performance traces in the IDE</article-title>
          .
          <source>In: Proc. of ICSE Companion</source>
          . pp.
          <volume>4144</volume>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Marchand de Kerchove,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Colange</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Tucci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Ouy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Bruneliere</surname>
          </string-name>
          ,
          <string-name>
            <surname>H.</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          :
          <article-title>Model-driven design-runtime interaction in safety critical systemdevelopment: an experience report</article-title>
          .
          <source>In: (ECMFA)</source>
          (
          <year>2019</year>
          ), to appear
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tucci</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Improved traceability for bidirectional model transformations</article-title>
          .
          <source>In: MDETools, MODELS</source>
          . vol.
          <volume>2245</volume>
          , pp.
          <volume>306315</volume>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Herold</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klus</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Welsch</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Deiters</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rausch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krogmann</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koziolek</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirandola</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hummel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meisinger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfaller</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>CoCoME - The Common Component Modeling Example</surname>
          </string-name>
          , pp.
          <volume>1653</volume>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Larman</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Applying</surname>
            <given-names>UML</given-names>
          </string-name>
          <article-title>and patterns: an introduction to object oriented analysis and design and interative development</article-title>
          .
          <source>Pearson Education India</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          :
          <article-title>Model-driven engineering</article-title>
          .
          <source>IEEE Computer 39(2)</source>
          ,
          <volume>2531</volume>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>von Kistowski</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eismann</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmitt</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bauer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grohmann</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kounev</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Teastore: A micro-service reference application for benchmarking, modeling and resource management research</article-title>
          .
          <source>In: (MASCOTS)</source>
          . pp.
          <volume>223236</volume>
          (
          <year>Sep 2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peng</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xie</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ji</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Benchmarking microservice systems for software engineering research</article-title>
          .
          <source>In: ICSE Companion Proceedings</source>
          . pp.
          <volume>323324</volume>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>