Software Engineering for the Cloud: a Research Roadmap - LBD [PDF]

Case studies, surveys, definitions and research work related to cloud software development;. Application: ... The full p

9 downloads 16 Views 150KB Size

Recommend Stories


A Roadmap for Ethics-Aware Software Engineering
Life is not meant to be easy, my child; but take courage: it can be delightful. George Bernard Shaw

Engineering Software Research Center
Do not seek to follow in the footsteps of the wise. Seek what they sought. Matsuo Basho

Software Engineering for Science Pdf
You miss 100% of the shots you don’t take. Wayne Gretzky

a research roadmap
At the end of your life, you will never regret not having passed one more test, not winning one more

LNCS 7475 - Software Engineering for Self-Adaptive Systems: A Second Research Roadmap
Don't ruin a good today by thinking about a bad yesterday. Let it go. Anonymous

[PDF] Software Engineering Design
Your task is not to seek for love, but merely to seek and find all the barriers within yourself that

cloud based software engineering learning environment
Why complain about yesterday, when you can make a better tomorrow by making the most of today? Anon

[PDF]Download Agile Management for Software Engineering
So many books, so little time. Frank Zappa

Logic PD Software Roadmap
Make yourself a priority once in a while. It's not selfish. It's necessary. Anonymous

MasterSeries: Structural Design Software, Engineering Software [PDF]
Structural Design Software, Analysis, 3D modelling, and Drafting for Steel, Concrete, Composite, Timber, Connections, Masonry, Pile Caps & Retaining walls. MasterSeries is a single, modular, fully Integrated Structural Design software system for toda

Idea Transcript


Software Engineering for the Cloud: a Research Roadmap Elias Adriano Nogueira da Silva

Daniel Lucrédio

Federal University of São Carlos,São Paulo, Brazil Email: [email protected]

Federal University of São Carlos,São Paulo, Brazil Contact: http://www.dc.ufscar.br/~daniel

Abstract—Having 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 industry’s 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. Oracle’s 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 provider’s 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 provider’s 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 provider’s 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. 1–10. [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. V11–72 –V11–75. [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. 1–10. [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. 464–469. [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. 44–51. [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. 137–146, 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. 1–4. [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. 155–160. [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. 111–118. [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. 50–58, 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. 8–12, 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. 7–15, 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, “Técnicas de Leitura de Software: Uma Revisão Sistemática,” XIX Simpósio 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, ESELAW’2010, pp. 30–39, 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. 234–241. [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. 752–757. [25] M. Vukoli´c, “The byzantine empire in the intercloud,” SIGACT News, vol. 41, no. 3, pp. 105–111, 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. 37–54. [Online]. Available: http://dx.doi.org/10.1109/ FOSE.2007.14 [27] H. Brunelière, 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. 1–8, 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. 276–281. [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. 316–323. [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 Environment’s Constraints during Legacy Software System Migration,” in Software Maintenance and Reengineering (CSMR), 2011 15th European Conference on, Mar. 2011, pp. 269–278. [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. 541–548. [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. 29–35. [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. 447–465, 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. 940–949. [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. 6–11. [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. 494–500. [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. 404–411. [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. 750–751. 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. 22–28. [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. 257–260. 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. 195–196, 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. 463–468. 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. 450–457. 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. 507–514. 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. 383–388. [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. 432–439. 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. 1–6. 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. 568–577. 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. 137–144. 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. 278–291. [Online]. Available: http://dx.doi.org/10.1007/978-3-642-13911-6\_19 F. Pérez Andrés, J. Lara, and E. Guerra, “Applications of Graph Transformations with Industrial Relevance,” A. Schürr, M. Nagl, and A. Zündorf, Eds. Berlin, Heidelberg: Springer-Verlag, 2008, ch. Domain Spe, pp. 82–97. [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. 658–662. 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. 159–168, 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. 223–255, 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. 1330–1344, 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. 5490–5499. [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. 164–169. [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. 383–387. 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. 1–7. 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. 924–930, Jun. 2011. C. Peltz, “Web services orchestration and choreography,” Computer, vol. 36, no. 10, pp. 46–52, 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. 287–292. [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. 770–775. 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. 59–66. 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. 631–636. 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. 2278–2282. P. A. Laplante, J. Zhang, and J. Voas, “What’s in a Name? Distinguishing between SaaS and SOA,” IT Professional, vol. 10, no. 3, pp. 46–50, 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. 511–518, 2011. (2012) Google Apps. [Online]. Available: http://www.google.com/apps/ intl/en/business/index.html (2012) Oracle’s 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. 38–45, 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. 509–512. [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. 17–24. R. A. Sengupta B., “Engineering multi-tenant Software-as-a-Service systems,” in Proceedings - International Conference on Software Engineering, 2011, pp. 15–21. 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. 181–188, 2012. F. Chong and G. Carraro, “Architecture strategies for catching the long tail,” MSDN Library, Microsoft Corporation, pp. 9–10, 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. 179–186. (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. 985–997, 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. 346–349. 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. 156–159. (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. 24–28, 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. 191–192. 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. 213–218. W. Kim, “Cloud architecture: A preliminary look,” in ACM International Conference Proceeding Series, 2011, pp. 2–6. [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. 525–530. 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. 796–819, 2012. L.-J. Zhang and Q. Zhou, “CCOA: Cloud Computing Open Architecture,” in Web Services, 2009. ICWS 2009. IEEE International Conference on, 2009, pp. 607–616.

Smile Life

When life gives you a hundred reasons to cry, show life that you have a thousand reasons to smile

Get in touch

© Copyright 2015 - 2024 PDFFOX.COM - All rights reserved.