<!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>Integrating Run-Time Observations and Design Component Models for Cloud System Analysis?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Robert Heinrich</string-name>
          <email>heinrich@kit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eric Schmieders</string-name>
          <email>eric.schmieders@paluno.uni-due.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Reiner Jung</string-name>
          <email>reiner.jung@email.uni-kiel.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kiana Rostami</string-name>
          <email>rostami@kit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Metzger</string-name>
          <email>andreas.metzger@paluno.uni-due.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Willhelm Hasselbring</string-name>
          <email>hasselbring@email.uni-kiel.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ralf Reussner</string-name>
          <email>reussner@kit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Klaus Pohl</string-name>
          <email>klaus.pohl@paluno.uni-due.de</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Karlsruhe Institute of Technology</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Kiel University</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>paluno, University of Duisburg-Essen</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Run-time models have been proven bene cial in the past for predicting upcoming quality aws in cloud applications. Observation approaches relate measurements to executed code whereas prediction models oriented towards design components are commonly applied to re ect recon gurations in the cloud. Levels of abstraction di er between code observations and these prediction models. In this position paper, we address the speci cation of causal relations between observation data and a component-based run-time prediction model. We introduce a meta-model for observation data, based on which we propose a mapping language to (a) bridge divergent levels of abstraction and (b) trigger model updates.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Cloud applications are subject to continuous change due to modi cation of the
application itself (e.g., emerging requirements) and its execution environment
(e.g., platform, user quantity). Since they more and more rely on third-party
services, cloud applications increasingly move out of control of the initial
developers. Therefore, they must be observed for quality issues [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. A way to identify
upcoming quality aws is to observe the system and to conduct predictions based
on models that re ect the current system state at run-time (i.e. run-time models
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]). In our research, we consider adaptation and evolution as two mutual,
interwoven cycles [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Central to this perception is a run-time model that is usable for
automatized adaptation and understandable for humans during evolution.
Runtime models are often close to an implementation level of abstraction to ease the
causal relation between the executed code and the model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Existing run-time
observation approaches (cf. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]) provide event-based data sets on source code
level, e.g. service entry and exit events. However, it is useful to describe the
application structure with design-time components in prediction models [
        <xref ref-type="bibr" rid="ref6 ref7">6,7</xref>
        ] to (i)
analyze the e ects of component-related run-time recon gurations [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] (e.g.,
component migration) on quality and (ii) support engineers during system evolution.
Code artifacts do not necessarily re ect design components. Hence, the levels of
abstraction deviate between observation events and component-oriented
models. In this paper, we propose an approach to specify the causal relation between
low-level monitoring data and component-based run-time prediction models. We
introduce a meta-model for observation data, based on which we propose the
run-time architecture correspondence meta-model (RAC). The RAC (a) bridges
divergent levels of abstraction by providing a language to de ne mappings and
(b) triggers model updates. This enables updating design-time models by
observations to form run-time models adequate for re ecting the recon gurations. The
paper is structured as follows. In Sec. 2, we give examples of change scenarios
in a cloud context to discuss the state of the art (Sec. 3) and choose a run-time
prediction meta-model (Sec. 4). Sec. 5 introduces the meta-modeled observation
data. The RAC is described in Sec. 6. The paper concludes in Sec. 7.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Dynamic Change at Run-Time</title>
      <p>
        Requirements on the RAC arise from quality-relevant change scenarios of cloud
systems gathered in a literature review [
        <xref ref-type="bibr" rid="ref10 ref11 ref8 ref9">8,9,10,11</xref>
        ]. We describe how to observe
them hereafter. We choose performance and privacy as two examples of qualities,
as motivated in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], while the approach is basically applicable to various quality
properties. A privacy law of the European Union (EU) states that sensitive
data must not leave the EU. Therefore, we analyze privacy by the geographical
location of software components that keep data (e.g., databases). Scenario S1
to S3 refer to deployment changes for solving performance issues, due to better
load balancing, however simultaneously may cause privacy issues due to changes
in the components' geo-locations. S4 is a provider-intern change of the cloud
con guration and S5 is a change in the system context. Both a ect performance.
      </p>
      <p>
        S1: Migration removes a deployed component instance (cf. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]) from one
execution container and creates a new instance of the same component on another.
Observing migration requires information about the instances itself as well as
their deployment contexts. In order to verify the privacy constraint, the
geographical location of each execution container must be observed.
      </p>
      <p>
        S2: (De)-replication [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]; Replication is similar to S1, however, the original
component instance is not removed. Thus, incoming requests to services can
be distributed among the deployed instances. De-replication removes a replica.
Observing (de)-replication is analog to S1 but includes requests to instances.
      </p>
      <p>
        S3: (De)-allocation [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]; Execution containers may become available for
deployment (i.e. allocation) while others disappear (i.e. de-allocation). Observing
this addresses the identity of containers, e.g. by IP addresses and URLs.
      </p>
      <p>
        S4: Resizing [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]; Cloud providers may change their platform con guration at
run-time, e.g. in-/decrease CPU speed due to energy e ciency. Observing this
strongly depends on the cloud service model. Further reading is given in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        S5: Changing usage pro le [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]; The usage intensity (i.e. workload) of the
application and the user behavior may change. The amount of users concurrently
at the system (closed workload [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]), the users' arrival rate (open workload [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]),
and the invoked services are contained in observable user sessions [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>State of the Art</title>
      <p>
        Work on the causal relation between the executed code and run-time models can
be classi ed by the model types. Approaches on parameterized run-time
models, e.g. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], map single observed service response times to exactly one run-time
model parameter. Migration (S1 ) and resizing (S4 ) may be re ected as single
parameters. However, information extracted from multiple events (e.g., user
behavior (S5 )) requires to process event sets rather than single events. Complex events
are extracted from event sets, e.g. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], in order to compute QoS properties.
However, aggregating observed events to QoS properties is not su cient to update
the application structure (S2 ). Approaches on behavioral run-time models, e.g.
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], exploit observed method traces for generating the states and transitions of
behavioral models. Although these approaches are useful for re ecting changes
in the system usage pro les (S5 ), they lack capturing the system structure
(S13 ) and properties of the execution context (S4 ). Approaches on architectural
run-time models establish the causal relation between the executed system and
run-time models by automatically creating structural models from monitoring
data (cf. the survey in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]). These approaches generate models that are close to
the re ected system and apply graph transformations to create purpose-oriented
views on them or try to reconstruct components from the code [
        <xref ref-type="bibr" rid="ref11 ref8">8,11</xref>
        ]. All the
surveyed approaches create run-time models from executed code, however, do
not take into account design-time artifacts. Thus, they neglect information that
cannot be gathered from the code, such as logical component structures and
boundaries, and execution context con gurations. This is a drawback especially
in a cloud context which is often not completely observable due to the limited
visibility of third-party services and platforms [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Further, overdetailed models
impede understanding and manipulation by humans during system evolution.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Run-Time Prediction Meta-Models</title>
      <p>
        We assume that an initial prediction model already exists at design-time by
probably making assumption for properties not yet available. This design-time model
then turns into a run-time prediction model by updating the model via
observation data. Hence, combining design-time and run-time properties is
straightforward since they rely on the same meta-model. In our approach, we apply
the Palladio Component Model (PCM) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] as a run-time prediction meta-model.
The PCM is tailored to component architectures and provides all the
modeling constructs to re ect the aforementioned scenarios, except for geo-location.
However, it is straightforward to support geo-location by adding an attribute to
execution environment model elements. In contrast, general-purpose prediction
formalisms, e.g. LQN and QPN [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], do not provide the speci c modeling
constructs for component architectures. There are several meta-models related to
the PCM, such as the Descartes Meta-Model (DMM)[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], and those surveyed by
Koziolek [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. They are parameterized to explicitly capture the in uences of the
components' execution context [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. We choose the PCM because it is established
in the community and o ers matured tooling.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Measurement Meta-Model</title>
      <p>
        Monitoring frameworks provide system and application level monitoring data
in form of single value measurements or more complex data sets [
        <xref ref-type="bibr" rid="ref18 ref5">5,18</xref>
        ]. These
measurements are stored for later aggregation, transformation, and analysis.
deploymentId and ContainerEvent.url
refer to the same entity in the
deployment model governed by the RAC
ServletDeploymentEvent* ServerGeoLocation ContainerEvent* TraceMetadata
componentURI : EString hostname : EString url : EString sessionId : EString
deploymentId : EString address : EString hostname : EString
timestamp : ELong parentTraceId : ELong
countryCode : EShort parentOrderId : EInt
ServletDeployedEvent ServletUndeployedEvent ContainerAllocationEvent ContainerDeallocationEvent
IDeploymentRecord
      </p>
      <p>IUndeploymentRecord</p>
      <p>IAllocationRecord</p>
      <p>IDeallocationRecord
events* AbstractTraceEvent*</p>
      <p>BeforeOperationEvent
orderIndex : EInt
classSignature : EString
operationSignature : EString
timestamp : ELong</p>
      <p>The di erent record types, used by monitoring frameworks, can be seen as a
measurement meta-model (MMM) where the attributes of the record types are
determined by technological limits, the quality properties, and our change
scenarios. S1 and S2 are based on the deployment and undeployment of components,
including, if necessary, the transfer of state. As components, like web-servers and
servlets, are technology dependent, they have di erent kinds of identity
information, which require dedicated records. To be still able to distinct deployment
and undeployment, we de ned two common marker interfaces { IDeploymentRecord
and IUndeploymentRecord (cf. Fig. 1). Following the same approach, we provide
also marker interfaces for allocation and deallocation for S3. Resizing, as
dened in S4, is presently not covered by its own record type, as it is often not
a directly observable event and must be derived from other events. S5 depends
on the observation of operations (i.e. service calls) which is covered by a set
of record types based on AbstractTraceEvent and a record holding common trace
information (TraceMetadata). For S5 these records are ltered for entry level calls
to construct entry level call sequences.</p>
      <p>
        As many measurements depend on technology, we require a monitoring
framework and measurement meta-model designed for extendability. The framework
must be fast, reliable, and with low overhead, to ensure that continuous
monitoring does not a ect the operation of the software. Furthermore, measurements
must be accessible in a fast way to support a timely analysis for the operators. In
our work, we selected the Kieker framework [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] as it ful lls these requirements
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and provides a technology independent record notation [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
    </sec>
    <sec id="sec-6">
      <title>Run-Time Architecture Correspondence Meta-Model</title>
      <p>The MMM exhibits a at (i.e. non-hierarchical) structure where all records are
contained in a large collection and distinguished only by their type and their
attributes. Thus, the RAC (cf. Fig. 2) de nes a language to describe the causal
relation between records of the MMM and elements of a run-time prediction
meta-model, here the PCM. A Relation element describes a unidirectional
mapping between one or more AbstractRecords of the MMM and a certain
PCMElement. The AbstractRecords used in the mapping must ful ll a particular Constraint
which is expressed with respect to the AbstractRecord types and their attributes,
respectively. Each mapping is further speci ed by certain formal Rules and a
corresponding function to aggregate information, as exempli ed hereafter.
*
corresponds to</p>
      <p>1
Relation*</p>
      <p>R*ule
function()</p>
      <p>PCMElement*
1
0..*
ChangeEvent</p>
      <p>
        Once an instance of the RAC has been created, a procedure recognizes
updates in the associated MMM instance. With any changes to the MMM instance
the procedure follows the mappings speci ed in the RAC instance to update
the related PCM instance by throwing a ChangeEvent. A ChangeEvent speci es
the PCM element(s) and attribute(s) to be modi ed and the related updated
properties. The ChangeEvent is received by a model update mechanism that is
responsible to adequately change the model. Afterwards, the updated PCM
instance is applied to predict upcoming quality aws using existing solvers [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>Next, we exemplify one Relation of the RAC for open workload (cf. S5 ). The
Relation determines the PCM element OpenWorkload from the corresponding
BeforeOperationEvents and TraceMetadata, that ful ll the Constraint speci ed as
BeforeOperationEvent.orderIndex is 0 and TraceMetadata.parentTraceId is null. The mapping
Rule is speci ed by the following function. We group the observed traces by their
unique TraceMetadata.sessionId. Let i be the least BeforeOperationEvent.timestamp
for the i-th TraceMetadata.sessionId. The inter-arrival time for the two successive
entries is i+1 i ; 8i 2 N. Let T be a random variable representing the
interarrival rate, the probability distribution function of T can be estimated. The
ChangeEvent contains the OpenWorkload element and its interArrivalTime property.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>We addressed the observation of change scenarios in a dynamic cloud context and
proposed the RAC to (a) specify the causal relations between code observation
outcomes (MMM) and the corresponding component-based run-time prediction
model (PCM), and (b) to trigger run-time prediction model updates.</p>
      <p>Future work includes the implementation of the RAC and related tooling, and
the development of a model update mechanism that is triggered by change events.
Previously, we will complete the records for observing the change scenarios,
as speci ed in the MMM. This includes the investigation of scenarios that are
presently not represented by its own record type, such as S4. We plan to evaluate
the RAC and the tooling by observing changes to a real-life cloud application
and updating the corresponding run-time prediction model.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , et al.:
          <article-title>iObserve: integrated observation and modeling techniques to support adaptation and evolution</article-title>
          .
          <source>Technical Report 1309</source>
          , Kiel University (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Morin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , et al.:
          <article-title>Models@run.time to support dynamic adaptation</article-title>
          .
          <source>IEEE Computer</source>
          <volume>42</volume>
          (
          <issue>10</issue>
          ) (
          <year>2009</year>
          )
          <volume>44</volume>
          {
          <fpage>51</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Vogel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
          </string-name>
          , H.:
          <article-title>Adaptation and abstract runtime models</article-title>
          .
          <source>In: SEAMS</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <volume>39</volume>
          {
          <fpage>48</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Amoui</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al.:
          <article-title>Software evolution towards model-centric runtime adaptivity</article-title>
          . In: CSMR, IEEE (
          <year>2011</year>
          )
          <volume>89</volume>
          {
          <fpage>92</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Eichelberger</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmid</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Flexible resource monitoring of java programs</article-title>
          .
          <source>Journal of Software Systems</source>
          <volume>93</volume>
          (
          <year>2014</year>
          )
          <volume>163</volume>
          {
          <fpage>186</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , et al.:
          <article-title>The Palladio component model for model-driven performance prediction</article-title>
          .
          <source>JSS</source>
          <volume>82</volume>
          (
          <year>2009</year>
          )
          <volume>3</volume>
          {
          <fpage>22</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Brosig</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , et al.:
          <article-title>Modeling parameter and context dependencies in online architecture-level performance models</article-title>
          .
          <source>In: CBSE</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2012</year>
          )
          <volume>3</volume>
          {
          <fpage>12</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>von</surname>
            <given-names>Massow</given-names>
          </string-name>
          , R., et al.:
          <article-title>Performance simulation of runtime recon gurable component-based software architectures</article-title>
          .
          <source>In: ECSA</source>
          . Volume
          <volume>6903</volume>
          of LNCS., Springer (
          <year>2011</year>
          )
          <volume>43</volume>
          {
          <fpage>58</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Frey</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>The CloudMIG approach: Model-based migration of software systems to cloud-optimized applications</article-title>
          .
          <source>JAS 4(3 and 4)</source>
          (
          <year>2011</year>
          )
          <volume>342</volume>
          {
          <fpage>353</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>van Hoorn</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>Generating probabilistic and intensity-varying workload for web-based software systems</article-title>
          .
          <source>In: SIPEW. LNCS</source>
          , Springer (
          <year>2008</year>
          )
          <volume>124</volume>
          {
          <fpage>143</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Brosig</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , et al.:
          <source>Automated extraction of arch</source>
          .
          <article-title>-level performance models of distributed component-based systems</article-title>
          . In: ASE. (
          <year>2011</year>
          )
          <volume>183</volume>
          {
          <fpage>192</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Canfora</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , et al.:
          <article-title>A framework for QoS-aware binding and re-binding of composite web services</article-title>
          .
          <source>JSS</source>
          <volume>81</volume>
          (
          <issue>10</issue>
          ) (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Michlmayr</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>End-to-end support for QoS-aware service selection, binding, and mediation in VRESCo</article-title>
          .
          <source>IEEE TSC 3</source>
          (
          <issue>3</issue>
          ) (
          <year>2010</year>
          )
          <volume>193</volume>
          {
          <fpage>205</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>van der Aalst</surname>
          </string-name>
          , W., et al.:
          <article-title>Time prediction based on process mining</article-title>
          .
          <source>Information Systems</source>
          <volume>36</volume>
          (
          <issue>2</issue>
          ) (
          <year>2011</year>
          )
          <volume>450</volume>
          {
          <fpage>475</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Szvetits</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zdun</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Systematic literature review of the objectives, techniques, kinds, and architectures of models at runtime</article-title>
          .
          <source>SoSyM (December</source>
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Kounev</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Performance modeling and evaluation of distributed component-based systems using queueing petri nets</article-title>
          .
          <source>IEEE TSE 32(7)</source>
          (
          <year>2006</year>
          )
          <volume>486</volume>
          {
          <fpage>502</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Koziolek</surname>
          </string-name>
          , H.:
          <article-title>Performance evaluation of component-based software systems: A survey</article-title>
          .
          <source>Perform. Eval</source>
          .
          <volume>67</volume>
          (
          <issue>8</issue>
          ) (
          <year>2010</year>
          )
          <volume>634</volume>
          {
          <fpage>658</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Hoorn</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>Kieker: A framework for application performance monitoring and dynamic software analysis</article-title>
          .
          <source>In: ICPE</source>
          <year>2012</year>
          , ACM (
          <year>2012</year>
          )
          <volume>247</volume>
          {
          <fpage>248</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , et al.:
          <article-title>Model-driven instrumentation with Kieker and Palladio to forecast dynamic applications</article-title>
          . In: KPDAYS. (
          <year>2013</year>
          )
          <volume>99</volume>
          {
          <fpage>108</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>