Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Proceedings of the International Conference on Advances in Cloud Computing (ACC-2012), July 26-28 2012, Bangalore, India.
...
Proceedings of the International Conference on Advances in Cloud Computing (ACC-2012), July 26-28 2012, Bangalore, India.
...
Upcoming SlideShare
Loading in …5
×

Agile Practices and Cloud Computing in Software Development

467 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Agile Practices and Cloud Computing in Software Development

  1. 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. 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.

×