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.