Introduction
Agile is a relatively new development methodology, that is based on the iterative and incremental development model.
For a long time development and project managers followed the waterfall
method where they compared software development to a manufacturing line.
That is they wanted each stage of the development life-cycle to be
complete before the start of the next stage.
It took decades before they realized that developing software products
was a lot more volatile process than that, there are relatively few if
at all any software development projects that could be run through these
various stages one after the other. The changes in scope, budget are
continuously changing.
Software development is more like the development of a new product as
apposed to a production line. Also there are many over laps between the
various stages of development. By Incorporating these overlaps in your
development life-cycle leads to reducing the cost of change.
In the early nineties the Japanese manufacturing companies began to
practice lean manufacturing technics such as JIT. This improvement in
the manufacturing industry gave rise to the concept of Agile method of
software development.
Definition :-
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.
Over View
In simpler words Agile is a culture and not a process. There are no
defined process as such, but over the years there has been a common set
of approaches have evolved.
Below are a list of common steps between the various approaches.
1. Product owners in association with developers create stories in a backlog
2. Developers estimate based on rough ball park figures
3. Product owners create development cycles of six weeks and arrange stories for each run
4. At the end of each run the development team produces a full implementation of the product
5. The product owner can calculate effort against time taken for the first run to arrive at the velocity.
6. The teams will meet on regular basis every day for short stand up meetings to discuss issues/timelines etc
7. Development cycles will get repeated till completion of the product
Some well know Agile methods
SCRUM
Firstly SCRUM consists of three roles,
SCRUM master - this role overseas SCRUM implementation
Product owner- the stakeholder of the system
Development team - the developers
The scrum is based on the concepts of sprints or development run that
are "timeboxed" which means fixed time periods for each sprint. Each
sprint will complete a set of features from a backlog and at the end of
each sprint a portion of the unfinished product is completed . There is a
meeting at the end of each sprint to review and prioritize the next set
of features from the backlog for the next sprint.
The main benefit of the SCRUM approach is to be flexible and adaptive to change management during the development life cycle.
Issues with Agile
The most difficult aspect of Agile methodologies, comes from its
acceptance in the traditional organizational culture. Agile is aimed at a
removal of the bureaucratic process out of the software development
life cycle. This can be seen as a lack of discipline and makes it less
favorable to organizations. But then organizations need to understand
that bureaucracy doesn't necessarily mean discipline.
Benefits of Agile
- Cost controlling - The main advantages of the agile methodology is of controlling the cost of change.
- Adaptive - shorter development cycles means the project can easily change direction without major loss in time.
References
www.danube.com/docs/Intro_to_Agile.pdf
http://en.wikipedia.org/wiki/Agile_software_development
http://www.techrepublic.com/article/the-benefits-of-agile-development/6310829