Cloud computing provides an environment to develop software using agile methodologies and principles including simplicity, customer collaboration, and incremental development that are based on changing requirements, scalable resources, continuous delivery of working software, scrum and kanban in the cloud, the customer experience (CX) cloud, and custom software development.
Software development predates both the Agile Manifesto and cloud computing—but was it as flexible, agile, customer-oriented, and as timely in delivering valuable software in its early stages? Certainly in the dynamic environment of the web, new software development patterns and fields have emerged to facilitate agile development.
Agile emphasizes that a rigid set of methodologies may hamper agile and timely software development. Agile also provides an alternative approach that is based on simplicity, customer collaboration, early delivery of valuable software, and responding to customers' changing requirements. In this article we explore how cloud computing facilitates agile software development.
Simple and Lightweight
One of the agile principles is simplicity:
Simplicity—the art of maximizing the amount of work not done—is essential.
Cloud computing makes so much of the “work not done” possible. A software developer does not have to:
- Provision the computing machines
- Install and configure the development software
- Provision networking
- Provision storage
- Provide capacity planning
- Provide maintenance and upgrades
- Provide patching
- Provide fixes if failure occurs
- Provide client interfaces
Cloud computing lets a developer develop by providing all the prerequisites to software development.
Cloud computing makes out-of-the-box solutions possible. The various software users across diverse industries have different sets of requirements in terms of software functionality, features, and resource capacity. Cloud computing can develop customized solutions for the diverse end-users.
When cloud computing first came about, the priority was in providing software developers the computing machines they needed—but as cloud computing evolved, it has become a hub of customer-collaboration. Timely feedback from customers is important for agile software development, and cloud computing provides the needed platforms and tools to accomplish this. As software markets have expanded, so has the need to collaborate with the customers across the markets, and cloud computing collaboration platforms bring software developers and their customers closer than ever before.
Iterative Development Based on Changing Requirements
The Agile Manifesto emphasizes the importance of being able to respond to change rather than follow a fixed plan, and cloud computing provides an adaptive environment for software development. Agile software development is based on an iterative development approach, an approach that cannot make assumptions about software functionality and features ahead of time. Cloud computing makes iterative development possible by providing the underlying services, platform, infrastructure, networking, and storage in the cloud.
Responding to Changing Resource Capacity Requirements
The main feature of cloud computing that facilitates responding to changing resource capacity requirements is scalability. A software developer can start small and scale as needed by the end-users of the software. Most cloud service providers have scalability built-in, or automated, into their services such that the services scale automatically to customers’ needs. Customer load is unpredictable mostly, even though some statistical predictions can be made based on the past. A cloud computing service is able to provide such an adaptive environment. Load balancers in a cloud service can distribute load to the end-resources and services as needed.
Your Favorite Agile Platforms in the Cloud
With the majority of software services going to the cloud, your favorite agile frameworks such as scrum and kanban also benefit from a cloud environment. YouTrack is an agile project management tool designed for scrum and kanban teams that is hosted in the cloud, and is free for teams of up to 10.
Continuous Delivery of Working Software
The first of the 12 agile principles is:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Cloud computing has made it feasible for software developers to provide their software to end users with high availability. How is cloud computing able to provide early and continuous software delivery while a software package delivered directly to a customer, perhaps even pre-installed on a machine, can’t? It is because one of the cloud computing patterns that a locally installed software can’t provide is the failover system. A failover system makes use of a clustering environment to set up a redundant standby implementation of a primary computing resource. If the primary service were to fail, the clients or users making use of the primary service are automatically switched to the standby service. An end user may not even know that some primary service has failed and has been switched over to an alternative service.
Customer Experience Cloud
Customer experience (CX) management, and user experience (UX) are relatively new fields that design, develop, and deliver a product with customer (or user) experience as the topmost criterion. A new paradigm called the customer experience cloud has emerged to fulfill the needs of customers in a cloud environment. The customer experience cloud uses cloud based tools and platforms to engage with customers and enhance the customer experience. An example of a customer experience cloud is the Adobe Experience Cloud.
Custom Software Development
Custom software development is, “...the process of designing, creating, deploying and maintaining software for a specific set of users, functions or organizations.” Custom software development is made feasible to a great extent by cloud based computing because of the flexibility it provides in designing and customizing software. Custom software development is based on the principles of agile software development and is in contrast to commercial off-the-shelf environment (COTS).