Agile software development is a collection of methodologies used to manage teams of developers. It advocates adaptive planning, evolutionary development, early delivery, continuous improvement, and it encourages rapid and flexible response to change. People and communication are considered more important than tools and processes.
Agile emphasizes asking end users what they want, and frequently showing them demos of the product as it is developed. This stands in contrast to the "Waterfall" approach, specification-driven development, and what Agile practitioners call "Big Up-Front Design". In these approaches the features are planned out and budgeted before development starts.
With Agile the emphasis is on "agility" - being able to quickly respond to feedback from users and other changing circumstances.
The agile software development places its emphasis on four core values:
- Preference on team and individual interactions over tools and processes.
- A working software over exhaustive documentation.
- Collaboration with customer is given more importance than contract negotiations.
- Response to changes over following a plan.
There are many different flavors of Agile, including Scrum and Extreme Programming.