Wednesday, May 19, 2010

Agile Methodology

Agile Methodology – An Overview

Gartner defines Agility as "the ability of an organization to sense environmental change and respond efficiently and effectively to that change." Sensing the need for change also includes the proactive initiation of change.

Rapidity of business change is driving a need for agility to respond more effectively to change.Organizations needed to make development process changes should strongly consider using Agile rapid applications development methodologies as part of moving to service-oriented development of applications.

Any enterprise that aspires to respond in real time must have the ability to be agile when needed. Agile is successful because it:
Stresses customer satisfaction
Emphasizes team work (simple, yet effective way to enable groupware style development)
Allows agile programmers communicate with their customers and fellow programmers quite regularly and empowers them to confidently respond to changing customer requirements, even late in the life cycle
Why Agile
Traditionally, software development has been process-centric.
Agile methodologies change the face of software development by giving it a human touch (people over processes).
Customers value ROI and time-to-market.
Agile methodologies help in increasing ROI as well as reduce time-to-market. (incremental working software)
Customers see quality, productivity and turn-around time as a risk when it comes to off-shore software development.
Agile methodologies build trust and confidence as the customer is part of the team and the techniques used reduce the offshore risks. (customer collaboration and embracing change)
Development Firm
Critical Success Factors
Use Continuous Integration to Avoid Integration Headaches
Have Each Site Send Ambassadors to the Other Sites
Use Contact Visits to build trust
Don't Underestimate the Culture Change
Use wikis to contain common information
Use Test Scripts to Help Understand the Requirements
Use Regular Builds to Get Feedback on Functionality
Use Regular Short Status Meetings
Use Short Iterations
Use an Iteration Planning Meeting that's Tailored for Remote Sites
When Moving a Code Base, Bug Fixing Makes a Good Start
Separate teams by functionality not activity
Expect to need more documents.
Get multiple communication modes working early.

Client : A leading supplier of media and technology solutions to connect Health care professionals to customers

Salient Features
The Core / Remote Team Model
Phased Requirements
Project Transitioning
Multiple Technical Approach
Agile Source Control
Agile Testing
Daily & Weekly Meetings
Change Request Management



Agile Requirements & Implementation
1. Planning requires user/programmer cooperation in defining feature benefits and costs. - The Core Team Model, The Remote Team Model.
2. Small releases put out a simple system early and update it often. - Phased Requirements.
3. Simple design value comes from the simplest program that meets requirements. - Multiple Technical approch.
4. Re-factoring has Agile teams correct system design defects and recode as necessary - Multiple approch & Agile source control.
5. Testing has programmers write tests first, and then create software to fulfill test requirements. - Agile Testing
6. On-site customers set priorities, answer programmers' questions and cut documentation costs. - Daily & weekly status meeting.
7. Pair programming has programmers write all production code in pairs, sharing a single machine. - Agile source control
8. Collective ownership implies shared responsibility for code function and quality. - Daily & Weekly Meetings,
Project Transitions, Change Request
Management, The Core Team Model, The Remote Team Model.

Copyright © 2009 Angel