Monday, December 19, 2011

Agile Software Development

Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. The Agile Manifesto introduced the term in 2001.

Agile Manifesto

In February 2001, 17 software developers met, to discuss lightweight development methods. They published the Manifesto for Agile Software Development to define the approach now known as agile software development. Some of the manifesto's authors formed the Agile Alliance, a nonprofit organization that promotes software development according to the manifesto's principles.
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
The meanings of the manifesto items on the left within the agile software development context are described below.

Individuals and Interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.

Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.
Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
Responding to change – agile development is focused on quick responses to change and continuous development.

Twelve principles underlie the Agile Manifesto, including:
  • Customer satisfaction by rapid delivery of useful software
  • Welcome changing requirements, even late in development
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Sustainable development, able to maintain a constant pace
  • Close, daily co-operation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances
In 2005, a group headed by Alistair Cockburn and Jim Highsmith wrote an addendum of project management principles, the Declaration of Interdependence, to guide software project management according to agile development methods.

How the Agile methodolgy Works

     The Agile methodology is close to iterative model. Each task is broken into small task and must be completed within short period of time. The period denotes not more than 3-4 weeks. When the time limit goes beyond 3-4 weeks, the task has to be split into smaller tasks.
   As said, the smaller tasks cannot provide a fully developed software or the software cannot meet its requirement, so iterations will purse till the software is performing its intended task.
  Each task is having its requirement gathering, development, unit testing, System integeration testing which is used to develop stable software.
 The Agile methodology comes by bringing collobration among team members, Customer collabration and by responding to change.
 Once each part of the software is developed, we can integrate them as working software which performs its intended functionality.

Agile development model would go like this.

1. The software is split into smaller modules which could be done by 3-4 weeks
2. Team is assigned to each task where team is having 6-9 members
3. A representative is assigned to each team on behalf of the stake holders.
4. Development would be done in daily basis
5. Review on the development will be done by conductiong team meeting including differnt modules - All modules would gather together to discuss about their progress, clarifications and challenges
6. Development activity will be done and testing will begin on each modules.

Agile development method suitability



Suitability

Large-scale agile software development remains an active research area.
Agile development has been widely seen as being more suitable for certain types of environment, including small teams of experts.
Positive reception towards Agile methods has been observed in Embedded domain across Europe in recent years.
Some things that may negatively impact the success of an agile project are:
  • Large-scale development efforts (>20 developers), though scaling strategies and evidence of some large projects have been described.
  • Distributed development efforts (non-colocated teams). Strategies have been described in Bridging the Distance and Using an Agile Software Process with Offshore Development
  • Forcing an agile process on a development team
  • Mission-critical systems where failure is not an option at any cost (e.g. software for surgical procedures).
The early successes, challenges and limitations encountered in the adoption of agile methods in a large organization have been documented.
In terms of outsourcing agile development, Michael Hackett, Sr. Vice President of LogiGear Corporation has stated that "the offshore team ... should have expertise, experience, good communication skills, inter-cultural understanding, trust and understanding between members and groups and with each other.







1 comment: