Agile is basically an alternative approach to the software
project management that is quite different from the traditional waterfall model
that is mostly practiced by software farms globally. We are now coming across
various hot methods like Crystal, Extreme Programming (XP), Scrum, Adaptive
Software Development, etc. All of these team up to form the agile software
development. Agility is important not only for the software development
methodologies, but also concerning any organization. Agility is the keyword for
survival of the organizations in the near future.
Agile methods are based on real time communication between
the programming team and its customers. The customers normally include project
managers, analysts, and actual customers. All of them communicate face-to-face
without putting much emphasis on written documentations. This is a key emphasis
area for Agile Development and is a point of criticism. The team resides in an
arrangement or enclosure wherein they can freely communicate with each other.
The enclosure also may contain Quality Assurance Engineers, Graphics Designers
and respective managers.
Most of the agile software development methods call for
minimizing the risk by developing software in short modular boxes called
iterations. Each of these iterations is by itself a mini software project and
follows all the standard phases of the software project life cycle, such as
project planning, requirement analysis, system design, code generation, testing
and documentation. Completion of any iteration is followed by review of the
project priorities by the project team.