Academia.eduAcademia.edu
Autom Softw Eng DOI 10.1007/s10515-014-0143-5 MobiCloUP!: a PaaS for cloud services-based mobile applications Luis Omar Colombo-Mendoza · Giner Alor-Hernández · Alejandro Rodríguez-gonzález · Rafael Valencia-garcía Received: 14 December 2012 / Accepted: 9 February 2014 © Springer Science+Business Media New York 2014 Abstract The integration of cloud computing and mobile computing has recently resulted in the Mobile Cloud Computing (MCC) paradigm which is defined as the availability of cloud services over a mobile ecosystem. Platform as a Service (PaaS) is a model of cloud computing that refers to high-level software systems delivered over Internet. This model typically enables developers to deliver Web applications as Software as a Service. With the aim of providing support to the MCC, in this work a PaaS called MobiCloUP! is proposed for mobile Web and native applications based on third-party cloud services such as Netflix, Instagram and Pinterest, to mention but a few. Unlike other commercial solutions such as force.com, GoogleTM App Engine and other academic proposals like MOSAIC, MobiCloUP! implements an automatic code generation programming model targeting rich mobile applications based on both Web standards such as HTML5, CSS3 and AJAX and Rich Internet Application frameworks like Adobe® Flex. The MobiCloUP! core is a wizard tool that covers design, publish/deployment, development and maintenance phases for mobile development life-cycle. In order to validate our proposal, Web 2.0 services-based Web and native mobile applications were developed and deployed to the Cloud using MobiCloUP!. L. O. Colombo-Mendoza · G. Alor-Hernández (B) Instituto Tecnológico de Orizaba, Orizaba, Mexico e-mail: galor@itorizaba.edu.mx L. O. Colombo-Mendoza e-mail: lcolombo@acm.org A. Rodríguez-gonzález Polytechnic University of Madrid, Madrid, Spain e-mail: alejandro.rodriguezg@upm.es R. Valencia-garcía Universidad de Murcia, Murcia, Spain e-mail: valencia@um.es 123 Autom Softw Eng Finally, a qualitative-comparative evaluation was performed in order to validate the legitimacy of our proposal against other similar commercial proposals. Keywords Mobile Cloud Computing · Platform as a Service · Rich Internet Applications · Web 2.0 services 1 Introduction Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users do not need having knowledge of, expertise in, or control over the underlying infrastructure in the Cloud that supports the services rendered to them. Cloud computing refers to both the applications delivered as services over the Internet and, the hardware and systems software in the data centers that provide those services. The services themselves have long been referred as Software as a Service (SaaS) whereas the underlying high-level systems software and the low-level hardware have been known as Platform as a Service (PaaS) and Infrastructure as a Service (IaaS), respectively. Due to proliferation of mobile devices such as smartphones and tablet computers, which have leaded to ubiquitous mobile applications, i.e., applications that can be accessed at any time and from anywhere over the Internet by using mobile devices, cloud computing has taken advantage of mobile computing. At the same time, cloud computing has addressed the challenges of mobile applications development such as limited computational power, storage space and energy available on mobile devices. This is evidenced by the recent incursion of mobile operators such as Vodafone (Connecting to the Cloud, 2010), Verizon and Orange on the cloud computing market. Mobile computing is a paradigm that enables the use of computing capability without a predefined location and network connection. In this sense, it relies on the concept of mobility which is the ability to change the location of mobile elements while connected to the network (Forman and Zahorjan 1994). The integration of cloud computing and mobile computing has resulted in the Mobile Cloud Computing (MCC) paradigm which was originally defined as the availability of cloud services over a mobile ecosystem (Cox 2012). Besides the evident benefits of merging cloud computing principles in mobile computing, there are other advantages such as: (1) the possibility of maintaining back-ups of personal and enterprise data in the Cloud, especially for data-intensive mobile applications, (2) the possibility of innovating in mobile application marketing, i.e., in the way that applications are delivered to the users and (3) the possibility of offloading and centralizing diverse mobile collaborative applications in the Cloud. Netflix, Instagram and Pinterest are greater examples of companies having mobile applications running in cloud environments instead of physical data centers.1 With the aim of providing support to the MCC, we have developed a PaaS for cloud services-based mobile applications. Our proposal called MobiCloUP! is a cloud computing platform for developing, executing or hosting rich mobile applications based on an automatic code generation approach, Twitter REST, Yahoo! Weather 1 http://www.engineyard.com/infographics/mobile-cloud 123 Autom Softw Eng and finding eBay services are examples of the back-end cloud services used in our proposal. Unlike other available PaaSs like GoogleTM App Engine2 which is targeting Web applications, MobiCloUP! is targeted at rich mobile applications based on both HTML5-JavaScript and Adobe® Flex technologies. Therefore, MobiCloUP!-based applications can be accessed from any Web browser that supports HTML5 or can be installed as native mobile applications on the most popular mobile operating systems such as Apple® iOS and GoogleTM Android. In this sense, Brightcove APPCLOUD3 and Exadel Tiggzi4 mobile application platforms are similar to our proposal; however, they do not provide the infrastructure required to run the applications over Internet as SaaS. This paper is structured as follows: Sect. 2 presents a review of the state-of-theart on MCC. Section 3 presents a survey of the cloud services APIs considered in MobiCloUP!. Section 4 describes the architecture and main internals of MobiCloUP!. Section 5 explains a case study for the generation and deployment of a cloud-based mobile Web application using MobiCloUP!. Section 6 presents the method aimed at assessing the proposed PaaS by comparing it against other similar approaches. Section 7 presents the conclude remarks and the future directions are discussed. 2 State-of-the-art In recent years, several works have been proposed with the aim of supporting the growing field of MCC. According to an Engine Yard’s infographic entitled “A Mobile Storm in the Cloud”,5 PaaS represent an innovation in MCC. It predicts PaaS market will have grown by 30 % in 2015. In fact, two main kinds of proposals have arisen: (1) execution frameworks for bringing the benefits of cloud computing to mobile computing, i.e., frameworks for enabling cloud services in mobile environments and (2) solutions from cloud services providers, specifically PaaS, aimed at supporting mobile development through Standard Development Kits (SDKs), Integrated Development Environments (IDEs) and runtime environment emulators as are used in mobile application development based on native programming languages (Cox 2012). Our proposal tries to innovate the latter by avoiding the code-based development approach and, at the same time, it extends the support to thick clients in order to incorporate rich features such as sophisticated Graphic User Interface (GUI) behavior and client-side business logic. According to Fernando et al. (2013), MCC is still in its infancy; however, it could become the dominant model for mobile applications in the near future. Starting from a taxonomy of issues in MCC covering: end-user, operational, service and application, privacy and security, context-awareness and data management issues, an architecture for supporting the issues not yet sufficiently solved was presented. This architecture is composed of five components: (1) a job handler responsible for dynamically partition the applications and the required data sets, (2) a resource handler responsible for 2 https://developers.google.com/appengine/ 3 http://www.brightcove.com/en/content-app-platform 4 http://tiggzi.com/home 5 http://www.engineyard.com/infographics/mobile-cloud 123 Autom Softw Eng searching for and discovering new mobile resources as well as communicating with external mobile devices, (3) a cost manager responsible for determining the user priorities and deciding whether to offload or not the job, (4) a security and privacy manager and (5) a context manager responsible for providing inputs from device sensors. March et al. (2011) proposed a framework that merges mobile and cloud computing concepts for the development of rich mobile applications, a new generation of distributed mobile applications that provides rich functionalities. This framework called µCloud employs a software composition approach which allows creating the applications by mashing-up modular components. Indeed, the applications are modeled as directed graphs in which nodes represent cloud-side, device-side and hybrid components. µCloud addresses design challenges of cloud-enabled mobile applications, e.g., the reliability under diverse network conditions, including disconnection. It also addresses the typical constraints of stand-alone mobile applications such as the limitations of mobile devices resources and energy which are overcomed by offloading resource-intensive complex tasks to the Cloud. In addition, the application portability is achieved by implementing on the Cloud those tasks that do not require device-specific capabilities. MCC is the result of extending mobile computing paradigm with the possibility of sharing computing resources along distributed environments. In this sense, Mishra et al. (2012) proposed a mobile-based cloud computing framework for the integration of mobile applications with cloud services aimed at processing and data storage. This framework called Mobile-Cloud has a three-tiered architecture: (1) presentation tier which is composed of mobile browser and e-mail client components; (2) application tier which provides business logic through the integration of different cloud service providers, e.g., amazon web servicesTM and GoogleTM Apps; (3) database tier (cloud server) which enables communication with the cloud database for storing user’s and mobile subscriber’s data. It also manages mobile communication and provides security and back-up facilities. Tang et al. (2011) extended the traditional thin-client computing architecture towards a platform-independent design on mobile environments. The resultant multiplatform thin-client architecture uses Virtual Network Computing (VNC) desktop sharing system at client-side taking advantage of its many implementations available for all major operating systems. Considering that virtualization is an enabler of cloud computing, such architect deploys the server-side on cloud. In fact, the core of the architecture is a component that merges virtualization and distributed computing with the aim of running on the Cloud different emulators according to the client mobile operating system. Finally, a new trend in mobile application marketing which allows running applications on cloud for enabling cross-platform markets was issued. According to Hung et al. (2012), application redesign for the Cloud, lack of user control over deployed applications, as well as data privacy and data security on the Cloud are the major issues of cloud computing. In order to address these drawbacks, an execution framework for mobile applications which relies on a cloud-based virtualized execution environment is proposed. This framework prevents the user from redesigning existing client–server mobile applications for accessing resources in the Cloud and, at the same time, it provides a mechanism based on the pause-resume scheme supported by Android-based applications to easily migrating running applications 123 Autom Softw Eng from one mobile device to another. Unlike traditional cloud development, using this framework, the control in deployment, migrating and execution of mobile applications is given to the user and the applications itself. In addition, this framework addresses data privacy and security along cloud provider’s infrastructure by using encryption and isolation techniques. Kao et al. (2012) proposed a Web-based runtime environment for cross-platform offline-able mobile and desktop Web applications. This environment called WOPRE relies on iGoogleTM which is an environment for displaying HTML5-JavaScript gadgets within a customized GoogleTM homepage where gadgets are created by using the GoogleTM Gadgets Application Programing Interface (API). Moreover, WROPE is composed of three main subsystems: (1) a subsystem responsible for offline content management and data synchronization that uses the GoogleTM Gears API, (2) a subsystem responsible for Web content adaptation allowing developers to explicitly select the sections of Web content that can be displayed in mobile versions of Web applications and (3) an application market that represents an interface between developers and end-users for publishing and installing applications. Srirama et al. (2011) proposed a MCC middleware for mobile mash-up applications, i.e., applications that combines data from diverse cloud services. This middleware addresses mobile platform heterogeneity and cloud provider orchestration through an interoperability API engine. This engine is responsible of selecting the most suitable API provided by the requested cloud vendor according to the requester (mobile device) platform. This engine is also in charge of encapsulating the previously selected API in an adapter for accessing the remote cloud service. As a case study, a social group formation Android application was developed based on facial recognition by using diverse cloud services such as face.com® facial recognition service, facebookTM mobile apps service and different cloud storage services like Amazon S3. Following previous efforts on context-awareness mobility, Grønli et al. (2011) proposed a cloud-based mechanism for context-aware adaptation of Android home screens. This mechanism consists of two main components: (1) the customized home screen on device-side, which is adapted by using internal context awareness sources such as accelerometer and orientation mobile device sensors, (2) a Web-based application deployed on GoogleTM App Engine platform that allows users to set the preferences for adapting the home screen, e.g., the value supplied by light sensor that causes a change in home screen background color. The user preferences are saved in the Cloud, and then they are pushed to the Android-based devices taking advantage of the Cloud 2 Device Messaging (C2DM) Google’s framework. In addition, context awareness is also enabled by using cloud services such as GoogleTM Calendar and GoogleTM Contacts. Mao et al. (n.d.) proposed a cloud-based POSIX-compliant file system mainly designed for mobile devices. This file system called Wukong allows mobile applications to transparently access data in a cloud environment through diverse kinds of network connections. The core of the Wukong architecture is a layer called Storage Abstraction Layer (SAL) which abstracts heterogeneous cloud storage services APIs into uniform interfaces using a plug-in mechanism. Each one of the cloud services is directly accessed by a plug-in that is responsible for implementing the corresponding uniform interfaces hiding the details of the back-end services. The SAL layer also 123 Autom Softw Eng enables mash-up development because Wukong-based applications can uniformly use different storage services such as Amazon S3, GoogleTM Docs and GoogleTM Storage at the same time. In order to ensure portability between clouds, Petcu et al. (2012) presented an open source set of language-independent APIs as part of a larger platform proposed by an open source project team called Open Source API and Platform for Multiple Clouds (MOSAIC). In general, the MOSAIC architecture comprises a layered set of APIs, a set of application development tools, a semantic engine, an application resource provisioner, and a service discoverer, among other components. MOSAICbased applications are expressed in terms of two kinds of building blocks: (1) cloud resources which are controlled by cloud providers and (2) cloud components which are controlled by application developers. In this sense, the layered set of APIs comprises: (1) language-dependent implementations for creating cloud components as well as for abstracting cloud resources, (2) an API aimed at providing programming language interoperability and (3) an API for wrapping the cloud resource native APIs. With the aim of enhancing the overall performance of cloud, Li et al. (2009) proposed a middleware framework for mobile agent-enabled cloud computing. This framework called Mobile Cloud Framework (MCF) supports global invocation of cloud services deploying mobile agents which are known as mobile services and, at the same time, it provides a set of mechanism for transparently managing these services. In detail, the MCF architecture comprises three engines defining three kinds of services: (1) a resource services engine which encapsulates infrastructural resources such as computational, storage and I/O resources in the Cloud, (2) a backbone services engine which enables transparent management and utilization of mobile services and (3) a mobile services engine which enables mobile services invocation. Regarding commercial proposals, Force.com is a PaaS developed by Salesforce Inc. Force.com addresses Web, desktop and mobile applications focusing on the social enterprise. It has a metadata-driven multi-tenant architecture where applications are built using a non-general purpose programming language called Apex, an XML-based GUI markup language called Visualforce, Web standards such as HTML, CSS and JavaScript, as well as native programming languages like Objective-C and Java (Weissman and Bobrowski 2009). AMPchroma is an enterprise grade mobile cloud platform from Antenna Inc. It has an architecture composed of three major modules: (1) AMP Client: a runtime environment that enables “write-once” deployment to take advantage of native capabilities across devices, (2) AMP Server: a messaging middleware connecting mobile users to enterprise systems and (3) AMP Manager: a Web-based console for remote management of applications, devices and users. AMPchroma covers the entire mobility life-cycle, including high-level phases such as planning and design (2010). Based on the analysis obtained from the related works reviewed we can conclude that current platforms for MCC suffer from several drawbacks such as: (1) they use a code-based approach which implies more development time and effort and it also involves using diverse tools such as IDEs and runtime environment emulators, (2) they fragment development life-cycle by putting separately the tools for supporting application development and deployment and (3) they do not cover native mobile applications development and deployment. This work tries solving the aforementioned 123 Autom Softw Eng deficiencies by: (1) proposing an automatic code generation approach which allows saving development time, effort and budget, (2) presenting a unique Web-based tool which abstracts both application development and deployment processes starting from a software development process for mobile applications, (3) covering a mixed cloud/native mobile development approach for taking advantage of both computing areas while overcoming the limitations of each other. 3 A survey of cloud services APIs Cloud providers offer uniform APIs that enterprises can use to tailor the Cloud to their business processes. These APIs are typically based on the Representational State Transfer (REST) architectural style where the web services and any other kind of reachable object such as document or image files are viewed as resources. Resources are identified by their Uniform Resource Identifiers (URIs), and they can be accessed through a standard transfer protocol such as the HyperText Transfer Protocol (HTTP) using the GET, POST, PUT, and DELETE methods (REST Application Programming 2010). In this sense, each cloud provider must supply the URI that identifies its cloud itself. Cloud services providers considered on the MobiCloUP! architecture can be classified into four categories: I/O, computing, communication and Web 2.0 providers. This broad spectrum of services enables developers to develop not only Web 2.0 servicesbased applications but also domain-independent applications. However, because of the innovation resulting from integrating Web 2.0 services besides the typical cloud services, the main features of the Web 2.0 services APIs initially integrated in MobiCloUP!, namely, Twitter® REST API, Flickr® API, GoogleTM Custom JSON/Atom Search API, GoogleTM Maps JavaScript API, finding eBay® API, last.fm® API, YouTubeTM Player API, YouTubeTM Data API, DiggTM API and Yahoo!® Weather API are described in Table 1. Most of the aforementioned APIs are REST-based APIs. However, there are a few APIs partially based on both, the SOAP protocol and the REST style. In all cases, MobiCloUP! uses the REST-based style for interacting with these APIs. The functionalities provided by the cloud services APIs integrated in MobiCloUP! are wrapped using PHP-based classes. Therefore, if other cloud services APIs are incorporated to MobicloUP!, only the corresponding wrappers are added. In addition, taking into account that dynamic discoverability is an attribute of PaaS aimed at supporting rapid elasticity (Haddad 2011), we have proposed a passive discovery mechanism based on the HTML5’s Server-Sent Events API standardized by the W3C. This mechanism was inspired in the server push model where services announce their presence without the PaaS explicitly requesting (Marin-Perianu et al. 2005). The layers and components of the MobiCloUP! architecture are outlined below. 4 MobiCloUP! architecture MobiCloUP! has a four-tier architecture aimed at ensuring independence between developers of Cloud-based applications and cloud services providers. The proposed 123 Autom Softw Eng Table 1 Web 2.0 cloud services APIs used by MobiCloUP! Cloud services API Description Request formats Response formats Twitter® REST API The Twitter REST API methods let developers accessing core Twitter data, this includes: tweets and timelines, user information, saved searches, trending topics, among other Twitter data It lets developers interact with Flickr’s user accounts, manage stored photos and photo metadata, uploading new photos, manage photo galleries, manage Flick’ user groups, among other actions It enables developers to retrieve either web search or image search results searching over a website or a collection of websites by using a customized search engine powered by GoogleTM It allows developers to embed GoogleTM maps in desktop applications as well as in applications for mobile devices. It allows manipulating maps just like on the GoogleTM Maps website and customizing them by adding specific content The finding eBay® API allows developers to search for items listed on the eBay® website. It offers both standard search and search refinement capabilities It allows developers to interact with Last.fm® core data i.e. artists, albums and tracks stored on the Last.fm® website. Also, it allows managing user’s Last.fm® libraries and retrieving Last.fm® user accounts and user groups data It has 2 main items: (1) a data API; and (2) a player API. The data API allows to applications carrying out the actions that a user can carry out on the YouTube website. The player API lets developers controlling the YouTubeTM player through JavaScript or ActionScript functions REST REST, JSON, RSS and Atom REST, SOAP and XML-RPC REST, JSON, SOAP, XML-RPC and PHP REST JSON and Atom JSON JSON REST and SOAP REST, JSON and SOAP REST and XML-RPC REST and XML-RPC REST (YouTubeTM Data API) JSON, JSONIN.SCRIPT, JSONC, RSS and Atom (YouTubeTM Data API) Flickr® API GoogleTM JSON/Atom Custom Search API GoogleTM Maps JavaScript API Finding eBay® API Last.fm® API YouTubeTM API 123 Autom Softw Eng Table 1 continued Cloud services API Description Request formats Response formats DiggTM API It lets developers interact programmatically with DiggTM for retrieving information such as digg counts and comments related to the news stories and videos submitted to the DiggTM website. Also, it allows managing DiggTM user accounts It enables developers to get up-to-date weather information about wind, atmospheric pressure, humidity, visibility and astronomical conditions for specific locations Although this is not an official API, there is a public method exposed by GoogleTM that allows obtaining real-time feedback of search criteria similar to that a user enters during a search REST REST REST RSS REST REST Yahoo! Weather API GoogleTM Suggest API architecture enables traditional, static single-tenant deployment. Therefore, it does not address resource pooling which is commonly considered a cloud characteristic. In this sense, the MobiCloUP! architecture resembles the architecture of a cloud washed PaaS which, according to Haddad (2011), simply adds hardware virtualization and application platform provisioning. Moreover, because that the relevance of this work lies on an automatic code generation approach for developing cloud services-based rich mobile applications, the issues related to hardware virtualization are not addressed here. 4.1 Architecture description The proposed architecture is shown in Fig. 1. This architecture is composed of four layers; each layer fulfills a specific function by using a set of components whose tasks are described in following sections. 4.1.1 Cloud-based enterprise mobile applications Depending on their kind, applications built on top of MobiCloUP! architecture are accessed either remotely from mobile Web browsers or locally as native mobile applications. Notice that native mobile applications are not hybrid applications, i.e., applications built using Web technologies, and wrapped in a device-specific native application shell. For instance, PhoneGap is a popular mobile development framework that uses JavaScript, HTML5 and CSS3 technologies for building hybrid mobile applications. MobiCloUP!-based mobile Web applications have 123 Autom Softw Eng Fig. 1 MobiCloUP! architecture HTML/JavaScript-based front-ends whereas MobiCloUP!-based native mobile applications have MXML/ActionScript-based front-ends. In both cases MobiCloUP!based applications have PHP-based back-ends aimed at invoking back-end cloud services through API Wrapper components which actually are PHP-based classes. It is 123 Autom Softw Eng important to notice that this MVC-compliant three-tier architecture enables MobiCloUP!’s development tools to operate over the logic layer of any compatible legacy application in order to able communication with the MobiCloUP!’s Cloud Business tier without affecting the rest of the application. In fact, all the legacy presentation source code is wrapped into a single GUI view by using a set of front-end templates whereas the business logic tier is simply injected to add the PHP-based file (back-end file) aimed at enabling access to the set of cloud services supported by MobiCloUP!. According to the above, the easiest way to treat the legacy presentation source code is to embed an entire HTML5-based Web page into another or an entire ActionScriptbased application into another, according to the type of application to be migrated to MobiCloUP!. For this purpose, the object tag as well as the SWFLoader class must be used, respectively. In this sense, it may be required that the redundant functionalities (legacy presentation source code) are retired by hand once the application has been migrated to MobiCloUP!, i.e., once the legacy and new functionalities are coexisting. Regarding the legacy data, MobiCloUP! is currently able to migrate MySQL databases to the Cloud by using both the GoogleTM Cloud Storage and GoogleTM Cloud SQL third-party services. In detail, it allows migrating MySQL dump files (SQL files) containing both schemas and data. 4.1.2 Cloud business tier This layer is addressed by business consumers, i.e. MobiCloUP!-based applications users. Applications built using the tools in the lower layer are executed at this level. The entry point is the Request Handler component which acts as a gateway receiving all the requests for resource provisioning and workload offloading from applications. 4.1.3 Cloud platform tier This layer is addressed by MobiCloUP!-based application developers. It is designed for developing and deploying new applications from scratch as well as for migrating legacy compatible applications. In this sense, the main component of this layer is a Wizard GUI which allows developers to design, develop and publish (or deploy) both HTML5/JavaScript-based mobile Web applications and Adobe® Flex-based native mobile applications. Furthermore, this layer provides programming language-specific wrapper components for cloud services APIs allocated at lower layer. According to the above, MobiCloUP! implements a development process for rich mobile applications which covers almost all the phases of the typical mobile development life-cycle, namely, design, development, publishing (or deployment) and maintenance (About the Application Development Process 2012; Application Platform Overview for Windows Phone 2012). This development process does not cover neither the highest phase of mobile development life-cycle, i.e., planning nor the testing low-level phase. In detail, it is based on a configuration of the Phases Process for Multi-device RIAs Development (PPMRD) process (Colombo-Mendoza et al. 2012) which is a code generation approach for cloud services-based multi-device RIAs, i.e., Web browser-based RIAs, desktop RIAs and native mobile RIAs. PPMRD only covers 123 Autom Softw Eng design, implementation and deployment phases; hence, maintenance is conducted as an incremental deployment approach. Similarly, MobiCloUP! implements a migration process covering almost all the phases of the typical migration project life-cycle: design, migration, launch and postproduction. In detail, this migration process is based on both: (1) a migration methodology proposed by Oracle Company (Laszewski and Nauduri 2012), which is focused on database migration and (2) a best practices methodology proposed by BinaryTree Company (Binary Tree 2011) as part of a suite of IT solutions for enterprise collaboration and messaging software migration. It is important to notice that the launch (publishing or deployment) phase of the typical migration project life-cycle involves activities consisting on removing the legacy functionality in order to avoid possible redundant functions. Nevertheless, these removing activities are not currently addressed by MobiCloUP! so that they must be performed by hand once the migration phase has concluded. Into this layer, there are set of components with a specific functionality that is explained below. Wizard GUI is the source of GUI events triggered from interaction between application developers and MobiCloUP!’s development tools. In order to guide application developers through the phases of a well-defined process for the development of rich mobile applications starting either from legacy source code or from scratch, this component was designed following the wizard screen design pattern (Neil 2009). In fact, nearly each phase of either the MobiCloUP!’s development process or the MobiCloUP!’s migration process is implemented by means of one phase of the Wizard GUI. Source Code Generator which, depending on the required type of application, is responsible for: (1) generating application directory structures, (2) generating configuration files and (3) generating source code files. In fact, this component generates source code of rich mobile applications either in a deployable or installable form by using a set of templates. In addition, it generates source code files either starting from legacy source code or starting from scratch. In the former case, lexical analysis of source code files are required besides lexical analysis of templates. Native Applications Compiler is responsible for compiling the source code files of native mobile applications, i.e., the MXML/ActionScript-based source code files into SWF files. It is important to remark that the aforementioned files are generated by the Source Code Generator component. Resources Provisioner is responsible for identifying all the cloud services required by the MobiCloUP!-based applications during their initialization as well as for instantiating and provisioning the corresponding API Wrappers components. In fact, the instances of API Wrapper components are used by the applications to make calls to the back-end services and access the results returned in a standardized way. We have proposed using a descriptor file (Petcu et al. 2012) for identifying the cloud services required by an application. Furthermore, this file is an XML-based document encapsulating all the requirements specified by an application developer throughout the initial phases of the Wizard GUI. In this sense, it is automatically generated by the Source Code Generator component during applications design phase and it is used during applications development, deployment and execution. Figure 2 depicts the main elements of the MobiCloUP! application descriptor file. 123 Autom Softw Eng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <MobiCloUP!App> <type></type> <platforms> <platform id="" name=""> <certificate password=""></certificate> </platform> </platforms> <cloudServices> <web2.0> <cloudService id=""></cloudService> … </web2.0> <input&output> … </input&output> <computing> … </computing> <communication> … </communication> </cloudServices> <developmentSettings> <generalInfo> … </generalInfo> <mobile> <multiplatform> … </multiplatform> <android> … </android> <iOS> … </iOS> <blackBerryTabletOS> … </blackBerryTabletOS> </mobile> </developmentSettings> <deploymentSettings> <subdomain></subdomain> </deploymentSettings> </MobiCloUP!App> Fig. 2 MobiCloUP! application descriptor file 123 Autom Softw Eng Offloading Handler is responsible for deciding at runtime if a workload from a mobile device can be offloaded to MobiCloUP! in order to avoid the device overload and increase the application performance. For this purpose and considering the major approaches in offloading methods for MCC (Fernando et al. 2013), a client–server communication mechanism based on the W3C’s XMLHTTPRequest API was proposed in this work. During applications design, developers can indicate if common business logic operations, namely data sorting and data filtering, should be offloaded to the Cloud (see Sect. 5 of this paper). Then, during application execution, these preferences are evaluated by the Offloading Handler component considering the usage of hardware resources, namely RAM and CPU. This mechanism represents a first step towards rapid elasticity based on Web technologies (Zhang et al. 2012). According to Haddad (2011) rapid elasticity is another characteristic of cloud. Native Application Packager is responsible for packaging and digitally signing SWF files into application installers, namely .apk, .ipa and .bar files for GoogleTM Android, Apple® iOS and BlackBerry® Tablet OS operating systems, respectively. Thereby, it uses either Adobe® AIR® SDK tools or Blackberry® SDK tools. Furthermore, this component is also responsible for packaging all installation files generated for an application into a single ZIP file which is locally downloaded by the application developer. Once a ZIP file has been unpackaged, application installers can be easily installed on target devices. It is important to notice that unlike other proposals, MobiCloUP!’s development tools are intended to be deployed on remote resources over the Cloud. Web-based Application Deployer is responsible for deploying mobile Web applications to developer’s subdomains. In detail, for each mobile Web application developed, this component is responsible of: (1) generating one sub-directory within the MobiCloUP!’s deployment directory, (2) copying the source code files composing the application to the corresponding application’s sub-directory, (3) setting up the sub-domain required by the developer during the application deployment phase and (4) pointing the required sub-domain to the corresponding application’s sub-directory. This deployment process enables final users to access mobile Web applications via mobile Web browsers by using URIs. In addition, this component enables applications to be incrementally deployed or fully redeployed by using the Maintenance Tool, according to the configuration settings settled by developers during the application deployment phase. Maintenance Tool is responsible for providing facilities to manage already deployed MobiCloUP!-based applications. These functionalities include: applications shutdown, sub-domain changing, cloud provider changing, among others. In addition, in order to support the incremental deployment capability, this component is also responsible for enabling developers to deploy new versions of already deployed MobiCloUP!based applications by simply adding and removing back-end cloud services to the current instance of the application at runtime. Similarly, in order to support the fully redeployment capability, it allows developers to deploy a new version of an already deployed MobiCloUP!-based application by stopping the execution of the current instance of the application and deploying a new instance. API Wrapper Components are responsible for providing programming languagespecific functions that wrap cloud services API methods. These components enable 123 Autom Softw Eng MobiCloUP!-based applications accessing back-end cloud services. There is a wrapper component for each type of cloud service used in MobiCloUP!. Therefore, each wrapper component provides a uniform interface that merges heterogeneous cloud APIs of one type. This mechanism ensures interoperability among cloud services APIs of one type enabling applications to change the cloud service provider to be called at runtime. In the case of Web 2.0 APIs there is a wrapper component for each category of cloud service, namely video, mapping and micro-blogging services to mention but a few. Data Manager allows retrieving the necessary application templates, configuration file templates and Cloud-based components from repositories during source code generation. Furthermore, this component is responsible for performing low-level tasks related to the file system managing during: (1) source code generation (application development phase), (2) application installers packaging (application publishing phase) and (3) ZIP files packaging. It is important to remark that this component is responsible for managing all the resources provided by developers not only during the development of new applications but also during the migration of existing applications. In this sense, all the legacy source code files composing a legacy application must be provided by means of a single ZIP file. According to the above, a migration ZIP file must package: (1) HTML5/JavaScript-based files or MXML/ActionScript-based files, depending on the type of application to be migrated and (2) PHP-based files. 4.1.4 Data tier This layer is mainly aimed at storing XML-based documents by means of a set of repositories which represents the core of the source code generation process. Templates Repository enables persistence for MXML/ActionScript-based application front-end templates, HTML5/JavaScript-based application front-end templates, PHP-based back-end templates as well as configuration files such as Adobe® AIR application descriptor files. On the one hand, MobiCloUP! uses an application frontend template for each type of rich mobile application to be developed, i.e., for mobile Web applications and for native mobile applications. On the other hand, descriptor file templates are specialized according to the mobile operating systems supported by MobiCloUP!, i.e., there is one type of descriptor file template for each mobile operating system supported. Cloud-based Components Repository enables persistence for application building blocks, i.e., source code files that can be reused according to the cloud services required. A Cloud-based component comprises either an MXML/ActionScript-based GUI component (About MXML Components n.d.) or an HTML5/JavaScript-based GUI component (Introduction to Web Components 2012). The use of application frontend and back-end templates in conjunction with Cloud-based components enables MobiCloUP! incrementally deploy mobile Web applications by simply adding and removing Cloud-based components. In fact, this is considered a PaaS attribute aimed at supporting the on-demand self-service cloud characteristic (Haddad 2011). Users Data Repository provides database storage for MobiCloUP! users data, i.e., data of MobiCloUP!-based application developers. 123 Autom Softw Eng 4.1.5 Resources tier Although many cloud services providers offer programming language-specific APIs, i.e., libraries, this layer has a set of cloud services APIs exposed as REST-based APIs. It has not only I/O, processing and communication cloud services but also Web 2.0 cloud services. We have proposed to integrate Web 2.0 services along to the common system resources services such as database storage and message queues. In this sense, MobiCloUP! architecture integrates video, music, photo, e-commerce, search, bookmarking and micro-blogging services. Services API Catalog is a catalog of REST-based services inspired by the Universal, Description, Discovery and Integration (UDDI) registry. This component is the entry point of service discovery process. Like API Wrappers, there is a catalog page for each category of cloud service integrated into MobiCloUP!. These pages abstract cloud APIs data such as services URIs, supported HTTP methods, required parameters, among others. 4.1.6 Cloud services providers Although cloud providers are not involved into the MobiCloUP! architecture, supplied cloud services represent its back-end. Thus, cloud providers are considered secondary actors in the context of MobiCloUP! use cases. In detail, Web 2.0 providers involved in MobiCloUP! design are: Twitter, Yahoo!, eBay, Flickr, Last.fm, Google, Digg and YouTube. 4.2 Workflow description The relationships among components of MobiCloUP! architecture describe two workflows where functionalities are executed in a sequentially way: (1) application publishing/deployment and (2) application execution. These workflows describe the architecture’s functionality. The phases of the application deployment sub-workflow to be processed during the execution of the MobiCloUP! architecture are depicted in Fig. 3. The phases of the application execution workflow are depicted in Fig. 4. 4.2.1 Application deployment sub-workflow (1) Once the message indicating the success of the source code generation process is displayed by the Wizard GUI component, either the native code generation process in the case of native mobile applications or the application deployment process in the case of mobile Web applications are triggered. The Native Applications Packager component listens to the event identifying the completion of the corresponding phase of the wizard. (2) If a native mobile application was generated, then the Native Applications Packager component calls to the Data Manager component for requesting the 123 Autom Softw Eng Fig. 3 Application deployment process Fig. 4 Application execution process execution of the Adobe® Flex SDK ADT tool which allows generating application installers. (a) As outcome, an .apk, .ipa or .bar file is generated by the Data Manager component, and then it is located within the root directory of the application directory structure. Finally, a value that indicates the successful or failed execution of the low-level operation is returned. (b) If the Data Manager component indicates that the application installer was successfully generated, then the Data Manager component is called again for requesting building the response to be presented to the developer. 123 Autom Softw Eng (c) As outcome, a unique ZIP file packaging both the application source code and the application installer is generated by the Data Manager component. The ZIP file can be downloaded by the developer at the end of the wizard. (d) If the Data Manager component indicates that the ZIP file was successfully generated, then the Native Applications Packager component calls the Wizard GUI component for displaying a message as a response to the request initially made by the developer. (e) The Wizard GUI displays both a message indicating the success of the entire code generation process and a “download ZIP file” option. (f) The developer downloads the ZIP file by clicking the “download ZIP file” option. Once the ZIP file was unpacked, a directory structure containing the corresponding application installers is obtained. At this point, the application can be installed on target devices. (3) If a mobile Web application was generated, then the Native Applications Packager component calls the Web-based Applications Deployer component. (a) The Web-based Applications Deployer component parses the MobiCloUP! application descriptor file in order to extract the deployment parameters, and then it uses them for configuring the MobiCloUP! Web server and setting up the sub-domain required by the application developer. Then, application source code files are copied to the MobiCloUP! deployment directory for enabling users to access the application via mobile Web browsers. Finally, the Webbased Applications Deployer component calls the Wizard GUI component for displaying a message as a response to the request initially made by the developer. (b) The Wizard GUI displays a message indicating the success of the entire code generation process. 4.2.2 Application execution workflow (1) Once the application was either deployed on the MobiCloUP! platform or locally installed on a mobile device, its back-end cloud services can be invoked. In detail, mobile Web applications are accessed by using an URI composed of the MobiCloUP! domain, the developer’s sub-domain and the application name. Moreover, although native mobile applications are locally accessed on mobile devices, they have back-ends that communicate with MobiCloUP! via HTTP requests. This workflow treats the execution of a mobile Web application. (2) In order to trigger the initialization process, when an Application Front-end is requested from a Web browser, an asynchronous HTTP request is sent to the Request Handler script via the W3C’s XMLHTTPRequest API (AJAX technology). (3) The Request Handler script identifies the incoming request, and then it determines the Deployment Support’s component to be called. In the case of a resource initialization request, the Resource Provisioner component is called whereas in the case of a workload offloading request, the Offloading Handler component is called. 123 Autom Softw Eng (4) The Resources Provisioner component carries out the application initialization process as follows: (a) it searches for the corresponding MobiCloUP!-based application descriptor file, (b) once the descriptor file is found, it is parsed with the aim of identifying the set of cloud services mapped to the application and (c) finally, the necessary API Wrapper components are instantiated. (5) Once the application initialization process has been finished and the application has been completely rendered (if applicable), the user requests the execution of a back-end cloud service by displaying an application view and submitting a form via AJAX. (6) The Application Back-end analyses the submitted data in order to identify the requested back-end cloud service and determine the API Wrapper to be called. The retrieved data are sent as part of the call. (7) The API Wrapper receives the user parameters, and it builds the final URI adding these parameters to the base URI of the back-end resource. Finally, this component sends an HTTP request to the back-end resource by using the final URI. (8) The Cloud Service Provider’s infrastructure processes the incoming request, and then it calculates the data to be returned as response. (9) The corresponding API Wrapper processes the response from the Cloud Service Provider’s infrastructure. In detail, this component extracts the received data, and then it encapsulates them in an XML-based document if the back-end cloud service uses another format such as JSON, RSS or Atom. In fact, all the responses from back-end cloud services are homogenized by using a common XML-based structure. Finally, this XML-based document is returned to the corresponding Application Back-end. (10) The Application Back-end forwards the XML-based document encapsulating the data from the requested back-end cloud service to the Application Front-end. (11) The Application Front-end parses the retrieved XML-based document with the aim of extracting the relevant data, and then it adds these data to a data structure which is used as source of data binding to a GUI control aimed at displaying data. In order to explain the MobiCloUP!’s functionality, a case study for generating and deploying a Web 2.0 services-based mobile Web and native applications is presented below. 5 Case study: migrating and redesigning a legacy mobile web application MobiCloUP! is a PaaS for both mobile Web applications based on HTML5/JavaScript technologies and native mobile applications based on the Adobe® Flex framework. It guides developers through application development or migration processes in a step by step way by using a unique wizard tool. Furthermore, MobiCloUP! has adopted an automatic code generation approach rather than a code-based development approach. According to the above, MobiCloUP!’s wizard tool implements two different scenarios: (a) new application development and (b) legacy application migration. In detail, these scenarios are abstracted by the wizard’s phases in a way that the developer must perform the following steps: (1) select the type of application to be developed; here, 123 Autom Softw Eng the scenario to be carried out is determined by indicating whether or not existing application source code will be reused. In this sense, the following steps are explained in the context of the legacy application migration scenario, (2) select the cloud services to be used in order to redesign the legacy application, (3) set the development (application configuration) settings, (4) import the source code files of the existing MobiCloUP!-compliant application to be migrated to the Cloud; in addition, existing MySQL databases can be imported by means of SQL dump files and (5) set the packaging or deployment settings. To thoroughly explain the aforementioned steps, a case study for migrating, redesigning and deploying a legacy mobile Web application by implementing a MySQL/HTML5/PHP MVC pattern is explained below. The redesign process implies the usage of Goggle Storage and Yahoo!® Weather Cloud services. At the same time, this case study represents a means to exemplify the RIA-like features of MobiCloUP!-based applications, namely, the support for rich GUIs: interaction design patterns and support for sophisticated client–server communication mechanisms: retrieving data from two or more simultaneous sources, both in asynchronous and synchronous way. Let us suppose that a small enterprise 2.0 needs to carry out a Cloud-based migration process from a traditional Web application optimized for mobile devices and hosted on its data center, i.e., locally, in order to dynamically meet the growing business demands related to the complexity and size of its data and reduce the implied costs. In detail, this application has an MVC-compliant three-tier architecture composed of: (1) an HTML5/JavaScript presentation layer, (2) a PHP-based logic layer and (3) a MySQLbased data layer. It is important to notice that this architecture is compatible with the architecture of the MobiCloUP!-based mobile Web applications. Furthermore, the functionality of this architecture is described as follows: the application allows users to sign up and log in, trace travel routes on maps of GoogleTM Maps, save the routes traced, retrieve lists of stored routes and retrace stored routes. In detail, the application uses a central SQL database for data persistence of travel routes as well as users’ data. In this sense, the GoogleTM Cloud Storage API seems to be a suitable option for the migration of the legacy database. In addition, the application needs to be redesigned in order to allow users to get weather information for the locations composing travel routes. Here, the Yahoo! Weather API seems to be a suitable option. Considering that mobile application developers are increasingly looking for solutions to the typical constraints of mobile devices, proposals such as MobiCloUP! become relevant. Moreover, assuming that time and effort saving are major constraints in software development, MobiCloUP! offers also a solution to this issue in terms of: (1) a set of HTML5/JavaScript-based and MXML/ActionScript-based mobile application templates, (2) a set of HTML5/JavaScript-based and MXML/ActionScript-based reusable GUI components for consuming cloud services and (3) a wizard tool which allows generating and deploying mobile Web applications as well as native mobile applications for different platforms and devices through the following steps: (a) The application developer request accessing MobiCloUP! via a Web browser by using a URL. (b) As a result, the MobiCloUP!’s login form is displayed. An application developer must be authenticated with the corresponding credentials, namely, username and 123 Autom Softw Eng Fig. 5 MobiCloUP! user authentication process password provided during user registration process in order to access MobiCloUP!. In this sense, username and password must be entered as is depicted in Fig. 5. (c) Once the developer has been authenticated, the Wizard GUI is displayed. The first wizard phase is the selection of the type of application to be generated. The developer can choose between two options: (1) a mobile Web application or (2) a native mobile application. If the development of a native mobile application is required, then the target mobile operating systems must also be selected in this wizard phase as is depicted in Fig. 6. This is because the native code generation depends on the target technologies. In addition, the developer can indicate that the development is conducted starting from legacy source code, i.e., that an existing MobiCloUP!-compliant application will be migrated to the Cloud. Otherwise, the development is conducted starting from scratch. (d) The next phase is the selection of the cloud services to be included which provide functionalities to the applications to be generated. Cloud services supported by MobiCloUP! are classified into four categories: (1) Web 2.0, (2) I/O, (3) communication and (4) computing services as are depicted in Fig. 7. Developers can select one or more cloud services, even from different categories. In the case of Web 2.0 category, each one of the selected services is implemented by a GUI component which is displayed as an application view. It is important to notice that applications to be generated use a view-based navigation model which allows designing mobile applications composed of a set of full-screen views. In fact, we have developed both a MXML/ActionScript-based GUI component and an HTML5/JavaScriptbased GUI component for each Web 2.0 service supported by MobiCloUP! (see Sect. 4 of this paper). These components are the application building blocks, and they are reused during source code generation irrespective of the required type of application. In the case of I/O cloud services, each one of the selected services is implemented by means of a set of PHP-based data access scripts which are aimed 123 Autom Softw Eng Fig. 6 Selecting the type of application to be generated by using MobiCloUP! Fig. 7 Selecting the cloud services to be included at managing data from Web 2.0 cloud services. Furthermore, the necessary database schema script is automatically generated and executed in the Cloud. In this sense, at GUI design level, the GUI controls intended to trigger SQL data manipulation operations (INSERT, SELECT, UPDATE and DELETE) are automatically added to each of the application’s views, i.e., to each Cloud-based component. Additionally, a set of PHP-based data access scripts aimed at managing data about intended users and the corresponding database schema script are generated by the Source Code Generator component by default. It is important to remark that, at 123 Autom Softw Eng this point in the development, the design phase of the MobiCloUP!’s migration process outlined in Sect. 4 of this paper is initiated. Thus, legacy functionalities likely to be replaced by means of one or more cloud services offered by MobiCloUP! can be determined in this phase. Similarly, new functionalities to be integrated to the legacy application by means of other Cloud-based components can be optionally determined in this phase. In this sense, according to the scenario stated at the beginning of this section, the Google® Maps Cloud service of Web 2.0 category is selected only as a means to compare a legacy function to a corresponding MobiCloUP!-based function, the Yahoo!® Weather cloud service of the same category is selected as a new requirement towards the redesign of the legacy application. In addition, the GoogleTM Cloud Storage service of I/O category is selected as a means to migrate the legacy database. Figure 7 depicts both the set of cloud services of Web 2.0 category supported by MobiCloUP! and the set of cloud services of the same category selected in this case study. (e) Once the required cloud services are selected, the initial application configuration settings are settled according to the type of application to be generated. These configuration settings are provisional in the sense that they can be modified during the post-production phase of the MobiCloUP!’s migration process by using the Maintenance Tool. On the one hand, they are parameters applicable to both types of application offered by MobiCloUP!, i.e., multiplatform parameters, such as: (1) application name, (2) application title, (3) application DPI which allows automatically scaling application for different screen densities, where density is the number of dots or pixels per square inch, (4) application navigation model which can be a view-based model or a tabbed application model and (5) application style which comprises details of the application’s look and feel such as the background and font colors for the intended application template. On the other hand, they are parameters only applicable to native mobile applications. In detail, they are: (1) parameters applicable to all mobile operating systems, i.e., multi-device parameters such as the full-screen mode and the screen auto-orienting feature and (2) platform-specific properties such as the iPhone® /iPad® support and the style for the Apple® iOS status bar in the case of applications for Apple® iOS-based devices or the transparent background property and the splash screen feature in the case of applications for BlackBerry® Tablet OS-based devices. It is important to notice that application templates use a typical header/center/footer structure as is proposed by the HTML5 standard. In addition, the aforementioned GUI design decisions can be made in the context of a redesign project as is proposed in this case study. Thus, the look and feel of the application to be migrated to the Cloud must be taken into account at this point in the development. In fact, the design phase of the MobiCloUP!’s migration process is partially automated by this phase of the wizard tool. In this sense, the look and feel of the MobiCloUP!-based mobile Web applications is defined by means of CSS files whereas the look and feel of the MobiCloUP!-based native mobile applications is defined by means of Spark skins. Here, a Spark skin is a MXML class controlling all visual elements of a component of the Adobe® Flex Spark architecture including layout. The initial configuration settings settled in this case study for the development of a MobiCloUP!-compliant mobile Web application are depicted in Fig. 8. Finally, it is important to notice 123 Autom Softw Eng Fig. 8 Setting the development configuration of the application to be generated that, at the end of this wizard phase a MobiCloUP! application descriptor file is automatically generated by the Source Code Generator component. In fact, as it is explained in Sect. 4 of this paper, this file is generated starting from the parameters settled by the developer throughout all the previous wizard phases. (f) Once the application configuration is finished, the source code files composing the legacy application are uploaded to MobiCloUP! by means of a ZIP file as is depicted in Fig. 9. In this sense, a migration ZIP file must contains: (1) one or more HTML5/JavaScript-based or MXML/ActionScript-based files, (2) one or more PHP-based files, (3) one or more CSS files or Spark skin files and (4) a set of multimedia resources such as images and videos. It is important to remark that, at this point in the development, the core phase, i.e., the migration phase of the MobiCloUP!’s migration process outlined in Sect. 4 of this paper is initiated. In detail, the imported ZIP file is immediately unpacked in order to determine whether or not the application is a MobiCloUP!-compliant application, i.e., an MVC three-tier architecture. For this purpose, a series of lexical analysis of both presentation and business logic/data access files are performed according to the type of application to be migrated to the Cloud. Moreover, a dump file (SQL file) containing the SQL statements necessary to recreate a legacy database in the Cloud can also be uploaded to MobiCloUP! by means of this wizard phase. In this sense, the Source Code Generator component is able to determine whether or not the provided dump file contains MySQL-compliant statements. Besides providing the legacy source code files, the developer must conduct the activities explained below. In the case of mobile Web applications, the developer must indicate which of the presentation files, i.e., which of the HTML/JavaScript-based files or PHPbased files containing or generating HTML tags is the initial file, i.e., the file that must be accessed via a mobile Web browser when the application is invoked by a user. In the case of native mobile applications, the MXML/ActionScript-based file 123 Autom Softw Eng Fig. 9 Uploading the legacy application files implementing the top-most component container for Adobe® Flex-based mobile applications is automatically identified by the Source Code Generator component. According to the above, the PHP-based files imported as part of the aforementioned ZIP file are internally classified into one or the following two categories: (1) presentation files or (2) business logic/data access files, irrespective of the type of application to be migrated to the Cloud. In detail, the PHP-based files defining classes are automatically classified as business logic/data access files whereas the PHP-based files containing or generating HTML tags are automatically classified as presentation files. Once the legacy source code files have been validated by the Source Code Generator component, a source code generation process can be triggered in this wizard phase by using the “generate a MobiCloUP!-based app” option. In fact, in the context of migrating a legacy application, this code generation process is intended to generate a MobiCloUP!-compliant application that reuses the previously provided legacy source code files. In detail, a set of MobiCloUP!-compatible source code files are generated by using an application front-end template, an application back-end template and one or more predefined Cloud-based components (see Sect. 4 of this paper). On the one hand, each one of the required new functions is provided by means of a Cloud-based component which is added to the application front-end template as a view. On the other hand, all the legacy functions are added to the application front-end template into another view by wrapping the main presentation file (default HTML-based file). As can be inferred, MobiCloUP! is no able to recompose or refactor legacy GUIs in order to introduce the new functionalities (Cloud-based components) into the legacy Web applications. It is important to notice that, the wizard tool displays information messages in a console while the source code is being generated. (g) The next phase of the wizard is either the deployment of the mobile Web application to the MobiCloUP!’s production infrastructure or the native code generation, 123 Autom Softw Eng i.e., the generation of the installation files required to locally deploy the native mobile application on all target devices. In fact, this wizard phase automates the launch phase of the MobiCloUP!’s migration process. In the case of mobile Web applications deployment, there are few settings to be configured in this wizard phase before the application is launched: (1) the name of the sub-domain to be set up in order to release the application to potential users, (2) the name to be used by users to access the application. By default, the latter parameter is taken from application configuration settings settled in the third wizard phase. However, it can be changed if necessary. These both settings are used by the Web-based Applications Deployer component to build the URIs of the applications to be launched. In detail, an application URI is built by concatenating the following three elements: (1) the MobiCloUP!’s domain which is shared by all the applications in the MobiCloUP! ecosystem, (2) the developer sub-domain which can be used by more than one application at the same time and (3) the application name. Figure 10 depicts the configuration settings settled in this case study for the deployment of the MobiCloUP!-compliant mobile Web application. It is important to remark that the Web-based Applications Deployer component generates one sub-directory within the MobiCloUP!’s deployment directory for each mobile Web application developed. Thereby, the source code files composing a mobile Web application are copied to the corresponding application’s sub-directory. Finally, the application’s sub-directory is pointed to the sub-domain set up by the developer in this wizard phase. In the case of native code generation, the wizard asks for the digital certificate files and corresponding passwords needed to sign an installation file for each target platform initially required. In the specific case of signing applications for Apple® iOS-based devices, provisioning profiles must also be provided. A provisioning profile is a file which associates an Apple® iOS-based device with a digital certificate and with a previously registered Apple® iOS application. These Fig. 10 Deploying the application to MobiCloUP! 123 Autom Softw Eng files can be created in the Apple® iOS provisioning portal. Irrespective of the type of application to be launched, the developer can also activate the “incremental deployment” option. Otherwise, new versions of the application are fully redeployed which means stopping the already deployed instance of the application instead of just enabling or disabling back-end Cloud services on the already deployed version of the application at runtime. (h) The last phase of the wizard is either the access to the previously generated mobile Web application in a preview mode or the automatic generation of a ZIP file packaging the source and native code of the previously generated native mobile application. In the first case, the preview mode is intended to ensure the adequate functioning of an application before releasing it to its potential users. Additionally, at this point in the development, the application can be tested on different mobile devices like in a testing environment. For this purpose, the “pre-release application” option must be used. This option allows developers to release applications on randomly built URIs which are alternatives to the URIs provided by MobiCloUP! in the previous wizard phase. This feature prevents developers from releasing “beta” applications on their production sub-domains and, at the same time, prevents undesired users to access applications are being tested. Furthermore, a “release application” option is displayed from the beginning. The developer can finally release the mobile Web application by clicking this option. In the second case, once the ZIP file is generated, a “download ZIP file” option is displayed. The developer downloads the ZIP file by clicking this option. In both cases, the wizard tool finishes here. Once the MobiCloUP!’s migration process has been finished; there may be coexistence of legacy and new functionalities. In this sense, the application can be accessed in an edit mode by using the Maintenance Tool in order to solve possibly redundant functionalities, i.e., the “legacy functionalitynew functionality” pairs that are redundant. For instance, according to the scenario stated for this case study, a set of session management functions are provided by the legacy application. However, a set of standard session management functions are automatically obtained as a result of any MobiCloUP!’s migration project involving a legacy database and any MobiCloUP!’s development project requiring a new database. The decisions of whether the legacy functions must be preserved are made at this point in the MobiCloUP!’s migration process, i.e., as part of the post-production phase. In this case study, the legacy functionality is retired. The execution in preview mode of the previously deployed application is depicted in Figs. 11 and 12. In order to determine the correct functioning of MobiCloUP!, we have implemented a set of complementary case studies for developing mobile Web applications and native mobile applications based on other third-party Web 2.0 cloud services such as eBay® Finding and GoogleTM Custom Search services as well as on other third-party I/O Cloud services such as the Amazon® Simple Storage Service (S3). Furthermore, additional case studies for developing applications based on cloud services of other categories supported by MobiCloUP! such as Amazon® Simple Notification Service (SNS) from Communication category can be easily implemented. A screenshot of the 123 Autom Softw Eng Fig. 11 Executing the application in preview mode (legacy application’s view) Fig. 12 Executing the application in preview mode (Yahoo! Weather’s view) resultant mobile Web application running on a Motorola® XOOMTM tablet computer is depicted in Fig. 13. 6 Evaluation and discussion Although Cloud computing literature has produced several works related to software architectures addressing common challenges of developing and provisioning 123 Autom Softw Eng Fig. 13 Screenshot of the previously generated mobile Web application (Yahoo! Weather’s view) running on the Firefox 22.0 Web browser on a Motorola XOOMTM tablet computer cloud-based applications by using PaaS models, the absence of a standardized way to validate these proposals is still an issue. In fact, there are three general approaches: quantitative (objective), qualitative (subjective) and hybrid (quantitative–qualitative) evaluations. According to Kitchenham (1996) quantitative evaluations consists on identifying in measurable terms the effects of using Software Engineering methods/tools; in contrast, qualitative evaluations (feature analysis) consists on establishing the methods/tools appropriateness in terms of the features provided by the methods/tools themselves. Furthermore, due to the existence of several alternative ways of performing the same Software Engineering task or activity, evaluations must be addressed as comparison analysis between diverse methods/tools in specific circumstances. In this sense, we have proposed a new hybrid evaluation method focused on assessing PaaS proposals from both the technical standpoint and the user’s perspective. Cloud computing literature has produced several evaluation studies (Buyya et al. 2010; Liu and Wee 2009; Yang et al. 2012) aimed at assessing cloud platforms facing common challenges such as elasticity, availability and privacy from technical standpoints. In (Buyya et al. 2010) a performance evaluation study using CloudSim was proposed. CloudSim is a toolkit for modeling and simulation of cloud computing infrastructures and services. The authors evaluate a simulation environment that models federation of three cloud providers and a user with the aim of proving that federated infrastructure of clouds can deliver better performance and Quality of Service (QoS) as compared to existing not federated approaches. Liu and Wee (2009) presented a performance evaluation study of several cloud components: Amazon EC2 instances (virtual machines), Google App Engine, Amazon Elastic Load Balancing web services 123 Autom Softw Eng and Amazon S3. This evaluation uses SPECWeb2005, a web server benchmark, with the aim of understanding the capabilities and limitations of the aforementioned cloud components. In (Yang et al. 2012) a performance evaluation study of the Sonora system was presented. A service implemented on top of Sonora called Personal Environmental Impact Report (PEIR) is used with the aim of evaluating Sonora’s design decisions and proving that it is efficient (in terms of load balancing), scalable and that it provides responsive fault tolerance. PEIR is a participatory sensing service that delivers context-sensitive information to mobile devices. Finally, the Cloud Service Measurement Initiative Consortium (CSMIC)6 launched by Carnegie Mellon University proposed a framework called Service Measurement Index (SMI) which is a hierarchy of critical business and critical characteristics, associated attributes and measures for enabling comparisons of cloud services available from multiple providers. It is targeting organizations and it is intended to be used as a method to measure any kind of cloud service model (IaaS, PaaS or SaaS) starting from business and technology requirements. The above analyzed proposals are related to performance, QoS, security and privacy evaluations which typically imply quantitative measurements derived from software metrics. In this sense, the absence of a widely recognized and standardized framework providing a common language on software metrics for Cloud computing is an issue on validating in measurable terms the Cloud computing proposals either academic or commercial. Moreover, with the aim of going beyond the technical evaluation studies we have analyzed several proposals (Högberg and Georgsson 2012; Kitanov and Davcev 2012; Saripalli and Walters 2010) intended to be used as frameworks for selecting a PaaS solution. Saripalli and Walters (2010) presented a quantitative risk assessment method for cloud platforms. It defines a risk as a combination of the probability of a security treat event and its severity, measured at its impact. The authors propose six key security objectives for mapping security risks: confidentially, integrity, availability, multipart trust, auditability and usability. Finally, the Delphi method, technique that assigns numerical values to the probability of an attack and its severity, is used in order to collect the information necessary for assessing the security risks. In (Kitanov and Davcev 2012) a Quality of Experience (QoE) evaluation of a mobile distance learning system in a MCC environment was provided. QoE refers to the perception of the user about the quality of a particular service, application or network. In general, the QoE is evaluated through answering a 7-item survey. This approach is very interesting because it is meanly based in overall acceptability of applications as subjectively perceived by end-users, and it avoids technical aspects. Högberg and Georgsson (2012) proposed five criteria to consider when migrating an application to a cloud platform: cost, promised availability, security, support and documentation and complexity of migration. A comparative and qualitative evaluation method based on the aforementioned criteria was proposed. This method consists in assigning ratings to each of the criteria and weighing them in order to obtain total scores for each compared cloud platform. Finally, Haddad (2011) proposed an evaluation framework 6 http://csmic.org/understanding-smi/ 123 Autom Softw Eng for evaluating and comparing PaaS offerings across a set of criteria composed of: (1) measured characteristics that distinguish cloud solutions from traditional application solutions, namely on-demand self-service, resource pooling, rapid elasticity and measured service, (2) PaaS maturity, (3) the support of DevOps activities across software development life-cycle phases, (4) architectural issues that impact PaaS practices aimed at supporting cloud characteristics, (5) the programming model, i.e., the variety of programming languages and frameworks supported, (6) PaaS suitability for developing complex applications, i.e., the broadness of the services spectrum and (7) other factors. In general, the last three works use subjective measures for assessing predefined sets of criteria related to desirable features of cloud platforms. Here, the features are derived from the requirements that users have for particular tasks or activities. In detail, the third work uses a discussion approach to establish the user perception for aspects related to complexity of migration to cloud platforms. In fact, discussions can be used to justify subjective measures derived from evaluation studies. The latter work provides a classification of criteria for evaluating PaaS offerings, which covers not only non-functional requirements but also overall cloud characteristics and PaaS attributes aimed at supporting these characteristics. In this sense, it is important to notice that considering what distinguishes MobiCloUP! from other proposals, criteria related to overall cloud characteristics are out of the scope of our evaluation method. Because it is quite difficult to evaluate in a fully-quantifiable way how legitimate the solution provided is respect to the aspects previously discussed, we have decided to use a two-part comparative evaluation: (1) a qualitative method to measure diverse features of MobiCloUP!, not only focusing on its usability but also on the ease of both creating new applications and migrating legacy applications as well as on the coverage of the mobile development life-cycle and (2) a quantitative method to measure the quality of MobiCloUP!-based applications in terms of performance, assurance and usability. Moreover, in order to provide a comparison with diverse PaaS for MCC, we have selected the Salesforce Force.com and Antenna AMPchroma proposals which were described in Sect. 2. For the qualitative assessment method, on the one hand, four non-functional requirements were identified. Each of these requirements was mapped to about three features that a PaaS for MCC should possess to fulfill it, resulting in a total of thirteen features. The presence of each of these features in all compared PaaS was assessed in order to determine the legitimacy of MobiCloUp! and, at the same time, identify which of the alternatives is best in specific circumstances. Due to the subjective nature of this analysis, a discussion is presented with the aim of justifying the results. It is important to notice that the evaluation was conducted by a team composed of three senior software developers external to this research group. For the quantitative evaluation, on the other hand, a set of seven software metrics based on both the Service Management Index (SMI) framework and the ISO/IEC 9126 standard were proposed. In addition, a basic evaluation scenario consisting on developing a simple mobile Web application from scratch was implemented using each of the selected PaaS, so that the proposed metrics were employed under the same specific circumstances. 123 Autom Softw Eng 6.1 Qualitative evaluation 6.1.1 Evaluation design In this section, the four aspects that constitute the identified user needs are described. The features that a PaaS for MCC must possess for satisfying these needs are also outlined. Need (N) 1: Support for diverse architectures of mobile application The type of mobile application supported is a crucial aspect in choosing among different PaaS. It must be evaluated not only starting from technology and domain independence factors but also considering architectural aspects. In this sense, there are three types of mobile application architectures: (a) native applications which run entirely in mobile devices, (b) hybrid applications which are built using Web technologies, and they are wrapped in a device-specific native application container and (c) Web-based applications which have small device-specific clients with execution occurring on remote servers (Wasserman 2010). Furthermore, it is important to notice that domain of cloud-based applications can be determined by the broadness of the services spectrum offered by their cloud platform. Feature (F) 1: Domain-independent applications Feature (F) 2: Platform-independent applications Feature (F) 3: Mobile Web-based, hybrid and native applications Need (N) 2: Full coverage of the mobile development life-cycle Cover the end-to-end mobile development life-cycle by using a single cloud platform can save the time, effort and budget required to setting up hardware and software infrastructure; at the same time, it enables developers to spend more time innovating applications. Mobile development life-cycle commonly include: planning, design, development, testing, publishing (or deployment) and maintenance (About the Application Development Process 2012; Application Platform Overview for Windows Phone 2012). Planning and design are usually not addressed by cloud platforms because they are focused on life-cycle low-level stages, i.e. development, testing, publish and maintenance. Furthermore, in addition to the life-cycle coverage, the life-cycle speeding up is another factor to consider when development time is a constraint. This aspect is indirectly addressed in the need described below. Feature (F) 1: Planning and design activities Feature (F) 2: Application distribution support Feature (F) 3: Full control over applications Need (N) 3: Time and effort-saving development The major use cases of PaaS solutions are the development of new applications and the migration of legacy applications. In fact, according to Högberg and Georgsson (2012) the ease of migrating a legacy application to a cloud platform is a critical aspect in evaluating cloud platforms. In this sense, migrating existing applications can require much work in adapting the application to the provider’s offerings or even can require completely re-implement the application. Here, the compatibility with diverse 123 Autom Softw Eng programing languages and frameworks as well as the facilities aimed at avoiding hand coding as far as possible become relevant. Thus, we have proposed to evaluate this aspect not only considering the ease of implementing new applications from scratch but also considering the ease of migrating legacy applications. As can be inferred, this interpretation is directly influenced by the development approach driven by the provider. In this sense, we distinguish between code-based and automatic code generation programming models. Feature (F) 1: Use of wizards for performing complex tasks Feature (F) 2: Automatic source and native code generation Feature (F) 3: Support for diverse programming languages and frameworks Need (N) 4: Usability-compliant development tools ISO 9241-11 (1998) defined usability as the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use. According to the above, usability must be assessed respect to “effectiveness”, “efficiency” and “satisfaction” factors. However, effectiveness and efficiency are out of the scope of this evaluation method due to their quantitative nature. In this sense, Brooke (1996) proposed a 5-point Likert scale called Simple Usability Scale (SUS) which gives a global view of subjective assessments of usability. It allows assessing usability of websites respect to the satisfaction of their users. Thus, in order to evaluate the usability of cloud platform’s development tools, we have proposed to use the following aspects covered by the SUS usability scale: ease of use, ease of learning and required level of knowledge and skills. Feature (F) 1: Easy to use Feature (F) 2: Easy to learn Feature (F) 3: Current knowledge and skills of developers The scale used for the measurement of the identified aspects is a 3-point Likert scale (Likert 1932) in which “1” represents the best score and “3” represents the worst score as follows: • 2 points: strongly addressed (SA) • 1 points: partially addressed (PA) • 0 point: not addressed (NA) Finally, the overall evaluation for each software tool will be the sum of the scores in the five aspects. 6.1.2 Results Table 2 and Fig. 14 show to each aspect the score obtained from the evaluation. Finally, the argumentation of the results for each aspect is discussed. Regarding the N1–F1 aspect, all proposals allow building domain-independent mobile applications because they offer integration with a wide range of services including database storage, enterprise systems integration, content management, among others i.e., they are not intended a particular kind of functionality. It is important to mention that force.com is not a general-purpose computing platform because it 123 Autom Softw Eng Table 2 Evaluation results Fig. 14 Evaluation results 123 Aspect Salesforce Force.com Score Antenna AMPchroma Score MobiCloUP! Score N1 F1 2 2 F2 2 1 1 F3 2 2 2 N2 F1 1 2 1 F2 2 2 0 F3 2 2 2 N3 F1 1 1 1 F2 1 2 2 F3 2 2 2 N4 F1 1 1 2 F2 1 1 2 F3 0 0 2 Sum 17 18 19 2 Autom Softw Eng provides its own business logic programming language called Apex. Concerning the N1–F2 aspect, all proposals enable developers to use Web standards such as HTML5, JavaScript and CSS3 for building mobile Web applications and even hybrid mobile applications. In this sense, resulting Web applications do not require any additional web browser plugin or runtime environment to be executed. However, in the case of hybrid and native mobile applications it is not truth. Antenna AMPchroma-based hybrid and native mobile applications require extra client runtimes respectively called AMP Hybrid Client and AMP Native Client. These runtime environments expose multiple native capabilities, and they include a control library aimed at ensure deviceawareness. In the case of MobiCloUP!-based native applications, the Adobe® AIR runtime environment is required because these applications are built using the Adobe® Flex framework. Force.com-based native mobile applications, on the other hand, are entirely built using native code; thus, they do not require any additional client runtime. Moreover, regarding the N1–F3 aspect, force.com and Antenna AMPchroma support the previously outlined three types of mobile application whereas MobiCloUP! supports only Web-based and native mobile applications. In the case of force.com, hybrid applications are built on top of Apache Cordova framework targeting only Android and Apple iOS mobile operating systems. In the case of Antena AMPchroma, hybrid application development supports BlackBerry OS and Windows Phone besides the aforementioned operating systems. Finally, MobiCloUP!-based native mobile applications are targeting Android, Apple iOS and BlackBerry Tablet OS operating systems. About the N2–F1 aspect, only Antenna AMPchroma covers planning, design and testing stages of mobile development life-cycle. However, both Force.com and MobiCloUP! consider presentation design decisions. Force.com allows developers to inplace edit the application’s GUI by using either HTML5 elements or Visualforce components. Visualforce is the component-based GUI framework for the Force.com platform. In the case of MobiCloUP!, look and feel aspects can be configured using the wizard tool. Regarding the N2–F2 aspect, all proposals provide mechanisms for native application distribution. Furthermore, in Force.com a Web-based application or a piece of functionality can be packaged into either a one-time distribution package or a release package using an online environment. It also offers the AppExchange service which allows uploading and publishing packages that other can install in their environments. Antenna AMPchroma, on the other hand, is part of a major platform called Antenna Mobility Platform (AMP). This platform includes both the AMP Enterprise Storefront solution for creating and managing enterprise application stores for employees and the AMP Consumer Storefront solution for uploading, managing and delivering not only applications but also other digital content to consumers. It is important to notice that, in the case of MobiCloUP!, application market development is still in progress. Therefore, for now, native applications can only be downloaded for local installation in target mobile devices. About the N2–F3 aspect, all platforms integrate management tools providing functions like user administration giving the developer control over deployed applications. Furthermore, force.com also enables developers to manage mobile devices used for accessing native mobile applications; Because Antenna AMPchroma covers the entire mobile development life-cycle, it allows managers to set permissions for assigning workers to their corresponding functions, i.e., it allows managing workers besides users, devices and applications. 123 Autom Softw Eng Regarding the N3–F1 aspect, all proposals integrate wizard tools as a means to automate complex user tasks or as an alternative and quicker way of performing complex user tasks. For instance, in the case of force.com a one-step wizard for generating application templates with basic functionality is provided. In the case of MobiCloUP!, design, development, deployment (or publishing) and maintenance stages of the mobile development life-cycle are abstracted in a unique wizard tool. Concerning the N3–F2 aspect, all proposals have source code generation functions; however, only Antenna AMPchroma and MobiCloUP! support native code generation, i.e., they allow packaging and digitally signing native application installers. In this sense, it is important to notice that, the Antenna’s Enterprise Storefront enable employees to access certified enterprise-branded Web-based and native mobile applications. Regarding the N3–F3 aspect, all proposals support more than one programming language. Therefore, the three platforms are technology-independent. Force.com provides SDKs for both Android (using Java) and iOS (using Objective C) native development. It also offers a set of integration APIs which provide access to Force.com application data and logic from external languages such as Ruby, PHP and ASP.NET. Besides these native programming languages, the Antenna AMPchroma platform is open to third-party JavaScript libraries and frameworks such as jQuery Mobile, Sencha Touch and Dojo Mobile. MobiCloUP! uses pre-built HTML5/JavaScript-based and MXML/ActionScript-based GUI components for generating mobile Web-based and native mobile applications, respectively. About the N4–F1 aspect, thanks to the automatic code generation approach used by MobiCloUP!’s development and deployment tools, this platform can be easier to use than others; however, this drawback is offset by an extensive technical documentation in the specific case of force.com. Regarding the N4–F2 aspect, the learning curve of force.com is larger than the MobiCloUP! and Antenna AMPchroma’s learning curves. In detail, Antenna AMPchroma offers a no-code WYSIWYG editor integrated in its AMP Builder IDE as an alternative to the code-based development using the Eclipse-based AMP Studio IDE whereas MobiCloUP! integrates all the typical platform services in a unique GUI based on the wizard screen design pattern. Nevertheless, according to the SUS scale, the integration of functionalities in a system is a key issue in evaluating usability. In this sense, the evaluation results reflect that functions in MobiCloUP! should be better integrated. Finally, about the N4–F3 aspect, considering that self-service is a characteristic of cloud, PaaS solutions must demand minimal technical knowledge and skills from developers in order to promote business agility. For instance, previous experience on Objective-C or Java is required for coming up to speed on development with force.com and AMPchroma. In addition, knowledge and skills on CSS for customizing pre-built GUI components are required in order to develop Antenna AMPchroma-based or force.com-based Web and hybrid applications; MobiCloUP!, on the other hand, automates almost the entire mobile development life-cycle starting from a set of preferences that must be established by users through a wizard. In this sense, it does not require any previous experience on native or Web development. As can be inferred from the evaluation results, MobiCloUP! completely addresses almost 70 % of features that a PaaS for MCC must possess in order to satisfy the user needs related to technology and domain independence, mobile development lifecycle 123 Autom Softw Eng coverage, complexity of migration, support and documentation and usability aspects. It rated 21 out of 26 in the evaluation method we have proposed. According to the results, unlike force.com and AMPChroma, MobiCloUP! does not require any knowledge and skill on native or Web development. In addition, MobiCloUP!’s integrated tool is easier to use and easier to learn than force.com and AMPChroma’s development, deployment and maintenance tools. 6.2 Quantitative evaluation 6.2.1 Evaluation design This evaluation method is intended to measure the quality of the applications developed by using the selected PaaS, namely, Salesforce Force.com, Antenna AMPChroma and MobiCloUP!. For this purpose, we have selected the SMI framework because it is designed to become a standard method to measure Cloud services. Furthermore, we have also selected a model for software quality from Software Engineering literature, namely, ISO/IEC 9126 because the SMI framework is still an initiative and there is an absence of a widely recognized and standardized framework for validating in measurable terms the Cloud computing proposals. In detail, ISO/IEC 9126 is an international standard for the evaluation of software quality; it defines a model composed of general characteristics of software which are further decomposed into general subcharacteristics and specific attributes. In addition, ISO/IEC 9126 defines three sets of software metrics for assessing attributes from three different perspectives: (1) external quality, (2) internal quality and (3) quality in use. It is important to notice that thanks to the generic nature of the ISO/IEC 9126’s quality model, it can be refined according to the type of software to be evaluated; therefore, it can be applied to the evaluation of Cloud-based applications. According to the above, we have mapped SMI attributes with ISO/IEC 9126 subcharacteristics (two-level components) as far as possible. In this sense, we have selected one component common to both frameworks: “accuracy”. In addition, we have selected the “response time” and “availability” attributes from the SMI framework; similarly, we have selected the “resources utilization” sub-characteristic from the ISO/IEC 9126 standard. The quality factors to be assessed and the corresponding software metrics are described below. Service response time: According to the SMI framework it is an attribute of performance which is considered a critical characteristic of Cloud services. Here, “performance” is interpreted as the set of features and functionalities of a service whereas “service response time” is interpreted as the time between when a service is requested and when the response is available. In this sense, because it is considered that PaaS solutions allow delivering applications as SaaS, this attribute can be measured not only at an application development level but also at an application delivering level. In addition, in the case of measuring at an application delivering level, the service response time can be measured not only considering a particular functionality but also considering all the application as a whole. 123 Autom Softw Eng Hardware resources utilization: According to the quality model outlined by the ISO/IEC 9126 standard, the “resources utilization” is a software quality factor. Formally, it is a component of the “efficiency” quality characteristic which is interpreted as the ability of software to execute the required tasks with the least amount of resources. In this sense, taking into account that mobile applications can take advantage of cloud computing to face the challenges related to limited hardware resources availability, this factor can be measured not only at PaaS level but also at mobile device level. In addition, because MobiCloUP! is targeting rich mobile applications which can distribute business logic between client and server sides, the efficient usage of the available resources is a determining quality factor in any case (at any level). Service availability: According to the SMI framework it is an attribute of the “assurance” critical characteristic of Cloud services which is interpreted as the likelihood that a service will be available as specified. Here, service availability is interpreted as the amount of time that a client can use a service. In this sense, as in the case of “service response time”, “service availability” can be measured not only at an application development level but also at an application delivering level. Service accuracy: It is a component of both the SMI framework and the ISO/IEC 9126 standard. In detail, the SMI framework defines “accuracy” as a critical characteristic of Cloud services affecting its performance whereas the ISO/IEC 9126 standard defines “accuracy” as a software quality factor affecting the “functionality” characteristic. Here, functionality is interpreted as the set of functions and properties of software that satisfy stated needs. In both cases, “accuracy” is defined as the correctness of the software respect to the implied needs or requirements. In this sense, taking into account that MobiCloUP!’s development tool implements an automatic code generation approach based on a software development process for rich mobile applications, this metric is used to measure the accurateness of the functions automatically generated respect to the requirements of users being a determining factor of the quality of MobiCloUP!-based applications. Due to the quantifiable nature of this evaluation method, a set of software metrics to measure the above quality factors need to be employed. The metrics we have proposed to this aim are outlined in Table 3; they are based on both SMI measures and ISO/IEC 9126 metrics for internal quality, i.e., internal metrics. In addition, in order to assess in measurable terms the effects of using the selected PaaS respect to the features defined as part of the qualitative evaluation method, we have proposed a set of complementary software metrics. Specifically, these metrics address the features derived from N3 (“time and effort-saving development”) and they are intended to measure both the ease of developing new applications and the ease of migrating legacy applications. As can be inferred these metrics are not targeted at evaluating the quality of the applications developed by using the selected PaaS but at evaluating the quality of the PaaS themselves. Due to some specific features of MobiCloUP!’s development tool such as the ability to automatically generate source code for managing data from Web 2.0 Cloud services, the case study presented in the previous section of this paper is not adequate to be used as an evaluation scenario using neither Salesforce Force.com nor Antenna AMPChroma. Therefore, in order to measure the quality of the applications developed by using the selected PaaS under the same circumstances, we have proposed a 123 Autom Softw Eng Table 3 Quality metrics to be considered for the quantitative evaluation Quality factor Metric Description Service response time Expected service response time Hardware resources utilization RAM usage The amount of time spent by the service as a whole to respond The average memory size used by the service The average CPU percentage used by the service The average bandwidth percentage occupied by the service The ratio between the number of defects discovered and the number of features developed The amount of time spent and steps conducted by the developer to develop an application from scratch The amount of time spent and steps conducted by the developer to migrate an existing application CPU usage Bandwidth usage Service accuracy Defect–feature ratio Time and effort-saving development Time and effort to develop a new application Time and effort to migrate a legacy application basic scenario as the “hello world” program of Cloud services-based applications. In detail the application to be developed is a simpler version of the application developed in the case study because it manages a Cloud-based users’ SQL database to allow users to sign up and log in using their e-mail addresses. In this sense, once a user has logged in, a Web page with a “Hello World!” message is then displayed by the application. Notwithstanding its simplicity and due to the automatic code generation model implemented by MobiCloUP!, this scenario involves hand coding functionality in the case of Salesforce Force.com and Antenna AMPChroma PaaS. Going beyond this issue, Antenna AMPChroma is not available for free by means of trial versions; it is only available for free by means of 30-min live demos. Taking this into account, we have decided to exclude Antenna AMPChroma from this evaluation with the aim of preserve the accurateness of the results. Moreover, it is important to notice that this scenario does not involve the measurement of the time and effort required to migrate a legacy application because this metric suppose the existence of a legacy application meeting the requirements stated above. 6.2.2 Results In the context of implementing the evaluation scenario using the Cloud-based Force.com’s development tools, a custom Visualforce page was created by means of 123 Autom Softw Eng the developer console tool in the Force.com’s Developer Edition (DE) environment. This tool is launched as a new Web browser window by selecting the “Developer Console” option in the Visualforce pages administration page. In detail, the “New” option of the “File” menu was selected so that a name for the Visualforce page to be created was required. For this evaluation scenario, the “HelloWorld” name was entered. Finally, the source code aimed at displaying the “Hello World!” message was manually added. In this sense, the Visualforce “outputPanel” control was used. This control is a simple container which is rendered as an HTML div element. Because the Force.com-based applications are initially not optimized for mobile devices they need to be mobilized, i.e., they need to be redesigned by using JavaScript-based frameworks such as jQuery Mobile, BackboneJS and AngularJS. In fact, Force.com has built-in support only for the aforementioned frameworks; nevertheless, they need to be enabled in the Force.com’s DE environment by installing the so-called mobile packs. For this evaluation scenario, the jQuery Mobile framework was selected so that the mobile pack for jQuery Mobile was installed by entering the corresponding install URL into the Web browser address bar. Once the required mobile pack was installed, the developer console was accessed again in order to edit the source code. In detail, the jQuery Mobile framework was linked to the Visualforce page by using the Visualforce “includeScript” control; similarly, the minified CSS default theme of jQuery Mobile was linked to the Visualforce page by using the Visualforce “stylesheet” control. In addition, a single external HTML div element acting as a jQuery Mobile page (view) was defined by using the HTML5 data-role attribute; two nested div elements acting as its header and content areas, respectively, were also defined inside the external div element. The HTML5 data-theme attribute was used to apply the “b” jQuery Mobile theme swatch to the page. Finally, the previously defined Visualforce “outputPanel” control was moved to the content area and an HTML h2 element was defined inside the div element acting as the header area with the aim of displaying a title. Regarding the requirement related to the implementation of standard session control functions it is important to notice that Force.com provides facilities for controlling access to applications. These facilities include users, profiles and permission sets management and they suppose the automatic creation of user databases in the Cloud. As can be inferred, unlike in the case of MobiCloUP!, control access to applications is in charge of the platform instead of in charge of the applications themselves. According to the above, the target users of a Force.com-based application need to be pre-registered by a master user directly in its corresponding Force.com’s DE environment. For this evaluation scenario, a target user with the “Force.com App Subscription User” default profile was created by selecting the “New User” option in the user administration page. As a result, some information including personal data, user account-related data and locale settings was required. Once the target user was created, a new permission set was created by selecting the “New” option in the permission set administration page. As a result a name and an ID were required. For this evaluation scenario, the “ViewHelloWorld” name was entered. Finally, the permission to execute the Visualforce “HelloWorld” page was granted to the target user by assigning both the page and the user to the “ViewHelloWorld” permission set. For this purpose, the edit page of the “ViewHelloWorld” permission set was accessed and then the “Visualforce Page Access” option and the “Assigned Users” option were used. Once the aforementioned 123 Autom Softw Eng settings were settled, the “HelloWorld” page was deployed on Force.com (Force.com’s production environment). It is important to notice that the Visualforce custom pages are automatically deployed when they are accessed via Web browsers for the first time. The URIs of the Visualforce pages are obtained by appending the name of the applications to the https://login.salesforce.com/apex/ static URI. For this evaluation scenario, the following URI was obtained: https://login.salesforce.com/apex/HelloWorld. In the context of implementing the evaluation scenario using the MobiCloUP!’s wizard tool, a new mobile Web application was generated by conducting a development project in a similar way to how is explained in the case study (migration project). In detail, the functionality intended to display a “Hello World!” message once the user is logged in was achieved by simply selecting the “Hello World!” sample application as part of the initial application configuration (development configuration) which is settled in the third phase of the wizard. Regarding the requirement related to the implementation of standard session control functions, it is important to remark that MobiCloUP!-based applications incorporate control access facilities by default; similarly, a user database per each application developed is automatically created. Therefore, it is only necessary to create user accounts for the target users of a MobiCloUP!-based application. In this sense, unlike Force.com, MobiCloUP! defines only two different user roles: end user and developer so that user roles need not be configured during user account creation. For this evaluation scenario one end user account was created. This was done by means of the “Create Users” popup dialog box which is displayed by selecting the “Create Users” option in the third phase of the wizard, i.e., during the design phase of the MobiCloUP’s development project. As a result, the amount of end user accounts to be created was required and then the list of e-mail addresses of the target users was accordingly required. It is important to notice that the required user accounts are automatically set up by generating random credentials, i.e., usernames and passwords. According to the above, user registration is partially in charge of end users; hence, the randomly generated credentials need to be distributed to end users by means of e-mail messages in order to complete user registrations. These e-mail messages are automatically sent by when applications are released. Finally, the application was accessed via a Web browser by using the URI configured during the fifth phase of the wizard, i.e., during the deployment phase. In order to estimate the effort required to develop the applications resulting from the implementation of the evaluation scenario using Force.com and MobiCloUP!, only the main steps manually conducted in both development processes was considered. On the one hand, in the case of the Force.com-based development process the following steps were considered: (1) Set up the Force.com’s DE environment for mobile Web application development, (2) Create a Visualforce page, (3) Edit the source code to add the required functionality (“Hello World!” message), (4) Optimize the resultant page for mobile devices, (5) Create the user account to be able to access the page and (6) Create a permission set to grant access to the page. On the other hand, the following steps were considered in the case of the MobiCloUP!-based development process: (1) Select the mobile Web application type, (2) Set the development configuration settings, (3) Select the sample application providing the required functionality (“Hello World!” message), (4) Set the deployment configuration settings and (5) Create the target user account. Table 4 summarizes the results obtained. 123 Autom Softw Eng Table 4 Results from service accuracy assessment Table 5 Results on estimating the time and effort required to develop a new application PaaS Number of steps Time spent Force.com 5 ∼10 min MobiCloUP! 6 ∼6 min PaaS Number of functionalities developed Number of functionalities required Ratio Force.com 4 3 3/4 MobiCloUP! 4 4 4/4 According to the results summarized above, it can be determined that the Force.com-based application development process consists of 6 main steps whereas the MobiCloUP!-based application development process comprises 5 main steps covering design, development (implementation) and deployment phases of the mobile development life-cycle. Going beyond, the amount of time it takes to complete the development process is about 10 and 6 min in the case of Force.com and MobiCloUP!, respectively. It is important to notice that the maintenance phase is not considered here due to the nature of the evaluation scenario. The accuracy of the applications resulting from the implementation of the evaluation scenario was measured from a consumer’s standpoint so that the applications were addressed as SaaS. In this sense, according to the requirements stated as part of the evaluation scenario, the following four functionalities were considered: (1) “Hello World!” message displaying, (2) user signup, (3) user login and (4) user logout. Table 5 summarizes the results obtained. As can be inferred from the results summarized above, the user signup functionality is not obtained as a result of conducting the development using Force.com, which can be interpreted as an error in the development process. The same is not true in the case of automating the development using MobiCloUP!. Thus, considering that MobiCloUP! actually automates a software development process for rich mobile applications and Force.com only promotes an ad-hoc framework-based development these results may be used to prove that the approach taken by MobiCloUP! can help developers to generate less error-prone applications. In order to estimate the response time of the applications resulting from the implementation of the evaluation scenario, a complementary load test scenario was implemented using the BlazeMeter load testing PaaS which in turn automates the usage of the Apache JMeterTM performance testing tool. In detail, a test with up to 50 concurrent users sending HTTP requests was conducted during 30 min where the first 15 min corresponded to the ramp up time whereas the last 15 min corresponded to the continuous load time. It is important to notice that this scenario involved the emulation of a network of mobile devices (users) with a 2,048 kbps Wi-Fi Internet connection. In fact, the traffic data was collected using JMeterTM and it was generated from a 512 MB RAM, 1 GHz dual-core CPU Motorola® XOOMTM tablet computer (Android mobile 123 Autom Softw Eng Fig. 15 Evaluation results from service response time estimation 123 Autom Softw Eng Table 6 Results on estimating hardware resources utilization Hardware resource Force.com MobiCloUP! CPU 1,121 ms 917 ms RAM 19.65 MB 9.7 MB Bandwidth 123 KB 331 KB operating system) and the Mozilla Firefox 22.0 mobile Web browser and then it was used as a starting point in the conduction of the aforementioned load test scenario using BlazaMeter. Because the metric aimed at measuring the response time requires addressing all the functionalities provided by the applications as a whole, the traffic data collected basically comprised all the traffic between the request of the application via the mobile Web browser and the rendering of the page displaying the “Hello World!” message (final HTTP response), including the redirection to the login page. Figure 15 depicts the results obtained. As can be inferred from the results depicted in Fig. 15 the average response time of the Force.com-based application goes from 680.73 ms (maximum) to 544.15 ms (minimun) under a load of up to 50 concurrent users. In fact, the average response time remains stable (below 600 ms) during the ramp up time and even during the continuous load time (when the user load is 50 concurrent users). Taking into account that the Force.com and MobiCloUP!-based mobile Web applications has HTML/JavaScript-based GUIs, they can be profiled by employing any monitoring tool for JavaScript code. In this sense, with the aim of estimating the client-side hardware resources utilization of the applications resulting from the implementation of the evaluation scenario, the built-in Google Chrome’s developer tools were employed to this aim. In detail, the applications were tested on a desktop computer by setting up a mobile user agent emulating a Nexus S (Android 2.3) smartphone on the Google Chrome Web browser. As in the case of the load test outlined above, this performance test comprised the execution of the applications as a whole so that the obtained results represent the average amount of hardware resources used by the applications from the time they are requested via the mobile Web browser to the time the page displaying the “Hello World!” message (final HTTP response) is rendered. Table 6 summarizes the results obtained. According to the results summarized above, the MobiCloUP!-based application uses less RAM and CPU (execution time) than the Force.com-based application. The results related to CPU utilization only cover the time spent in executing JavaScript functions (loading and scripting tasks). The results related to RAM utilization show the amount of RAM consumed in loading, scripting, rendering and painting tasks. Finally, the results related to bandwidth utilization show the total size of the files transferred over the network, including CSS, HTML and JS files as well as images. 7 Conclusions and future work In mobile computing, the execution of services like data storage and data computation outside the mobile devices, i.e., in the Cloud, allows accessing computation- 123 Autom Softw Eng intensive applications and data-intensive applications anywhere at anytime by using low resource mobile devices. Recently, the problems of mobile computing inherent to mobile devices have been addressed by exploiting the capabilities of cloud resources. This has given rise to a new paradigm known as MCC. In recent years, several frameworks for executing cloud-based mobile applications have been arisen with the aim of supporting MCC. In this sense, we have proposed a PaaS for developing, executing and hosting mobile applications. Unlike other solutions, our proposal called MobiCloUP! abstracts almost the entire mobile development life-cycle in a unique visual tool avoiding the code-based development approach. Furthermore, this wizard tool implements a software development process for rich mobile applications, which is based on the PPMRD process; therefore, it can help developers to develop less error-prone mobile applications. In addition, because the code generation engine implements a technology-independent software development process, the native code generation mechanism can be easily adapted to other technologies like Microsoft® SilverlightTM . Thus, the code generation engine is intended to coverage a wide range of mobile operating systems. We are currently working on implementing the MobiCloUP!’s maintenance tool as well as a set of user management functionalities aimed at ensuring the security of the private data over Internet. MobiCloUP!-based applications can be generated as native applications, and then they can be downloaded for ad-hoc distribution. Therefore, application distribution is in charge of application developers. In this sense, we are currently working on the design of an application market that can be integrated to the MobiCloUP! architecture in order to automatize the application distribution regardless of the target platform. Acknowledgments This work was supported by the General Council of Superior Technological Education of Mexico (DGEST). Additionally, this work was sponsored by the National Council of Science and Technology (CONACYT) and the Public Education Secretary (SEP) through PROMEP. Additionally, this work was supported by the Isaac Peral Programme of Polytechnic University of Madrid being the work developed on Centre for Plant Biotechnology and Genomics UPM-INIA. Finally, this work has been supported by the Ministry of Industry, Energy and Tourism through project OPEN-IDEA (TSI-0206032012-219) and by the Spanish Ministry of Economy and Competitiveness and the European Commission (FEDER/ERDF) through project SeCloud (TIN2010-18650). References About MXML Components: Adobe® Website (n.d.). Retrieved 1 Oct 2012, from http://help.adobe.com/ en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf68cf9-7ffb.html About the Application Development Process: Mac Developer Library (2012, July 17 ). Retrieved 10 Oct 2012, from https://developer.apple.com/library/mac/#documentation/General/Conceptual/ ApplicationDevelopmentOverview Antenna Inc.: Harnessing the Power of the Mobile Cloud [White paper] (2010, January 11). Retrieved from http://www.antennasoftware.com/pdf/whitepaper_Antenna_Mobile_Cloud.pdf Application Platform Overview for Windows Phone: Microsoft Developer Network (2012, September 25). Retrieved 10 Oct 2012, from http://msdn.microsoft.com/en-us/library/ff402531(v=vs.92).aspx Binary Tree: Migrating to the Cloud: Which Approach is Right for You? Gestión de empresas (2011, June 21). Retrieved from http://es.slideshare.net/danalsip/migrating-to-the-cloud Brooke, J.: SUS: a quick and dirty usability scale. In: Jordan, P., Thomas, B., Weerdmeester, B., McClelland, I. (eds.) Usability Evaluation in Industry. Taylor & Francis, London (1996). Retrieved from http://www. usabilitynet.org/trump/documents/Suschapt 123 Autom Softw Eng Buyya, R., Ranjan, R., Calheiros, R.N.: InterCloud: utility-oriented federation of cloud computing environments for scaling of application services. In: Proceedings of the 10th International Conference on Algorithms and Architectures for Parallel Processing, vol. part I, pp. 13–31. Springer, Berlin (2010). doi:10.1007/978-3-642-13119-6_2 Colombo-Mendoza, L.O., Alor-Hernandez, G., Rodriguez-Gonzalez, A.: A novel approach for generating multi-device Rich Internet Applications. In: 22nd International Conference on Electrical Communications and Computers (CONIELECOMP), pp. 361–367 (2012). doi:10.1109/CONIELECOMP.2012. 6189939 Cox, P.A.: Mobile cloud computing (2011, March 11). Retrieved 22 Oct 2012, from http://www.ibm.com/ developerworks/cloud/library/cl-mobilecloudcomputing/ Fernando, N., Loke, S.W., Rahayu, W.: Mobile cloud computing: a survey. Futur. Gener. Comput. Syst. 29(1), 84–106 (2013). doi:10.1016/j.future.2012.05.023 Forman, G.H., Zahorjan, J.: The challenges of mobile computing. IEEE Comput. 27, 38–47 (1994) Grønli, T.-M., Hansen, J., Ghinea, G.: Integrated context-aware and cloud-based adaptive home screens for android phones. In: Proceedings of the 14th International Conference on Human–Computer Interaction: Interaction Techniques and Environments, vol. part II, pp. 427–435. Springer, Berlin (2011). Retrieved from http://dl.acm.org/citation.cfm?id=2022466.2022517 Haddad, C.: Selecting a Cloud Platform: A Platform as a Service Scorecard. WSO2 (2011, December 12) Högberg, D., Georgsson, E.F.: An Applied Evaluation and Assessment of Cloud http://130.203.133.150/viewdoc/similar; Computing Platforms (2012). Retrieved from jsessionid=376F1FF26208AAB66BEB82871C02AECE?doi=10.1.1.221.2020&type=sc Hung, S.-H., Shih, C.-S., Shieh, J.-P., Lee, C.-P., Huang, Y.-H.: Executing mobile applications on the cloud: framework and issues. Comput. Math. Appl. 63(2), 573–587 (2012). doi:10.1016/j.camwa.2011.10.044 International Standard Organization: ISO 9241-11:1998—Ergonomic Requirements for Office Work with Visual Display Terminals (VDTs)—Part 11: Guidance on Usability. ISO, Geneva (1998) Introduction to Web Components: W3C Website (2012, October 1). Retrieved 1 Oct 2012, from http://dvcs. w3.org/hg/webcomponents/raw-file/tip/explainer/index.html Kao, Y.-W., Lin, C., Yang, K.-A., Yuan, S.-M.: A Web-based, Offline-able, and Personalized Runtime Environment for executing applications on mobile devices. Comput. Stand. Interfaces 34(1), 212–224 (2012). doi:10.1016/j.csi.2011.08.006 Kitanov, S., Davcev, D.: Mobile cloud computing environment as a support for mobile learning (pp. 99– 105). Presented at the the third international conference on cloud computing, GRIDs, and virtualization, 2012. Retrieved from http://www.thinkmind.org/index.php?view=article&articleid=cloud_computing_ 2012_4_40_20097 Kitchenham, B.: DESMET: A Method for Evaluating Software Engineering Methods and Tools (No. Tech. Rep. No. TR96-09). Department of Computer Science, University of Keele, Staffordshire (1996) Laszewski, T., Nauduri, P.: Methodology and design, chapter 3. In: Migrating to the cloud, pp. 45–68. Syngress, Boston (2012). Retrieved from http://www.sciencedirect.com/science/article/pii/ B978159749647600003X Li, X., Zhang, H., Zhang, Y.: Deploying mobile computation in cloud service. In: Proceedings of the 1st International Conference on Cloud Computing (pp. 301–311). Springer, Berlin (2009). doi:10.1007/ 978-3-642-10665-1_27 Likert, R.: A technique for the measurement of attitudes. Arch. Psychol. 22(140), 55 (1932) Liu, H., Wee, S.: Web server farm in the cloud: performance evaluation and dynamic architecture. In: Proceedings of the 1st International Conference on Cloud Computing (pp. 369–380). Springer, Berlin (2009). doi:10.1007/978-3-642-10665-1_34 Mao, H., Xiao, N., Shi, W., Lu, Y.: Wukong: a cloud-oriented file service for mobile Internet devices. J. Parallel Distrib. Comput. 72(2), 171–184 (n.d.). doi:10.1016/j.jpdc.2011.10.017 March, V., Gu, Y., Leonardi, E., Goh, G., Kirchberg, M., Lee, B.S.: µCloud: towards a new paradigm of Rich Mobile Applications. Proc. Comput. Sci. 5, 618–624 (2011). doi:10.1016/j.procs.2011.07.080 Marin-Perianu, R., Hartel, P., Scholten, H.: A Classification of Service Discovery Protocols (No. Tech. Rep. TR-CTIT-05-25). Centre for Telematics and Information Technology, University of Twente, Enschede (2005) Mishra, J., Dash, S. K., Dash, S.: Mobile-cloud: a framework of cloud computing for mobile application. In: Meghanathan, N., Chaki, N., Nagamalai, D. (eds.) Advances in Computer Science and Information Technology, vol. 86, pp. 347–356. Springer, Berlin (2012). Retrieved from http://rd.springer.com/ chapter/10.1007/978-3-642-27317-9_36 123 Autom Softw Eng Neil, T.: Designing Rich Applications. Slideshare® Website (2009). Retrieved 28 May 2012, from http:// www.slideshare.net/theresaneil/designing-rich-applications Petcu, D., Macariu, G., Panica, S., Crăciun, C.: Portable Cloud applications—From Theory to Practice. Future Gener. Comput. Syst. (2012). doi:10.1016/j.future.2012.01.009 REST Application Programming: CT316 (2010, September 21). Retrieved 30 Nov 2012, from http://www. ibm.com/developerworks/aix/library/au-aem_rest/ Saripalli, P., Walters, B.: QUIRC: a quantitative impact and risk assessment framework for cloud security. In: 2010 IEEE 3rd International Conference on Cloud Computing (CLOUD) (pp. 280–288). Presented at the 2010 IEEE 3rd international conference on cloud computing (CLOUD) (2010). doi:10.1109/ CLOUD.2010.22 Srirama, S.N., Paniagua, C., Flores, H.: CroudSTag: social group formation with facial recognition and mobile cloud services. Proc. Comput. Sci. 5, 633–640 (2011). doi:10.1016/j.procs.2011.07.082 Tang, W., Lee, J., Song, B., Islam, M., Na, S., Huh, E.-N.: Multi-platform mobile thin client architecture in cloud environment. Proc. Environ. Sci. 11, Part A(0), 499–504 (2011). doi:10.1016/j.proenv.2011.12. 079 Vodafone Group: Connecting to the Cloud [White paper] (2010). Retrieved from http://www.vodafone. com/content/dam/vodafone/about/what/white_papers/connecting_tothecloud.pdf Wasserman, A.I.: Software engineering issues for mobile application development. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research, pp. 397–400. ACM, New York (2010). doi:10.1145/1882362.1882443 Weissman, C.D., Bobrowski, S.: The design of the force.com multitenant internet application development platform. In: Proceedings of the 2009 ACM SIGMOD International Conference on Management of Data, pp. 889–896. ACM, New York (2009). doi:10.1145/1559845.1559942 Yang, F., Qian, Z., Chen, X., Beschastnikh, I., Zhuang, L., Zhou, L., Shen, G.: Sonora: A Platform for Continuous Mobile-Cloud Computing (No. Tech. Rep. MSR-TR-2012-34). Microsoft Research Asia, Beijing (2012) Zhang, X., Jeon, W., Gibbs, S., Kunjithapatham, A.: Elastic HTML5: workload offloading using cloudbased web workers and storages for mobile devices. In Gris, M., Yang, G. (eds.) Mobile Computing, Applications, and Services (pp. 373–381). Springer, Berlin (2012). Retrieved from http://link.springer. com/chapter/10.1007/978-3-642-29336-8_26 123