Agile software development describes a set of principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. These principles support the definition and continuing evolution of many software development methods.
The term agile was adopted by the authors of the Manifesto for Agile Software Development (often referred to as the Agile Manifesto for short). Usually written as Agile (with a capital A), this is increasingly seen in normal sentence case (as presented in this article).
Iterative and incremental software development methods can be traced back to 1957. Evolutionary project management and adaptive software development emerged in the early 1970s. During the 1990s, a number of lightweight software development methods evolved in reaction to the prevailing heavyweight methods that critics described as heavily regulated, planned, and micro-managed. These included: from 1991, rapid application development; from 1994, the unified process and dynamic systems development method (DSDM); from 1995, Scrum; from 1996, Crystal Clear and extreme programming (XP); and from 1997, feature-driven development. Although these originated before the publication of the Manifesto for Agile Software Development, they are collectively referred to as agile software development methods.
In parallel with these developments in software development, similar changes were underway with lean and agile manufacturing and in aerospace.
The Manifesto for Agile Software Development