<!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>UML-based Cloud Application Modeling with Libraries, Profiles, and Templates?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexander Bergmayr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Javier Troya</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Patrick Neubauer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel Wimmer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gerti Kappel</string-name>
          <email>kappelg@big.tuwien.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Business Informatics Group, Vienna University of Technology</institution>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Recently, several cloud modeling approaches have emerged. They address the diversity of cloud environments by introducing a considerable set of modeling concepts in terms of novel domain-specific languages. At the same time, general-purpose languages, such as UML, provide modeling concepts to represent software, platform and infrastructure artifacts from different viewpoints where the deployment view is of particular relevance for specifying the distribution of application components on the targeted cloud environments. However, the generic nature of UML's deployment language calls for a cloud-specific extension to capture the plethora of cloud provider offerings at the modeling level. In this paper, we propose the Cloud Application Modeling Language (CAML) to facilitate expressing cloud-based deployments directly in UML, which is especially beneficial for migration scenarios where reverse-engineered UML models are tailored towards a selected cloud environment. We discuss CAML's realization as a UML internal language that is based on a model library for expressing deployment topologies and a set of profiles for wiring them with cloud provider offerings. Finally, we report on the use of UML templates to contribute application deployments as reusable blueprints and identify conceptual mappings between CAML and the recently standardized TOSCA.</p>
      </abstract>
      <kwd-group>
        <kwd>Cloud Computing</kwd>
        <kwd>Model-Driven Engineering (MDE)</kwd>
        <kwd>Cloud Modeling</kwd>
        <kwd>UML</kwd>
        <kwd>Language Engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Cloud computing has recently emerged as a new possibility how software can be made
available to clients as a service. For software vendors, this is appealing as cloud
environments [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] have the benefit of low upfront costs compared to a traditional on-premise
solution and operational costs that scale with the provisioning and releasing of cloud
offerings. They may range from low-level infrastructure elements, such as raw
computing nodes, over higher level platforms, such as a Java execution environment on
top of a cloud infrastructure, to ready-to-use software deployed on a platform. As a
result, current cloud environments are diverse in nature and show various levels of
virtualization they operate on. Recent cloud modeling approaches already capture a
considerable set of domain-specific concepts to support different scenarios: description of
? This work is co-funded by the European Commission under the ICT Policy Support
Programme, grant no. 317859.
cloud-based applications [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and their deployments [
        <xref ref-type="bibr" rid="ref13 ref21 ref5">5, 13, 21</xref>
        ], optimization of such
deployments [
        <xref ref-type="bibr" rid="ref14 ref18">14, 18</xref>
        ], provisioning of cloud resources [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], or automating the
scalability of cloud environments [
        <xref ref-type="bibr" rid="ref11 ref9">9, 11</xref>
        ]. At the same time, general-purpose languages, such as
UML, provide modeling concepts to represent software, platform and infrastructure
artifacts from different viewpoints. Hence, providing extensions to UML that satisfy
current cloud modeling requirements appears beneficial, especially when cloud-oriented
migration scenarios [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] need to be supported where reverse-engineered UML models
are tailored towards a selected cloud environment.
      </p>
      <p>
        However, to date, effective UML-based support for modeling cloud application
deployments that are wired with cloud provider offerings is still missing. As a result,
on-premise deployments expressed in UML can hardly be turned into cloud-based
deployments without neglecting the intended usage of UML. In the ARTIST project [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
we are particularly confronted with this problem as we work towards a model-driven
engineering approach for modernizing applications by novel cloud offerings, which
involves deploying them or at least some of their components on a cloud environment.
Ideally, the design choices of a cloud-based deployment are expressed at the modeling
level, which calls for an appropriate language support in the light of UML. While in
this way, not only the full expressive power of UML can be exploited, also a seamless
integration of cloud-specific models into existing UML models is ensured.
      </p>
      <p>
        In this paper, we propose the Cloud Application Modeling Language (CAML) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
to enable representing cloud-based deployment topologies directly in UML and
refining them with cloud offerings captured by dedicated UML profiles. Thereby, a clear
separation is achieved between cloud-provider independent and cloud-provider specific
deployment models [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], which is in accordance with the PIM/PSM concept. In our case,
the “platform” refers to the cloud provider. We developed profiles for two major cloud
providers1 and integrated them into a common cloud profile. Inspired from common
cloud computing literature [
        <xref ref-type="bibr" rid="ref12 ref2 ref3">2, 3, 12</xref>
        ], recent cloud modeling approaches [
        <xref ref-type="bibr" rid="ref15 ref17 ref18 ref21 ref5 ref9">5, 9, 15, 17,
18, 21</xref>
        ] and cloud programming approaches2, we developed CAML’s model library that
facilitates developing base deployment topologies to which cloud offering profiles are
applied. The benefits of realizing CAML as an internal language of UML are threefold:
(i) UML provides a rich base language for the deployment viewpoint, (ii)
“cloudifying” UML models is facilitated without the need to re-model existing applications, and
(iii) profiles in UML allow hiding details of cloud provider offerings from models and
dynamically switching between them by (un-/re-)applying respective cloud provider
profiles.
      </p>
      <p>We motivate the practical value of CAML by means of a deployment scenario in
Section 2. In Section 3, we give the design rationale of CAML and provide insights into
its model library and the covered UML profiles whereas in Section 4, we discuss the
employment of UML templates as reusable deployment blueprints. The
operationalization of CAML by means of a mapping to the recently accepted TOSCA standard is
dedicated to Section 5. Finally, in Section 6 we discuss work related to CAML before
we conclude in Section 7.
1 Amazon AWS: http://aws.amazon.com and Google Cloud Platform: http://cloud.google.com
2 Deltacloud: https://deltacloud.apache.org and jclouds: http://jclouds.apache.org</p>
    </sec>
    <sec id="sec-2">
      <title>Motivating Deployment Scenario</title>
      <p>To motivate the benefits of employing UML as the host language for realizing CAML,
we give an overview of UML’s structural viewpoints that support representing
application deployments by means of a reference application3 of the ARTIST project. We
take the viewpoint of the application components and their deployment. Figure 1a
depicts some components of our application, an excerpt of their realizing classes and the
manifestation of these components by deployable artifacts. A possible on-premise
deployment for them is presented in Figure 1b. It covers instances of the two deployable
artifacts and connects them to a Java-based middleware and a relational DBMS, which
are in turn deployed onto a node with specified (virtual) machine characteristics. The
model elements of the deployment are instances of the custom types defined in the
component viewpoint (see Figure 1a) and the deployment viewpoint (see Figure 1c),
respectively. With the emergence of cloud offerings and the demand to exploit them,
deployment models need to be expressive enough to capture such offerings. This is
exactly the idea of CAML. Because it is realized in terms of lightweight extensions to
UML, CAML models are applicable to UML models and so to our modeled reference
application as depicted in Figure 1. In Sections 3 and 4, we present cloud-based
deployments for our reference application.</p>
      <p>«use»
«component»
PetstoreService</p>
      <p>«class»</p>
      <p>OrderService
+ createOrder():Order
+ findOrder(in id long):Order
«use»
«use»
Petstore Components
«component»
PetstoreWeb</p>
      <p>«class»</p>
      <p>ShoppingCart
- order:Order
- orderService:OrderService</p>
      <p>«manifestation»
Pets«taorrteifBacuts»iness</p>
      <p>«package import»
On-premise Petstore Deployment
:PetstoreBusiness :PetstoreData
«deploy» «deploy» «deploy»
:ApplicationContainer :Datastore
container=JEE type=relational
«deploy»
:OnPremiseNode
memory=2
lCoPcaUlD=1is.k7=4 «deploy»
operatingSystem=Linux
(b) Deployment Viewpoint at Instance Level
«manifestation»
«manifestation»
«artifact»</p>
      <p>
        PetstoreData
(a) Component Viewpoint
«ModelLibrary»Web Deployment Library
«ExecutionEnvironment» «Enumeration»
ApplicationContainer ContainerKind
type:ContainerKind [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] JEE
      </p>
      <p>RubyOnRails
«Node»</p>
      <p>OnPremiseNode
«package memory:Real [0..1]
import» CPU:Real [0..1]
localDisk:Real [0..1]
operatingSystem:OSKind [0..1]
Fig. 1: CAML Use-Case</p>
      <p>«component»</p>
      <p>PetstoreDomain
«class»</p>
      <p>Order
- orderId:long
«class»</p>
      <p>OrderLine
1..* - lineId:long
«ExecutionEnvironment»</p>
      <p>
        Datastore
type:DatastoreKind [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
3 It is based on the Java Petstore: http://www.oracle.com/technetwork/java/index-136650.html
CAML is to express deployment topologies by common cloud modeling concepts and
to enable the wiring of such models with concrete cloud provider offerings. This wiring
is achieved by applying a dedicated CAML Profile to a deployment model expressed
in terms of the CAML Library. As a result, a clear separation between cloud-provider
independent and cloud-provider specific models is achieved. Selecting cloud provider
offerings at the modeling level for a concrete deployment becomes a matter of applying
the respective stereotypes. The overall set of stereotypes encompass the possible design
choices provided by CAML regarding cloud provider offerings.
3.1
      </p>
      <sec id="sec-2-1">
        <title>Model Library for Cloud Deployment Topologies</title>
        <p>
          As presented in Figure 2, the CAML Library is built around the concept of cloud
offering. It is considered as a virtual resource that is expected to be supported by a cloud
environment once the wiring with a concrete cloud offering has been performed. More
specifically, three offering types capture common cloud environment capabilities. A
cloud node provides compute capacity and operates at a certain level of
virtualization [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. From an infrastructure-level perspective, cloud nodes come with an
operating system, while when turning this perspective to the platform level they also provide
middleware, such as a web server and an application container. In case of the latter, the
platform is fully managed by a cloud environment. With dedicated scalability strategies,
the elastic nature of a cloud environment is managed. For instance, cloud nodes can
automatically be acquired depending on the number of incoming requests. Clearly,
acquiring and releasing cloud nodes can also be manually controlled. The second offering
refers to the cloud storage capabilities of cloud environments which provide diverse
solutions for structuring application data [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and increasing their availability by relaxing
consistency [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. Finally, a cloud service is considered as a ready-to-use cloud offering
that is provisioned and managed by a cloud provider. For instance, a load balancer that
distributes requests to cloud nodes is an infrastructure-related cloud service, while a
task queue for long running processes is a platform-related cloud service. To represent
offering-to-offering connections, communication channels are employed while cloud
configurations enable modifying the assumed conventions of a cloud environment. For
instance, an automatic scaling strategy can be configured with boundaries of minimum
and maximum running cloud nodes. Generally, instantiated elements of the CAML
Library are refined to concrete cloud provider offerings via dedicated stereotypes.
«ModelLibrary» CloudLLibibrraarryy
        </p>
        <p>«CommunicationPath»
channelSourceCommunicationChannel
«Association» [*]
«DeploymentSpecification» OfferingConfiguration «Class»</p>
        <p>CloudConfiguration [*]offering configuration[*] CloudOffering</p>
        <p>
          Cl«oNuoddNeo»de «ExeCculotiuondESntovriraognement»
virtualization:VirtualizationKind [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] dataStructure:StructureKind [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
scaling:ScalingStrategy [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] consistency:ConsistencyKind [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
«Enumeration»
VirtualizationKind
infrastructure
[*] cThaargnentel platform
«Enumeration»
        </p>
        <p>StructureKind
«Artifact» Block
CloudService Blob</p>
        <p>Relational
KeyValue
«Enumeration»
ScalingStrategy
automatic
manual
«Enumeration»
ConsistencyKind
strict
eventual</p>
        <p>Fig. 2: Cloud Library of CAML
3.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Profiles for Cloud-Provider Specific Deployments</title>
        <p>
          With CAML Profiles, we provide a set of UML stereotypes that enable wiring cloud
deployment topologies with concrete offerings of cloud providers. Basically, a
stereotype embodies a concrete offering at the modeling level and captures its features in
terms of properties. Figure 3 presents some stereotypes specific to the cloud offerings
of the Google App Engine (GAE) and Amazon AWS. Common cloud offerings that are
shared by both providers are lifted to the common cloud profile. Considering instance
types, they are supposed to be applied to cloud nodes to wire them to a concrete cloud
offering, such as a “Frontend Instance” (e.g., GAEF1) that hosts a Java-based
middleware managed by Google’s App Engine. In turn, cloud offerings are refined by what
we call meta-profiles. With the notion of meta-profiles, we facilitate refining them with
technical-related details, such as the performance of instance types, and business-related
information [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], like the costs of cloud offerings.
        </p>
        <p>CommonCloudProfile</p>
        <p>«metaclass»
InstanceSpecification
«Stereotype»
InstanceType</p>
        <p>
          RequiresCloudNodeClassifier
{{OCL} self.base_InstanceSpecification
.classifier-&gt;any(e|e.oclisTypeOf(CloudNode))
-&gt;notEmpty()}
To demonstrate how CAML is applied, Figure 4 presents a possible deployment
topology and refinement towards a GAE-based cloud deployment of our introduced use case
(cCfA.MFLigure 1). In a first stepTO,SwCAe modeled the deployment topology. It consists of two
autom:aPteitsctoarlelDyatascaled cloud nodemsyPaetnstodreaDatkaey-value cloudDasttaoTierrage for managing the
applica(DataTier)
tion data in an eventually consistent way. As the cloud nodes are spedecpilofiy ed as
platformlaevs«eedeclp:Col«olgyno»AudEdNF4so»dteep, weTOaSpCpAlied themGy(CGAloAuEdEFN4o)pderofile anscdalintgh:SecaClrilnoegusSdtpNraoetedcgeyti[1v] e stereotypes RtNoeoldaetriToeTenmfishhpinpelaTetneem,tphilanete
offering, weCAdMiLr2ectly d(edeppllooy)yed the applviirctuaaltiziaotionn:VcirtouamlizaptioonKninedn[1t]s ontoLetghenedm.
devpirtluoaliyzamtione=nplattfomrmodel towardsvcirtouanlizcatrioen=teplatcfolromud offerings GpArEoFv4ided by the GAE.NAodesTyaperesult,
scaling=Auto scaling=Auto
the m«oGAdEeFl4e»d cloud nodes reMfidedrlewtaore=tJhavea F1 and mFid4dlewinares:tMaidndlcewearetKyinpde[1s] that host aReJlaativonash-ibpTaypseed
mimdidddlelweawre=aJraeva. The configurationTaemttpalatceshed to these clou dTypnesodes constrains theDermiveadFxroimmum
number of idle cloud nodes. Finally, GAE’s key-value datastore is employed for the
required cloud storage capabilities.
To show the feasibility of CAML, we have implemented an Eclipse-based prototype,
which exploits extension points. In this way, developers can directly use CAML in
Eclipse tools, such as Papyrus4, or access its library and profiles in terms of a resource,
which is helpful for the development of transformations. CAML together with all
artifacts used in this paper are publicly available at our project web site [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. In addition,
together with our industrial partner SparxSystems, we have also implemented a first
version of CAML for Enterprise Architect5. This provides first evidence that our
proposed approach for developing a UML internal cloud modeling language based on a
library and profiles is feasible and current modeling tools with UML support provide
the necessary features to support CAML models.
        </p>
        <sec id="sec-2-2-1">
          <title>4 Papyrus: http://www.eclipse.org/papyrus 5 Enterprise Architect: http://www.sparxsystems.at</title>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Reusable Deployment Blueprints as UML Templates</title>
      <p>
        As CAML is based on UML, its reuse mechanisms can be applied for cloud
application deployments. This is particularly useful for providing frequently occurring
deployment patterns as predefined UML templates. To show their usefulness and give first
evidence of CAML’s expressivity, we developed 10 templates as reusable deployment
blueprints, most of them are based on Amazon’s best practices6. We modeled their
inherent topology with CAML’s cloud library and refined them with stereotypes from
the cloud profile dedicated to Amazon. The developed blueprints are available at our
project website [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. To demonstrate the use of a blueprint, we show how our reference
application is bound to a template, which refers in our case to a 2-tier web
architecture [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. To reuse the predefined template, the deployable artifacts need to be bound
to the template parameters. Figure 5 depicts the component viewpoint of our reference
application and the respective CAML template. It consists of two cloud nodes that refer
to the “M3Medium” offering of Amazon. Their location is required to be in Europe
while the operation system needs to be Linux. For reliability reasons, they are placed
in different availability zones. Requests that arrive at the cloud nodes are first handled
by a load balancing service, which enables a higher fault tolerance of the application.
The number of running cloud nodes is automatically managed by Amazon as expressed
by the scalability strategy. Only the minimum number of running cloud nodes and their
adjustment is configured. Both cloud nodes are connected to a cloud storage that in turn
is replicated to improve data availability. Finally, as Amazon cloud nodes operate at the
infrastructure level, the required middleware for our reference application is defined. In
fact, we directly reused it from the on-premise deployment given in Figure 1.
6 Amazon Architecture Center: https://aws.amazon.com/architecture
      </p>
      <p>Fig. 5: Reusable Deployment Template for AWS
AWS-based Web Deployment
«aWSM3Medium»</p>
      <p>:CloudNode
virtualization=infrastructure
scaling=Auto</p>
      <p>
        «AWSM3Medium»
operatingSystem=Linux
region=EU
availabilityZone=“A”
«rDSMaster»
:CloudStorage
dataStructure=Relational
consistency=strict
One major aspect in model-based engineering is to place models as first-class entities in
the engineering process. Ideally, they should be turned into executable or interpretable
artifacts. Regarding the deployment viewpoint, it appears desirable to translate the
respective models into descriptors and scripts that are passed to provisioning engines for
cloud environments. For instance, a GAE-based deployment requires specific
descriptors for defining the assignment of application modules to a concrete instance type.
This assignment can certainly be derived from a CAML model. At the same time, there
are ongoing efforts in standardizing the representation of cloud-based application
deployments. The recently accepted TOSCA standard aims at supporting portable cloud
applications. With the notion of management plans, emerging TOSCA-compliant
engines are capable to interpret such deployment topologies and initiate the
provisioning of defined service templates [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Clearly, this is also of practical value for CAML
models. For that reason, we present an initial mapping between CAML and a subset
of TOSCA. Generally, in TOSCA, two modeling concepts are prevalent: template and
type. Templates embody the elements of a deployment topology while types expose the
properties and relationships for which concrete values are provided by templates. In this
sense, types are considered as reusable entities that can inherit from each other. Figure 6
depicts a concrete TOSCA model expressed in Vino4TOSCA [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for an excerpt of our
GAE-based application deployment (cf. Figure 4). To represent the TOSCA template
for the stereotyped CAML cloud node, the pertinent TOSCA types need to be created:
“CloudNode” and “GAEF1”. The latter is derived from the former as in TOSCA a
template can only have a single type. Similarly, the deployed application component is
represented by a TOSCA template. Finally, the deployment relationship type is required
for connecting the deployed application component to the cloud node at the template
level.
      </p>
      <p>DataTier</p>
      <p>
        CloudNode
virtualization:VirtualizationKind [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
scaling:ScalingStrategy [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
      </p>
      <p>
        GAEF4
middleware:MiddlewareKind [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
      </p>
      <p>Types
deploy</p>
      <p>Legend</p>
      <p>NodeTemplate
RelationshipTemplate
NodeType
RelationshipType</p>
      <p>
        DerivedFrom
Clo u«ddeplomy»odeling appr«odeapcloyh»es with the purpose of«daepclohy»ieving the wir«idnepgloy»of applications
«gAEF1» «gAEF4»
with c:ColonudcNroedtee cloud off:eClroiundNgosdeare most closely relat:eCldoudtNoodCeAML. Mod:eClloiundNgodceoncepts of
thevssicreatulianalgiz=paAtpiuotnro=oplaatfcorhmes [5,vs9icrat,ulian1lgiz5=aAt,iuot1no=8pla,tf2or1m] areRGeArfEien-beflmaeseencdtted bvsyicratulCianlgizA=aAtiMuotno=Lplatofornm a levesvlicratuolianflgiz=aaAtiuobtnos=ptlratafocrmtion that
a«GsAeEF1» «pGlAoEF4»
facilitates to represent design decisions for cloudm-idbdlewared=Jaavpaplicationmidddeleware=yJamva ents. As a
«a:uCtoloSucdaCleodnCfoignufirgautrioatnion» «a:pCploEundgiSnteoDraagtaestore»
«mAauxtiomSucmalIeddleCInosntfaignucreast=io3n» cdoantasSisttreuncctuyr=eE=vKeenytVuaallue
(b) GAE-based Deployment of CAML Use-Case
result, modeling concepts of these approaches, e.g., required to achieve the optimization
of an application deployment (cf., [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]) or to express elasticity rules (cf., [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]), are not
completely captured by CAML. However, CAML enables expressing cloud application
deployments that are seamlessly applicable on UML models usually created throughout
software modeling activities as it is realized as a UML internal language. As a result,
well-connected modeling views on cloud applications from a cloud-provider
independent perspective as well as a cloud-provider specific perspective are supported. The
refinement of modeling views is enabled by profiles for cloud providers. This additional
typing dimension provided by such profiles and the exploitation of a multi-viewpoint
language to realize CAML differentiates it from existing cloud modeling approaches
and the recently standardized TOSCA.
      </p>
      <p>
        To the best of our knowledge, the only approach providing cloud modeling
support within UML is MULTICLAPP [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. It proposes a UML profile for the purpose of
representing components that are expected to be deployed onto a cloud environment
by applying cloud-provider independent stereotypes to them. Hence, these stereotypes
do not support wiring components with cloud provider offerings, which is different to
CAML as stereotypes are applied to achieve exactly that wiring.
      </p>
      <p>
        CloudML-UFPE [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] provides modeling concepts to represent cloud offerings
connected with the internal resources of a cloud environment. Similarly to approaches [
        <xref ref-type="bibr" rid="ref10 ref11 ref19">10,
11, 19</xref>
        ], which propose modeling concepts to represent resources internally managed
by a cloud environment, the focus is set on the cloud provider perspective. As a result,
such modeling approaches support cloud providers to model their environments, which
is out of the scope of CAML.
      </p>
      <p>Finally, it is worth mentioning that approaches, such as Deltacloud7 and jclouds8,
provide an abstraction layer on top of cloud-provider specific programming libraries.
They can be considered as transformation targets for cloud modeling approaches to
automate the provisioning of modeled application deployments.
7</p>
    </sec>
    <sec id="sec-4">
      <title>Conclusion and Future Work</title>
      <p>
        We have presented CAML as a UML internal language based on a library, profiles, and
templates. Currently, it is employed by the ARTIST project to model deployments of
large applications used in practice. In this respect, cloud providers that operate at both
infrastructure level and platform level are targeted. Although the realization and initial
evaluation of CAML seems promising, several lines of future work need to be
investigated. First, we aim for an automated maintenance of provider-specific profiles with,
for instance, performance or pricing information based on web information extraction
techniques. Second, we intend to provide a simulator for CAML to provide prediction
about non-functional properties such as costs and performance. In this respect, we plan
to explore how FUML can be employed to provide behavioral semantics for CAML in a
similar way as we use it to define behavioral semantics for metamodels [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Finally, we
aim for interoperability with current cloud modeling approaches by providing dedicated
transformations or a UML profile.
      </p>
      <sec id="sec-4-1">
        <title>7 https://deltacloud.apache.org 8 https://jclouds.apache.org</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Ardagna</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nitto</surname>
            ,
            <given-names>E.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mohagheghi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mosser</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ballagny</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>D'Andria</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Casale</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matthews</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nechifor</surname>
            ,
            <given-names>C.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petcu</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gericke</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sheridan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>MODAClouds: A Model-Driven Approach for the Design and Execution of Applications on Multiple Clouds</article-title>
          .
          <source>In: MISE Workshop</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Armbrust</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fox</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Griffith</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Joseph</surname>
            ,
            <given-names>A.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Katz</surname>
            ,
            <given-names>R.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konwinski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patterson</surname>
            ,
            <given-names>D.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rabkin</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stoica</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zaharia</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A View of Cloud Computing</article-title>
          .
          <source>CACM</source>
          <volume>53</volume>
          (
          <issue>4</issue>
          ) (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Badger</surname>
            ,
            <given-names>M.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grance</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patt-Corner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voas</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          :
          <article-title>Cloud Computing Synopsis and Recommendations</article-title>
          .
          <source>Tech. rep.</source>
          , NIST Computer Security Division (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bergmayr</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruneliere</surname>
            , H., Ca´novas Izquierdo,
            <given-names>J.L.</given-names>
          </string-name>
          , Gorron˜ogoitia, J.,
          <string-name>
            <surname>Kousiouris</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kyriazis</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Menychtas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Orue-Echevarria Arrieta</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pezuela</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Migrating Legacy Software to the Cloud with ARTIST</article-title>
          .
          <source>In: CSMR</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Binz</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , Breitenbu¨cher, U.,
          <string-name>
            <surname>Kopp</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>TOSCA: Portable Automated Deployment and Management of Cloud Applications</article-title>
          . In: Advanced Web Services (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Breitenbu¨cher, U.,
          <string-name>
            <surname>Binz</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kopp</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schumm</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>Vino4TOSCA: A Visual Notation for Application Topologies based on TOSCA</article-title>
          . In: OTM (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. CAML:
          <string-name>
            <surname>Project Web Site</surname>
          </string-name>
          (
          <year>2014</year>
          ), http://code.google.com/a/eclipselabs.org/p/caml
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Cardoso</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barros</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>May</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kylau</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Towards a Unified Service Description Language for the Internet of Services: Requirements and First Developments</article-title>
          . In: SCC (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Chapman</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Emmerich</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , Ma´rquez,
          <string-name>
            <given-names>F.G.</given-names>
            ,
            <surname>Clayman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Gallis</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Software Architecture Definition for On-Demand Cloud Provisioning</article-title>
          .
          <source>Cluster Comput</source>
          .
          <volume>15</volume>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Chatziprimou</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lano</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zschaler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Towards a Meta-model of the Cloud Computing Resource Landscape</article-title>
          . In: MODELSWARD (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Dougherty</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>White</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven</surname>
          </string-name>
          Auto
          <article-title>-Scaling of Green Cloud Computing Infrastructure</article-title>
          .
          <source>FGCS</source>
          <volume>28</volume>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Fehling</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Retter</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schupeck</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arbitter</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Cloud Computing Patterns - Fundamentals to Design, Build, and Manage Cloud Applications. Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ferry</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rossini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chauvel</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solberg</surname>
            ,
            <given-names>A.: Towards</given-names>
          </string-name>
          <string-name>
            <surname>Model-Driven</surname>
            <given-names>Provisioning</given-names>
          </string-name>
          , Deployment, Monitoring, and
          <article-title>Adaptation of Multi-cloud Systems</article-title>
          . In: CLOUD (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Frey</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fittkau</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Search-based Genetic Optimization for Deployment and Reconfiguration of Software in the Cloud</article-title>
          . In: ICSE (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <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>Advances in Software 4</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Gonc¸alves, G.,
          <string-name>
            <surname>Endo</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Santos</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sadok</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelner</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merlander</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Ma˚ngs, J.E.:
          <article-title>CloudML: An Integrated Language for Resource, Service and Request Description for DClouds</article-title>
          . In: CloudCom (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. Guille´n, J.,
          <string-name>
            <surname>Miranda</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murillo</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Canal</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>A UML Profile for Modeling Multicloud Applications</article-title>
          . In: ESOCC (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fehling</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mietzner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nowak</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dustdar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Moving Applications to the
          <source>Cloud: An Approach Based on Application Model Enrichment. IJCIS</source>
          <volume>20</volume>
          (
          <issue>3</issue>
          ) (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zic</surname>
          </string-name>
          , J.: Cloud#
          <article-title>: A Specification Language for Modeling Cloud</article-title>
          . In: CLOUD (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Mayerhofer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kappel</surname>
          </string-name>
          , G.:
          <article-title>xMOF: Executable DSMLs based on fUML</article-title>
          .
          <source>In: SLE</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Nguyen</surname>
            ,
            <given-names>D.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lelli</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taher</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parkin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Papazoglou</surname>
            ,
            <given-names>M.P.</given-names>
          </string-name>
          , van den Heuvel, W.J.:
          <article-title>Blueprint Template Support for Engineering Cloud-Based Services</article-title>
          . In: ServiceWave (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Vogels</surname>
          </string-name>
          , W.:
          <article-title>Eventually consistent</article-title>
          .
          <source>CACM</source>
          <volume>52</volume>
          (
          <issue>1</issue>
          ) (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>