What is Agile?
The Merriam-Webster online dictionary defines agile as:
- marked by ready ability to move with quick easy grace
- having a quick resourceful and adaptable character
"Agile software development" is a overarching term applied to a category of iterative and incremental software development methodologies, the most popular being Extreme Programming (XP) and Scrum. Agile methodologies focus on empowering people to collaborate and make decisions together quickly and effectively. Agile projects have flexibility and adaptability built into their methods.
All development approaches based on Agile methodology have the following in common:
- The belief that requirements for a software product cannot be fully documented at the beginning of a project and are finalized only after multiple, iterative interactions between the customer and the product in development
- Very rigorous practices to insure quality control
- Dependence on “professionals” skilled in performing key jobs efficiently
While each of the Agile methods is unique in its specific approach, they all share a common vision and core values (see the Agile Manifesto)
- iteration and the continuous feedback that provides the necessary information to successively refine and deliver a software system that meets the needs of stakeholders
- continuous planning, continuous testing, continuous integration, and overall continuous evolution of the software and the process so releases can be determined by business, not technical considerations
- simple and lightweight processes (especially compared to traditional "heavyweight" Waterfall methods), which are inherently adaptable to changing requirements and new information
- working software is the primary measure of development progress.
History of Agile
The term "Agile" was introduced in 2001 to categorize a family of development methods that had clearly distinguished themselves from the traditional ones, primarily the Waterfall method. more
The following are common threads that run through all Agile development methods.
Release cycles with Agile are measured in weeks, not months. Each of these release cycles is called an iteration and contains a specific set of new software functions determined by collaboration between the stakeholders' and developers' representatives. This allows stakeholders to stay involved during the course of the project, to provide feedback on what they see, and to provide project course-correction if important new customer or competitive data becomes available.
Agile differs significantly from traditional methodologies in that it is designed to be adaptive rather than predictive. This adaptability means that it is unnecessary to invest in understanding and documenting every requirement up front. The focus is on near-term requirements as functionality is added incrementally. By employing this incremental approach to developing software the risk of "missing the mark" on required functionality is dramatically reduced.
Agile methodologies emphasize frequent and regular communication among team members, including the development team and the extended team of stakeholders.
This communication helps assure that developers are working to deliver what stakeholders want, and that issues that arise during the project can be resolved quickly and with a high level of confidence in the decisions made.
Common Elements of Agile Methods
Shorter, more frequent releases of working software
Adaptability to changing requirements
Frequent communication
