Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Agile Practices and Cloud Computing in Software Development
1. 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
raja_bavani@mindtree.com
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
2. 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.