Agile Practices and Cloud Computing in Software Development

2

Click here to load reader

description

Paper presented at International Conference on Advances in Cloud Computing (ACC-2012), July 26-28 2012, Bangalore, India.

Transcript of Agile Practices and Cloud Computing in Software Development

Page 1: Agile Practices and Cloud Computing in Software Development

Proceedings of the International Conference on Advances in Cloud Computing (ACC-2012), July 26-28 2012, Bangalore, India.

Agile Practices and Cloud Computing in Software

Development Raja Bavani

MindTree Ltd., India

[email protected]

Abstract— Cloud computing is one among the emerging areas

and evolving paradigms in IT industry. Some of the service

models under the umbrella of cloud computing such as ‘Software

as a Service’ (SaaS) and ‘Infrastructure as a Service’ (IaaS) have

become popular since 2005. The potential of cloud computing

for optimization of IT assets, sustainability and growth has

triggered businesses to embrace cloud computing as a strategic

theme over the recent years. Over the past decade, the adoption

of agile methodologies has been on the rise in our industry.

The objective of this paper is to explore the benefits of cloud

computing and agile practices in executing IT projects at optimal

costs and share our experience in executing a project at

MindTree for one of the global leaders in Electric and Energy

Management.

Keywords— Cloud Computing, Agile

1. Introduction

The term ‘Software as a Service’ appeared in a document

titled ‘Software as a Service: Strategic Backgrounder’

published in February 2001 by Software and Information

Industry Association, Washington, DC [5]. Even though the

original idea was based on the Application Service Provider

(ASP) model, it matured over the next several years by

encompassing architectural paradigms such as component-

based and service-oriented architectures. Eventually, the

acronym SaaS inspired industry experts in inventing IaaS

(‘Infrastructure as a Service’), and PaaS (‘Platform as a

Service’). Coincidentally, during February 2001, 17

methodology experts convened at ‘The Lodge’ at Snowbird

Ski Resort in the Wasatch mountains of Utah and defined

‘Agile Manifesto’ and ‘Agile Principles’.

2. Agile Methodologies

Agile Software Development and the breed of agile

methodologies (XP, SCRUM, DSDM, etc.) have gained

popularity since 2001. Primarily founded as methodologies

for software projects executed at a single location, agile

methodologies have started showing promising results in

multi-site projects too with many adopters and practitioners

across the globe. The core of agile methodologies is all about

delivering business value in short iterations in a sustainable

pace, adapting to the changing business needs. Agile

methodologies focus on early delivery of working software,

and consider working software as the primary measure of

progress [1, 3]. Agile teams create an environment that

responds to changes by means of being flexible and nimble.

According to the 2011 CHAOS Manifesto from the Standish

Group, Agile projects are successful three times more often

than non-agile projects.

3. Cloud Computing

The power of virtualization coupled with the initial

experiments done in grid computing coupled with service

orientation has opened up several opportunities in cloud

computing. According to the National Institute of Standards

and Technology, Cloud computing is an evolving paradigm.

In Jan 2012, the Open Group published the first cloud

computing standard called SOCCI (Service Oriented Cloud

Computing Infrastructure framework) and it outlines the

concepts and architectural building blocks necessary to

support SOA and Cloud initiatives. The IT community

expects to see new standards related to Cloud Computing over

the next five years. Meanwhile, some of the industry reports

indicate positive market trends as well as future opportunities

in cloud computing arena [2, 4, 6].

4. Agile and Cloud

Applying the design paradigms of cloud computing such as

service-orientation in software projects is fundamental to

building modern software products and applications. Also

executing such projects using agile practices is a practical

approach to deliver results. While doing so, there is an

opportunity to optimize costs by means of leveraging an

appropriate cloud infrastructure and setting up the

development, test and production environments.

Implementation of agile practices ensures early visibility in

projects and encourages teams to fail fast. This helps agile

teams make necessary course correction iteration after

iteration. On the other hand, cloud platforms ensure minimum

investment. By choosing cloud platforms project teams can

fail cheap. Consequently adherence to agile practices and

considering a cloud platform provides ‘fail-fast, fail-cheap’

advantage.

5. Case Study

This is about a software development project we executed at

MindTree for a global leader in Electric and Energy

Management domain. The objective of this project was to

create a platform to build an application store which can

Page 2: Agile Practices and Cloud Computing in Software Development

Proceedings of the International Conference on Advances in Cloud Computing (ACC-2012), July 26-28 2012, Bangalore, India.

enable the sale and purchase of automation designs. We

envisioned this project in two phases on Microsoft Azure

platform using agile practices. In the first phase we planned

to release the application store platform to internal

departments and seek feedback and release an enhanced

version to the partners and customers. This was a new

concept for our customer and hence the preferred approach

was to invest prudently in this project. Hence planning for a

large capacity of infrastructure upfront was not an option. On

the other hand, we had to come up with an extensible

architecture which can provide access to worldwide users.

We formed a team of six comprising of an architect, two leads

and three developers. The tools and technology stack of this

project consisted of ASP.Net 4.0, Ajax Control Toolkit,

JQuery, Parallel Task Library (PTL), Microsoft Extensibility

Framework (MEF), Windows Communication Foundation

(WCF) 4.0, Windows Azure SDK 1.4, Web Role and Worker

Role, SQL Azure and Azure Storage. MindTree team came

up with a solution and design and our partnership with

Microsoft helped us in having our solution reviewed by

Microsoft team.

We started this project in the month of January 2011. With an

elapsed time of 18 weeks, we planned for 9 iterations of 2

weeks each. In order to execute this project meticulously, we

focused on requirement elicitation during the first 2 iterations.

From the third iteration we started delivering a pre-defined set

of functionality and demonstrated working software to

customer at the end of the iteration. We followed agile

practices and a simplified form of Scrum in order to suit the

project context. We gathered feedback at the end of iterations

through retrospectives and incorporated continuous

improvement in subsequent iterations. With this approach,

we delivered this project on schedule.

The team members were new to agile. For them managing

customer expectations and delivering working software in

short iterations was a new experience as well as a challenge.

From customer standpoint it was a meaningful and

comfortable journey as they were seeing working software

output every two weeks. This provided them visibility and

predictability on the progress of this project.

The objective of the next phase is to integrate this system with

the backend ERP systems of our customer in order to provide

applications store data to ERP systems. This is required to

generate purchase orders and customer bills. At the time of

writing this paper, a team of 9 engineers including one

architect and a technical lead is working on this phase.

6. Conclusions

Iterative and incremental development and agile practices

followed by agile teams enable visibility and predictability.

Cloud computing has opened doors for cost optimization in

the form of incremental investment in software projects.

When we combine cloud computing with agile practices we

can not only increase the success rate of projects but also

optimize the costs.

Acknowledgment

I wish to acknowledge my colleagues Krishnakishore

Bhavaraju, Badal Kotecha and Srinivas Rao Bhagavatula for

sharing their experience in leveraging the benefits of cloud

computing and agile practices in the case study discussed in

this short paper.

References

[1] Alistair Cockburn, Agile Software Development, Addison-Wesley, 2002.

[2] Federico Etro, The Economics of Cloud Computing, The IUP Journal

of Managerial Economics, Vol IX, No. 2, 2011. [3] Jim Highsmith, What is Agile Software Development? CrossTalk, The

Journal of Defense Software Engineering, October 2002.

[4] Martin Tantow, Editor-in-Chief, CloudTimes.org, Cloud Computing: Current Market Trends and Future Opportunities, June 2011.

[5] Software as a Service: Strategic Backgrounder, Software &

Information Industry Association, Washington, DC, Feb 2001. [6] The Economics of the Cloud, November 2010, Microsoft.