Sie sind auf Seite 1von 10

Software Engineering for the Cloud: a Research

Roadmap
Elias Adriano Nogueira da Silva

Daniel Lucrdio

Federal University of So Carlos,So Paulo, Brazil


Email: elias.silva@dc.ufscar.br

Federal University of So Carlos,So Paulo, Brazil


Contact: http://www.dc.ufscar.br/~daniel

AbstractHaving arisen from the industry, cloud computing is receiving increasing attention from the academy. We
are witnessing an increasing number of papers dedicated to
experience reports and proposal of methods, processes and
tools focused on cloud-related technology. Researchers are also
attempting to identify and formalize the main concepts behind
cloud computing, forming a basis for future investigations about
how this approach can be used to promote advances in many
fields of computer science. However, while the main research
challenges and opportunities related to cloud computing in
general are already well-known, in the software engineering
area the scenario is less clear. In this paper, we present the
results of a systematic literature review where we tried to
understand how researchers from the software engineering field
are viewing the cloud computing paradigm. We identified ten
software engineering research opportunities focused specifically
on cloud computing, which are presented and discussed in terms
of related work. We also present a discussion on some practical
issues related to the development of software for the cloud, trying
to make some obscure points clearer and aiming to facilitate the
work of software engineering researchers and practitioners.

I. I NTRODUCTION
The concept of cloud computing has gained recent attention mainly because of the industrys initiative. Companies
attempted to optimize and even profit from their computing
infrastructure, and thus a plethora of related concepts and
proprietary technology started to appear, aiming mostly at
the potential market. It was only recently that the academic
community started to look at these concepts more carefully.
Although it is possible to track down earlier related work
describing virtualization, grid computing and clusters [1], [2],
[3], which are concepts related to clouds, the first academic
papers dealing explicitly with cloud computing started to
appear around 2008-2009 [4], [5], [2]. Most of these were
attempts to propose a proper definition for cloud computing
and its underlying concepts and technologies [4], [2], [6].
However, up to this date, no definition is widely accepted by
the community [2], [7], [8].
One study that stands out is a 2009 technical report from the
University of California at Berkeley [9], a prominent academic
group in the field. The report discusses the main concepts
behind cloud computing, and presents some upcoming challenges and research opportunities for the academic community.
Soon this report and its authors became widely cited, laying
down the ground for different research directions in the cloud
computing field.

However, the approach followed by the Berkeley report


was more general. It pointed out some major challenges that
relate to cloud computing from a higher perspective, leaving
some unanswered questions in different research areas. One
of these areas is software engineering, which is the subject
of this paper. In this scenario, some of the first questions that
need to be answered by software engineering researchers and
practitioners are: what are the main challenges and research
opportunities in developing software for the cloud, in terms
of methodologies, languages, frameworks, tools and other
software engineering concerns? What has already been done
in these few years of cloud research, from the software
engineering perspective?
To try to answer this question, we performed a systematic review in the available literature, including academic
and industrial publications. Our objective was to elicit some
gaps, challenges and opportunities for software engineering
researchers, as well as to provide guidance to practitioners in
terms of describing what is involved in the adoption of current
cloud technologies.
Our research method and findings are described in the
remainder of this paper. First, we discuss a brief background
(Section II) on cloud computing and related concepts. Next
(Section III), we describe the systematic review process,
including the search protocol, the adopted criteria and some
interesting data related to the study. In Section IV we present
the results of the review and our main findings. We identified
ten different research opportunities, which we believe need to
be further investigated by the software engineering community.
These may serve as a basis for future work in the field. In
Section V we present a secondary result of this study, which
includes some observations related to software engineering for
the cloud, but from a more practical perspective. We try to
clarify some points that we found to be a little confusing in
the literature, in order to help software engineering researchers
and practitioners in the development of their work. Section VI
discusses related work. Finally, in Section VII we present some
concluding remarks.
II. BACKGROUND
The concept of cloud did not arise as a new technology
model, but as the integration of technologies from the past [8],
which resulted in a new way to use and provide computing
power as a service through the Internet.

The main ideas behind this concept are: to allow companies


to acquire computing resources by demand; to enable payment
according to the utilization volume; and to make it possible for
a company to completely ignore the knowledge about where
these resources come from [9].
There is still no widely accepted academic definition for
cloud computing [7], [8]. Vaquero et al. [2] made a thorough
study of the various definitions found in the literature to
achieve a more complete definition. Although it is still a
proposal, their definition is consistent and complete, and
therefore is the one used in this work: Clouds are a large
pool of easily usable and accessible virtualized resources
(such as hardware, development platforms and/or services).
These resources can be dynamically reconfigured to adjust to
a variable load (scale), allowing also for an optimum resource
utilization. This pool of resources is typically exploited by
a pay-per-use model in which guarantees are offered by the
Infrastructure Provider by means of customized SLAs [2].
This definition contains the main elements of cloud computing, but it is too general regarding the resources. Apparently,
any kind of resources could be virtualized. To make this
definition more concrete, we could look at the many taxonomies that attempt to characterize which kinds of resources
can be made available in a cloud. Many were conceived
under a business perspective [6], and include terms such as
HaaS (Hardware as a Service), PaaS (Platform as a Service),
DaaS ([Development, Database, Desktop] as a Service), IaaS
(Infrastructure as a Service), BaaS (Business as a Services),
TaaS (Testing as a Service [10], [11]), FaaS (Framework
as a Service), and even the generic XaaS (Everything as a
Service). The definitions behind those terms are very wide and
sometimes misunderstood [12], but there are three categories
that seem to be more well established:
Software as a Service - SaaS: refers to applications that
are delivered to customers in the form of services over the
Internet [9], [13]. A SaaS normally operates over a cloud
infrastructure, but this is not necessary. Examples of
SaaS inclide: Google Drive1 , Flickr2 , Picasa3 , SkyDrive4 ,
among others.
Platform as a Service - PaaS: the idea is to provide a full
software development platform as a service, including an
execution environment, frameworks and different useful
integrable services [6], [13]. Normally, the service also
includes hosting, testing and a distribution channel or
market. Some examples are: Google App Engine5 and
Microsoft Azure6 , among others.
Infrastructure as a Service - IaaS: consists in delivering
computational infrastructure as a service [6], [13]. The
customer acquires - and pays by demand - services for
processing, storage and other fundamental computing

resources, making it possible to deploy and run any


software, including operating systems and applications.
It is normally a virtual computer that runs on a real
infrastructure maintained by a provider. The customer
has full control over the (virtualized) operating system
and the running applications. The most interesting part
of this approach is the possibility to rapidly increase
the computational power, which can sometimes be done
automatically by the provider. Some examples of IaaS
include: Amazon7 , GoGrid8 , IBM SmartCloud9 , among
others.
Another classification that can be made considers aspects
such as ownership and sharing of the cloud infrastructure. A
cloud environment that is shared among different customers is
called a public cloud [9], [13]. Such environment is normally
owned, hosted and maintained by an organization selling cloud
services, and is provided to the public in general under a
contract where many users share the same infrastructure and
pay for what they use [13], [6]. Amazon, Google App Engine
and Azure are examples of public clouds.
Most public cloud providers use many security mechanisms,
but if for some reason an organization does not want to deploy
its data or business logic into a public cloud, it may build
or rent its own cloud infrastructure. This is called a private
cloud, i.e. operated solely for an organization. It may be hosted
and managed by the organization itself or by a third party, and
may be deployed on premise or off premise [13], [6]. This
allows organizations to obtain the benefits of cloud computing,
such as server virtualization10 and elasticity, without having to
share the same physical infrastructure with other organizations.
However, differently from public clouds, an upfront investment
on infrastructure needs to be made.
A compromise between these models, where parts of an
application run in a public cloud and other parts run in a
private cloud, is also possible. This is known as a hybrid
cloud [6], [13].
III. T HE S YSTEMATIC R EVIEW
In this study, we followed a formal systematic literature
review process [15], [16], [17]. A systematic review proposes
a fair assessment of the research topic as it uses a rigorous and
reliable review methodology, together with auditing tasks to
reduce the researcher bias [18]. To enable the documentation
of the systematic review and to facilitate the process, the
START11 tool was used [19]. As part of the process, we
developed a protocol that provided a plan for the review in
terms of the method to be followed. Table I shows a synthesis
of the systematic review protocol.
A total of 122 articles were analyzed, of which 100 were
selected and their data extracted and analyzed according

1 Google

7 Amazon:http://aws.amazon.com/pt/ec2/

2 Flickr:

8 GoGrid:

Drive: http://drive.google.com/
http://www.flickr.com/
3 Picasa: http://picasa.google.com/
4 SkyDrive: http://skydrive.live.com/
5 Google App Engine: http://code.google.com/appengine
6 Windows Azure: http://www.windowsazure.com/

http://www.gogrid.com/

9 http://www.ibm.com/cloud-computing/
10 Server Virtualization: is the technique of execution of one or more virtual
servers over one physical server [14]
11 http://lapes.dc.ufscar.br/ferramentas/start-tool

TABLE I
S YTEMATIC R EVIEW P ROTOCOL

Objectives:
Main Question:

Intervention:
Control:
Population:
Results:
Application:
Keywords:
Source selection criteria:
Studies Languages:
Source Search
Methods:
Source Engines:
Study inclusion criteria:
Study exclusion criteria:
Studies types definition:
Initial studies selection:
Studies quality evaluation:
Information extraction fields:
Results summarization:

To identify the main challenges and research opportunities in developing software for the cloud,
and how to adopt the main cloud services, from the software engineering perspective;
What are the main challenges and research opportunities in developing software for the cloud, in
terms of methodologies, languages, frameworks, tools and other software engineering concerns and
what has already been done in these few years of cloud research, from the software engineering
perspective?
Cases study, surveys, definitions and other types of research related to cloud software development;
We found no study to use as control;
Research related to cloud software development;
Case studies, surveys, definitions and research work related to cloud software development;
Cloud computing software development research;
Cloud computing; software development; software engineering; research gaps;
Availability of the papers over the web; search engines using keywords;
English and Portuguese;
The string was first defined in Scopus, then adapted to other engines like ACM and IEEE;
Automatic search; Search through bibliographic references of selected papers; Search by groups
and authors; Search over the related conferences and journals
Scopus; IEEE; ACM; Google Academic Search; Springer
The full paper was available; The study involved definitions about cloud computing; The study
contained experience reports about cloud computing software development;
The full paper was not available; The study was not directly related to cloud computing; The study
approached cloud computing without considering software development
Papers and technical reports;
Based on abstract, keywords and title;
The quality of studies was evaluated in an ad hoc way, after the reading;
Study types; Search domain; main idea; short summary;
All the accepted papers were analyzed, and the data were summarized into a single textual report,
where the results were described;

to the recommendations of the review protocol. The entire


systematic review was documented, from its conception to the
extraction of results, to allow its repetition and auditing by
other researchers interested in the study.
The study was conducted in a period of eight months,
by a single researcher (one of the authors of this paper).
Whenever there was doubt regarding the inclusion/exclusion
criteria, analysis or summarization, other researchers from the
group were consulted.
As mentioned before, the literature related to software engineering for the cloud is recent. Figure 1 shows the distribution
of the selected papers by publication year. As it can be seen,
all papers included in this study were published after 2008.

of studies per author. The collection of the selected 100 papers


included more than 300 different authors, and no author published more than two papers, what indicates that there is not
a clear formation of specialized research groups on software
engineering for cloud computing. One exception (although not
from the software engineering area) is the aforementioned
technical report from University of California at Berkeley [9],
which was invited to be published as a paper [12], being
frequently cited in the cloud literature12 .
IV. S OFTWARE E NGINEERING FOR THE C LOUD : A
R ESEARCH ROADMAP
In this section we discuss the main findings of the review,
i.e. what are the main challenges and research opportunities
related to software engineering and cloud computing.
A. Data Lock-In

Fig. 1.

Selected Publications by Year

Another point of interest in the study is the low distribution

Data lock-in is the difficulty developers face when having


to port their applications from one cloud platform to another
[9]. Such problem can be seen mostly in the PaaS scenario: in
order to take advantage of a very flexible cloud architecture,
the applications have to be specifically developed for the
chosen platform. For example, in order to offer great elasticity,
Google App Engine a PaaS provider imposes a specific
programming style and has its own way to manage data, and
thus an application developed for it may not be easily ported to
12 By the time this paper was written, there were 302 citations, according
to http://www.scopus.com/

a different PaaS provider, nor can its data. Even if a developer


wanted to host an application in his/her own private cloud later,
great effort would be necessary to rebuild the code, redeploy
it and migrate all the data.
It is not difficult to see why this problem is hindering the
adoption of the cloud model [20]. The possibility of becoming
locked in a particular platform, not being able to choose a
different one later (customer lock-in), puts the developers in a
difficult position. They mostly fear being charged abusive fees
later, or having their applications unavailable due to lack of
service quality [9]. There are some initiatives towards solving
this problem. They normally revolve around two approaches:

API standardization: if every cloud provider employs


some well-known standards in its platform, in theory
an application could be easily ported from one provider
to another without too much effort. In this sense, the
OpenCloud Manifesto [21] is gathering efforts to group
companies around the specification of an open standard
for cloud computing. However, until the time this paper
was written, important companies such as Google and
Microsoft had not joined the manifesto13 . There are
other initiatives, such as: (i) DMTF (Distributed Management Task Force), which employs efforts focused on
standardizing interactions between cloud environments
by developing specifications that deliver architectural
semantics and implementation details to achieve interoperable cloud management between service providers
and their consumers [22]; (ii) OCCI-WG (Open Cloud
Computing Interface Working Group), which is a protocol
and API for all kinds of management tasks, and was
created to develop a remote management API for IaaSbased services, allowing the development of interoperable
tools for common tasks including deployment, autonomic
scaling and monitoring. The current release of the Open
Cloud Computing Interface is suitable to serve many
other models in addition to IaaS, including e.g. PaaS and
SaaS [23]; (iii) IEEE P230114 , responsible for developing
a standard that will enable portability. To achieve this
goal, it will group the different options (interfaces, tile
formats and operation conventions) of the cloud elements
into logical profiles; and (iv) IEEE P230215 , which will
define the topology, protocols, functionality and governance required to support cloud-to-cloud interoperability
and federated (intercloud) operations [24], [25].
Model-driven approaches: the idea is to employ modeldriven engineering (MDE) [26] in the development of
cloud applications. MDE seems to be a viable solution
to the lock-in problem, because through higher level
models and automatic transformations, the developers are
able to focus on a more conceptual, platform-independent
level when developing applications. However, there is no

13 The list with all members of the OpenCloud Manifesto can be found at
http://www.opencloudmanifesto.org/supporters.htm
14 IEEE P2301: http://grouper.ieee.org/groups/2301/
15 IEEE P2302: http://grouper.ieee.org/groups/2302/

consensus about the set of models, languages, transformations and software processes that could be used to
successfully develop cloud applications using MDE [27].
Current efforts revolve mostly around the identification of
abstractions that would allow one to specify and create
systems independently of the underlying platform, and
the automatic code generation for some specific platform
or service infrastructure [28], [29].
B. Decision-making about migration to the cloud model
In order to take advantage of the benefits of the cloud
model, many organizations have the desire and/or intention
to embrace the cloud for existent and new applications. This
decision is inherently complex, and suffers the influence
from multiple factors such as cost, availability, performance,
security and QoS, each of which have a major influence on
every organization [30].
Before making the decision, an organization must take into
consideration the viability of the cloud model in its current
context. It must carefully analyze the constraints related to
cloud platforms, both technical [31] and organizational, and
consider its business requirements [32].
The literature contains research providing support for the
decision about migration to the cloud [33], [30], [32], [34],
[35]. Ezzat et al. [36] studied the cloud from different perspectives, in order to determine the aspects that mostly affect
the decision about cloud adoption. However, in this review
we have not found a formal process to specifically support
this task.
If the decision about the migration is positive, the IaaS
model is the ideal choice to deploy pre-existent systems,
while PaaS is more adequate for new applications [37]. An
incremental strategy can be adopted, to effectively migrate
data and applications to the cloud. For pre-existing systems,
the migration itself is a whole new challenge, as explains next
section.
C. Legacy software migration
There are many systems still in use today that became
outdated, either because they make use of unsupported technology or earlier versions of an operating system or platform.
However, the costs for their modernization and the fact that
they may still provide essential services keep them active.
These are commonly known as legacy systems. As expected,
most of these are not ready to be migrated into a cloud
environment, and this is true even for some more recent precloud web applications. One way of solving this problem is a
complete reengineering (i.e. a reconstruction of the software
for a new platform), but this process is normally too expensive. An alternative would be an strategy to migrate legacy
software into a cloud infrastructure and to ensure its correct
functioning in the new environment, without the need for a
complete reengineering. There are many experience reports
that focus on this problem [38], [39], [40], [41], [42], [43],
[44], [45], [31], [46], but more research is still needed, mainly
to formalize a strategy that defines a step-by-step process to

perform the migration, considering all available cloud services.


Such strategy would constitute a very important contribution
towards the systematic migration to the cloud model.
D. A reengineering process for the cloud
New technologies, standards, languages and frameworks
related to cloud computing may facilitate the development of
applications, the evolution of current software and make companies more competitive. In these cases, migration alone (as
discussed in previous section) is not enough, and companies
find themselves in a crossroads between reconstructing their
applications to make complete use of new cloud technologies
and becoming out of the market.
The literature contains some successful examples of software reengineering for the cloud. For example, Zhou et al.
[47] proposed a novel approach for reengineering enterprise
software for cloud computing. Following a five-step ontology development process, the enterprise software ontology is
created by generating an integrating code ontology, database
ontology and Hibernate framework ontology. This approach
can help to identify potential service candidates in the legacy
system.
However, studies are still needed, to formalize a complete
reengineering process focusing on cloud infrastructures, considering the particularities and the different service models
offered in this paradigm.
E. Mechanisms to facilitate the adoption of the hybrid model
As discussed in Section II, the hybrid model is the alternative found by some companies to avoid large upfront
investments and still maintain some critical parts of its applications under more rigid control. However, the interoperability
between public and private cloud infrastructures is not easy to
achieve [24]. The standardization can help to improve this
model, but as discussed in section IV-A, there is still no
standard for the development of interoperable applications for
cloud computing.
The literature has some efforts in this direction. One example is the group IEEE P2302, which has been researching this
question. Other examples can also be found in the literature
[48], [49].
The existence of frameworks, tools and/or process to facilitate the implementation of the hybrid model could be the
solution many companies are waiting for before definitively
adopting cloud computing.

MaaS has the potential to leverage the adoption of MDE


among software developers, making use of the cloud to facilitate some of the tasks involved in model-driven engineering
[50]. The implementation of the MaaS model can lead to
different research opportunities, such as collaborative development issues [51], concurrent modification issues [52], management of large model repositories, among others. Bruneliele,
Cabot and Jouault [27] highlight the following possibilities of
MaaS research:
One possibility is the creation of a tool for collaborative and distributed modeling [53]. In this context, the
cloud would serve as an instrument that would allow the
specification and sharing of software models [54] among
distributed team members.
Definition of modeling mash-ups as a combination of
MDE services from different vendors.
Availability of model transformation engines in the cloud
to provide platform-independent model management services.
Code generation in the cloud: the transfer of code generation and simulation services for the cloud can facilitate
the deployment and evolution of software applications,
increasing productivity. Developers would not need to
worry about having to setup and maintain an infrastructure to develop model-based applications.
Distributed Global model management. Complex MDE
projects involve several models (possibly conforming
to different metamodels), model transformations, model
injectors and projectors, etc. MaaS would facilitate the
manipulation of all these modeling artifacts in a distributed environment.
G. Billing and auditing mechanisms
Auditing, usage reports and billing are functionalities that
are normally associated to SaaS [55]. The provider of such
systems must include administrative functions to support this
kind of tasks, which are not necessary in the traditional
software model.
In our review we found no study focusing specifically on
these problems, and thus we believe there is space for research
and implementation on such types of mechanisms, to discover
better ways to achieve the necessary billing and auditing
functionalities, according to the reality of different companies.
Case studies are also a possibility to help in the identification
of the most important issues related to these tasks.
H. Cloud Service Composition

F. Implementation of Modeling as a Service - MaaS


Bruneliele, Cabot and Jouault [27] proposed the concept
of Modeling as a Service - MaaS. Similar to SaaS, MaaS
would allow the deployment and execution of modeling and
other model-driven services, such as transformations and code
generation, over the Internet. The idea is to provide a modeldriven engineering (MDE) environment in the cloud, including
a repository of models and model-driven engineering tools that
could be used by development teams in the form of services.

As in other fields of computer science, the dynamic nature


of cloud-based technologies lead to constant changes in terms
of platforms, tools and technologies. In this scenario, it is not
uncommon to see different applications or sets of services
having to cooperate for mutual benefit. Service composition,
in the context of Service-Oriented Architecture, is still an
important research subject in software engineering [56], [57].
In the cloud context, the terms intercloud, multi-clouds
and cloud-of-clouds are used to refer to the composition

of cloud providers as an integrated (or federated) cloud environment [58]. In such environments, users can (transparently
or not) leverage the resources from different (either public or
private) cloud providers [25], [59], [60], [61], [62], [63]. These
terms are similar and suggest that cloud computing should not
be restricted to a single cloud [59], but a cloud-of-clouds.
In such environment, it would be possible to have application components deployed and co-existing on multiple clouds.
This raises challenges for the developer, who has to worry
about architectural and development issues that consider this
multi-cloud scenario. In particular, the composition of services
needs an effective communication between providers (interoperability). Abstractions for efficient service orchestration and
choreography [64] also need to be conceived or adapted for
the cloud.
There are some efforts related to cloud service composition
in the literature [65], [66], [67], [68], [69]. However, the
related technologies are still under development and more
research is necessary. Standardization efforts, such as those
described in Section IV-A, could offer a partial solution, but
these are not yet established.
I. Case studies
Organizations are normally afraid to adopt new technologies
until relevant success cases are presented. In this sense, to
reinforce the benefits of the cloud, to show the importance of
this paradigm, and its potential to revolutionize the market, it
would be interesting to have a large number of case studies.
The literature already has many examples of such efforts.
Chauhan & Babar [38] report their experience in the migration
of service-oriented systems to the cloud computing model.
Khajeh-Hosseini et al. [44] show a case study of migrating
an enterprise application to IaaS. Tran et al. [40] show a
taxonomy of critical factors in migration to cloud computing
model. We should continue to publish such type of results,
and case studies and experience reports should always be on
the agenda of software engineering researchers. The more
case studies available, the more confident researchers and
practitioners will become regarding the benefits of the cloud,
and the validity of the research.
J. Open source platforms
This last issue may not be considered as an open research
question by itself, but it presents a challenge for many researchers. The most important cloud computing platforms are
proprietary and, as a consequence, not open for investigation, modification and/or extension. This poses a problem for
researchers that want to experiment with different platform
architectures and setups. In this sense, the existence of open
source alternatives could be of great help to the software
engineering and cloud computing in general community.
There are some open source options available (like Eucalyptus16 and Nimbus17 ), but these are mostly focused on the
IaaS model. We still need more research dedicated to produce
16 http://www.eucalyptus.com/
17 http://www.trynimbus.com/

a more comprehensive model that can be improved and used


to support cloud adoption in its different possibilities.
V. OTHER FINDINGS OF THE STUDY
The choice of a cloud service depends on the type of
application that will be used. Some options target developers,
some target end users and some target both. During the review,
we found some interesting information on studies describing
the benefits of cloud computing, and success stories involving
the paradigm. These are practical issues regarding the use
of cloud services and, more specifically, the development of
software for the cloud paradigm. In the following sections, we
try to compile this information, hoping it will be of practical
value to researchers and practitioners interested in developing
software for this emerging field.
A. SaaS vs SOA
Reviewing the literature, we noticed that there is some
confusion between the terms SaaS and Service-Oriented Architecture (SOA). Laplante et al. [70] also pointed out such
confusion.
For example, Sharma et al. [71] do not distinguish between
the terms SOA and SaaS, proposing an approach focused
on interoperability that uses MDE to generate web services
descriptors (WSDL). The authors then refer to the approach
as SaaS development, but in fact it is closer to the concept of
SOA.
Laplante et al. [70] made a wide study of the characteristics
of these models and concluded that the fundamental difference
is: SOA is a model for building software and a SaaS is a model
for delivering it. While SOA is concerned with the creation
of services to compose a more flexible architecture for an
application, SaaS is concerned with the delivery of software
functionality in the form of services, which may be provided
independently of the underlying architectural style.
To better understand the difference between SaaS and SOA,
we can cite Google Apps [72]. Google makes its applications
(Google mail, Google calendar, Google sites, etc) available to
companies that do not wish to share their information, as happens with normal users. To use such services, companies make
a paid subscription and do not need to worry about the internal
architecture of the applications, nor with their deployment and
maintenance in a private infrastructure. They simply use the
service and pay for what they use. In a comparison, we can
cite the Application Server Provider (ASP) model, where the
customer must acquire a license, and install the software in
some particular infrastructure. Oracles JD Edwards ERP [73]
is an example of ASP.
As an example of SOA, we can cite systems that use service
composition to provide some final functionality. For example,
e-shopping web sites may use services from delivery companies to calculate shipping fees and conditions and present
them to the user. Other services may help to compose the final
functionality. The distinguishing feature is that the internal
architecture makes explicit use of services to achieve more

flexibility and allow more specialized modules to be built [74],


[57].
As we can see, SaaS and SOA are distinct concepts. But
they are frequently used together, because these two models
complement each other. SaaS helps to provide the building
blocks for SOA, and SOA helps to implement SaaS more
rapidly [70], and this may be the source of the confusion.
B. Developing SaaS
From the software engineering point of view, the implementation of the SaaS model requires some specific concerns.
These arise from the service-oriented business model that is
normally adopted. As a first concern, the system providers
must implement some way to register the use of the services,
in order to allow billing, auditing, usage and accounting
reports [55], in order to support the Cloud Computing business
model [75]. Additional administrative functions are required
to support these new kinds of tasks, which are not necessary in
the traditional stand-alone software model. More importantly,
these extra tasks must not cause problems to the performance
or correctness of the software [76].
Another concern is the existence of multiple customers
sharing the same infrastructure, each one with his/hers own
needs in terms of information, functionality and interface.
This is known as multi-tenant architecture [77], [78], and is a
concern that many SaaS developers have to worry about. Some
authors [79], [80], [81] have even proposed a SaaS maturity
model to categorize SaaS according to its support for multiple
tenants.
SaaS is normally accessed over the Internet [9]. In this
sense, developers also have to worry about availability, performance, offline access to the software, and other concerns
that arise from this online nature of SaaS. These concerns add
extra complexity in relation to traditional stand-alone software.
C. Developing Software for the IaaS model
The IaaS model provides computational resources that lie
on the providers infrastructure. The target audience of this
model are normally infrastructure architects. These architects
do not need to worry about issues such as dynamic demands,
elasticity and scalability, which are handled by the provider
[6].
Regarding the developer, the IaaS model adds little to
his/her list of concerns. In this model, the development team
can create applications just as if it were developing for their
own dedicated private infrastructure. Differently from the PaaS
model (presented next) here the software usually does not have
any particular feature that demands special knowledge about
the providers infrastructure. In other words, any application
can be deployed in an infrastructure that is provided as a
service, as most IaaS providers have many options of virtual
machines, using the most common application servers and
other deployment technologies. This task also happens much
like the traditional way of deployment, because normally the
developers have unlimited access to the virtual machines, just
as if they were real, private machines.

However, some specific concerns arise, such as load balancing, automatic scalability, data storage services and other
functionality that may be used by applications and that must be
developed specifically for a particular provider. Open standards
and open source implementations, such as JClouds (an OCCIWG implementation) [82] can help to reduce some problems,
by providing a common layer that can communicate with
different providers.
Also, the developer must have in mind that, if a public IaaS
provider is being used, the software has to be delivered to the
end user through the Internet. The SaaS model is normally
used, although it is possible to use this infrastructure to host
legacy systems [37], to deliver a system under the ASP model,
or just to perform some kind of data processing [83].
D. Developing Software for the PaaS model
The PaaS model tries to leverage the flexibility of the
cloud model, by providing a complete platform for software
development. A cloud platform hides many of the complexities of developing cloud software, and brings scalability
and elasticity to a different level. In the PaaS model, the
development platform is provided as a service. Applications
that are developed for this particular platform can benefit from
a specific programming model, that can be fully managed by
the platform provider in a fine grained way [84].
The target audience of PaaS are system developers. When
developing for PaaS, a developer must adopt a platform and
its particular set of tools, libraries, technologies and standards
[37]. These may require some initial training, which may lead
to an initial loss of productivity. However, they can later help
to reduce development time by providing useful functionality, facilitating the development and distribution of cloud
applications [84], [85]. For example, Google App Engine
(an example of PaaS provider) has many functionalities for
image processing, image manipulation, user management and
authentication, data storage, location-based services, among
others [86]. As in the IaaS model, applications are hosted in
the providers infrastructure, and are made available through
the Internet, following the SaaS or another model.
The problem with this approach is the lock-in, already
discussed in Section IV-A, caused by the fixed set of technologies that must be adopted. But other than that, the benefits
make PaaS a very interesting approach for cloud application
development.
VI. R ELATED WORK
The most influential related work in the area is the aforementioned technical report from Berkeley [9]. In this report,
Armbrust et al. present the results of a six-month brainstorming effort about the subject. The authors attempt to
clarify related terms and provide simple formulas to quantify
comparisons between the cloud model and the traditional
model. They also identify ten barriers for the success of cloud
computing, and present ten opportunities to overcome them,
much like we attempted to do in this paper.

Other perspectives of the cloud computing model can be


found in the literature: Narasimhan and Nichols [87] present
the point of view of cloud platform adopters; Wang et al. [7]
present a perspective of the technologies that lie behind the
cloud model. Many others explore related concepts [1], [88],
[89], [90], [91], [4], [92], [6], [40], [93].
Differently from other works, we attempted to present a
software engineering perspective on cloud computing. Like
Armbrust et al., we identified some challenges and research
opportunities, but focusing specifically on software engineering.
We also attempted to clarify some concepts and present
some practical issues related to the development of software
for the cloud. A better understanding of cloud computing will
allow the community to design more efficient mechanisms
which, as a consequence, will facilitate the adoption of this
model [4].
As discussed earlier, the cloud concept is more connected
to the market. Only recently it has been investigated by the
scientific community. There are relatively few publications,
although the number of papers related to this subject is
increasing. Many of these attempt to propose definitions for
cloud computing [4], [2], [6]. However, there is still no
widely accepted definition. In this paper, we used the one we
considered more complete [2].
VII. C ONCLUDING REMARKS
The way cloud services are commercialized can cause deep
changes in the software industry, as long as software engineers
are able to unleash its full potential. This emerging computing
model still needs to be studied, and efforts are needed to solve
the current problems and overcome the challenges before the
cloud model becomes more well established.
Although cloud-related terms have originated from the
industry, the academy has many opportunities to contribute.
In this paper we attempted to highlight possible directions in
which the software engineering area can approach the cloud
computing scenario. We wanted to share our observations
because, after a considerable review work, we believe to have
reached a point where we should compile the information. We
tried to point out other studies that do a similar job, and to
compile some interesting points that were not available in a
single study yet, at least not for the software engineering area.
In no way we believe the results of our observations are the
only and definitive list. The community is welcome to continue
the discussion and to increase this list as further research takes
place.
ACKNOWLEDGMENTS .
The authors would like to thank CAPES and FAPESP
(process number 2012/04549-4) for funding this research. We
would also like to thank the reviewers for their valuable
and insightful suggestions, in particular for pointing out the
challenge we describe in Section IV-B.

R EFERENCES
[1] I. Foster, Y. Zhao, I. Raicu, and S. Lu, Cloud Computing and Grid
Computing 360-Degree Compared, in Grid Computing Environments
Workshop, 2008. GCE 08, 2008, pp. 110.
[2] L. M. Vaquero, L. Rodero-Merino, J. Caceres, and M. Lindner, A
break in the clouds, ACM SIGCOMM Computer Communication
Review, vol. 39, no. 1, p. 50, 2008. [Online]. Available: http:
//dl.acm.org/citation.cfm?id=1496091.1496100
[3] S. Zhang, X. Chen, S. Zhang, and X. Huo, The comparison between
cloud computing and grid computing, in Computer Application and
System Modeling (ICCASM), 2010 International Conference on, vol. 11,
2010, pp. V1172 V1175.
[4] L. Youseff, M. Butrico, and D. Da Silva, Toward a Unified Ontology of
Cloud Computing, in Grid Computing Environments Workshop, 2008.
GCE 08, 2008, pp. 110.
[5] L. Mei, W. K. Chan, and T. H. Tse, A Tale of Clouds: Paradigm
Comparisons and Some Thoughts on Research Issues, in Asia-Pacific
Services Computing Conference, 2008. APSCC 08. IEEE, 2008, pp.
464469.
[6] B. P. Rimal, E. Choi, and I. Lumb, A Taxonomy and Survey of Cloud
Computing Systems, in INC, IMS and IDC, 2009. NCM 09. Fifth
International Joint Conference on, 2009, pp. 4451.
[7] L. Wang, G. von Laszewski, A. Younge, X. He, M. Kunze, J. Tao,
and C. Fu, Cloud Computing: a Perspective Study, New Generation
Computing, vol. 28, no. 2, pp. 137146, 2010. [Online]. Available:
http://dx.doi.org/10.1007/s00354-008-0081-5
[8] Y. Chen, X. Li, and F. Chen, Overview and analysis of cloud computing
research and application, in E -Business and E -Government (ICEE),
2011 International Conference on, 2011, pp. 14.
[9] M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski,
G. Lee, D. Patterson, A. Rabkin, I. Stoica, and M. Zaharia,
Above the clouds: A Berkeley view of cloud computing, Dept.
Electrical Eng. and Comput. Sciences, University of California,
Berkeley, Rep. UCB/EECS, vol. 28, 2009. [Online]. Available:
http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf
[10] G. Candea, S. Bucur, and C. Zamfir, Automated software testing as a
service, in Proceedings of the 1st ACM symposium on Cloud computing,
ser. SoCC 10. New York, NY, USA: ACM, 2010, pp. 155160.
[Online]. Available: http://doi.acm.org/10.1145/1807128.1807153
[11] W. K. Chan, L. Mei, and Z. Zhang, Modeling and testing of cloud
applications, in Services Computing Conference, 2009. APSCC 2009.
IEEE Asia-Pacific, 2009, pp. 111118.
[12] M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski,
G. Lee, D. Patterson, A. Rabkin, I. Stoica, and M. Zaharia, A view
of cloud computing, Commun. ACM, vol. 53, no. 4, pp. 5058, 2010.
[Online]. Available: http://doi.acm.org/10.1145/1721654.1721672
[13] P. Mell and T. Grance, The NIST Definition of Cloud Computing
, 2009. [Online]. Available: http://www.nist.gov/itl/cloud/upload/
cloud-def-v15.pdf/
[14] J. Daniels, Server virtualization architecture and implementation,
Crossroads, vol. 16, no. 1, pp. 812, 2009. [Online]. Available:
http://doi.acm.org/10.1145/1618588.1618592
[15] K. University, Guidelines for performing Systematic Literature Reviews
in Software Engineering, 2007.
[16] B. Kitchenham, O. P. Brereton, D. Budgen, M. Turner, J. Bailey, and
S. Linkman, Systematic literature reviews in software engineering
A systematic literature review, Information and Software Technology,
vol. 51, no. 1, pp. 715, 2009. [Online]. Available: http://www.
sciencedirect.com/science/article/pii/S0950584908001390
[17] J. Biolchini, P. G. Mian, A. C. C. Natali, and G. H. Travassos, Systematic Review in Software Engineering, 2005. [Online]. Available: http:
//www.cin.ufpe.br/~in1037/leitura/systematicReviewSE-COPPE.pdf
[18] S. N. Mafra and G. H. Travassos, Tcnicas de Leitura de
Software: Uma Reviso Sistemtica, XIX Simpsio Brasileiro de
Engenharia de Software (SBES 2005), 2005. [Online]. Available: http:
//tcc-tonismar.googlecode.com/svn/trunk/TCC/Bibliografia/05-9612.pdf
[19] A. D. T. S. F. Elis Hernandes Augusto Zamboni, Avaliacao
da ferramenta StArt utilizando o modelo TAM e o paradigma
GQM, Experimental Software Engineering Latin American Workshop,
ESELAW2010, pp. 3039, 2010. [Online]. Available: http://www.inf.
ufg.br/~eselaw2010/proceedings-eselaw2010.pdf\#page=37

[20] A. Ranabahu and A. Sheth, Semantics Centric Solutions for Application and Data Portability in Cloud Computing, in Cloud Computing
Technology and Science (CloudCom), 2010 IEEE Second International
Conference on, 2010, pp. 234241.
[21] (2012) OpenCloud Manifesto. [Online]. Available: http://www.
opencloudmanifesto.org/
[22] (2012) Distribuited Managemente Task Force. [Online]. Available:
http://www.dmtf.org/standards/cloud
[23] (2012) Open Cloud Computing Interface. [Online]. Available: http:
//occi-wg.org/
[24] N. Loutas, E. Kamateri, F. Bosi, and K. Tarabanis, Cloud Computing
Interoperability: The State of Play, in Cloud Computing Technology
and Science (CloudCom), 2011 IEEE Third International Conference
on, 2011, pp. 752757.
[25] M. Vukolic, The byzantine empire in the intercloud, SIGACT
News, vol. 41, no. 3, pp. 105111, Sep. 2010. [Online]. Available:
http://doi.acm.org/10.1145/1855118.1855137
[26] R. France and B. Rumpe, Model-driven Development of Complex
Software: A Research Roadmap, in 2007 Future of Software
Engineering, ser. FOSE 07. Washington, DC, USA: IEEE Computer
Society, 2007, pp. 3754. [Online]. Available: http://dx.doi.org/10.1109/
FOSE.2007.14
[27] H. Brunelire, J. Cabot, and F. Jouault, Combining ModelDriven Engineering and Cloud Computing, 2010. [Online]. Available: http://hal.archives-ouvertes.fr/docs/00/53/91/68/PDF/
CombiningMDE-CloudComputing\_2010.pdf
[28] R. Sharma and M. Sood, A Model Driven Approach to Cloud SaaS Interoperability, International Journal of Computer Applications, vol. 30,
no. 8, pp. 18, 2011.
[29] X. Jiang, Y. Zhang, and S. Liu, A Well-designed SaaS Application
Platform Based on Model-driven Approach, in Grid and Cooperative
Computing (GCC), 2010 9th International Conference on, 2010, pp.
276281.
[30] P. Saripalli and G. Pingali, MADMAC: Multiple Attribute
Decision Methodology for Adoption of Clouds, in 2011
IEEE 4th International Conference on Cloud Computing.
IEEE, Jul. 2011, pp. 316323. [Online]. Available: http:
//ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6008725
[31] S. Frey and W. Hasselbring, An Extensible Architecture for Detecting
Violations of a Cloud Environments Constraints during Legacy Software System Migration, in Software Maintenance and Reengineering
(CSMR), 2011 15th European Conference on, Mar. 2011, pp. 269278.
[32] A. Khajeh-Hosseini, I. Sommerville, J. Bogaerts, and P. Teregowda,
Decision Support Tools for Cloud Migration in the Enterprise, in
Cloud Computing (CLOUD), 2011 IEEE International Conference on,
Jul. 2011, pp. 541548.
[33] S. Zardari and R. Bahsoon, Cloud adoption: a goal-oriented
requirements engineering approach, in Proceedings of the 2nd
International Workshop on Software Engineering for Cloud Computing,
ser. SECLOUD 11. New York, NY, USA: ACM, 2011, pp. 2935.
[Online]. Available: http://doi.acm.org/10.1145/1985500.1985506
[34] A. Khajeh-Hosseini, D. Greenwood, J. W. Smith, and I. Sommerville,
The Cloud Adoption Toolkit: supporting cloud adoption decisions in
the enterprise, Software: Practice and Experience, vol. 42, no. 4, pp.
447465, 2012. [Online]. Available: http://dx.doi.org/10.1002/spe.1072
[35] C.-Y. Yam, A. Baldwin, S. Shiu, and C. Ioannidis, Migration to
Cloud as Real Option: Investment Decision under Uncertainty, in Trust,
Security and Privacy in Computing and Communications (TrustCom),
2011 IEEE 10th International Conference on, 2011, pp. 940949.
[36] E. M. Ezzat, D. S. E. Zanfaly, and M. M. Kota, Fly over clouds or drive
through the crowd: A cloud adoption framework, in Current Trends
in Information Technology (CTIT), 2011 International Conference and
Workshop on, 2011, pp. 611.
[37] M.-E. F. D. Esparza-Peidro J., Towards the next generation of model
driven cloud platforms, in CLOSER 2011 - Proceedings of the 1st
International Conference on Cloud Computing and Services Science,
2011, pp. 494500.
[38] M. A. Chauhan and M. A. Babar, Migrating Service-Oriented System
to Cloud Computing: An Experience Report, in 2011 IEEE 4th
International Conference on Cloud Computing. IEEE, Jul. 2011, pp.
404411. [Online]. Available: http://ieeexplore.ieee.org/lpdocs/epic03/
wrapper.htm?arnumber=6008736
[39] X. Meng, J. Shi, X. Liu, H. Liu, and L. Wang, Legacy Application

[40]

[41]

[42]

[43]

[44]

[45]

[46]

[47]

[48]

[49]

[50]

[51]

[52]

[53]

[54]

[55]

[56]

Migration to Cloud, in Cloud Computing (CLOUD), 2011 IEEE International Conference on, 2011, pp. 750751.
V. Tran, J. Keung, A. Liu, and A. Fekete, Application migration
to cloud: a taxonomy of critical factors, in Proceedings of the 2nd
International Workshop on Software Engineering for Cloud Computing,
ser. SECLOUD 11. New York, NY, USA: ACM, 2011, pp. 2228.
[Online]. Available: http://doi.acm.org/10.1145/1985500.1985505
I. J. A. J. G. R. H. Arrieta L.O.-E., From software-AS-A-GOOD TO
SAAS: Challenges and needs: Developing a tool supported methodology
for the migration of non-saas applications to SaaS, in ICSOFT 2011
- Proceedings of the 6th International Conference on Software and
Database Technologies, vol. 2, 2011, pp. 257260.
P. Mohagheghi, A. Berre, A. Henry, F. Barbier, and A. Sadovykh,
REMICS-REuse and Migration of Legacy Applications to Interoperable
Cloud Services, Towards a Service-Based Internet, pp. 195196, 2010.
S. Venugopal, S. Desikan, and K. Ganesan, Effective Migration of
Enterprise Applications in Multicore Cloud, in Utility and Cloud
Computing (UCC), 2011 Fourth IEEE International Conference on,
2011, pp. 463468.
A. Khajeh-Hosseini, D. Greenwood, and I. Sommerville, Cloud Migration: A Case Study of Migrating an Enterprise IT System to IaaS, in
Cloud Computing (CLOUD), 2010 IEEE 3rd International Conference
on, 2010, pp. 450457.
P. Mohagheghi and T. S andther, Software Engineering Challenges
for Migration to the Service Cloud Paradigm: Ongoing Work in the
REMICS Project, in Services (SERVICES), 2011 IEEE World Congress
on, 2011, pp. 507514.
S. Frey, W. Hasselbring, and B. Schnoor, Automatic conformance
checking for migrating software systems to cloud infrastructures
and platforms, Journal of Software Maintenance and Evolution:
Research and Practice, pp. n/a-n/a, 2012. [Online]. Available:
http://dx.doi.org/10.1002/smr.582
H. Zhou, H. Yang, and A. Hugill, An Ontology-Based Approach
to Reengineering Enterprise Software for Cloud Computing, in
2010 IEEE 34th Annual Computer Software and Applications
Conference. IEEE, Jul. 2010, pp. 383388. [Online]. Available: http:
//ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5676282
P. Makris, D. N. Skoutas, P. Rizomiliotis, and C. Skianis, A UserOriented, Customizable Infrastructure Sharing Approach for Hybrid
Cloud Computing Environments, in Cloud Computing Technology and
Science (CloudCom), 2011 IEEE Third International Conference on,
2011, pp. 432439.
S. Yan, B. S. Lee, G. Zhao, D. Ma, and P. Mohamed, Infrastructure
management of hybrid cloud for enterprise users, in Systems and Virtualization Management (SVM), 2011 5th International DMTF Academic
Alliance Workshop on, 2011, pp. 16.
C. Atkinson, T. Schulze, and S. Klingert, Modelling as a Service
(MaaS): Minimizing the Environmental Impact of Computing Services,
in Services (SERVICES), 2011 IEEE World Congress on, 2011, pp. 519
523.
J. DeFranco-Tommarello and F. P. Deek, Collaborative software development: a discussion of problem solving models and groupware
technologies, in System Sciences, 2002. HICSS. Proceedings of the 35th
Annual Hawaii International Conference on, 2002, pp. 568577.
C.-L. Ignat, Annotation of concurrent changes in collaborative software
development, in Intelligent Computer Communication and Processing,
2008. ICCP 2008. 4th International Conference on, 2008, pp. 137144.
M. Farwick, B. Agreiter, J. White, S. Forster, N. Lanzanasto, and
R. Breu, A Web-Based Collaborative Metamodeling Environment with
Secure Remote Model Access, in Web Engineering, ser. Lecture Notes
in Computer Science, B. Benatallah, F. Casati, G. Kappel, and G. Rossi,
Eds. Springer Berlin / Heidelberg, 2010, vol. 6189, pp. 278291.
[Online]. Available: http://dx.doi.org/10.1007/978-3-642-13911-6\_19
F. Prez Andrs, J. Lara, and E. Guerra, Applications of Graph
Transformations with Industrial Relevance, A. Schrr, M. Nagl, and
A. Zndorf, Eds. Berlin, Heidelberg: Springer-Verlag, 2008, ch.
Domain Spe, pp. 8297. [Online]. Available: http://dx.doi.org/10.1007/
978-3-540-89020-1\_7
L. Liu, M. Song, X. Luo, H. Bai, S. Wang, and J. Song, An implementation of the online-payment platform based on SaaS, in Web Society
(SWS), 2010 IEEE 2nd Symposium on, 2010, pp. 658662.
E. G. da Silva, L. F. Pires, and M. van Sinderen, Towards runtime
discovery, selection and composition of semantic services, Computer

[57]

[58]

[59]

[60]

[61]

[62]

[63]

[64]
[65]

[66]

[67]

[68]

[69]

[70]

[71]

[72]
[73]
[74]

[75]

Communications, vol. 34, no. 2, pp. 159168, 2011. [Online]. Available:


http://www.sciencedirect.com/science/article/pii/S0140366410001714
T. P. D. S. L. F. Papazoglou M.P., Service-oriented computing: A
research roadmap, International Journal of Cooperative Information
Systems, vol. 17, no. 2, pp. 223255, 2008. [Online]. Available:
http://www.worldscinet.com/ijcis/17/1702/S0218843008001816.html
B. N. R. I. D. J. L. Y. D. A. F. L. M. S. S. P. M. Villegas D., Cloud
federation in a layered service model, Journal of Computer and System
Sciences, vol. 78, no. 5, pp. 13301344, 2012.
M. A. AlZain, E. Pardede, B. Soh, and J. A. Thom, Cloud
Computing Security: From Single to Multi-clouds, in 2012 45th
Hawaii International Conference on System Sciences. IEEE, Jan.
2012, pp. 54905499. [Online]. Available: http://ieeexplore.ieee.org/
lpdocs/epic03/wrapper.htm?arnumber=6149560
T. Liu, Y. Katsuno, K. Sun, Y. Li, T. Kushida, Y. Chen, and
M. Itakura, Multi Cloud Management for unified cloud services
across cloud sites, in 2011 IEEE International Conference on
Cloud Computing and Intelligence Systems. IEEE, Sep. 2011, pp.
164169. [Online]. Available: http://ieeexplore.ieee.org/lpdocs/epic03/
wrapper.htm?arnumber=6045053
P. Jain, D. Rane, and S. Patidar, A Novel Cloud Bursting Brokerage
and Aggregation (CBBA) Algorithm for Multi Cloud Environment,
in Advanced Computing Communication Technologies (ACCT), 2012
Second International Conference on, 2012, pp. 383387.
J. L. Lucas Simarro, R. Moreno-Vozmediano, R. S. Montero, and I. M.
Llorente, Dynamic placement of virtual machines for cost optimization
in multi-cloud environments, in High Performance Computing and
Simulation (HPCS), 2011 International Conference on, Jul. 2011, pp.
17.
R. Moreno-Vozmediano, R. S. Montero, and I. M. Llorente, Multicloud
Deployment of Computing Clusters for Loosely Coupled MTC Applications, Parallel and Distributed Systems, IEEE Transactions on, vol. 22,
no. 6, pp. 924930, Jun. 2011.
C. Peltz, Web services orchestration and choreography, Computer,
vol. 36, no. 10, pp. 4652, 2003.
A. Al Falasi and M. Adel Serhani, A Framework for SLA-based
cloud services verification and composition, in 2011 International
Conference on Innovations in Information Technology. IEEE, Apr.
2011, pp. 287292. [Online]. Available: http://ieeexplore.ieee.org/
lpdocs/epic03/wrapper.htm?arnumber=5893834
P. de Leusse, P. Periorellis, P. Watson, and A. Maierhofer, Secure
#x00026; Rapid Composition of Infrastructure Services in the Cloud,
in Sensor Technologies and Applications, 2008. SENSORCOMM 08.
Second International Conference on, 2008, pp. 770775.
J. O. Gutierrez-Garcia and K.-M. Sim, Self-Organizing Agents for
Service Composition in Cloud Computing, in Cloud Computing Technology and Science (CloudCom), 2010 IEEE Second International
Conference on, 2010, pp. 5966.
W.-T. Tsai, P. Zhong, J. Balasooriya, Y. Chen, X. Bai, and J. Elston, An
Approach for Service Composition and Testing for Cloud Computing,
in Autonomous Decentralized Systems (ISADS), 2011 10th International
Symposium on, 2011, pp. 631636.
L. Zhang, H. Guo, F. Tao, Y. L. Luo, and N. Si, Flexible management
of resource service composition in cloud manufacturing, in Industrial
Engineering and Engineering Management (IEEM), 2010 IEEE International Conference on, 2010, pp. 22782282.
P. A. Laplante, J. Zhang, and J. Voas, Whats in a Name?
Distinguishing between SaaS and SOA, IT Professional, vol. 10, no. 3,
pp. 4650, May 2008. [Online]. Available: http://ieeexplore.ieee.org/
lpdocs/epic03/wrapper.htm?arnumber=4525542
S. M. S. D. Sharma R., Modeling cloud SaaS with SOA and MDA,
Communications in Computer and Information Science, vol. 190 CCIS,
no. PART 1, pp. 511518, 2011.
(2012) Google Apps. [Online]. Available: http://www.google.com/apps/
intl/en/business/index.html
(2012) Oracles JD Edwards. [Online]. Available: http://www.oracle.
com/us/products/applications/jd-edwards-enterpriseone/index.html
M. P. Papazoglou, P. Traverso, S. Dustdar, and F. Leymann, ServiceOriented Computing: State of the Art and Research Challenges, Computer, vol. 40, no. 11, pp. 3845, 2007.
V. Chang, D. Bacigalupo, G. Wills, and D. De Roure, A
Categorisation of Cloud Computing Business Models, in 2010 10th
IEEE/ACM International Conference on Cluster, Cloud and Grid

[76]

[77]
[78]
[79]
[80]

[81]

[82]
[83]
[84]

[85]
[86]
[87]

[88]
[89]
[90]

[91]

[92]
[93]

Computing. IEEE, 2010, pp. 509512. [Online]. Available: http:


//ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5493445
A. D. H. Farrell, M. J. Sergot, M. Salle, C. Bartolini, D. Trastour, and
A. Christodoulou, Performance monitoring of service-level agreements
for utility computing using the event calculus, in Electronic Contracting, 2004. Proceedings. First IEEE International Workshop on, 2004,
pp. 1724.
R. A. Sengupta B., Engineering multi-tenant Software-as-a-Service
systems, in Proceedings - International Conference on Software Engineering, 2011, pp. 1521.
Z. J. L. J. Zhu Y., Solution for transforming web application to multitenant SaaS application, Lecture Notes in Electrical Engineering, vol.
141 LNEE, no. VOL. 1, pp. 181188, 2012.
F. Chong and G. Carraro, Architecture strategies for catching the long
tail, MSDN Library, Microsoft Corporation, pp. 910, 2006.
A. V. Hudli, B. Shivaradhya, and R. V. Hudli, Level-4 SaaS
applications for healthcare industry, in Proceedings of the 2nd
Bangalore Annual Compute Conference, ser. COMPUTE 09. New
York, NY, USA: ACM, 2009, pp. 19:1-19:4. [Online]. Available:
http://doi.acm.org/10.1145/1517303.1517324
T. Kwok, T. Nguyen, and L. Lam, A Software as a Service with Multitenancy Support for an Electronic Contract Management Application,
in Services Computing, 2008. SCC 08. IEEE International Conference
on, vol. 2, 2008, pp. 179186.
(2012) Jclouds. [Online]. Available: http://www.jclouds.org/l
D. Warneke and O. Kao, Exploiting Dynamic Resource Allocation for
Efficient Parallel Data Processing in the Cloud, Parallel and Distributed
Systems, IEEE Transactions on, vol. 22, no. 6, pp. 985997, 2011.
C. Lv, Q. Li, Z. Lei, J. Peng, W. Zhang, and T. Wang, PaaS: A
revolution for information technology platforms, in Educational and
Network Technology (ICENT), 2010 International Conference on, 2010,
pp. 346349.
Z. Shu-Qing and X. Jie-Bin, The Improvement of PaaS Platform, in
Networking and Distributed Computing (ICNDC), 2010 First International Conference on, 2010, pp. 156159.
(2012) Google App Engine. [Online]. Available: https://appengine.
google.com/
B. Narasimhan and R. Nichols, State of Cloud Applications and
Platforms: The Cloud Adopters View, Computer, vol. 44, no. 3, pp.
2428, Mar. 2011. [Online]. Available: http://ieeexplore.ieee.org/lpdocs/
epic03/wrapper.htm?arnumber=5719574
T. Grandison, E. M. Maximilien, S. Thorpe, and A. Alba, Towards a
Formal Definition of a Computing Cloud, in Services (SERVICES-1),
2010 6th World Congress on, 2010, pp. 191192.
R. Guha and D. Al-Dabass, Impact of Web 2.0 and Cloud Computing
Platform on Software Engineering, in Electronic System Design (ISED),
2010 International Symposium on, 2010, pp. 213218.
W. Kim, Cloud architecture: A preliminary look, in ACM International
Conference Proceeding Series, 2011, pp. 26. [Online]. Available:
http://www.scopus.com/inward/record.url?eid=2-s2.0-84856938421\
&partnerID=40\&md5=8369a4ca41fa721d61f8e2278acca5ce
L. Mei, Z. Zhang, and W. K. Chan, More Tales of Clouds: Software
Engineering Research Issues from the Cloud Application Perspective,
in Computer Software and Applications Conference, 2009. COMPSAC
09. 33rd Annual IEEE International, vol. 1, 2009, pp. 525530.
C. E. Rimal B.P., A service-oriented taxonomical spectrum, cloudy
challenges and opportunities of cloud computing, International Journal
of Communication Systems, vol. 25, no. 6, pp. 796819, 2012.
L.-J. Zhang and Q. Zhou, CCOA: Cloud Computing Open Architecture, in Web Services, 2009. ICWS 2009. IEEE International Conference
on, 2009, pp. 607616.