Mobile Applications for Tourism - ULisboa€¦ · Mobile Applications for Tourism Assessing Service...

80
Mobile Applications for Tourism Assessing Service Models and Technologies from the Performance Perspective Jo˜ ao Andr ´ e Lopes Ferreira Thesis to obtain the Master of Science Degree in Information Systems and Computer Engineering Supervisor: Prof. Alberto Manuel Rodrigues da Silva Examination Committee Chairperson: Prof. Ernesto Jos ´ e Marques Morgado Supervisor: Prof. Alberto Manuel Rodrigues da Silva Member of the committee: Prof. Andr´ e Ferreira Ferr˜ ao Couto e Vasconcelos November 2014

Transcript of Mobile Applications for Tourism - ULisboa€¦ · Mobile Applications for Tourism Assessing Service...

Mobile Applications for Tourism

Assessing Service Models and Technologies from the Performance Perspective

Joao Andre Lopes Ferreira

Thesis to obtain the Master of Science Degree in

Information Systems and Computer Engineering

Supervisor: Prof. Alberto Manuel Rodrigues da Silva

Examination Committee

Chairperson: Prof. Ernesto Jose Marques MorgadoSupervisor: Prof. Alberto Manuel Rodrigues da Silva

Member of the committee: Prof. Andre Ferreira Ferrao Couto e Vasconcelos

November 2014

Abstract

Cloud Computing is a paradigm reaching more and more people and enterprises. When Cloud Comput-ing joins with mobile devices, it becomes ubiquitous and at the same time even more powerful. To unifythese two sides, Mobile Computing with Cloud Computing, there are two possible ways and both usingservices of Cloud Computing: either using Backend as a Service or Platform as a Service. In this disser-tation, we do an overview on Mobile Cloud Computing and its services, benefits and challenges. We alsoexplain in what consists each service and the differences between Backend as a Service and Platformas a Service. Since applications require the usage of these two services, we explore the differencesbetween native, web, and hybrid applications and in what situations each type of application should bedeveloped. Plus, it is shown the two applications developed for tourism along with some functionalitiesadopted and optimizations. Furthermore, we analyse some results we got by testing performance of thecloud to confirm if meets developers’ expectations. And, we also show the performance obtained fromnative and web cloud applications.

Keywords: performance, user experience, service model, cloud, platform

Resumo

Cloud Computing e um paradigma que atinge cada vez mais pessoas e empresas. Quando CloudComputing se junta com os dispositivos moveis, torna-se omnipresente e ao mesmo tempo mais po-deroso. Para unir Mobile Computing com Cloud Computing existe dois caminhos possıveis e ambosusando servicos do Cloud Computing: usando Backend as a Service ou Platform as a Service. Nestadissertacao, da-se uma visao geral ao paradigma de Mobile Cloud Computing e os seus servicos, be-nefıcios e desafios. Tambem explica no que e que consiste cada servico e as diferencas entre Backendas a Service e Platform as a Service. Uma vez que as aplicacoes requerem a utilizacao destes doisservicos para poder fornecer os seus respectivos servicos, explora as diferencas entre aplicacoes nati-vas, web e hıbridas e em que situacoes deve ser desenvolvida cada tipo de aplicacao. Esta investigacaoe suportada pelo desenvolvimento de duas aplicacoes desenvolvidas para a area do turismo juntamentecom algumas das funcionalidades adoptadas bem como optimizacoes. Para alem disto, analiza-se osresultados de desempenho obtidos para confirmar se corresponde as expectativas. E tambem se apre-senta o desempenho obtido a partir das aplicacoes nativas e web que usam cloud.

Palavras-chave: desempenho, experiencia do utilizador, modelo de servico, cloud, plataforma

Contents

Acronyms xi

1 Introduction 11.1 Context and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Research Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Proposed Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Additional Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6 Document Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Background 52.1 Mobile Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Services of Mobile Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2.1 Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 Platform as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.3 Infrastructure as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.4 Backend as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.5 Comparison between the services . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.6 Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.7 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.8 Mobile Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.1 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.2 Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.1 Native . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.2 Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.3 Hybrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4.4 Which one to choose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.5 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Applications Developed 193.1 Windows Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.1 WebMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.2 SQL Database Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.3 WebMAT and Web Site service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.4 NativeMAT and Mobile Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.1.5 Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2 Problems and Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 Evaluation 434.1 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.1.1 Apache JMeter (WebMAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.1.2 Eclipse (NativeMAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.1 Web Application (WebMAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.2 Multiple Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

v

vi CONTENTS

4.2.3 Single User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2.4 Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.3 Native Application (NativeMAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.4 NativeMAT and WebMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5 Conclusion and Future Work 575.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A Applications’ Screen Shots 59A.1 WebMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59A.2 NativeMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

List of Figures

2.1 Cloud Computing stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Schema that shows some differences between (a) Software as a Service and (b) an ap-

plication using a Backend as a Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 Graph generated Quantcast that shows the number of visits on Amazon website. . . . . . 122.4 Offloading beneficial by communication and computation [35]. . . . . . . . . . . . . . . . . 13

3.1 Windows Azure Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.2 Windows Azure - categories of the services . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 “servername.windowsazure.net” - Management of the database. . . . . . . . . . . . . . . 223.4 Windows Azure SQL Databases dashboard tab. . . . . . . . . . . . . . . . . . . . . . . . 223.5 Monitor tab on Windows Azure Web Site service of a specific web application. . . . . . . 233.6 Usage overview on dashboard tab of Windows Azure Web Site service. . . . . . . . . . . 233.7 Hosting plan modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.8 Windows Azure SQL Database: Connection Strings . . . . . . . . . . . . . . . . . . . . . 253.9 Schema of sending a request to server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.10 Different modes of scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.11 The name of the service and the name of the database schema is exactly the same. . . . 313.12 Two different interfaces to handle with containers and blobs of a specific storage account. 323.13 Client ID result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.14 Google’s PageSpeed recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.15 Original image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.16 Zoom of the image shown in figure 3.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.17 Bug of Windows Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1 An example of all the element needed to do a load test. . . . . . . . . . . . . . . . . . . . 444.2 DDMS interface of Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.3 Chart illustrating test results with number of threads = 10, ramp-up time = 10, and loop

count = 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300. 474.4 Chart illustrating test results with number of threads = 10, ramp-up time = 10, and loop

count = 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300. 484.5 Chart illustrating test results with number of threads = 100, ramp-up time = 10, and loop

count = 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300. 494.6 Snapshots on “monitor” tab of the Windows Azure Web Sites dashboard. . . . . . . . . . 504.7 Second test - 10 users using cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.8 Fourth test - 1000 users using cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.9 Snapshots on “monitor” tab of the Windows Azure Web Sites dashboard. . . . . . . . . . 534.10 Snapshots took from “trace.html” file generated from experiment #1 using Systrace tool. . 554.11 Snapshots took from “trace.html” file generated from experiment #2 using Systrace tool. . 55

A.1 Home screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59A.2 List of all PoIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60A.3 Details of a PoI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60A.4 PoIs loading of “Castles” category. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61A.5 Details of a PoI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

vii

List of Tables

2.1 Responsibilities of vendors and clients [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Estimated costs of infrastructure under a possible scenario of two application servers

backed by two database servers and balanced by a load balancer [51]. . . . . . . . . . . 11

3.1 Sizes obtained from the original after compression with the different tools . . . . . . . . . 363.2 Sizes obtained from the original after compression with the different tools . . . . . . . . . 363.3 Sizes obtained from the original after using different types of compression with Preview. . 36

4.1 Time and errors obtained with 10 users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.2 Time and errors obtained with 10 users and with Cache. . . . . . . . . . . . . . . . . . . . 484.3 Time and errors obtained with 100 user and with Cache. . . . . . . . . . . . . . . . . . . . 494.4 Thoughput per minute obtained on 4 tests (with 10 users without using cache and 10, 100

and 1000 users using cache) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.5 Time obtained from web application running on different platforms using Safari and Chrome. 524.6 Time obtained from mobile application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

ix

Acronyms

MC - Mobile Computing

CC - Cloud Computing

MCC - Mobile Cloud Computing

SaaS - Software as a Service

BaaS - Backend as a Service

MBaaS - Mobile Backend as a Service

PaaS - Platform as a Service

IaaS - Infrastructure as a Service

HTML - HyperText Markup Language

NIST - National Institute of Standards and Technology

CPU - Central Processing Unit

SDK - Software Development Kit

API - Application Programming Interface

SQL - Structured Query Language

UI - User Interface

CapEx - Capital Expenditure

OpEx - Operating Expenditure

GPS - Global Positioning System

BYOD - Bring Your Own Device

IDE - Integrated Development Environment

CSS - Cascading Style Sheets

PHP - Hypertext Preprocessor

AJAX - Asynchronous JavaScript and XML

XML - EXtensible Markup Language

xi

xii ACRONYMS

CDN - Content Delivery Network

SSL - Secure Sockets Layer

URL - Uniform Resource Locator

DOM - Document Object Model

DDMS - Dalvik Debug Monitor Server

PDO - PHP Data Objects

GUI - Graphical User Interface

PoI - Point of Interest

Chapter 1

Introduction

1.1 Context and Motivation

Tourism is a global leisure activity widely practised. In 2011 there were over 983 million international

tourist arrivals worldwide, representing a growth of 4.6% when compared to the 940 million in 2010 [1].

Meanwhile, in this kind of activity mobile devices (e.g. smartphones and tablets) are an highly choice

for people to get better experiences. Its powerful and portable capabilities make them greater than any

other electronic device when it comes to go outside doors.

Besides that people also tend to do a significant number of activities on their mobile devices (e.g. taking

photos, use GPS, listen to music) due to its effectiveness and convenience. Mobile devices’ portability

make them more ubiquitous and extremely efficient on the field.

However, the evolution of mobile devices has been so fast that people start to gain concern about having

a: (i) powerful processor to handle applications with tough computations without losing performance; (ii)

high storage capacity to store their multimedia content and applications; and (iii) high memory to help to

compute their work while maintaining high levels of processing power. Thereby, mobile devices become

a big bet for Cloud providers. With Cloud Computing being used by mobile devices, it appeared a new

way to think and to do things, eliminating some barriers and also leading to the rise of important issues

such as privacy, performance or bandwidth of mobile network. So far, we did not find any application for

tourism such as TripAdvisor 1 and Foursquare 2 that use service models of Cloud Computing.

Cloud Computing has the following variances: Software as a Service [29], Platform as a Service [54] and

Infrastructure as a Service [42, 12]. They are used in many kind of businesses by various organizations.

Recently it arose another type of service, Backend as a Service [33, 36]. Targeting native applications,

so they can also benefit from Cloud Computing services. At the same time, Backend as a Service is

an alternative to Software as a Service on delivering software business. The goal is to reach every

mobile device independently if it is native or a mobile web applications because there is no perfect type

of application that can meet all business requirements.

Furthermore, these service models also provide features to make it easier to develop and to allow

1http://www.tripadvisor.com2https://foursquare.com

1

2 CHAPTER 1. INTRODUCTION

developers to use either web languages (e.g. HTML5, CSS and javascript) or native languages (e.g.

Objective-C, Java and C#) which already have a long struggle. Along this, the issues at stake are “Which

model is better to develop a mobile cloud application? Software or Backend as a service? Should the

development be done with a web or a native programming language?”. To answer these questions there

are important aspects, such as performance and user experience, that need be taken into account.

1.2 Research Problem

One of the big challenges that users have to take into account when executing mobile applications is

performance. This requirement can become a big concern for developers, especially for those who

develop for web where performance is crucial to reach responsiveness and stability. However, native

mobile applications are also facing the same challenges as web mobile applications with the emergence

of Mobile Cloud Computing. For people who want to take advantage of Cloud Computing while using

native applications they will notice a decrease in performance when compared to the standard. The

reason lands on the need to highly use Internet connection.

Performance challenges become even bigger when we have to handle applications targeted for tourism.

Because they need to deal with a significant amount of multimedia resources (e.g., images or videos) to

meet the users’ expectations. Images are a great hurdle to any application (e.g. to be more attractive

and intuitive). Response time of web pages is correlated to page weight, and images tend to account

for half of the size of typical web pages [60]. One simple task that can jeopardize a mobile application is

when we have to download a set of images from the Internet, which is a network operation that can take

longer due to its unpredictable delays. These delays can be caused by traffic congestion or bandwidth

signal. Therefore, developers can have troubles on trying to achieve a good performance for their users.

Considering this, it can be hard to know which service model to adopt. A native application can have

slowdowns like a web application and by consequence its performance can no longer be considered as

great as before or greater than web application.

Other than that, once there is the need to use the network to explore mobile cloud applications, there

is the dependency on Internet connectivity speed which can be greatly affected by users’ geography.

Therefore, there is the possibility that the user is on an area out of signal but still wants to access the

information that he was accessing before. Another example is the context of tourism applications where

a user travelling to a foreign country may need to access the service to get information about a point of

interest (PoI) without paying roaming taxes. However, while companies provides the offline version of

their applications for tourism and thus, the user can have the option to download that version it may not

want do it once it consume much space.

1.3 Proposed Solution

The solution proposed in this thesis consists on developing two types of mobile applications: a native

mobile application (Android) and a web mobile application (HTML5). Both applications developed using

1.4. GOALS 3

services from Windows Azure from Microsoft to fit the context of Mobile Cloud Computing.

We want to create a Software as a Service with Windows Azure Web Site service targeted to mobile

devices in order to give a look and feel similar to a native application. Also develop a native application

that connects to a cloud computing service called Backend as a Service. In this sense, both applications

are going to face network issues enabling them to be compared and therefore understand if they have

the same wide performance divergence as before when native applications did not require network to

provide their services.

Regarding network signal issue, we are going to mitigate it by using internal storage or cache of mobile

devices or browser (depending on what kind of application we are dealing with). HTML5 brought a new

set of features such as offline storage. Thus, we want to know if web applications are tantamount to

native applications.

Next, the challenge is to use some tools to run tests, analyse, and determine the performance of both

mobile applications in order to be able to come to a conclusion about the performance of both. Also

try to see how to improve performance of the web mobile application so that it can be closer to the

performance reached by the Android application.

1.4 Goals

After identifying the problem and its subsequent challenges, it is important to mention in a clear way

what are the goals of this research:

G1: Identify and analyse the problems faced when users try to load, render and display a set of images

that are preventing applications to achieve good performance.

G2: Discover how to overcome those problems by figuring out what is causing them and then, search-

ing methods to help on its performance optimization.

G3: Compare and analyse a native mobile application and a web mobile application in what perform-

ance concerns.

1.5 Additional Contributions

A survey of Mobile Cloud Computing has been published on Open Journal of Mobile Computing and

Cloud Computing of Scientific Online Publishing (SOP) [21].

1.6 Document Outline

This dissertation is divided into five chapters. Chapter 1, in which this section is included, is where we in-

troduce the context and motivation, problems, solutions proposed and goals of this dissertation.Chapter

2 describes Mobile Computing, Cloud Computing and Mobile Cloud Computing paradigms as well as

4 CHAPTER 1. INTRODUCTION

its services, benefits and challenges. Also, it shows the different type of applications that can be de-

veloped regarding this new paradigm and it presents different papers that describes other aspects in

detail. Chapter 3 introduces the platform used to developed our mobile cloud applications as well as a

tool and service to help in this process as well as description of all the steps taken on the development

process. Then chapter 4 starts presenting some tools that were utilized to do some tests and explores

the limitation of Windows Azure and discuss the results obtained from the two applications developed.

Finally, chapter 5 shows some conclusions reached and future work.

Chapter 2

Background

2.1 Mobile Cloud Computing

The concept of Mobile Cloud Computing (MCC) comes along with two parts, Cloud Computing (CC)

and Mobile Computing (MC). It was due to these two computing paradigms that MCC paradigm has

emerged.

MC is described as an act of portable devices usage to run stand-alone applications and/or accessing

remote applications via wireless networks [19]. MC has three major components: communication, hard-

ware and software. The software component, are the mobile applications present in the devices like

Whatsapp, Viber or Any.Do. Regarding the hardware, we may consider mobile devices with their hard-

ware components, such as sensors, batteries, etc. And finally, the communication is related to mobile

networks.

CC appeared to help users to reduce their concerns about device requirements in order to run the new-

est software (e.g. higher CPU speed and larger storage capacity) [69, 24, 12, 11, 75, 43]. The most

accepted and common definition of CC is the one from National Institute of Standards and Techno-

logy (NIST) which says that “CC enables on-demand network access to a shared pool of configurable

computing resources (e.g. networks, servers, storage, applications, and services) that can be rapidly

provisioned and released with minimal management effort or service interaction” [30].

The main service models provided by the CC paradigm are: Platform as a Service (PaaS), Infrastructure

as a Service (IaaS) and Software as a Service (SaaS).

Regarding MCC, there are multiple definitions but no consensual ones on what it is [32, 18]. From our

perspective, it is just the combination between CC and MC, meaning the integration of CC within a mo-

bile environment. It refers to an infrastructure where both data storage and (most of) the processing

can occur outside of the mobile device or can be distributed between cloud-based servers and mobile

devices.

Nowadays, MCC is a big bet for organizations due to their willing to adapt to the new technologies and

explore their advantages. This trend is changing the way companies work as well as their habits. Ac-

cording to Gartner, mobile technologies and CC come as the first priority when it comes to Business

5

6 CHAPTER 2. BACKGROUND

and Technology decisions [61]. Experts surveyed by Pew Internet Project expect that by 2020, most

people who use Internet will work primarily through cyberspace-based applications on remote servers

accessed through networked devices. Next section explore the services brought by CC.

2.2 Services of Mobile Cloud Computing

CC can be viewed as a collection of services, and as we mentioned, there are three main service models

- SaaS, PaaS and IaaS. Companies see SaaS as the preferred software delivery method of the future

and as the most popular form of cloud service. Last year (in 2013) it had 63% of organizations using

SaaS, 8% more than in 2011 [8].

Since CC has got three types of services and these services that are built one top of another, CC is

usually depicted as a layered stack.

Recently it came up another type of service in CC designated Backend as a Service (BaaS), sometimes

also referred as Mobile Backend as a Service (MBaaS), which is built on top of PaaS leading to a new

composition of the layered stack of CC (figure 2.1).

Figure 2.1: Cloud Computing stack

Although through PaaS we can create and build BaaS and SaaS they are targeted to different end users.

BaaS is targeted for application developers and SaaS for non-technical users. In this sense, BaaS and

SaaS originate two different layers at the same level (over the PaaS layer).

In the next section, we will describe each one in detail to see what we can expect from them in order to,

later on, know which one to use and which one best fits the specific requirements.

2.2.1 Software as a Service

SaaS model delivers applications through the web [29]. An user does not need to download and install

anything onto his personal device once it can access it using a web browser. It allows him to save disk

space and, for the cloud providers the ability to better monitor and improve their software continuously.

This way, they have the chance to increase the quality of their services [68] and at the same time, users

do not need to worry about making updates, once application development and operation becomes

tightly integrated. The continuous deployment brings the frequency of updates down from months to

days or even hours [66].

SaaS is the most popular type of CC, known for being the easiest service to understand and use. Con-

sequently, enterprises are more willing to use SaaS in order to be easier to maintain their systems [68].

2.2. SERVICES OF MOBILE CLOUD COMPUTING 7

Popular examples of SaaS are: Google Apps1, Microsoft Office 3652, Skype3, AccuWeather4 and Mur-

ally5

2.2.2 Platform as a Service

PaaS model is a CC service that allows developers to create and deploy their web applications quickly

and easily using the provided frameworks [54]. This facilitates the complexity of maintaining the software

and its infrastructure that supports it and without also doing investments like buying the supporting

infrastructure (e.g. operating systems, web servers, database servers).

In addition, with PaaS, developers can also create a BaaS and enjoy all of what BaaS offers (section

2.2.4). Unlike SaaS, in the PaaS the responsibility of managing the system is shared by the user and

the provider [68].

A study, underwritten by Red Hat, Inc.6, found that PaaS has the potential to cut Federal IT costs by

US$20.5 billion annually, or 25 per cent of the Federal government’s IT budget, by speeding up software

development [10, 47].

Popular examples of PaaS are: AWS Elastic Beanstalk7, Heroku8, Salesforce9, Google App Engine10,

Windows Azure11.

2.2.3 Infrastructure as a Service

IaaS model is where we get the fundamental building blocks for cloud services [42, 12]. IaaS is where

compute resources such as storage, hardware, servers and network capabilities which are owned and

hosted by a service provider are offered to customers on-demand. It is a way to provide the hardware

infrastructure (i.e. the equipment) of CC and that is why IaaS is also sometimes referred to as Hardware

as a Service (HaaS).

The service provider owns the equipment and is responsible for managing virtualization, servers, stor-

age, and networking while the client has to take care of the data, applications, runtime, and middleware

[30, 55, 25, 68].

IaaS is the most flexible Cloud Computing model and allows for automated deployment of servers, pro-

cessing power, storage, and networking.

Popular examples of IaaS are: Amazon EC212, Rackspace13

1http://www.google.com/enterprise/apps/business/2http://office.microsoft.com/en-US/?CTT=973http://www.skype.com/en/4http://www.accuweather.com5https://mural.ly6http://pt.redhat.com7http://aws.amazon.com/elasticbeanstalk/8https://www.heroku.com9http://www.salesforce.com/platform/overview/

10https://developers.google.com/appengine11https://azure.microsoft.com/en-us/12http://aws.amazon.com/ec2/13http://www.rackspace.com

8 CHAPTER 2. BACKGROUND

2.2.4 Backend as a Service

The BaaS model allows developers to connect/link their native mobile applications to a backend cloud

storage and start to enjoy some of the features they provide like push notifications and integration with

social networking services [33, 36]. Yet, these applications can also save their data in the cloud instead

of saving it in the mobile device storage or data can even be saved in both cloud and storage.

There are some platforms, for instance Google App Engine and Windows Azure, that provide custom

software development kits (SDKs) and application programming interfaces (APIs) that make it easier

to develop mobile applications and link them to a backend. Examples of BaaS are: appcelerator14,

appery.io15, kinvey16, Parse17 and StackMob18

2.2.5 Comparison between the services

Before considering any kind of services described in the previous sections, it is important to understand

what is the appropriate service to use regarding a specific scenario. Therefore, it is important to explore

the differences between SaaS, BaaS, PaaS and IaaS.

The lower we go in the CC stack the more responsibilities and control we have over the service (see

Table 2.1).

Responsibility SaaS PaaS IaaSClients Vendors Cients Vendors Cients Vendors

Applications - - -Runtime - - -

Data - - -Middleware - - -

OS - - -Security - - -

Virtualization - - -Servers - - -Storage - - -

Networking - - -

Table 2.1: Responsibilities of vendors and clients [4].

BaaS does not appear in the table because BaaS and PaaS have the same responsibilities. BaaS is

very similar do PaaS. Both are targeted to developers and provide frameworks to help them developing

their application, i.e. it speeds up the application development process. The difference between them is

whether an application is deployed into the cloud or connect to a backend cloud storage.

SaaS is the simplest service once everything is managed by vendors unlike PaaS and IaaS. Although

clients have few responsibilities in PaaS, it is the most complex service of CC according to Barb Darrow,

14http://www.appcelerator.com15http://appery.io16http://www.kinvey.com/17https://www.parse.com18http://www.stackmob.com/

2.2. SERVICES OF MOBILE CLOUD COMPUTING 9

senior writer at GigaOM19, says “for most companies, PaaS is just too complicated for most humans,

including developers” [17]. Moreover, Gartner estimates that $131 billion cloud computing market, PaaS

represents about 1%, whereas SaaS sits at 17.7% and IaaS at 5.5% [38].

SaaS is seen as the primary type cloud investment with 82% citing its usage today and even more when

it is seen as the deployment model for new applications with 84% [48].

Currently SaaS has the biggest slice of the cake. One of the reasons for this to be happening is the fact

that SaaS is more targeted to users than only just for developers. Our vision, in this, is that when we go

further down in the Cloud Computing’s stack, the target audience is more restrict.

Regarding the development process of SaaS using PaaS and an application using BaaS, we have the

following differences:

SaaS

1. The (web) mobile application resides in the web hosting service and it needs another application

(browser, as an intermediary) to run the (web) mobile application.

2. Images are also in the file system of the web hosting service. However the images can be placed

in a storage service instead.

3. To work with data (store and retrieve), it needs to link the (web) application with an SQL database

or with Storage depending if it is required a relational or non-relational database.

BaaS

1. If it is a native application, it is not present in the cloud but in the mobile device. If it is web

application, the application resides in other domain rather than running in the cloud itself where is

the BaaS created and located.

2. Unlike SaaS, they do not need SQL database. Unless, it requires a relational database, because

in BaaS it is possible to create tables and do whatever with the data (e.g. insert into the table, edit,

delete).

3. With BaaS, it is necessary the Storage service in order to work with images (such as save images

in the cloud and retrieve them).

To help to understand better the differences between BaaS and PaaS on the applications development

process, we show figure 2.2 which represents the following scenario: a business entity wants a mobile

application to, at least, store and get information in the cloud.

Despite the percentage of use that SaaS has, BaaS is an emerging technology and it is going to compete

with PaaS in the future of MCC. Therefore, we believe that BaaS is one of the promises of CC because

of its ability of integrating native mobile applications with the cloud. Now, developers that need or are19Founded in 2006, Gigaom is the leading global voice on emerging technologies. Gigaom provides intelligent, credible analysis

of emerging technologies.https://gigaom.com

10 CHAPTER 2. BACKGROUND

Figure 2.2: Schema that shows some differences between (a) Software as a Service and (b) an applic-ation using a Backend as a Service.

more familiar with native applications for their business, they can adapt them to moving towards to MCC,

where some of the computations, but not all of them, are offloaded to the cloud, in order to enjoy the

best of both sides.

2.2.6 Benefits

CC is changing the way companies work and the people’s habits. MCC helps to break some barriers to

mobile users as well as to mobile business companies [18]. We will see the benefits that CC brought in

order to understand how does it affect the mobile world.

2.2.7 Cloud Computing

Companies are now looking for how to take fully advantage of CC technology in order to have more

engagement with their customers. Experts on this topic believe that this trend will grow even more.

When companies use it properly, working with the cloud can bring some benefits, extending them also

to customers. Namely in what concerns to cost savings, storage and ubiquity in data access.

Cost Savings. This is one of the main benefits for organizations. With CC, organizations do not need

to acquire equipments to provide their service to customers. Also, they do not need to manage the

part of the system that now relies on CC service.

It is important to understand that choosing a cloud provider, that gives a good quality of service and

2.2. SERVICES OF MOBILE CLOUD COMPUTING 11

a great availability, can be a significant improvement when comparing with internal IT or managed

services. Table 2.2 shows an example of a possible business scenario where it is worth to use CC

as reported by Reese [51].

InternalIT

ManagedServices

TheCloud

CapitalInvestment $40’000 $0 $0

SetupCosts $10’000 $5’000 $1’000

MonthlyServices $0 $4’000 $2’400

MonthlyLabor $3’200 $0 $1’000

Cost OverThree Years $149’000 $129’000 $106’000

Table 2.2: Estimated costs of infrastructure under a possible scenario of two application servers backedby two database servers and balanced by a load balancer [51].

From table 2.2 analysis, the costs savings between the different strategies over the three years are

[51]:

1. From Internal IT to Managed Services, the cost savings are 13.5% - Managed Services is

less costly

2. From Internal IT to The Cloud, the cost savings are 18% - The Cloud is less costly

3. From Managed Services to The Cloud, the cost savings are 29% - The Cloud is less costly

One of the biggest problems across all companies is the lack of uniform load across servers. These

peaks of load can vary daily, weekly, monthly or even yearly (see the example from Amazon, Figure

2.3). Therefore, companies do not need the same amount of servers working all the time. Even

with companies at full power, there is no guarantee that they will be able to respond to some peak

of requests.

The graph of Quantcast20, figure 2.3, shows that a fixed capacity on the infrastructure is a big

issue on costs due to the difficulty of predicting how many machines are needed to always provide

the best service. CC provides a pool of resources that fits the company needs on-demand. Its

elasticity reduces the need to monitor and do a forecast of the website’s traffic in order to handle

it properly. With CC, companies can easily meet their peaks of load without having the worry of

providing enough resources. This way companies tend to have less capital expenditure (CapEx)

and more operating expenditure (OpEx) which is a classic way to stretch their budget.

Huge storage and persistence. Since CC is on-demand and offers a pool of resources including data-

base servers, companies do not need to worry about storage space and increasing it. An example

is duplicating the data to guarantee availability regardless any server’s fault. Therefore, data needs20https://www.quantcast.com

12 CHAPTER 2. BACKGROUND

Figure 2.3: Graph generated Quantcast that shows the number of visits on Amazon website.

to be persistent even in case of failure. By using CC companies can access storage based on their

needs.

Ubiquity of data access. CC does not only provides data storage but also access to it through the

Internet. Nowadays, people have more necessity of having the data anywhere they go. Instead of

taking their own computers or hard drives, people look for accessing their data virtually. CC is also

able to spread the data across servers in different strategic geographic locations in order to make

the access faster.

Quick Deployment. Cloud-based platform is one service provided by CC and it is the service that

makes possible for developers to easily deploy their software. With just a few steps, developers

can have a service running on the Internet, ready to be used. The time developers spend on those

steps will depend on what kind of service of CC they need for their business.

2.2.8 Mobile Cloud Computing

Mobile devices are limited regarding processing power and storage capacity, which by consequence

means that mobile devices are powerless and can not have the performance and storage that people

would always like to have. Also applications cannot be heavy in order to not overload the mobile devices.

The biggest benefits of MCC to these devices are saving energy and computation offloading [58, 35].

Saving energy. Apart from luminosity and localization, which are the situations that consume more

battery, there are many applications with an intensive computation for a mobile device. These kind

of applications should run in the cloud by using offloading method, in order to save energy.

Computation offloading. The mobile data offloading has emerged mainly due to great amount of traffic

through mobile networks. When the computation, instead of happening on user side (mobile

2.3. CHALLENGES 13

devices), happens in the cloud (in the server side), this makes mobile devices able to save energy,

i.e., extend the battery life. However, the amount of energy that we save by offloading applications

computation depends on whether it is a light or a heavy application regarding computation. It also

depends in the communication time needed.

Figure 2.4: Offloading beneficial by communication and computation [35].

Figure 2.4 shows how beneficial offloading can be [35]. When a large amount of computation and

a small amount of communication exists, offloading can be truly beneficial. However, we need

to consider the use of high bandwidth versus low bandwidth. Although 4G is faster than 3G, it

consumes more battery.

Besides that, with computation offloading, mobile companies do not worry about providing good

mobile devices with a great hardware (e.g. processing power, memory) to their users. However,

the trend is to increase the power of mobile devices and their hardware resources.

2.3 Challenges

When we integrate the CC with mobile devices, the objectives are mainly to increase capacity and

capabilities at runtime without investing in new hardware and software. Apart from that, CC also brings

some challenges related with security [34, 56] and network [74] such as privacy and confidentiality, data

integrity, user authentication, communication quality and 4G network.

2.3.1 Security

Security is an important issue in MCC and trust is the main discussion to subscribers. Since we access

applications via Internet, we become more vulnerable to attacks due to an higher exposure. Those at-

tacks can violate CIA6 properties (i.e. confidentiality, integrity, availability, authentication, accountability,

assurance, administration, and audit).

But who has the most responsibility to minimize these risks? It is the end-users. It is up to end-users to

decide whether they send (or not) data to the cloud and what kind of data. And when using the cloud, it

is important to protect the data with secure mechanisms of authentication in order to guarantee integrity.

In any case, we need to keep in mind that providing 100% security is impossible since total security does

not exist and so privacy and confidentiality, integrity, and authentication are always a concern.

14 CHAPTER 2. BACKGROUND

Privacy and confidentiality. Most of the people do not have the proper education. Thereby, it can be

hard for them to understand how dangerous theirs (innocent) actions can be. Organizations take

advantage of what people place on Internet to sell personal data to other organizations that are

interested in it. Facebook and online documents, such as Google Docs, are well-known examples

[63]. Cloud providers, who provide storage to customers, also have access to the data stored by

their users. And like Facebook, they can disclose it or use it for unauthorized purposes [16].

Data Integrity. Since data is stored in the cloud, each user is responsible for ensuring the integrity of

his data. Cloud providers say that the data stored is utmost safe but there have been cases where

data have been modified or lost. These situations may happen due to some security breach or

some human error [6].

Authentication. One way to minimize either privacy or data integrity is the provision and use of strong

authentication methods. However, this is not always enough. Users have the tendency to use weak

passwords to access external resources in order to have a memorable password. The problem of

strong passwords is that they are hard to remember. Yet, they should not do it if they want to

protect their data in terms of rights and authentication. And because of this, there is a need for

more secure authentication methods. Different mechanisms of authentication has been proposed

and presented for example in [59, 28, 57, 23].

2.3.2 Network

Cloud services are increasing along with their use. For example, storing stuff remotely to access it from

anywhere and whenever. This is an example of what people do with cloud services. Furthermore, on

business, CC boosts remote working even also using mobile devices [64, 40, 15]. So, it is quite important

to enhance the network which becomes a significant challenge.

Communication quality. The quality of communication of mobile devices depends heavily on band-

width of the mobile network. This bandwidth is very inconstant, specially when we are moving at

a significant speed, making the internet connectivity unpredictable. It can be hard to know when

the signal is strong or weak, or even out-of-signal. Thereby, users may not be able to connect

to the cloud and get their service. On the other hand, this can happen because of either traffic

congestion or network failures [74]. Availability becomes an important issue in MCC than that in

the CC, namely in wired networks. However, there are researches that proposed some solutions

[27] (e.g. Femtocell).

4G network. 4G is the fourth generation of mobile telecommunications technology that still increases

the bandwidth and latency. Even if 4G promises some advantages such as widening mobile cov-

erage area, smothering quicker handoff, varied services and so forth [49], it seems that it is not

enough. There are still issues [67] like upgrading from 3G to 4G (since many mobile devices were

not built for that) or rather, most of smartphones and tablets with mobile connectivity cannot latch

2.4. APPLICATIONS 15

on to 800MHz or 2.6GHz signals as they don’t have the necessary chips built-in[72, 13]. In fact in

many regions, users still struggle to get a 3G signal.

2.4 Applications

Regarding mobile applications that can be developed, there are three types: native, web, and hybrid.

It is important to go in detail about each one so that we can distinguish them by understanding their

differences. Thus, to make it easier to choose the type that fits the requirements of one application, we

will go deeper on native and web (HTML5) mobile applications development in order to get a thorough

understanding.

2.4.1 Native

Native applications are those which are developed by targeting a single operating system (OS) and using

the specific languages and SDKs (e.g. Java for Android, Objective-C for iOS, or C#/.NET for Windows

Phone) provided by some IDEs such as Eclipse, Xcode, or Visual Studio.

There are many reasons to use these kind of applications, namely: (1) Best performance (fastest, most

reliable and responsive experience to users); (2) Full access to the features of a specific devices (e.g.

camera, accelerometer, geolocation, notifications, and compass).

However, what limits this type of applications is the fact that they are going to run on a specific kind of

devices. For instance, if developed in Objective-C, it only runs on iOS and not on Android or Windows

Phone. By consequence, if developers want to reach all platforms it will require more time and know-

ledge.

On the other hand, there are some approaches and frameworks to overcome this limitation. One of them

is the MDD approach based on the XIS-Mobile technology [53, 52].

2.4.2 Web

Mobile Web applications are canned in a way that they look like a mobile application. They are usu-

ally developed using PHP, Node.js, ASP.NET, HTML, CSS, or JavaScript. This kind of application is a

cross-platform mobile application that work on multiple devices regardless the operating system. But

unfortunately, there are also some limitations that remain, such as the access to the native device func-

tionality (e.g. GPS localization and camera).

One of the problems of creating such application is the fact that people are far less likely to use them.

A study made on United States by Flurry reports that only just 20% of time spent on mobile devices is

spent browsing the web, people much prefer dedicated applications in comparison with browser-based

solutions [31].

16 CHAPTER 2. BACKGROUND

2.4.3 Hybrid

Hybrid applications is the combination of both worlds. It is an HTML application rendered in a browser

embedded within an application that lives in an app store [9]. Hybrid applications, like native applications,

run on the device but are developed with web technologies (HTML5 [73], CSS, and JavaScript). Hybrid

is defined as a web application and then is wrapped inside of a native container that provides access

to the native features. Cordova21 and PhoneGap22 are popular examples of frameworks to build hybrid

applications such as Banana Republic23 [9], Google Apps [22], Yahoo! Livestand [70], Foursquare and

Facebook [65].

2.4.4 Which one to choose

There is a lot of discussion when it comes out the idea of building mobile applications and two dominant

lines of debates appear: build a native application or build a web-based application. The differences

between native and web applications resides mainly on the look and feel. HTML5 tries to give a very

similar look and feel and experience to what users would find in a native application [45]. For example, in

HTML5 when it is implemented a drop-down list, depending on what operating system the application is

running, it will fetch the native drop-down list correspondent to the operating system. Another difference

is the access to on-device features [7, 41] where native applications have full access while mobile web

applications need an application programming interface (API) to reach down to the device itself.

HTML5 has brought a surge of on-mobile features access such as GPS location, audio and video cap-

turing, and accelerometer. Also, the user interface (UI) speed is improved. It is hard to achieve the same

speed and performance of native applications with mobile web applications where rendering and loading

are the biggest concerns. Remote access will strongly depend of connectivity which can be weak or null.

On the other hand, HTML5 does not depend on App Stores to make their applications available to users

and provide updates. In addition, HTML5 now provides offline application capabilities (e.g. offline stor-

age, geolocation, canvas graphics, and video/audio playback) that allow web applications to run when

active network connection is not available [62] and to store persistent databases in the web browser

itself [26]. One example is Gmail from Google [50].

We believe that hybrid applications will not replace native applications entirely because there are things

that one can do better than the other. Nevertheless, according to Gartner, an American information

technology research advisory firm, more than 50% of mobile applications are going to be hybrids by

2016 and its vice president Van Baker said that it “should consider how applications can be enriched or

improved by the addition of native device capabilities and evaluate development frameworks that offer

the ability to develop native, hybrid and Web applications using the same code base. When possible,

development activities should be consolidated via cross-platform frameworks”, and he also reckons that

building hybrid applications will make their lives easier.

21http://cordova.apache.org22http://phonegap.com23https://play.google.com/store/apps/details?id=com.skava.hybridapp.bananarepublic

2.5. RELATED WORK 17

There are many experts that have the same opinion, such as Telerik24 which says on its survey that

“There are no ‘one-size-fits-all’ solutions for mobile application development” and Todd Anglin said that

“Many developers are finding the choice between native and hybrid approaches is dependent on busi-

ness needs, application requirements, developer skill, development time, and other factors”.

It is important to understand the differences between native and mobile web application in order to better

decide which one to use. To support the best choice, developers have to answer the following 5 essen-

tial questions [14]: (1) How many mobile devices platforms do you want to support? (2) Do you have

a “bring your own device” (BYOD) [5, 44] strategy? (3) How many on-device features do you need to

access? (4) How important is security and/or performance? (5) What is the purpose of the application?

For instance, Facebook has originally developed his mobile application as a web application. However,

when they built and provided a native application, Mark Zuckerberg said that “The biggest mistake we

made as a company was betting too much on HTML5 as opposed to native”.

Now we need to take into consideration the network factor regarding MCC. One of the things that native

applications did not need to worry was the network because all the data was in the mobile device. For

instance, if the intention of the mobile application is to store data on an external source (in the cloud

in this case) the network will be necessary to connect with the cloud and obtain the data. Since the

network is unpredictable (as we mentioned in section 2.3.2) it is hard to measure the performance of

one application in these situations. Therefore, performance is not only an issue for web applications but

for native applications using external resources such as backend cloud storage, i.e. native applications

using BaaS.

So, the two described scenarios are the following:

Without BaaS. If the first priority of a business application is performance or on-device features, then

native application is the way to go. But if cross-platform is a concern as it will certainly be in

corporations implementing BYOD strategies, then mobile web applications are a better choice.

With BaaS. With BYOD strategies we keep the same thought as we described before. However, per-

formance is more complicated to evaluate since both applications requires network. Therefore, it is

necessary to regard another issues such as on-device feature. If this is also a priority, then native

application is the option to take otherwise, it is the web application.

2.5 Related Work

Hoang et al. give an overview regarding MCC, starting with some different definitions for MCC that exist,

which are very similar to each other [27]. The paper also gives a notion of the service models of CC.

However, they do not show the differences between the different services and do not present BaaS since

it is a recent service model. MCC applications are introduced for different business models (e.g. mobile

commerce, mobile learning, mobile healthcare and mobile gaming) and the purpose of applying MCC to

the applications for those business models.

24Telerik is an end-to-end provider of application development tools and solutions for building cross-platform and mobile applic-ations [2].

18 CHAPTER 2. BACKGROUND

They analyses some approaches to deal with offloading in two different types of environments: static

and dynamic (when a user is on the move and the connection or bandwidth of his mobile device is chan-

ging). Niroshinie et al. discuss some methods of offloading tasks (e.g. how to tackle issues related to

the distance between the device and the cloud and the heterogeneity) [20].

Hoang et al. also analyse security regarding two categories: (1) Security for mobile users, where it

shows approaches on how to protect mobile devices from possible threats and how to avoid the leak

of user’s personal information and (2) Security data on clouds, where it presents methods to secure

data access and solutions proposed to address the integrity and digital right management issues. Khan

et al. focus more on security issues. They show numerous challenges in this field and some security

frameworks for MCC [32].

The survey presented by Niroshinie et al. explains the need of using MCC nowadays by exploring the

different applications (such as image processing, natural language processing, crowd computing, shar-

ing GPS/Internet data, sensor data applications, multimedia searches and social network) and scenarios

[20].

Amatya and Kurti present a survey where it shows the trends on the mobile development in cross-

platform, mainly the potential of two approaches which are web-based approach and hybrid approach

[3].

Appcelerator published a white paper that debates native and HTML5 development. It gives some high-

lights of statistics of Native and HTML applications in production. It describes some aspects that are

important for successful applications such as: user experience, performance, monetization, cross plat-

form deployment costs, fragmentation, availability of programming expertise, importance of immediate

updates and distribution control, timeliness of few OS innovations and security. It also introduces a tool

that helps developers to deliver cross-platform applications without much effort [71].

Also, a paper of Ogunlolu et al., based on their development costs, cross platform capabilities, ap-

plication performance and development cycle, shows a comparison between web mobile applications

(HTML5) and native applications (Android OS, iOS and Windows Phone OS). It also does a brief look to

some features (e.g. offline, geolocation, real time communication and connectivity and multimedia) that

come with HTML5 and not with HTML4 which leverage more power and efficiency to web applications

[46].

Madaudo and Scandurra present some tools for application development using both approaches cross-

platform and native application development [39]. Also, together with Li and Powell, they show some

advantages and drawbacks of each approach for each aspect (e.g. user experience, performance,

device-specific features) [37].

Chapter 3

Applications Developed

This chapter introduces Windows Azure platform and tools that can be used to interact with it. Further-

more, it shows and discusses the two applications we developed for tourism (a web application and a

native application that we named as WebMAT and NativeMAT respectively) along with the their linked

services from Windows Azure (Web Site service and Mobile Service). These two applications serves

basically to consult PoIs in Portugal (screen shots in appendix A). And, this chapter also shows all the

development process of both WebMAT and NativeMAT applications, i.e., all the steps we have done in

order to connect WebMAT and NativeMAT to a cloud service and then, send and receive data. Also, we

discuss some developed features using some APIs and frameworks. And at last, optimizations that we

did by taking into account some recommendations and good practices.

3.1 Windows Azure

As we have already mentioned in section 2.2.2, Windows Azure is a PaaS provided by Microsoft. To

start developing applications with this platform, Microsoft provides two Integrated Development Environ-

ments (IDEs): (1) WebMatrix, a free, lightweight and cloud-connected web development tool and (2) the

well-known Visual Studio Express or just Visual Studio1. Now depending on what type of service the

developers want to use and application to develop, they have more than these two tools. For example,

in the case that a developer wants to develop a native application and save the data in the cloud (and

benefit from some other features provided by the cloud provider) the option is to use Mobile Service and

the development tools can be Eclipse (Android) and/or Xcode (iOS).

Through Windows Azure Portal2 we can easily create and manage the services. The downside of Win-

dows Azure is the fact that it is not free. The developer only has 3 months of free trial and the services

created using this subscription have limits per month (e.g., the amount of data in traffic). Therefore, if

the limits are exceeded the services are suspended and the developer can no longer use the services.

The good way for testing Windows Azure’s capacity (e.g., availability, scalability and performance) is to

developing a web mobile application hosted within its Web Site service. WebMatrix was the chosen tool

1Free, but limited editions of Visual Studio for individual programming languages supported by .NET and SQL.2https://manage.windowsazure.com/

19

20 CHAPTER 3. APPLICATIONS DEVELOPED

to develop the web mobile application once it is free and facilitates its development and deployment to

Windows Azure.

In this sense, we created a service by going to Windows Azure Portal (figure 3.1) that shows a set of

all services we can create on the left sidebar as well as services the developer has got (what type of

service and how many). A detailed information of the service is displayed in the main frame.

Figure 3.1: Windows Azure Portal

Each service is classified in four different categories: Compute, Data Services, App Services, Networks

and Store (figure 3.2). For now, we are only going to use the Web Site and Mobile Service from Com-

pute category and the SQL Database service from Data Services category.

Figure 3.2: Windows Azure - categories of the services

3.1. WINDOWS AZURE 21

3.1.1 WebMatrix

WebMatrix provides two ways for developing web applications (it is just a matter of preferences/require-

ments), which are the following:

Locally. Web applications can be developed with WebMatrix and without any network connection once

that it can be executed on an emulator. Meaning that we can test WebMAT in many different

emulators provided by WebMatrix such as iPhone Simulator, iPad Simulator, Browser Stack (allows

developers to test their sites on all major desktop browsers and mobile emulators), Chrome Canary

Browser (allows developers to test their websites using the “Canary” version of Google Chrome),

and Windows Phone 7 Emulator.

After web application development and tests, we can deploy it to a Windows Azure Web Site

service created previously. Then, it is possible to edit the web application whenever we want

without having the worry of deploying it again.

Remotely. At the beginning, when we create the Windows Azure Web Site service we have the option

of creating a project in the WebMatrix that handles its deployment right away and then, it is ready

to use. When we save the project, the changes of the web application are immediately transferred

to the cloud making them available in that instant even with the web application running, i.e., we

do not need to stop our service in order to do any kind of changes, which is an advantage.

With WebMatrix, we can create files with different type of programming language (e.g. HTML, CSS, Em-

bedded JavaScript, JavaScript, Package JSON, TypeScript, CoffeeScript, CSHTML, VBHTML, ASPX

(C#), ASPX (VB), Classic ASP, PHP, CSS (LESS-Dynamic Stylesheet), Jade, TXT, CSS (SaSS-Syntatically

Awesome Stylesheets), XML, CSS (ScSS-Sassy CSS), Class (C#), Class (VB), Global.ASA, Global.ASAX

(C#), Global.ASAX (VB), Master Page (C#), Master Page (VB), SQL Script, User Control (C#), User

Control (VB), Web.config (2.0), Web.config (3.0), Web.config (3.5), Web.config (4.0) and Web.config

(Node.js)).

3.1.2 SQL Database Service

A database was already created through SQLite. And, an attempt was made to import that database to

Windows Azure SQL Database service, but it only recognizes and fetches BACPAC files. Therefore, it

was required to use SQL Server 2012 tool to export it to there. Other than that, if we did not have one

database and we wanted to create it from scratch, we could do it via online using the SQL Database

service by login in the portal of our database server of Windows Azure3.

Afterwards, we can add new tables, views and stored procedures, drop and edit tables (figure 3.3). In

another words, we can do exactly the same operations we can do with SQL Server 2012.

Besides, in SQL Database service on Windows Azure portal, we have the possibility to: (1) see details

as illustrated by figure 3.4 (e.g. the maximum size we have, how much did we use and see connection

3https://servername.database.windows.net

22 CHAPTER 3. APPLICATIONS DEVELOPED

(a) Manage Table (b) Manage Columns

(c) Manage Indexes and Keys

Figure 3.3: “servername.windowsazure.net” - Management of the database.

strings for development purposes), (2) monitor the connections done to the database (e.g. connec-

tions status and how many connections were made), and (3) configure the SQL database created (e.g.

increase/decrease the maximum size).

Figure 3.4: Windows Azure SQL Databases dashboard tab.

3.1.3 WebMAT and Web Site service

Windows Azure Web Site service provides to developers almost the same functionalities as SQL Data-

base service (section 3.1.2) such as (1) change the properties of scaling (e.g. web hosting plan mode,

capacity and linked resources), (2) create backups and set settings, (3) monitor CPU Time, Data In,

Data Out, HTTP requests and errors (figure 3.5) and (4) see some details of the service usage (figure

3.6).

3.1. WINDOWS AZURE 23

Figure 3.5: Monitor tab on Windows Azure Web Site service of a specific web application.

Figure 3.6: Usage overview on dashboard tab of Windows Azure Web Site service.

These features are very useful once it provides information that helps the end-user to understand what

is happening with a specific service. This way, if there is something wrong and that problem is within

end-user’s range, the end-user can use functionalities of the service to fix the problem. For example,

regarding scaling, Windows Azure Web Site service provides four modes for the hosting plan: free,

shared, basic and standard. The difference between them is the capacity settings of each server (as

you can see in figure 3.7).

Figure 3.7 does not show an image about the free hosting plan mode because free and shared show

the same thing. Yet, we worked with both, starting with free mode. And then we changed to the shared

mode because the transferred data out of free mode was limited. So far as we worked with shared mode,

we did not reach the limits if there is any limit on this mode. This is a very important issue to take into

account because once we reach the limits of the amount of transferred data, the service is suspended

and in the next month, the service is resumed and the amount of data is restored.

24 CHAPTER 3. APPLICATIONS DEVELOPED

(a) Shared Mode (b) Basic Mode

(c) Standard Mode (d) Schedule times settings of Standard Mode

Figure 3.7: Hosting plan modes

3.1.3.1 Connections

In our project we used HTML, CSS, PHP and JavaScript languages to develop WebMAT. Plus, the

framework we utilized to give a better user experience (close to native) was jQuery Mobile, which we

will see shortly. So, lets first take a look on how we did to communicate with SQL Database of Windows

Azure. After a deep research, we figured out a way to connect to our Windows Azure SQL Database

service through PHP. As we already mentioned before in section 3.1.2, Windows Azure SQL Database

service provides information of the connection strings to the different APIs (figure 3.8) of the different

languages (.Net, C programming, PHP, and Java) to handle data access. Furthermore, it is required to

link the Windows Azure Web Site service (on Linked Resources tab) with Windows Azure SQL database

service otherwise we cannot establish connections with the SQL databases.

Besides PHP, we also needed to utilize JavaScript to trigger an action/event only when the button is

clicked. AJAX code was embedded in some JavaScript functions in order to exchange data with the

server (send and receive information to Windows Azure). In this sense, the snippet of code (listing 3.1)

demonstrates how we send all the necessary information to the server.

Listing 3.1: Send a Request To a Server

a jax . open ( ”GET” , ” u r l ” , f a l s e ) ;

a jax . send ( n u l l ) ;

With open() we specify three mandatory parameters:

3.1. WINDOWS AZURE 25

Figure 3.8: Windows Azure SQL Database: Connection Strings

1. the type of request - GET or POST

2. the URL of the location of the file on the server

3. if it is synchronous or asynchronous - false or true

After that, we send the request to the server with send(). The ajax object is a XMLHttpRequest object

which allows us calling the PHP file on the server asynchronously, receives the response from the

server and processes it accordingly. In addiction, PHP runs on the server-side and JavaScript runs on

the browser (client-side). If we want onsubmit() to execute a PHP function before submitting the form to

the server, it is required AJAX.

Figure 3.9: Schema of sending a request to server.

One of the advantages that comes with AJAX is the fact that it allows us to update only parts of the

page instead of loading the whole page. Thus, it improves performance by saving response time. This

way, web pages are faster and dynamic. This technique is used on well-known web applications such

as Facebook, Youtube, Google Maps and GMail.

To establish a connection between PHP and a database server in Windows Azure SQL Database, we

must create a PDO object, indicating the Data Source Name (DNS), the username and password for the

DNS string (listing 3.2).

26 CHAPTER 3. APPLICATIONS DEVELOPED

Listing 3.2: Do a connection to a database server

$conn = new PDO ( ” s q l s r v : server = $host ; Database = $db ” , $user , $pwd ) ;

$conn−>s e t A t t r i b u t e ( PDO: : ATTR ERRMODE, PDO: : ERRMODE EXCEPTION ) ;

After this, what we only have to do is sending a query to the server that will process the query and

data. Then, it will retrieve the result to the user. Finally, we fetch all the data through fetchAll() from the

previous result assigned to the variable stmt as we show in the following snippet of code (listing 3.3).

Listing 3.3: Send query to server and fetch data

$stmt = $conn−>query ( $ s q l s e l e c t ) ;

$records = $stmt−>f e t c h A l l ( ) ;

Now, we iterate the variable records in order to get and see the values it contains.

3.1.3.2 jQuery Mobile

jQuery4 is one of the most popular frameworks used to built out complex web applications. So, we

decided to use jQuery Mobile5 to make responsive web mobile applications that are accessible on all

smartphones, tablets and desktops and to try to give a closer look and feel to the native application

environment. jQuery Mobile has demos6 to make the grasp easier of each component and understand

well how is it implemented and what is the role of it.

To start implementing jQuery Mobile, it is required to call the CSS and JavaScript files hosted in jQuery

CDN7(Content Delivery Network) as we show in the listing 3.4.

Listing 3.4: Snippet for jQuery CDN hosted files

< l i n k r e l = ” s t y l eshee t ” h re f = ” h t t p : / / code . jquery . com/ mobile / 1 . 4 . 3 / jquery .

mobile −1.4 .3 . min . css ” />

<s c r i p t s rc= ” h t t p : / / code . jquery . com/ jquery −1.11.1. min . j s ” />

<s c r i p t s rc= ” h t t p : / / code . jquery . com/ mobile / 1 . 4 . 3 / jquery . mobile −1.4 .3 . min . j s

” />

These frameworks contains four major elements in jQuery Mobile once they are responsible to give a

structure of the mobile page. Therefore, they should be implemented in every page. Still, they can give

a look and feel closer to the native application. The first element implemented inside of the body is the

element (usually a div ) with the data-role=“page” attribute. Three other elements with different attributes

in the data-role tag should be implemented such as:

• header, a toolbar at the top of the page that, for instance, corresponds to an Action Bar of an

Android application. It can contain the title and, optionally, some buttons (normally designated as4http://jquery.com5http://jquerymobile.com6http://demos.jquerymobile.com/1.4.3/ - latest stable version7https://code.jquery.com/

3.1. WINDOWS AZURE 27

action buttons).

• content, a div that contains all the content of the page.

• footer, a toolbar at the bottom of the page that, for instance, corresponds to a Navigation Bar from

the Android application. It can contain buttons (e.g., for navigation purposes).

All together are the standard boilerplate page template (listing 3.5).

Listing 3.5: First element in jQuery Mobile page

<d iv data−r o l e = ” page ”>

<d iv data−r o l e = ” header ” > . . . < / d iv>

<d iv data−r o l e = ” content ” > . . . < / d iv>

<d iv data−r o l e = ” f o o t e r ” > . . . < / d iv>

</ d iv>

In WebMAT, we developed an application that gives two lists: (1) a list of points of interests (PoIs) of

Portugal by different categories (e.g., castles, beaches, monuments, statues) and/or cities (e.g., Lisbon,

Porto, etc), and (2) a list of the favourites PoIs for each correspondent user. Regarding this, we imple-

mented elements such as Navbar Widget (to make easier the navigation between pages and help the

user to know which page he/she is at the moment), Listview Widget (to display the list of PoIs), and

Selectmenu Widget (to filter the list of the PoIs).

3.1.3.3 HTML5 APIs

HTML5 APIs were designed to develop all web applications easier across multiple devices and user

agency. HTML APIs cover a set of functionalities and features that extends the power of a web applica-

tion and helps developers to improve their web mobile applications in some aspects (e.g., performance

and user experience). These APIs include the much-talked about video and audio API, an API for

building offline applications, one for editing page content, another of the controls of drag and drop func-

tionality, and finally the geolocation. We are going to focus on offline applications since one of the goals

of this dissertation is to turn WebMAT useful even when the user is offline. Therefore, HTML5 can take

WebMAT offline by using either one of these features: Application Cache, known as App Cache, and

Web Storage.

App Cache

App Cache allows users to keep resources of the web application in cache. Most of the times, despite

of this feature being seen as a feature that can make a web application running in offline mode, it can

also dramatically improves the web application experience in terms of performance. App Cache gives

three advantages:

28 CHAPTER 3. APPLICATIONS DEVELOPED

1. Offline browsing. Users can continue to access and use the web application without an internet

connection but, only the resources that have been downloaded. We are going to give more details

further down.

2. Speed up the web application. With resources in cache, web applications becomes much more

effective and responsive since cached resources load faster.

3. Reduce server load. If the cache has the necessary resources to respond to the user’s request,

the web application instead of sending requests to the server to obtain the resources that user

ask, it will fetch the cached resources. Also, the browser will only download updated/changed

resources from the server as we will see shortly.

App Cache requires the addition of two more files to WebMAT: (1) web.config that tells to the web

application that exists a manifest file of the type “.appcache”, and (2) manifest.appcache that will contain

the information of all necessary resources assigned by developer.

When a user enters in one web page of the application and the html element contains the manifest tag,

which contains the name of manifest file as an attribute, it will download the resources assigned to the

manifest file once. However, those resources can be re-downloaded next time when either the manifest

file was modified or cache of the browser is cleaned. The manifest app cache file is static which is a

downside. This file can only be changed directly in the file and not through any other method yet. For

instance, if the content of an html file is dynamic, this means that there will be eventually a change in that

file and will not affect the manifest file in any circumstances. Which in turn means that the app cache

will not re-download the html file with the new content.

Web Storage

HTML5 provides Web Storage that gives the opportunity to store data locally in the user’s browser. This

kind of method of storing data is more secure and faster than the one with cookies that are transmitted

through HTTP headers without being duly encrypted (unless the web application is under SSL protocol).

Also, it slows down a web application by transmitting the same data over and over needlessly. Plus, the

size limit of Web Storage is much more higher, where it has got 5 megabytes against the insignificant 4

kilobytes per cookie and the information is never transmitted to the server. But still, depending on what

kind of application a developer wants to develop, 5 megabytes of storage continues to be too limited

(e.g., an application that involves many images/videos).

Web Storage is divided into two parts for storing data: localStorage and sessionStorage. The only

difference between them is the time the data remains stored. sessionStorage keeps the data until the

tab of the browser is closed. While localStorage does not have time limit, i.e., there is no time for when

the data expires and is deleted. The only way to clean its content is by clearing localStorage manually.

Thus, it is up to the developer to decide when is the right moment to clear the data from localStorage

In fact, this is one advantage of localStorage and it is what we pretend. We want that a specific data

remains available even when the user closes the tab or the window. Still, when the user does not have

3.1. WINDOWS AZURE 29

connection to the network, the data is kept in the browser to navigate in offline mode. For example, to

show the list of favourites PoIs, we check who is the user (saved in localStorage in a key/value pair)

in order to retrieve the information correspondent to that specific user. If that username field is not

provided, the web application does not return any data.

3.1.4 NativeMAT and Mobile Service

In this section, we are going to use a new service of Windows Azure called Mobile Services where a

developer can create a BaaS that provides SDKs to help developer to develop applications targeted to

different platforms (e.g., Windows Phone, iOS applications, Android, HTML, Xamarin and PhoneGap)

that connects and send requests to the backend cloud storage. One advantage of this service is the fact

that the backend can fit every single application developed for different platforms, i.e., we can create an

Android and a Windows Phone applications that use the same backend cloud storage of Mobile Service

as well as benefit of the same features that come with the service like authentication. In the authentica-

tion, we can use different authentication providers (e.g., Microsoft, Facebook, Twitter, and Google).

To start using Mobile Service, we must create a service in the Windows Azure Portal like we did with

Web Site service in the previous section. Since Mobile Service allows us to create a BaaS, then through

this service we can configure authentication providers and Windows, Apple or Google push notifications.

Regarding the data, we can create tables with no relation corresponding to a non-relational database

(NoSQL database). However, if a SQL database is required, there is also a possibility to link tables from

Mobile Service with the tables present on the SQL Database service. And, like Web Site service, it al-

lows to monitor the behaviour of our Mobile Service (e.g., API Calls, Data Out, HTTP Server Errors, SQL

CPU %, SQL Log Writes % and SQL Physical Data Reads %) and choose the type of mobile service

tier of scaling.

The standard mode has same functionalities as basic mode. The difference is that standard mode has

a higher capacity (Maximum unit count : 10) than basic mode (Maximum unit count : 6).

To link NativeMAT to our BaaS, it is required two parameters: application key and service url. We can

grab both on dashboard page of our Mobile Service in Windows Azure Portal. For application key, we

can click on MANAGE KEYS button, which is on bottom. For service url, we go to the right side of the

page and we found it bellow of MOBILE SERVICE URL label. Afterwards, we can instantiate our service

(listing 3.11) and start calling methods and execute queries.

Listing 3.6: Instantiate the constructor

Mob i leServ i ceC l ien t mCl ient = new Mob i leServ i ceC l ien t ( ServiceURL ,

Appl icat ionKey , t h i s ) ;

3.1.4.1 Database

The data of a Mobile Service can be handled in two different manners depending on which type of

database it is required. If there is no need of an SQL database, Mobile service is enough since it has its

30 CHAPTER 3. APPLICATIONS DEVELOPED

(a) Free Mobile Service Tier

(b) Basic Mobile Service Tier

Figure 3.10: Different modes of scaling

own storage where we can create new tables as we need, i.e., in Data tab on our Mobile Service we can

build a NoSQL database. During this process, by default it creates tables with only one column (id). Yet,

through scripts (script tab appears when a table is selected on Data tab), we can add more columns to

the table.

In our case, we have a relational database, meaning that it is required a SQL database. Regarding this,

we have two options:

I. modify the name of the previous database schema we used from the previous service. This way,

WebMAT hosted in Web Site service is not going to be able to connect to the database any more

because by default, it only reads databases with the standard dbo schema.

II. import one more time the database and modify the schema name. Thus, it does not affect the

other service.

3.1. WINDOWS AZURE 31

We have this concern in order to make possible the communication with the SQL database. When we

create a Mobile Service named as xpto, it will be capable to connect with the SQL database of Windows

Azure with the same schema name, xpto. Therefore, we were not able to communicate with a database

with a different schema name. We have the snapshots bellow on figure 3.11 to illustrate what we said.

(a) The red mark shows the name of the service

(b) The blue square mark shows the name of the schema (red mark)

Figure 3.11: The name of the service and the name of the database schema is exactly the same.

Furthermore, even with SQL database server with the schema name, Mobile Service will not detect

tables automatically. Thus, it is required to create all tables from within the portal with the same name

as those in SQL database. Along this process, the service will check each table if already exists in the

database and upload all its data associated (content, columns and indexes/keys). Later on, we can add

more columns as we want in the exactly.

At this moment forward, we can start to send requests to the server and receive data from it. In addition,

we can assign different constraints to each operation permission (insert, update, delete and read) in

each table, i.e., of who have the permission to do a specific operation on that specific table:

• Everyone

• Anybody with the Application Key (this one is selected by default)

• Only authenticated Users

• Only Scripts and Admins

32 CHAPTER 3. APPLICATIONS DEVELOPED

3.1.4.2 Storage

Storage service consists in three types of service: blob (for large amounts of unstructured data), table

(which is Microsoft’s NoSQL key/attribute store) and queues (provide a reliable messaging solution).

Blob storage service is important for our project since it is the only way to store media files (such as

images, videos and music) in the cloud.

A blob storage service has the following components: account, container and blob. An account can

contain an unlimited number of containers and each container provides a grouping of a set of blobs.

Therefore we need to create a storage account in Windows Azure Storage service. After that, we can

add as much containers as we want, and inside of each container we can add blobs. There are two

ways to do certain operations:

1. Windows Azure Management Portal allows us to add, edit and delete containers (figure 3.12a).

On the blobs side, it just lets us to download, delete blobs and edit some of their properties and

cannot add new blobs to the container.

2. Azure Web Storage Explorer8 lets us do the same operations as Windows Azure with an additional

and important one, which is add new blobs to a container (figure 3.12b).

(a) Windows Azure Management Portal

(b) Azure Web Storage Explorer

Figure 3.12: Two different interfaces to handle with containers and blobs of a specific storage account.

8http://azurestorage.azurewebsites.net/login.aspx

3.1. WINDOWS AZURE 33

To enter in the storage account of Windows Azure through Azure Web Storage Explorer, account name

and key are required. We can grab these information in Windows Azure Management Portal by clicking

on manage access keys button on the bottom of the storage account (see figure 3.12).

Now, to execute CRUD operations (create, read, update and delete) on each blob, we need to create

a new table in the Mobile Service and modify scripts of the operations. In this case, the tables will

not have any data apart from scripts. This way, tables will work as brokers that establish connections

(requests/replies) between the native application and the blob storage account.

3.1.4.3 Authentication

In our project we used Google’s authentication to authenticate users and be able to use NativeMAT and

access the data. It is quite simple to start using this feature with only a few steps.We just need to get

CLIENT ID and CLIENT SECRET. To do that, we go to Google Developers Console9 and then we create

a project (typing a project name and a project id). Once the project is created and opened, we go to

Credentials from APIS & AUTH on left sidebar and click on Create new Client ID, which will pop-up a

dialog box where we have to fill REDIRECT URIS and JAVASCRIPT ORIGINS fields. To do that, we get

Mobile Service URL on dashboard of our Windows Azure Mobile Service. On REDIRECT URIS field,

we just append to the url “login/google” (see figure 3.13).

Figure 3.13: Client ID result

To display Google’s authentication window, we just do the following:

Listing 3.7: Call the login method

mClient . l o g i n ( Mob i l eServ i ceAu then t i ca t i onProv ide r . Google , new

UserAuthen t i ca t ionCa l lback ( ) {

@Override

p u b l i c void onCompleted ( Mobi leServiceUser arg0 , Except ion arg1 ,

Serv iceFi l te rResponse arg2 ) {

/ / Here you can w r i t e a piece of code to show a message

where you v e r i f y i f i t occurs an except ion or not

}

} ) ;

9https://code.google.com/apis/console/

34 CHAPTER 3. APPLICATIONS DEVELOPED

And through the object “arg0” of “MobileServiceUser” type, as we can see in the second snippet of code

(listing 3.7), we can get the user’s ID that Google’s provider returns.

3.1.5 Optimizations

In these section we will see what we have done to optimize NativeMAT and WebMAT for both user exper-

ience and performance. One tool that we used to give us insights of WebMAT is Google’s PageSpeed10.

It can help to identify, understand and eliminate some issues that are compromising the web applica-

tion load time. Other than that, it analyses the submitted URL and provides us suggestions regarding

two sides: mobile device and desktop (figure 3.14). Still, it rates WebMAT from 0 to 100, regarding his

parameters of evaluation (e.g., standard rules) that an application has to obey.

Figure 3.14: Google’s PageSpeed recommendations

On mobile side, it has two categories: Speed and User Experience. On desktop side, it only has

Suggestions Summary category. On each side, Google’s PageSpeed splits each category into three

categories: should fix, consider fixing and Passed Rules. In each suggestion/recommendation we can

see details about the issue that should be fixed. Those details help us to understand in detail what are

the problems.

One of the Google’s recommendation we took into account was the render-blocking of JavaScript that

means that once we have external scripts, we should avoid them. Before the page rendering in the

browser, the parser will parse DOM tree. Whenever it encounters a script, the parser will execute it first,

and only after that, the parser will continue. If the script is external, it can cost milliseconds, i.e., it is

10https://developers.google.com/speed/pagespeed/insights/

3.1. WINDOWS AZURE 35

necessary to wait for resources downloading, which means that there will be more network round-trips

and by consequence, it will delay the page rendering. To avoid this, we download resources and place

them locally and available.

Leverage browser caching was another tip that Google gave us. By using browser cache, as we already

discussed in section 3.1.3.3, we can reduce the number of requests to the server and speed up applic-

ation rendering.

Another relevant suggestion was the images optimization. And as we previously said, when we click on

“Show how to fix”, Google’s PageSpeed shows what images are causing more slow downs, i.e., what

are the images that has a big size and can be optimized. The following section will show how we did

that. Once our applications are for tourism, images are the main asset. Even though, images are very

used in many applications to make them more attractive and/or they might be very useful:

1. as an action/option - developers cannot have enough space to have the word “save” instead of an

icon that represents the same thing and users understand.

2. to show something that can help users understanding on what they are looking for. For instance,

in applications for tourism, an image of PoI is important because is very helpful for user.

Besides, applications for tourism can contain a lot of data, namely images. And loading all the data at

once can be very tough for both devices and servers. For example, Facebook does not load all news

feeds, otherwise devices could crash and servers would have much computation to do needlessly. To

avoid this constraint, we used a well-known approach called Infinite Scrolling (also known as Endless

Scrolling or Lazy Loading) and which we are going to see further down.

3.1.5.1 Images

Images are what weigh more in an application page. They are responsible for most downloaded bytes on

a page. Therefore, optimizing images can often yield some of the largest byte savings. By consequence,

it can improve performance because there are less bytes to download, meaning that rendering might be

faster. Most importantly, images are a crucial point where we can improve performance without touching

on other features. The intention is to reduce the size of the images but without losing as much quality as

possible. In our case, when a user clicks on a PoI, he might want to see images in a bigger size, so they

must have enough quality to do that. Beyond this, the purpose is also to save storage or transmission

time, and costs.

Thereby, we decided to utilize Preview application of Apple to do compression after doing a set of

experiments between kraken.io11, JPEGmini Lite12 and Preview13. kraken.io and JPEGmini Lite are

limited on size. In other words, if we have an image with a size of 7 MB, we cannot use them unless we

have a premium account. In addition, compressing one original image using the three different tools that

we mentioned previously, we obtain three different sizes as we can see on table 3.1.

11https://kraken.io12http://www.jpegmini.com13http://support.apple.com/kb/HT2506?viewlocale=en_US&locale=en_US

36 CHAPTER 3. APPLICATIONS DEVELOPED

Statue of Fernando PessoaSize

Original Preview Kraken.io JPEGMini Lite137 KB 73 KB 134 KB 118KB

Table 3.1: Sizes obtained from the original after compression with the different tools

Furthermore, the optimization did not meet the expectations. For example, Kraken.io did not compress

the image at all as we can see in table 3.1. Unlike Preview, with JPEGmini Lite and kraken.io, we do

not control the size of the resulting compressed image, i.e., they simply compress the image and we

cannot modify to a bigger or smaller size. With preview, there is the possibility to choose the format

that we want to save such as TIFF, PNG, JPEG and JPEG-2000. We chose JPEG format because the

user can adjust the compression parameters so that we can achieve a compression more acceptable.

At the previous compression, due to the size of the original image, we cannot clearly see the gain of

compression using the three tools, mainly using the Kraken.io. In this sense, this time we will do with an

image with a bigger size (table 3.2).

Roman ruin of PisesSize

Original Preview Kraken.io JPEGMini Lite3,4 MB 996 KB Premium Account 2,8 MB

Table 3.2: Sizes obtained from the original after compression with the different tools

Using Kraken.io to compress this image it is required a premium account that allows us to compress

images up to 10 MB. On the other hand, there is no big difference between the original and JPEGMini

Lite sizes, with a meaningless tax of compression of 12,2%. Even in the previous experiment (table 3.1),

the tax of compression is approximately the same. Until now, the only tool that seems to worth, it is

Preview with a tax of compression of 69,1%.

Regarding JPEG-2000, it also allows us to adjust the size. The difference is that we can compress

even more than JPEG. However, we want to avoid compressing overly because the more compression

the image has, the more lossy of quality it would have. Since app cache (discussed in section 3.1.3.3)

has only 5 MB of storage, we establish a maximum size of 1 MB. Sometimes (exceptional cases) is not

possible to meet this requirement with JPEG, so we utilize JPEG-2000 as shown in table 3.3.

SizeOriginal Preview (JPEG) Preview (JPEG-2000)24,5 MB 2,1 MB 412 KB

(images 3.16a) (images 3.16b) (images 3.16c)

Table 3.3: Sizes obtained from the original after using different types of compression with Preview.

The issue at stake is if this would compromise what users would expect from our application. The

purpose of an application for tourism is to provide PoIs along with their information. Images are an extra

that is very important. So, it would be good enough if the user can see the images where they can

visualize perfectly what they are looking for. Usually, they do not zoom in or out the image to see some

detail. Therefore, the quality of the image has to be preserved depending on what the applications are

3.1. WINDOWS AZURE 37

built for.

Figure 3.15: Original image

Without zoom in (figure 3.15), we can say that the three different images that we got (table 3.3) have

enough quality once that user does not notice that the original image is better than images with JPEG

and JPEG-2000 compression. Only after zoom in 6 times, we can see clearly the difference between

a maximum compression of JPEG (image 3.16b) and JPEG-2000 (image 3.16c). These are good ex-

amples of how much space we can save and, for our purposes, this is not a big loss of quality. Users

can still see perfectly the PoI.

After compression of almost all images, using JPEG compression of Preview we saved much space.

Before compression, we had 289 MB on total of 421 images and after, we had 52,1 MB, i.e., we reduce

the size around 81,97%. Meaning that we saved a significant amount of space.

3.1.5.2 Infinite Scrolling

Infinite Loading is an approach very used nowadays. This approach consists on loading a small amount

of data instead of loading all data (which can be very tough). Users will almost certainly not want to see

all the data, but even though users could need to load all of it on their search. Therefore, it is not a good

practise to load all the data at once. The application should only load a set of data of what user wants to

see whenever user wants, i.e., if a user reach the bottom of the page, it might mean that user wants to

see more. Thus every time this happens, the application loads another set of data until there is no more

data to show.

To understand how does it work we need to know three things:

• the size of the page (or html document height), which tell us what is the maximum height the

scrollbar can scroll - $(document).height()

• the height of the browser viewport to know how much content can be shown - $(window).height()

• how much content has been scrolled. To know that, we get the current scrollbar position which is

the same as the number of pixels that are hidden from the viewport on top - $(window).scrollTop()

38 CHAPTER 3. APPLICATIONS DEVELOPED

(a) Orginal

(b) Preview - JPEG

(c) Preview - JPEG 2000

Figure 3.16: Zoom of the image shown in figure 3.15

Thereby, what we do to know when to load more data is subtracting the height of the document by

window height, which gives us the height of the hidden content. The scrollbar shows up when the height

of the document is bigger than window height, i.e., the content of HTML document is too much to show it

in the window. If this happens, the scrollbar starts on the beginning of the page on position zero. When

the scrollbar reaches the bottom of the page, $(window).scrollTop() value will be equal to the difference

between document and window heights. We used an extra value (called options.bottomPixels) to add to

$(window).scrollTop() in order to load more content earlier. Equation 3.1 demonstrates clearly what we

said before.

$(document).height()− $(window).height() <= $(window).scrollTop() + options.bottomPixels (3.1)

The goal of options.bottomPixels variable is to not make user wait for more content loading. Hence, we

give a better user experience to user.

3.1.5.3 Asynchronous Task

Asynchronous task is a good practice on creating responsive applications. This method is to make sure

that our main UI thread does the minimum amount of work. For example, in our case, we want to load

a listview of PoIs where we have to download their data and correspondent images. If we do both at

3.2. PROBLEMS AND CHALLENGES 39

the same time, it will take a longer duration and mostly, when we have to take into account network

bandwidth. This is a typical example of a possible long task that may hang our application because it

involves unpredictable delays. To not waste too much time waiting on something that might not be so

relevant to the user, at first, we download the data in the main UI thread which last less than images.

Downloading images should be handled in a different thread, i.e., in background (in an asynchronous

task). Whenever it got downloaded the images, they will show in their corresponding position in the list.

This way, we reduce the time that user need to wait and keep user’s engagement because users tolerate

some delays, especially if we provide some progress feedback rather than a frozen application that gives

them no clue what it is happening.

3.2 Problems and Challenges

The application that connects to Mobile Service talked in section 3.1.4 was one of the most difficult ap-

plications to develop. In fact, it was the application with more errors than the web mobile application. I

think that Eclipse and the Windows Azure platform did not help too and we will explain why further down.

And the errors were the following:

1. This error (listing 3.8) showed up because the class which we were trying to run were not found

in the classpath. And normally, to fix this error, we have to check the classpath by going to “Run

Configurations” on menu bar and it would appear a tab called as classpath but, unfortunately this

tab does not appear on an Android application.

Listing 3.8: Classpath error

java . lang . noc lassde f founder ro r : com. m ic roso f t . windowsazure .

mob i leserv ices . m o b i l e s e r v i c e c l i e n t

What we did to solve this was the deletion of the file where we call the class file that is not founded

at runtime and recreated it again.

2. There are errors that are hard to understand how they happened. And the error presented in

figure 3.17 is one of them. With no modifications on the code of the application, sometimes the

application runs perfectly with Windows Azure and sometimes did not and it shows up an error

message (figure 3.17). When the error appeared, we tried thereafter one more time and it worked.

Our guess is that the error is not ours and perhaps, it is normal to happen. To confirm our suspects,

we tried to use the demo available on Windows Azure Portal for download. And it appeared the

exactly same error as NativeMAT.

3. Another error appeared when we tried to use authentication provider (of Google or Microsoft) from

Android SDK provided by Microsoft, it always appeared the error that we show you in listing 3.9.

Listing 3.9: Permission error

40 CHAPTER 3. APPLICATIONS DEVELOPED

Figure 3.17: Bug of Windows Azure

com. m ic roso f t . windowsazure . mob i leserv ices . Mobi leServ iceExcept ion :

Logging i n w i th the se lec ted a u t h e n t i c a t i o n p rov ide r i s not enabled

After spend sometime, we discovered that there was a missing configuration line in AndroidMani-

fest.xml file that enables the application to have access to the internet (listing 3.10).

Listing 3.10: Internet permission

<uses−permiss ion android : name= ” andro id . permiss ion . INTERNET” />

4. Some attempts on accessing the server where our SQL Database is hosted were blocked and

which originated on errors. These blockages were caused by the firewall because the IP address

was not present in the Mobile Services “white list” (granted IP addresses) 3.11.

Listing 3.11: IP Address blocked

F i r e w a l l check f a i l e d . Cannot open server ’ xxxxxx ’ requested by the

l o g i n . C l i e n t w i th IP address ’ xx . xx . xx . xxx ’ i s not al lowed to

access the server . To enable access , use the SQL Azure P o r t a l or

run s p s e t f i r e w a l l r u l e on the master database to create a f i r e w a l l

r u l e for t h i s IP address or address range . I t may take up to f i v e

minutes for t h i s change to take e f f e c t .

5. Windows Azure provides some SDKs14 to help developers to make their mobile applications com-

municate with Windows Azure Storage services. The problem was that those SDKs had some

14https://github.com/azure/azure-storage-java

3.2. PROBLEMS AND CHALLENGES 41

conflicts (as we can see the example on listing 3.12 and 3.13) that we tried to overcome but unfor-

tunately we did not make it. And after a deep research, we figured out a new SDK15 on GitHub16

that can make our Windows Azure Mobile Service to communicate with our storage service.

Listing 3.12: Duplicated file

[2014−04−10 09:17:50 − Mobi leServ ice ] E r ro r generat ing f i n a l a rch ive :

Found d u p l i c a t e f i l e for APK: com/ sun / j e r sey / json / impl / impl .

p r o p e r t i e s

Or ig in 1 : / Users / JALF / Documents / workspace / Mobi leServ ice / l i b s / je rsey−

json −1.13. j a r

Or ig in 2 : / Users / JALF / Documents / workspace / Mobi leServ ice / l i b s / je rsey−

json−1.13−sources . j a r

[2014−04−10 09:28:26 − Mobi leServ ice ] E r ro r generat ing f i n a l a rch ive :

Found d u p l i c a t e f i l e for APK: com/ sun / j e r sey / impl / ap i . p r o p e r t i e s

Or ig in 1 : / Users / JALF / Documents / workspace / Mobi leServ ice / l i b s / je rsey−

core−1.13−sources . j a r

Or ig in 2 : / Users / JALF / Documents / workspace / Mobi leServ ice / l i b s / je rsey−

core −1.13. j a r

Listing 3.13: Certificates not found

[2014−04−09 15:32:25 − Mobi leServ ice ] I n s t a l l a t i o n e r r o r :

INSTALL PARSE FAILED NO CERTIFICATES

[2014−04−09 15:32:25 − Mobi leServ ice ] Please check logca t output for

more d e t a i l s .

[2014−04−09 15:32:25 − Mobi leServ ice ] Launch canceled !

15https://github.com/ChrisRisner/azure-mobile-services16https://github.com

Chapter 4

Evaluation

This section presents the tools used to perform performance tests on both WebMAT and NativeMAT

applications as well as the results obtained from each tool and application. Furthermore, it also dis-

cusses the performance of Windows Azure (with 10, 100, and 1000 users), WebMAT and NativeMAT

applications and shows the results we got using JMeter and Systrace tools.

4.1 Tools

4.1.1 Apache JMeter (WebMAT)

Apache JMeter1 is a tool used to test performance of web applications from Apache. This tool is a 100%

pure Java application and has been widely accepted as a performance testing tool for web applications.

We will go to evaluate the behaviour of our Windows Azure Web Site service through our web application

by increasing requests. To create a load test in JMeter we need to build a test plan that is a sequence

of operations that JMeter will execute. So, we build a simple JMeter test, which involves three elements:

a thread group, a logic controller, and listeners. These elements are very important because each one

has a particular and important role.

Thread group is where we can specify how many threads will execute a set of operations (HTTP re-

quests), i.e., each thread simulates a single user who will send requests to the server. Also, we

can assign how much time each thread will perform the same task on loop count and the ramp-up

period is the time span that JMeter will take to get all threads running.

Logic controllers let us define the order of samplers processing that will occur on a thread. From a

group of controllers, we used a simple controller because unlike other logic controllers do, this one

does not provide any customization or change of loop count or randomization. Simple controller act

as a container who possesses a set of samplers, which allows us to define configurable requests

that can be sent to a server, i.e., samplers simulate a user’s request.

1http://jmeter.apache.org

43

44 CHAPTER 4. EVALUATION

Listeners are really important since they are the elements that will contain the output of the samplers

processed. The output can be viewed in form of tables, graphs, trees or simple text in some log

files. We have the option of saving the output to a file and illustrate the results obtained previously

with a chart.

Also, a non-test element element was used to allows us to capture the HTTP pages of our web applic-

ation in a simple and fast way and add them to the simple controller, i.e., it will record every request

we made to the server. When we open JMeter UI, it comes along with two elements: test plan and

workbench. On the test plan we have to put one thread group and inside of it, a simple controller. The

non-test element can only be created on workbench. Therefore, into it we add an HTTP(S) Test Script

Recorder to record all our actions in the browser.

Additionally, we inserted another element called Gaussian Random Timer. A Timer is an optional ele-

ment but we add it in the thread group with the purpose of turning the test close to reality. By doing

this, instead of hitting the server with an equal time span, the users’ requests will have a more chaotic

distribution. The role of a Timer component is to give time between successive requests that a thread

group makes. And finally, we added three elements from Listeners: View Results in Table, Summary

Report and Graph Results. The first one shows details about each sampler that is executed (e.g., re-

sponse code, response message, latency, success and bytes). On the other hand, Summary Report

has a button “Save Table Data” that shows different data (e.g., bandwidth, rate, count, etc) and which

the information saved are about all aggregated samplers. And Graph Results shows graphically the

results obtained in “View Results in Table” where you can see and understand better the behaviour of

the server. Moreover, we wanted to write the output in a file to analyse later on, so we configured the

data that was going to be saved by selecting the fields showed on “Sample Result Save Configuration”

window (when we clicked on “Configure” button).

By now we have something as illustrated in figure 4.6.

Figure 4.1: An example of all the element needed to do a load test.

Now, we only need a few more steps to start running the test plan. To start recording HTTP requests,

we need to go to network settings on our computer, and create a Web Proxy (HTTP) with the name

“localhost” and port number “9091” for example. So this will send all the requests through the proxy

which will hit the Internet and record everything we do. Meanwhile, we go back to our HTTP(S) Test

Script Recorder element and configure the port with the same port number on “Global Setting”. Then,

we select the simple controller (we have created before) on “target controller” in order to create the

4.1. TOOLS 45

samplers in there and have our test ready to go.

To run different tests and check if there is a point at which a bottleneck may appears or, the server’s

performance degrades, we only modify thread group’s parameters. So, we will do tests of 10, 100 and

even with 1000 users that represent increasing number of users. Results of each test will be shown

further down on chapter 4.2 and we will see if there is any point where performance degradation begins.

4.1.2 Eclipse (NativeMAT)

Eclipse provides a tool called Dalvik Debug Monitor Server (DDMS) to assist developers with debugging,

monitoring and profiling their applications. DDMS, in turn, provides a set of functionalities such as screen

capture on the device, thread and heap information on the device, capture system wide trace. Plus, we

can also see other things such as the system information, network statistics and more as we cans see

in figure 4.2.

Figure 4.2: DDMS interface of Eclipse

So, in DDMS, we used Systrace that is specifically to analyse android application’s performance by

capturing all the actions we do on the application, i.e., all tasks that application is executing. Then, it

will generate a trace file in HTML format that displays execution times of the application processes. We

can only open the generated file in Google Chrome browser. We tried to open it on Safari but it did

not display anything. We could also use the “Start Method Profiling” functionality which use Traceview

tool. This tool also helps developers debug applications and profile its performance. It gathers method

calls and estimates the execution time while we interact with applications. However, we were not able to

handle it perfectly. For example, there are many methods on the output and it is hard to come out with a

conclusion. And apart from that, although the Traceview offers nice graphical user interface, it is really

46 CHAPTER 4. EVALUATION

heavy and because of that, every time we tried to see some details about one method, eclipse crash.

To start using Systrace we just click on “Capture System Wide Trace” button and the “Android System

Trace” window will pop-up. In this window, it is shown several outputs options but we only selected

“View System” and “CPU Load” tags (figure ) in order to be easier to grasp our application behaviour.

Otherwise, it would be very difficult to understand what we are visualizing or what is going on.

Plus, we used Trace class to only track execution of specific applications methods. We just write two

lines of code (shown in listing 4.1), the first line before and the last line after every piece of code that we

want to track. Only in this way, we can clearly see what we are visualizing and evaluate performance of

what really matters and come up with some conclusions.

Listing 4.1: Snippet of code to start and end tracing

Trace . beginSect ion ( ”Name of the process ” ) ;

Trace . endSection ;

The output is not an ordinary file with data in there, it is an interactive file showing timeline for each

thread that developers have marked to see. We can zoom in or out to see in depth some specific

information that might help developers understanding something like an irregular behaviour. If it is done

an enlargement of the timeline, it is possible to navigate forward or backward.

4.2 Results

4.2.1 Web Application (WebMAT)

The tests were made using three devices for two different purposes. The desktop was for running

multiple users at the same time in order to make concurrent requests to the server and check server’s

capacity such as scalability. Smartphone and tablet were used to execute single user tests to make sure

that everything was working as expected (e.g., if they can support perfectly HTML5) on different browsers

such Chrome and Safari, and also to measure at real-time how long does a user take to perform a task,

i.e., to see applications’ performance. The scenario for each test is the following: a user has to choose

the first PoI (within Castle category) that appears in the list and add it to the list of favourites PoIs.

4.2.2 Multiple Users

With the gather of many results obtained from each test that we did so far, we did not find any spot,

during test running, where it appears a clearly degradation or demonstrates a bottleneck. However,

there were internal server errors by visualizing the chart provided by Windows Azure dashboard and by

analysing the View Results in Table file provided by JMeter that gives details about the internal server

errors.

In our first test (figure 4.3), JMeter has launched 10 users (threads) every 1 second in the first 10

4.2. RESULTS 47

seconds after initiation. That is why there is a curve at the beginning of the chart where we see clearly

that there are less requests processed.

Figure 4.3: Chart illustrating test results with number of threads = 10, ramp-up time = 10, and loop count= 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300.

The Listener Results has a limited window to depict every sample. On total, there were 2700 requests

(each user made 135 requests twice). Since it is a lot of requests and JMeter has no more space to draw,

JMeter starts to draw over again in the same window being possible to overlap the previous samples as

we can verify in figure 4.3. On the chart, we can observe that there is some very small declines on the

throughput (green line) but we cannot guarantee that it is a performance degradation because it is not

clear and there is a smooth increase on throughput afterwards. We did these same test five times and

they all gave similar results with an average of 2 minutes 38 seconds of duration and 1 internal server

error (table 4.1). Figure 4.3 matches row number one of the table 4.1.

Test Duration Time Internal Server Errors1 2m25s 22 2m37s 13 2m49s 04 2m28s 25 2m51s 1

Average 2m38s 1

Table 4.1: Time and errors obtained with 10 users.

All of the internal server errors occurred on the same file (“thomepage.php”) but not to all users, which

means that there were some users that had pages retrieved successfully and other users did not. To

confirm these results, we proceeded to a new recording of the same test, and let the JMeter run the 10

users.

Comparing figure 4.3 with figure 4.4, there is a lot of differences. The first one is the number of requests

launched to the server. In this test, there were 900 requests while the previous had 2700. In other

words, it was around 66,7% less of requests. This happening was due to app cache that we mentioned

in section 3.1.3.3. This time, the server did not have the same amount of load, i.e., requests to respond.

Because of that, JMeter could depict all samples in a way that they can be capture at once. Also, the

line depicted by throughput is smoother and without any decline along the test execution. Yet, we had

again internal server errors, as we can see in table 4.2.

With an average of 47 seconds against the 2 minutes and 38 seconds of the previous test, we spare

48 CHAPTER 4. EVALUATION

Figure 4.4: Chart illustrating test results with number of threads = 10, ramp-up time = 10, and loop count= 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300.

Test Duration Time Internal Server Errors1 47s 32 47s 03 48s 04 46s 05 47s 0

Average 47s 1

Table 4.2: Time and errors obtained with 10 users and with Cache.

around 69,7% of execution time to perform the task. The particularity here is that the internal server

errors occurred in two different files (2 errors on “database.php” and 1 error on“view.poi.php”). This time,

we did not get error on “thomepage.php” file because this page it is not required any more once it is

present in the cache. Anyway, these failed requests is perfectly normal to happen in real-life. Our tests,

however, do not seem to show any performance degradation until now but maybe it is because we are

only running a mere handful of users almost simultaneously. So, in order to ascertain that we did not get

any performance degradation, we are going to increase the number users to 100 and even to a more

large scale like 1’000.

As expected, the chart generated with 100 users (figure 4.5) is a mess. However, we can understand

the behaviour of the throughput. By analysing it carefully, we observed that there is no performance

degradation neither a bottleneck. Over time, throughput keeps growing up on a logarithmic scale. About

the errors, they also increase from an average of 1 to 17 as we can notice on table 4.3.

In addition, a peculiarity that we verified remains on time we got. The time has not changed at all. From

10 users to 100 users, it only lasted 7,8 seconds more. And when analyse thoroughly the requests and

duration time of this test and the last two, what we thought at first, perhaps now we may think differently.

4.2. RESULTS 49

Figure 4.5: Chart illustrating test results with number of threads = 100, ramp-up time = 10, and loopcount = 2. Gaussian Timer Random with deviation = 100, and constant delay offset = 300.

Test Duration Time Internal Server Errors1 53s 202 56s 173 56s 224 55s 175 54s 9

Average 54,8s 17

Table 4.3: Time and errors obtained with 100 user and with Cache.

So, on our first test we had an average time of 2 minutes and 38 seconds for 2’700 and on the second

(10 users test without app cache - test 1), we got 47 seconds for 900 request (10 users test with app

cache - test 2). At this very moment, these numbers might mislead our reasoning. That is, we might

think these results are “fair” since both requests and duration time are proportional. But, if we also take

a closer look at this latter test, we have 54,8 seconds for 9’000 requests (100 users with app cache -

test 3), which contradicts what we said before. So, our explanation to this happening lies on the type of

requests that we save in cache. To a better understanding we have the following images 4.6a and 4.6b.

If we pay attention to the numbers of data in and data out, we can see that though data in on test 1

is smaller than test 3, the data out is much bigger. Therefore, the data that the server has to process

on test 3 is greater. This explains why the server has more CPU time on test 3 (with 48.77 seconds)

than test 1 (with 16.09 seconds). Moreover, the duration time of our tests in JMeter has reduced from

test 1 to test 3 unlike the CPU time of the server, which means that we give more work to the server

and less to our desktop. The difference between both tests is the fact that on test 1, the 2’700 requests

include every type of requests but most of all, images requests are included too. On the other hand,

test 3 have 9’000 requests without images requests once they are already in app cache. Also, as we

already mentioned in section 3.1.5.1, they are responsible for most downloaded bytes on a page which

explains the data out of both tests. With app cache, our web application does not need to waste time

downloading images. Unless we request images that are not present in the app cache.

Moreover, not only app cache spares an heavy work for our desktop but also to the server. If we compare

test 1 (with 2’700 requests) with test 3 (with 9’000 requests), it is normal that the server will have more

work on test 3 and present more CPU time. However, if we look at figure 4.6a and 4.7 corresponding

to test 1 (without app cache) and 2 (with app cache) respectively, we can see that we also reduce the

amount of data in on approximately 76,47% as well as data out on 97,43% which is a significant amount

50 CHAPTER 4. EVALUATION

(a) First test - 10 users without using cache.

(b) Third test - 100 users using cache.

Figure 4.6: Snapshots on “monitor” tab of the Windows Azure Web Sites dashboard.

of data that our desktop does not need to deal with and work out.

Lastly, we did one final test with 1’000 users just to make sure that there is no limits with Windows Azure

or any problem. The graph, at the final, it became a totally “mish-mash” of green, red and purple lines.

Therefore, we do not show the graph once it is not understandable. However, we could observe the

behaviour during the test and it behaved just like test 3 that we described before, i.e., one more time

the test did not present any sign of performance degradation neither bottleneck, quite the contrary. The

throughput was even higher each time we increased the number of users on JMeter (table 4.4). Further-

more, the CPU time wasted in this last test was 86,49 seconds which only increased the double (43,61

4.2. RESULTS 51

Figure 4.7: Second test - 10 users using cache.

seconds) comparing with the set of the five tests we did with 100 users (which took 48,77 seconds).

Meaning that, for the double of requests the double of time (as we can see in figure 4.6b and 4.8).

Test #1 Test #2 Test #3 Test #41’116,502 1’187,178 7’011,65 18’364,349

Table 4.4: Thoughput per minute obtained on 4 tests (with 10 users without using cache and 10, 100and 1000 users using cache)

The test last 3 minutes and 32 seconds and got 140 internal server errors in 46’000 requests which

makes only around 0,30% of internal errors. This is an acceptable rate once errors can happen in real-

life as we said previously.

One thing that we need to emphasize is that not all requests were sent to Windows Azure. Most of them

were sent to it, but there were some requests sent to Google Maps since we use its API. That is why,

this test of 1’000 users, JMeter sent 90’000 requests and Windows Azure only received 46’000 (figure

4.8).

4.2.3 Single User

So far, we did tests with multiple users which is only possible using the desktop because there is no tool

to do this kind of experiment using smartphone or tablet. Besides, these mobile devices do not have the

enough resources to hold tests of this dimension. And it does not make sense once a mobile device is

not targeted to do that kind of stuff. However and above all, we also want to see the application’s speed

and responsiveness on mobile environment.

Table 4.5 shows the time two different devices took to preform the task we mentioned at the beginning

of this section (4.2.1). So, we perform three tests (all concerning to the same task) running on differ-

52 CHAPTER 4. EVALUATION

Figure 4.8: Fourth test - 1000 users using cache.

Device Test #1 Test #2 Test #3 AverageDesktop 17,10s 11,06s 10,38s 12,85s

Smartphone 20,36s 15,37s 12,78s 16,17s

Table 4.5: Time obtained from web application running on different platforms using Safari and Chrome.

ent devices and on the same location (to be fair on the conditions such as network signal). Desktop

(MacBook Aluminum) took 12,85 seconds on average while smartphone (Samsung Galaxy S4 mini)

took 16,17 seconds on average. It is normal that smartphones or tablets take longer than desktop since

they are powerless. However, mobile devices can take even longer than that depending on the mobile

network signal, mainly, when they are on the move. Indeed, they can be in a place with a very weak

bandwidth and never obtain any response.

Another aspect that we can notice in table 4.5 is the fact that the first test lasted much more than the fol-

lowing two tests. This is because that the first test is the first time that user enters in the web application

and there is nothing in cache. After the first entrance, the app cache loads all resources mentioned in

the manifest file. So the next time user enters, it would send less requests to the server and it would last

less time once that it does not have to download resources that are present in cache.

4.2.4 Optimizations

Some optimizations were made but we cannot see so well or it is not well-perceived using JMeter.

Since we followed some useful and important Google’s recommendations to increase the speed of web

applications, we also used Google’s PageSpeed to measure it. For example, as we mentioned in section

3.1.5, we put some resources available locally in order to jump roundtrips and spare some time. Image

4.9 shows a small improvement in WebMAT, perhaps because it only gains some milliseconds.

Yet, the consequences can be deepen once that resource might not be available and it can be harmful

4.2. RESULTS 53

(a) External jquery JavaScript files.

(b) Local jquery JavaScript files.

Figure 4.9: Snapshots on “monitor” tab of the Windows Azure Web Sites dashboard.

for WebMAT’s quality.

54 CHAPTER 4. EVALUATION

4.3 Native Application (NativeMAT)

Native applications lives in the mobile devices. Thereby, everything related with frameworks, we do not

need network to display the widgets and/or layouts which will contain the information. Therefore, it is

normal that the cloud receives less requests than an application that lives in there. The scenario used

to do our tests was similar to WebMAT: a user has to choose the first PoI (within Castle category) that

appears in the list and add it to the list of favourites PoIs.

We effectuated two experiments (each one with three tests): (1) without any kind of optimization and (2)

with optimization on images by reducing their size but without loosing much quality. And the result we

have got are in table 4.6.

Test #1 Test #2 Test #3 AverageExperiment #1 32,13s 25,95s 24,89s 27,66s Image 4.10Experiment #2 21,04s 21,95s 20,77s 21,25s Image 4.11

Table 4.6: Time obtained from mobile application

What we can clearly see in table 4.6 is that there was a difference of 6 seconds on average between

the first experiment and the second. When we look at the numbers, it does not seem a big difference

theoretically speaking. However, on practice it might be the difference between tolerable and not toler-

able. In addition, if we add even more tasks to do in one scenario, it is very likely that the time difference

will be even bigger. By analysing these results, we can say that reducing the bytes of the images that

NativeMAT has to download can boost its performance.

Another aspect to take into account is that the task that deals with images is asynchronous. As we

discussed in section 3.1.5.3, a key to GUI performance on applications lies on moving as much work as

possible from the main thread to the background. Asynchronous tasks are targeted for long-running or

CPU-intensive tasks such as tasks that are responsible to fetch images. If we look at figure 4.10b and

4.11b, we can see that almost all pairs of slices between one experiment and the other, last a similar

time frame (varying just a few milliseconds), which is perfectly normal that they do not have the same

time due to the network bandwidth despite of being tested on the same conditions (same place and

smartphone).

However, even using asynchronous tasks, we have a discrepancy of 5955,685 milliseconds (≈ 6 seconds).

The two experiments only start to diverge when the application starts to draw frames of the images of the

correspondent PoIs (figure 4.10a - 13,5 seconds; figure 4.11a - 14 seconds). ViewRoot.performTraversals

is responsible for drawing and it always run inside of the UI thread’s context. Therefore, this will com-

promise the responsiveness of the application. For example, performTraversals blocks is where we can

see how long the application spent drawing a frame. So, on first experiment it took 12’057,196 milli-

seconds and the second took 6’251,061 milliseconds. Only after this time, we can continue to move

forward or start a new task. And Now, considering this reasoning and results we would say that images

optimization is so important as running tasks in background when we are dealing with an application

that has to handle many images.

In the ndroid.systemui thread, we can see deliverInputEvent blocks, which indicate how many touch

4.4. NATIVEMAT AND WEBMAT 55

(a) Graphical View

(b) ndroid.systemui (Process 1052) (c) m.mobileservice (Process 7228)

Figure 4.10: Snapshots took from “trace.html” file generated from experiment #1 using Systrace tool.

(a) Graphical View

(b) ndroid.systemui (Process 1052) (c) m.mobileservice (Process 15795)

Figure 4.11: Snapshots took from “trace.html” file generated from experiment #2 using Systrace tool.

events we did to perform the task and how long the application spent on those touch events. And, we

can verify that we did exactly the same number of touches (6) for both experiments.

To finish, Systrace was useful to not only confirm that the application is spending too much time drawing,

but also to help us find another potential performance bottleneck.

4.4 NativeMAT and WebMAT

Comparing NativeMAT using BaaS and WebMAT (that is SaaS) in all our tests that we did, NativeMAT

has been defeated on performance by WebMAT as we can check on tables 4.6 and 4.5. There is no one

56 CHAPTER 4. EVALUATION

single test where native defeats web application regarding the scenario we described in sections 4.2.1

and 4.3. However, this is not valid for other applications not targeted to tourism or that needs to load

a significant amount of images. Because as we verify in previous section, the native application only

waste a significant amount of time on images rendering. Therefore, if most of the application handles

with text data, then it will have a superior performance.

Chapter 5

Conclusion and Future Work

5.1 Conclusion

Mobile Cloud Computing brings with itself some changes to mobile applications. With it, it is required

network connection which compromise mobile devices’ performance once it is unpredictable. This way,

both web and native mobile applications may suffer from this network issue. However, in order to un-

derstand the impact it can cause to both we developed these two types of applications using Windows

Azure.

Windows Azure is a good platform for (mobile) developers to create application towards to Mobile Cloud

Computing paradigm. It provides a variety of services according to different needs and requirements

as well as the required SDKs for mobile application to be able to communicate with its services. The

services we used to communicate were Web Site and Mobile Service that let us to create an SaaS and

a BaaS respectively.

In this sense, we developed and deployed an HTML5 application (WebMAT) to our Web Site service us-

ing WebMatrix tool, and an android application (NativeMAT) linked to our Mobile Service. Through these

applications, we did some tests that showed that there is no performance degradation and bottleneck

from Windows Azure when increasing the number of users and requests. Moreover, the performance

results of both WebMAT and NativeMAT brings another meaning to the though that performance of nat-

ive mobile applications is better than web mobile applications. Since native applications had all the data

locally, they did not depend on external resources, which result in a remarkable performance.

Now with Mobile Cloud Computing native applications have significant performance loss once that they

are worse than web applications in the tests we have performed. One of the reasons for this is the pro-

gress reached with HTML5 that can leverage performance significantly by using app cache (one of its

features). Yet, the most important reason is image rendering. As we verified in section 4.2, NativeMAT

spent more time on rendering once this task had to done in the main thread, which can delay the current

task and the followings. In regard to mobile applications for tourism (having many images), we conclude

that web applications can have a better performance than native applications.

57

58 CHAPTER 5. CONCLUSION AND FUTURE WORK

5.2 Future Work

Apply these tests to other multimedia resources such as videos and audio files to verify if the results are

the same that we got in this dissertation.

Still, since hybrid applications are web applications but wrapped inside of a native container, then per-

haps hybrid applications would be the best choice between native, hybrid and web applications. With

this type of application, we can take advantage of app cache reaching an identical performance (above

or below) and give look and feel of a native one. Therefore, the next step is the development of an hybrid

application, test the performance in this field of Mobile Cloud Computing, and see if our assumption is

real and obtain better results.

Other than that is to explore some approaches and techniques to help overcoming the image rendering

issue and place native applications with a performance as good as web applications or even better.

Besides this, we also want to do an extension to XIS-Mobile (work being developed by GSI of INESC-ID)

and add the functionality of HTML5 code generation as well as JavaScript and PHP to its framework.

Then, the only thing that developer needs to do is to deploy to the cloud. In addition, extend the Android

part by giving the possibility for developer of generate code that will connect to a backend cloud storage,

in this case to Windows Azure. This way, XIS-Mobile will support the cloud and thus give the opportunity

to explore and take advantage of Mobile Cloud Computing as well.

Appendix A

Applications’ Screen Shots

A.1 WebMAT

Figure A.1: Home screen.

59

60 APPENDIX A. APPLICATIONS’ SCREEN SHOTS

Figure A.2: List of all PoIs.

Figure A.3: Details of a PoI.

A.2 NativeMAT

A.2. NATIVEMAT 61

(a) Home Screen (b) Loading Lists of Categories and Cities

(c) List of categories (d) List of PoIs

Figure A.4: PoIs loading of “Castles” category.

62 APPENDIX A. APPLICATIONS’ SCREEN SHOTS

Figure A.5: Details of a PoI.

Bibliography

[1] Unwto tourism highlights. http://mkt.unwto.org/sites/all/files/docpdf/

unwtohighlights12enhr.pdf, 2012.

[2] Telerik releases everlive, backend services for rapid cross-platform and mobile application devel-opment. http://www.telerik.com/company/press-releases/2013/10/22/telerik-releases-

everlive-backend-services-for-rapid-cross-platform-and-mobile-application-

development, October 2013.

[3] Suyesh Amatya and Arianit Kurti. Cross-platform mobile development: challenges and opportunit-ies. In ICT Innovations 2013, pages 219–229. Springer, 2014.

[4] apprenda. Iaas, paas, saas (explained and compared). http://apprenda.com/library/paas/

iaas-paas-saas-explained-compared/.

[5] Rafael Ballagas, Michael Rohs, Jennifer G Sheridan, and Jan Borchers. Byod: Bring your owndevice. In UbiComp 2004 Workshop on Ubiquitous Display Environments, 2004.

[6] Rohit Bhadauria, Rituparna Chaki, Nabendu Chaki, and Sugata Sanyal. A survey on security issuesin cloud computing. CoRR, abs/1109.5388, 2011.

[7] Eric Bidelman. Capturing audio & video in html5. http://www.html5rocks.com/en/tutorials/

getusermedia/intro/, October 2013.

[8] North Bridge. 2013 future of cloud computing survey reveals business driving cloud adoption ineverything as a service era; it investing heavily to catch up and support consumers graduating frombyod to byoc. http://www.northbridge.com/2013-future-cloud-computing-survey-reveals-business-driving-cloud-adoption-everything-service-era-it.

[9] Raluca Budiu. Mobile: Native apps, web apps, and hybrid apps. http://www.nngroup.com/

articles/mobile-native-apps/, September 2013.

[10] BusinessWire. Feds say platform-as-a-service can save us$20.5 billion annually in federal itcosts. http://www.businesswire.com/news/home/20131120005198/en/Feds-Platform-as-a-

Service-Save-US20.5-Billion-Annually-Federal#.UyLZjdzFm0s, November 2013.

[11] Rajkumar Buyya, Chee Shin Yeo, Srikumar Venugopal, James Broberg, and Ivona Brandic. Cloudcomputing and emerging it platforms: Vision, hype, and reality for delivering computing as the 5thutility. Future Generation computer systems, 25(6):599–616, 2009.

[12] Jason Carolan, Steve Gaede, James Baty, Glenn Brunette, Art Licht, Jim Remmell, Lew Tucker,and Joel Weise. Introduction to cloud computing architecture. White Paper, 1st edn. Sun MicroSystems Inc, 2009.

[13] Rory Cellan-Jones. 4g signal problems. http://www.bbc.com/news/technology-24143735.

[14] Bill Claybrook. Mobile cloud apps vs. native apps: The developer’s perspective. http://www.test.org/doe/, November 2012.

[15] Astec Computing. Mobile & remote working. http://www.asteccomputing.co.uk/services/

mobile-remote-working/.

[16] CLoUD ComPUtING. Cloud computing privacy concerns on our doorstep. Communications of theACM, 54(1), 2011.

63

64 BIBLIOGRAPHY

[17] Barb Darrow. So... do you really need a paas? http://gigaom.com/2013/12/03/so-do-you-

really-need-a-paas/, December 2013.

[18] Hoang T Dinh, Chonho Lee, Dusit Niyato, and Ping Wang. A survey of mobile cloud computing:architecture, applications, and approaches. Wireless communications and mobile computing, 2011.

[19] Xiaopeng Fan, Jiannong Cao, and Haixia Mao. A survey of mobile cloud computing. ZTE Corpor-ation, 2011.

[20] Niroshinie Fernando, Seng W Loke, and Wenny Rahayu. Mobile cloud computing: A survey. FutureGeneration Computer Systems, 29(1):84–106, 2013.

[21] Joao Lopes Ferreira and Alberto Rodrigues da Silva. Mobile cloud computing. In Open JournalMobile Computing and Cloud Computing, in Press, Scientific Online Publishing, 2014.

[22] Google Apps for iOS. http://www.google.com/mobile/ios/.

[23] George H. Forman and John Zahorjan. The challenges of mobile computing. Computer, 27(4):38–47, April 1994.

[24] Armando Fox, Rean Griffith, A Joseph, R Katz, A Konwinski, G Lee, D Patterson, A Rabkin, andI Stoica. Above the clouds: A berkeley view of cloud computing. Dept. Electrical Eng. and Comput.Sciences, University of California, Berkeley, Rep. UCB/EECS, 28:13, 2009.

[25] gartner. Infrastructure as a service (iaas). http://www.gartner.com/it-glossary/

infrastructure-as-a-service-iaas.

[26] Johan Harjono, Gloria Ng, Ding Kong, and Jimmy Lo. Building smarter web applications withhtml5. In Proceedings of the 2010 Conference of the Center for Advanced Studies on CollaborativeResearch, pages 402–403. IBM Corp., 2010.

[27] Dinh Thai Hoang, Chonho Lee, Dusit Niyato, and Ping Wang. A survey of mobile cloud comput-ing: architecture, applications, and approaches. Wireless Communications and Mobile Computing,13(18):1587–1611, 2013.

[28] Markus Jakobsson, Elaine Shi, Philippe Golle, and Richard Chow. Implicit authentication for mobiledevices. In Proceedings of the 4th USENIX Conference on Hot Topics in Security, HotSec’09,pages 9–9, Berkeley, CA, USA, 2009. USENIX Association.

[29] Jeffrey Kaplan. Saas survey shows new model becoming mainstream. Cutter Consortium ExecutiveUpdate, 6(22):1–5, 2005.

[30] Ben Kepes. Understanding the cloud computing stack: Saas, paas, iaas. http:

//www.rackspace.com/knowledge_center/whitepaper/understanding-the-cloud-computing-

stack-saas-paas-iaas/, October 2013.

[31] Simon Khalaf. Flurry five-year report: It’s an app world. the web just lives init. http://blog.flurry.com/bid/95723/Flurry-Five-Year-Report-It-s-an-App-World-The-

Web-Just-Lives-in-It, April 2013.

[32] Abdul Nasir Khan, ML Mat Kiah, Samee U Khan, and Sajjad A Madani. Towards secure mobilecloud computing: a survey. Future Generation Computer Systems, 29(5):1278–1299, 2013.

[33] kinvey. What is mobile backend as a service (mbaas)? http://www.kinvey.com/mbaas-mobile-

backend-as-a-service.

[34] Soeung-Kon Victor Ko, Jung-Hoon Lee, and Sung Woo Kim. Mobile cloud computing securityconsiderations. Journal of Security Engineering, 9(2), 2012.

[35] Karthik Kumar and Yung-Hsiang Lu. Cloud computing for mobile users: Can offloading computationsave energy? Computer, 43(4):51–56, 2010.

[36] Kin Lane. Overview of backend as a service (baas) white paper. 2013.

[37] Yuesong Li and Mark Powell. Html5, a serious contender to native app development or not? 2013.

BIBLIOGRAPHY 65

[38] David Linthicum. Cloud computing. http://www.infoworld.com/d/cloud-computing/paas-

isnt-dying-its-becoming-part-of-iaas-234351.

[39] Rosario Madaudo and Patrizia Scandurra. Native versus cross-platform frameworks for mobileapplication development. 2013.

[40] SC Magazine. Awareness of remote working, cloud computing and use of mobile deviceswill affect businesses in the future. http://www.scmagazineuk.com/awareness-of-remote-

working-cloud-computing-and-use-of-mobile-devices-will-affect-businesses-in-the-

future/article/180320/.

[41] Michael Mahemoff. Html5 vs native: The mobile app debate. http://www.html5rocks.com/en/

mobile/nativedebate/, June 2011.

[42] Sunilkumar S Manvi and Gopal Krishna Shyam. Resource management for infrastructure as aservice (iaas) in cloud computing: A survey. Journal of Network and Computer Applications, 2013.

[43] Lijun Mei, Wing Kwong Chan, and TH Tse. A tale of clouds: Paradigm comparisons and somethoughts on research issues. In Asia-Pacific Services Computing Conference, 2008. APSCC’08.IEEE, pages 464–469. Ieee, 2008.

[44] Keith W Miller, Jeffrey Voas, and George F Hurlburt. Byod: security and privacy considerations. ItProfessional, 14(5):0053–55, 2012.

[45] Damon Oehlman and Sebastien Blanc. Pro Android Web Apps: Develop for Android Using HTML5,CSS3 & JavaScript. Apress, 2011.

[46] Isaac Ogunlolu et al. Html5, the future of mobile applications:: A comparison between html5 ap-plication development platforms and native platforms. 2012.

[47] Amy Pasquarello. Feds say platform-as-a-service can save us$20.5 billion annually in fed-eral it costs. http://www.meritalk.com/pdfs/paas-or-play/MeriTalk_PaaS_or_Play_Study_

Release.pdf, November 2013.

[48] Fredric Paul. Cloud jargon unwound: Distinguishing saas, iaas and paas [infographic].http://readwrite.com/2013/05/08/explained-saas-iaas-paas-infographic#awesm=

~oyQxSt98VvrOwh.

[49] M. Rahman and F. A M Mir. Fourth generation (4g) mobile networks - features, technologies issues.In 3G and Beyond, 2005 6th IEEE International Conference on, pages 1–5, Nov 2005.

[50] Leena Rao. Google’s new html5 chrome apps for gmail, calendar and docs give users offlineaccess. http://techcrunch.com/2011/08/31/googles-new-html5-chrome-apps-for-gmail-

calendar-and-docs-give-users-offline-access/, August 2011.

[51] George Reese. The economics of cloud computing. http://broadcast.oreilly.com/2008/10/

the-economics-of-cloud-c.html.

[52] Andre Ribeiro and Alberto Rodrigues da Silva. Survey on cross-platforms and languages for mobileapps. In 8th International Conference on the Quality of Information and Communications Techno-logy, QUATIC 2012, Lisbon, Portugal, 2-6 September 2012, Proceedings, pages 255–260, 2012.

[53] Andre Ribeiro and AR Silva. Xis-mobile: A dsl for mobile applications. In Proceedings of SAC 2014Conference, ACM, 2014.

[54] Luis Rodero-Merino, Luis M Vaquero, Eddy Caron, Adrian Muresan, and Frederic Desprez. Buildingsafe paas clouds: A survey on security in multitenant software platforms. computers & security,31(1):96–108, 2012.

[55] Margaret Rouse. Infrastructure as a service (iaas). http://searchcloudcomputing.techtarget.com/definition/Infrastructure-as-a-Service-IaaS/, August 2010.

[56] Deepti Sahu, Shipra Sharma, Vandana Dubey, and Alpika Tripathi. Cloud computing in mobileapplications. International Journal of Scientific and Research Publications, 2(8):1–9, 2012.

66 BIBLIOGRAPHY

[57] Elaine Shi, Yuan Niu, Markus Jakobsson, and Richard Chow. Implicit authentication through learn-ing user behavior. In Proceedings of the 13th International Conference on Information Security,ISC’10, pages 99–113, Berlin, Heidelberg, 2011. Springer-Verlag.

[58] Slideshare. Globalsoft technologies. http://www.slideshare.net/IEEEFINALYEARPROJECTS/

cloud-computing-for-mobile-users-can-offloading-computation-save-energy.

[59] Zhexuan Song, Jesus Molina, Sung Lee, Houcheng Lee, Seigo Kotani, and Ryusuke Mas-uoka. Trustcube: An infrastructure that builds trust in client. In David Gawrock, Helmut Reimer,Ahmad-Reza Sadeghi, and Claire Vishik, editors, Future of Trust in Computing, pages 68–79.Vieweg+Teubner, 2009.

[60] Steve Souders. Even Faster Web Sites. O’Reilly Media, June 2009.

[61] Conn. STAMFORD. Gartner executive program survey of more than 2,000 cios shows digital tech-nologies are top priorities in 2013. http://www.gartner.com/newsroom/id/2304615.

[62] Antero Taivalsaari and Tommi Mikkonen. The web as an application platform: The saga continues.In Software Engineering and Advanced Applications (SEAA), 2011 37th EUROMICRO Conferenceon, pages 170–174. IEEE, 2011.

[63] TECHNEWSDAILY. How facebook sells your personal information. http://news.discovery.

com/tech/gear-and-gadgets/how-facebook-sells-your-personal-information-130124.htm,January 2013.

[64] Tyler Thia. Cloud computing boosts remote working. http://www.zdnet.com/cloud-computing-

boosts-remote-working-2062203321/.

[65] tumblr. The native mobile app fallacy. http://ox86.tumblr.com/post/45101804690/the-native-mobile-app-fallacy.

[66] Fred van den Bosch. The future of monitoring data is in the cloud. http://programming.oreilly.com/2013/12/the-future-of-monitoring-data-is-in-the-cloud.html.

[67] Upkar Varshney and Radhika Jain. Issues in emerging 4g wireless networks. Computer, 34(6):94–96, June 2001.

[68] Priya Viswanathan. Saas, paas and iaas in the mobile industry. http://mobiledevices.about.

com/od/additionalresources/a/Saas-Paas-And-Iaas-In-The-Mobile-Industry.htm.

[69] WA Vogels. Head in the clouds - the power of infrastructure as a service. In First workshop onCloud Computing and in Applications (CCA’08)(October 2008), 2008.

[70] Ren Waldura. Yahoo! mojito is now open source. https://developer.yahoo.com/blogs/ydn/

yahoo-mojito-now-open-source-52490.html, April 2012.

[71] Appcelerator white paper. Native vs. html5 mobile app development: Which option is best? 2012.

[72] Dan Worth. Top 10 pros and cons of 4g networks. http://www.v3.co.uk/v3-uk/news/2200131/

top-10-pros-and-cons-of-4g-networks.

[73] Stelios Xinogalos, Kostas E Psannis, and Angelo Sifaleras. Recent advances delivered by html 5in mobile cloud computing applications: a survey. In Proceedings of the Fifth Balkan Conference inInformatics, pages 199–204. ACM, 2012.

[74] Lan Zhang, Xuan Ding, Zhiguo Wan, Ming Gu, and Xiang-Yang Li. Wiface: A secure geosocialnetworking system using wifi-based multi-hop manet. In Proceedings of the 1st ACM Workshop onMobile Cloud Computing &#38; Services: Social Networks and Beyond, MCS ’10, pages 3:1–3:8,New York, NY, USA, 2010. ACM.

[75] Qi Zhang, Lu Cheng, and Raouf Boutaba. Cloud computing: state-of-the-art and research chal-lenges. Journal of internet services and applications, 1(1):7–18, 2010.