<!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>Architectural Templates: Engineering Scalable SaaS Applications Based on Architectural Styles</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sebastian Lehrig??</string-name>
          <email>sebastian.lehrig@uni-paderborn.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Software Engineering Group &amp; Heinz Nixdorf Institute University of Paderborn</institution>
          ,
          <addr-line>Paderborn</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>48</fpage>
      <lpage>55</lpage>
      <abstract>
        <p>Software architects plan, model, and analyze the high-level design of software systems. Today, these systems are often deployed in cloud computing environments as Software-as-a-Service (SaaS) applications. The scalability of these applications is crucially impacted by architects' early design decisions. Architects decide based on their experience and known architectural styles like a 3-tier architecture. In new application domains, however, architects lack the experience to determine whether their designs will result in scalable implementations. This lack leads to the high risk of unsatisfying scalability and expensive reimplementations. To tackle this problem, we propose initial ideas and concepts for architectural templates (ATs), de ned as a language to formalize architectural styles on component models. This formalization allows to enrich styles by quality annotations and completions for model-driven quality analyses. As we focus on SaaS applications, we exemplify this idea by enriching ATs by scalability annotations and completions allowing architects to analyze their applications' scalability. To illustrate such an analysis, we introduce and use a toy example. Based on this example, we derive initial working packages describing how we plan to realize and validate ATs.</p>
      </abstract>
      <kwd-group>
        <kwd>Model-driven</kwd>
        <kwd>Architectural Templates</kwd>
        <kwd>Cloud Computing</kwd>
        <kwd>SaaS</kwd>
        <kwd>Styles</kwd>
        <kwd>Component-Based</kwd>
        <kwd>Scalability</kwd>
        <kwd>Performance</kwd>
        <kwd>Engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In forward engineering, software architects plan, model, and analyze the
highlevel design of large software systems, i.e., their architecture. Today, these
software systems are often deployed as so-called Software-as-a-Service (SaaS)
applications [16] in cloud computing environments because of their advantageous
characteristics. Cloud computing is characterized by (a) elasticity, i.e., an access
to computing resources that can be provisioned and released on demand [16] and
(b) an accounting model in which only actually-demanded resources determine
costs (pay-per-use) [16]. These two characteristics induce a dependency between
costs and required computing resources. To minimize costs, a typical requirement
for SaaS applications is, therefore, that SaaS applications use as little additional
computing resources as possible when demand increases. This requirement
describes the scalability of a system, i.e., its ability \to sustain increasing workloads
by making use of additional resources" [11].
?? The research leading to these results has received funding from the EU Seventh
Framework Programme (FP7/2007-2013) under grant no 317704 (CloudScale).
For software architects, scalability induces the need of guidance toward its
achievement. For instance, an architect may require guidance when deciding
between a relational and a NoSQL [19] database as both promise di erent
scalability depending on stored data. Today, architects can be guided by (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) architectural
styles [18] that inherently foster scalability in cloud computing environments and
(
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) scalability analyses allowing architects to predict scalability properties.
      </p>
      <p>To illustrate these ideas, we introduce an example scenario in Sec. 1.1.
Afterwards, we discuss why neither architectural styles nor scalability analyses
su ciently guide architects in designing scalable SaaS applications in Sec. 1.2.
1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Example Scenario</title>
      <p>
        As an example scenario, we consider a simpli ed book shop that shall be newly
designed for running in a cloud computing environment. In this scenario, an
enterprise assigns a software architect to design the book shop. The enterprise
has the following requirements for this shop:
R1: Functionality In the shop, customers can (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) browse and (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) order books.
      </p>
    </sec>
    <sec id="sec-3">
      <title>R2: Handling of Environmental Changes The enterprise expects that the</title>
      <p>environment for the book shop changes over time. For example, it expects
that books sell better around Christmas while they sell worse around the
holiday season in summer. Therefore, the response times of the shop shall
stay within 3 seconds even if the customer arrival rates in- or decrease by
1,000 customers per hour (at maximum).</p>
      <p>R3: Linear Scalability The costs for operating the book shop are only allowed
to increase (decrease) by $0.01 per hour when the number of customers using
the shop increases (decreases) by 1. Costs per hour is a metric to measure
the amount of additional resources (cf., the scalability de nition in Sec. 1).
Requirements R2 and R3 are typical reasons to operate a system in an
elastic cloud computing environment [11], i.e., an environment where application
servers automatically provision the required amount of resources to cope with
environmental changes. Therefore, the software architect will design the shop as
an SaaS application operating in a rented cloud computing environment.
1.2</p>
    </sec>
    <sec id="sec-4">
      <title>Guidance for Scalability</title>
      <p>
        To provide a scalable SaaS application (R3), the architect considers using (
        <xref ref-type="bibr" rid="ref1">1</xref>
        )
architectural styles and (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) scalability analyses.
      </p>
      <p>The rst option (architectural styles) requires that the architect is aware
of appropriate cloud-based architectural styles as well as their application and
assumptions. Currently, only a few architectural styles for SaaS applications in
the cloud exist [8]. One example for such a style is SPOSAD [13].</p>
      <p>SPOSAD suggests a 3-tier system with stateless middle tier, but leaves open
the decision for a concrete database paradigm on the data tier [13]. Therefore,
the architect may design the book shop as shown in Fig. 1: he assigns each of the
three SPOSAD tiers (presentation, middle, data) to a component (Book Shop
Frontend, Book Management, Book Database). The tiers of SPOSAD can be
seen as SPOSAD's roles, i.e., as set of constraints for associated components.</p>
      <p>Middle Tier
Customer
Legend:</p>
      <p>Book Shop
Frontend</p>
      <p>Role
Actor</p>
      <p>Component</p>
      <p>Book</p>
      <p>Management
Provided Interface
Required Interface</p>
      <p>Data Tier $DB Kind = NoSQL</p>
      <p>Book Database
Assembly Connector $Parameter
For example, the data tier may only allow connections from the middle tier. As
SPOSAD does not constrain the data tier further, the architect is unsure whether
to design the system with a relational or a NoSQL database that both promise a
di erent scalability. Because of this variability point, he needs further guidance;
SPOSAD alone is not enough. For achieving particular scalability requirements,
there is, hence, the need to re ne SPOSAD. Also the few other SaaS styles lack
detailed suggestions for selecting an appropriate database paradigm.</p>
      <p>
        The second option (scalability analyses) would allow the architect to model
both database alternatives and to compare their scalability (what-if analysis).
Scalability analyses require simulation or analytical models allowing architects
to predict an SaaS applications' scalability in cloud computing environments.
However, according to Becker et al. [2], current analysis models lack (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) support
for comprehensive design-time analyses based on architectural models, (
        <xref ref-type="bibr" rid="ref2">2</xref>
        )
realistic case studies in cloud computing environments, and (
        <xref ref-type="bibr" rid="ref3">3</xref>
        ) explicit support for
scalability because of their focus on performance analysis. These lacks hinder
the architect to use and trust existing approaches in order to analyze the
scalability of the modeled book shop. For instance, these approaches are unable to
analyze whether a NoSQL or a relational database suits the shops' scalability
requirements best. Hence, these approaches need to be extended and improved.
      </p>
      <p>The lack of guidance (regarding styles and scalability analyses) for the
architect leads to the high risk of realizing a cost-ine cient SaaS application and of an
expensive re-implementation. For example, it may be expensive to refactor the
book shop with an established but non-scalable relational database
implementation to an implementation using a NoSQL database. This risk becomes even
more severe in case the enterprise discovers scalability issues when high costs for
hosting their application have already incurred, e.g., during system operation.
2</p>
      <sec id="sec-4-1">
        <title>Related Work</title>
        <p>
          Related work tackling the engineering of scalable SaaS applications can be
classi ed into two areas: (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) architectural styles for scalability and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) performance
engineering serving as a basis for scalability engineering.
        </p>
        <p>A generally rich set of literature provides, classi es, and surveys sets of
architectural styles (e.g., [5], [20]). However, these styles lack an explicit consideration
of cloud computing environments as well as a focus on scalability.</p>
        <p>
          In the context of cloud computing, typical styles are REST [9] for HTTP
and SPIAR [17] for AJAX. Also Erl et al. [8] describe a set of cloud
computing styles that foster scalability (e.g., load balanced virtual server instances).
These styles have in common that they target the infrastructure in which SaaS
applications run. Third party cloud computing providers typically provide this
infrastructure by o ering (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) a deployment of SaaS applications in application
servers (Platform-as-a-Service; PaaS) or (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) access to (virtual) nodes where users
can operate their SaaS application (Infrastructure-as-a-Service; IaaS). Therefore,
these third party providers can utilize the presented architectural styles.
However, as these styles lack a focus on implementing SaaS applications, they only
implicitly help architects who engineer the SaaS layer of these applications. In
contrast, we will focus directly and explicitly on architectural styles for SaaS
applications, starting with investigating the few architectural styles that do cover
aspects of SaaS applications. Two examples for these styles are SPOSAD [13] and
SOCCA [21]. For instance, SPOSAD describes a 3-tier variation that promotes
a stateless middle tier for scalability [13]. As they are stateless, components of
the middle tier can then safely be replicated (scaled-out) and load-balanced.
        </p>
        <p>The second area, performance engineering, o ers several approaches recently
classi ed and surveyed by Koziolek [12]. These approaches allow for analyzing
the performance (response time, throughput, utilization) of component-based
systems as, for example, the PCM [3]. However, they lack support for cloud
computing characteristics, e.g., an elastic provisioning of computing resources.</p>
        <p>Becker et al. [2] survey model-driven performance engineering approaches
that support elasticity via self-adaptation, e.g., the SimuLizar [1] approach that
extends the PCM. They conclude that these approaches are still limited. For
example, only two approaches target design-time models and realistic validations
by case studies are missing. However, software architects require design-time
approaches, and appropriate case studies are the means to systematically nd
architectural styles for scalable SaaS applications. Especially the latter aspect,
i.e., using model-driven performance engineering techniques to conduct
scalability analyses, lacks investigation. Therefore, we plan to extend existing
performance analysis approaches like SimuLizar and PCM to enable model-driven
scalability analyses of SaaS applications. In particular, we want to conduct case
studies to identify appropriate architectural styles for scalable SaaS applications.
3</p>
      </sec>
      <sec id="sec-4-2">
        <title>Proposed Solution</title>
        <p>To cope with the lack of guidance for software architects (cf., Sec. 1), we propose
and introduce architectural templates (ATs). We de ne ATs as a language to
formalize architectural styles on component models. This formalization allows
to enrich styles by quality annotations and completions. Quality annotations
characterize a concrete quality property of interest. Quality completions utilize
these annotations to derive quality models analyzable by quality analysis tools.
As we focus on SaaS applications, we enrich ATs by scalability annotations and
completions allowing architects to analyze their applications' scalability.</p>
        <p>
          Technically, we plan to apply ATs on systems modeled in the PCM [3]. For
this application, we will extend the PCM metamodel (i.e., PCM's model for
specifying component-based architectures) by ATs. For scalability analyses, we
will extend the SimuLizar [1] approach to take information of ATs into account.
(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) Select AT
(
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) Assign AT Roles to
System Components
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) Analyze
Scalability
        </p>
        <p>Software architects can use our ATs to design systems as well as to analyze
their scalability. AT engineers, on the other hand, enrich our ATs by annotations
and completions. We guide through these processes of AT application (Sec. 3.1)
and AT creation (Sec. 3.2) by using the book shop scenario of Sec. 1.
3.1</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Applying a SPOSAD Architectural Template</title>
      <p>Software architects apply ATs to design SaaS applications and to analyze their
scalability. Fig. 2 illustrates the process steps for applying ATs. In step 1,
architects select an AT from a repository of ATs. For example, the architect of the
book shop scenario selects a SPOSAD AT. Afterwards, the architect assigns all
roles the AT requires to the components of his architecture (step 2).</p>
      <p>As illustrated in Fig. 1, he may assign SPOSAD's presentation, application,
and data tier roles to book shop components as well as connects these
components appropriately. Firstly, the AT formalism assures that no constraints
are violated, e.g., it forbids connecting presentation and data tier components.
Secondly, the AT formalism allows architects to specify whether a data tier
component corresponds to a relational or a NoSQL database (scalability annotation).</p>
      <p>As this design is based on an AT, the architect can automatically run
scalability analyses afterwards by using the analysis tool we will provide (step 3).
The key idea is that the AT includes a scalability completion for this purpose.
For the book shop, SPOSAD AT's scalability model ensures that the architect
obtains results that accurately re ect the scalability of the selected database
kind. Therefore, the SPOSAD AT allows the architect to analyze which kind of
database better ts his scalability requirements at design time.
3.2</p>
    </sec>
    <sec id="sec-6">
      <title>Creating the Architectural Template for SPOSAD</title>
      <p>To create ATs, AT engineers apply the process illustrated in Fig. 3. In the rst
step, they formalize AT roles (e.g., SPOSAD's data tier) based on architectural
styles (e.g., known from architecture handbooks).</p>
      <p>
        Besides formalizing architectural styles, AT engineers enrich the AT with
scalability annotations and completions to enable an automated scalability
analysis. For this automation, AT engineers rst have to identify scalability-relevant
parameters and quantify them (step 2). For example, the kind of database
(relational vs. NoSQL database) on the data tier could be a scalability-relevant
parameter because NoSQL databases are often designed for scaling horizontally.
(
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) Formalize Style
with AT Roles
      </p>
      <p>
        (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) Identify and
Quantify Scalability
      </p>
      <p>Parameters</p>
      <p>
        (
        <xref ref-type="bibr" rid="ref3">3</xref>
        ) Specify
Scalability Model
      </p>
      <p>
        (
        <xref ref-type="bibr" rid="ref4">4</xref>
        ) Validate
Scalability Model
      </p>
      <p>
        (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ) Enrich AT with
Scalability Annotations
and Completions
To con rm and quantify the in uence on the scalability of this parameter
empirically, an AT engineer (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) implements a series of automated test-drivers (focusing
on the database parameter) that systematically collect the necessary data based
on scalability metrics and (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) runs these test-drivers in a cloud computing
environment. The AT engineer can subsequently check and quantify the in uence of
the \kind of database" parameter by means of a regression analysis.
      </p>
      <p>In case AT engineers successfully identi ed a scalability parameter, they
specify a scalability model for this parameter (step 3). The AT engineer of
the book shop has, e.g., to specify a scalability model for NoSQL databases.
Because NoSQL databases can scale horizontally, an accurate scalability model
may model this NoSQL database as a \simple database" component, attached
to a \load balancer" component. As soon as load exceeds a certain threshold, an
adaptation rule assures that another \simple database" is spawned and added
to load balancing. To determine concrete thresholds of the load balancer as well
as processing times of the \simple database", the AT engineer integrates the
results of the regression analysis. This model can, nally, be analyzed by
ordinary analysis tools supporting components annotated with processing times and
adaptation rules, e.g., the PCM with SimuLizar extended by scalability metrics.</p>
      <p>
        Next, AT engineers validate the scalability model (step 4). For this
validation, they use a set of case studies, like the book shop scenario, that include
identi ed scalability parameters. For each case study, AT engineers (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) measure
its scalability in the considered cloud computing environment and (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) predict its
scalability based on the scalability model. In case the predictions accurately
reect the scalability of the measurements, the AT engineers successfully validated
the model. Otherwise, they have to iterate the process by re ning the automated
test-drivers or by identifying and integrating further scalability parameters.
      </p>
      <p>In the nal step of Fig. 3, AT engineers enrich the AT with scalability
annotations and completions. The speci cation of a \NoSQL database" for the \kind
of database" parameter corresponds to a scalability annotation. The
transformation to a scalability model corresponds to a scalability completion. Therefore,
analysis tools can analyze the scalability of a model speci ed by ATs.</p>
      <p>We based the process of Fig. 3 on established processes in performance
engineering [10]. The basic idea is that concepts for performance engineering (e.g.,
performance model speci cation) apply similarly on scalability as well.
4</p>
      <sec id="sec-6-1">
        <title>Preliminary Work</title>
        <p>In [4], we described an overall process for applying ATs (there, termed
\patterns") to design scalable SaaS applications. In this context, we also showed
how to reverse engineer PCM models from existing systems [7].</p>
        <p>Furthermore, we extended the PCM to run automatically measurements
based on Java SE and RMI [15]. We also conducted several measurements in
a virtualized environment and showed PCM's suitability for these environments.
In [14], we show how to support automatic measurements for di erent target
platforms than Java SE. This additional support is especially useful when the
targeted platform is a cloud computing platform, e.g., a PaaS environment.
5</p>
      </sec>
      <sec id="sec-6-2">
        <title>Expected Contributions</title>
        <p>
          Our main contribution will be the AT language and AT processes helping
software architects to design scalable SaaS applications. For the concrete realization,
we plan to contribute (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) an AT metamodel extending the PCM, (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) evaluated
processes for creating and applying ATs, and (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) an initial repository of
evaluated ATs for designing scalable SaaS applications. We will base our evaluations
on (industry) case studies, which are our nal contribution.
6
        </p>
      </sec>
      <sec id="sec-6-3">
        <title>Plan for Evaluation and Validation</title>
        <p>
          We plan to evaluate expected bene ts of ATs based on case studies. As case
studies, we will use (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) the simple book shop scenario of Sec. 1.1, (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) the TPC-W
benchmark [6] describing a more complex book shop, and (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) industry case
studies based on our on-going work in the CloudScale [4] project. Additionally,
we will validate bene ts of ATs by controlled experiments with student groups.
7
        </p>
      </sec>
      <sec id="sec-6-4">
        <title>Current Status</title>
        <p>
          Currently, we are in the planning phase of our work. The ideas presented in this
paper re ect the current status of our plans. Therefore, we introduce a set of ve
work packages (WPs) describing how we want to progress in actually realizing
ATs. We plan to provide rst results in every WP within one year. Afterwards,
we plan to re ne and extend them in a time frame over two more years.
WP1: Architectural Templates The goal of this WP is to formalize ATs by
extending the PCM metamodel as well as to provide an initial set of example
ATs. A minimal requirement is that at least SPOSAD is speci ed using ATs.
WP2: Scalability Formalization This WP targets to provide a quanti able
scalability formalization that architects can use to compare di erent designs
of systems. Therefore, we want to clarify two main questions: (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) \Which
scalability de nition ts to the needs of cloud computing (e.g., regarding
in uence of elasticity)?" and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) \Can a particular scalability de nition be
formalized in order to quantify scalability (e.g., as a metric)?". To answer
these questions, we plan to conduct a systematic literature review.
WP3: Domain Mapping In this WP, we want to select and characterize the
application domain we focus on. Possible candidates are PaaS environments
like SAP HANA Cloud, mOSAIC, and Google App Engine. We will develop
scalability measurement concepts for selected domains based on the PCM.
WP4: Tool Integration This WP targets integrating developed concepts of
ATs to the PCM. Firstly, we integrate general tool support for ATs.
Secondly, we enrich the PCM by dedicated support for scalability measurements
(currently, the PCM focuses on performance only). Thirdly, we extend the
PCM to provide tool support for selected application domains of WP3.
WP5: Evaluation In this WP, we evaluate ATs as described in Sec. 6.
        </p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
          </string-name>
          , S., Meyer, J.:
          <article-title>SimuLizar: design-time modelling and performance analysis of self-adaptive systems</article-title>
          .
          <source>In: Proceedings of Software Engineering</source>
          <year>2013</year>
          (
          <issue>SE2013</issue>
          ),
          <source>Aachen</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luckey</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Model-driven performance engineering of selfadaptive systems: a survey</article-title>
          .
          <source>In: QoSA '12</source>
          . pp.
          <volume>117</volume>
          {
          <fpage>122</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <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.:</given-names>
          </string-name>
          <article-title>The palladio component model for modeldriven performance prediction</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>82</volume>
          (
          <issue>1</issue>
          ) (
          <year>Jan 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Brataas</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stav</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lehrig</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kopcak</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huljenic</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>CloudScale: Scalability Management for Cloud Systems</article-title>
          .
          <source>In: 4th Int. Conf. on Performance Engineering. ACM (Apr</source>
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Buschmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meunier</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rohnert</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sommerlad</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Pattern-Oriented Software</surname>
          </string-name>
          Architecture Volume 1
          <article-title>: A System of Patterns</article-title>
          . Wiley, volume
          <volume>1</volume>
          edn.
          <source>(Aug</source>
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Council</surname>
            ,
            <given-names>T.P.</given-names>
          </string-name>
          :
          <article-title>TPC-W benchmark (web commerce) speci cation version 1.8</article-title>
          . http: //www.tpc.org/tpcw/spec/tpcw_V1.8.
          <string-name>
            <surname>pdf</surname>
          </string-name>
          (
          <year>Feb 2002</year>
          ),
          <source>last visited: 12 Sep 2013</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. von Detten,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Lehrig</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          :
          <article-title>Reengineering of component-based software systems in the presence of design de ciencies { an overview</article-title>
          .
          <source>In: WSR'13 (May</source>
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Erl</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puttini</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahmood</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          :
          <article-title>Cloud Computing: Concepts, Technology and</article-title>
          <string-name>
            <surname>Design. Prentice Hall PTR</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Fielding</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Taylor, R.:
          <article-title>Principled design of the modern web architecture (</article-title>
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Happe</surname>
          </string-name>
          , J.:
          <article-title>Predicting Software Performance in Symmetric Multi-core and Multiprocessor Environments</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Oldenburg, Germany (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Herbst</surname>
            ,
            <given-names>N.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kounev</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
          </string-name>
          , R.: Elasticity:
          <article-title>What it is, and What it is Not</article-title>
          .
          <source>In: Proceedings of the 10th International Conference on Autonomic Computing (ICAC</source>
          <year>2013</year>
          ), San Jose, CA, June
          <volume>24</volume>
          {28 (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <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>
          ),
          <volume>634</volume>
          {658 (Aug
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Koziolek</surname>
          </string-name>
          , H.:
          <article-title>The SPOSAD architectural style for multi-tenant software applications</article-title>
          .
          <source>In: Proc. 9th Working IEEE/IFIP Conf. on Software Architecture</source>
          . pp.
          <volume>320</volume>
          {
          <fpage>327</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (Jul
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Langhammer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lehrig</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramer</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          :
          <article-title>Reuse and con guration for code generating architectural re nement transformations</article-title>
          .
          <source>In: VAO '13</source>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lehrig</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zolynski</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Performance prototyping with ProtoCom in a virtualised environment: A case study</article-title>
          .
          <source>In: Proceedings to Palladio Days</source>
          <year>2011</year>
          ,
          <fpage>17</fpage>
          -18
          <source>November</source>
          <year>2011</year>
          , FZI Forschungszentrum Informatik, Karlsruhe, Germany (Nov
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Mell</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grance</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>The NIST de nition of cloud computing</article-title>
          .
          <source>NIST Special Publication</source>
          <volume>145</volume>
          (
          <issue>6</issue>
          ),
          <volume>7</volume>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Mesbah</surname>
          </string-name>
          , A.,
          <string-name>
            <surname>van Deursen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A component- and push-based architectural style for ajax applications</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>81</volume>
          (
          <issue>12</issue>
          ),
          <volume>2194</volume>
          {
          <fpage>2209</fpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <source>Handbuch der Software-Architektur. dPunkt.verlag Heidelberg</source>
          ,
          <volume>2</volume>
          <fpage>edn</fpage>
          .
          <source>(Dec</source>
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Sadalage</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence</article-title>
          .
          <source>Addison Wesley Professional</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Shaw</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clements</surname>
          </string-name>
          , P.C.
          <article-title>: A eld guide to boxology: Preliminary classi cation of architectural styles for software systems</article-title>
          .
          <source>In: Proceedings of the 21st International Computer Software and Applications Conference</source>
          . pp.
          <volume>6</volume>
          {
          <fpage>13</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Tsai</surname>
          </string-name>
          , W.T.,
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Balasooriya</surname>
          </string-name>
          , J.:
          <article-title>Service-oriented cloud computing architecture</article-title>
          .
          <source>In: ITNG'10</source>
          . pp.
          <volume>684</volume>
          {
          <fpage>689</fpage>
          . IEEE, Washington, DC, USA (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>