A Roadmap for Software Engineering for the Cloud: Results of a Systematic Review

A Roadmap for Software Engineering for the Cloud: Results of a Systematic Review

Abhishek Sharma (University of Calgary, Canada) and Frank Maurer (University of Calgary, Canada)
DOI: 10.4018/978-1-4666-2503-7.ch003
OnDemand PDF Download:


This chapter presents the results of a systematic review from existing literature in software engineering for cloud-based applications and describes what the research community thinks about the effects of introducing cloud computing into a software development process. In this systematic review, the authors describe the challenges cloud computing poses for software development. They particularly investigate whether agile methodologies are beneficial or not in developing software that will be deployed in the cloud. In their results, they found that industry practitioners in their blogs and self-reported reviews indicate that agile development and cloud computing goes well together and that further investigation is required to confirm this claim.
Chapter Preview

What Is Cloud Computing?

Before presenting our review, let us understand what cloud computing is. The US National Institute of Standards and Technology (NIST) defines cloud computing as:

A model for enabling ubiquitous, convenient, 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 provider interaction.-The NIST definition of cloud computing, 2011

The NIST definition is one of the most comprehensive definitions and is widely referenced. Furthermore, this definition describes cloud computing as having five essential characteristics, three service models and four deployment models. The essential characteristics are:

  • On-Demand Self-Service: Computing resources can be acquired and used at any time without requiring human interaction with each services provider. Computing resources include processing power, virtual machines, storage etc.

  • Broad Network Access: Above mentioned resources can be accessed over a network using heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

  • Resource Pooling: The computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of transparency in it, since a consumer can decide the amount of resources that are required. The customer generally has no control or knowledge over the exact geographical location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).

  • Rapid Elasticity: A user can quickly scale out on resources, and these resources can be rapidly released to scale in. To the consumer end, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.

  • Measured Service: Cloud systems automatically control and optimize resource use by leveraging a metering capability on metrics like CPU hours, bandwidth, storage etc.

The above-mentioned characteristics apply to all the clouds, but abstraction at service level differ at the provider level. The level of abstraction is defined in the service models provided by NIST:

Complete Chapter List

Search this Book: