Agile software development is an umbrella term for a family of methods that build software in short, repeated cycles rather than in one long sequential pass. Instead of specifying everything in advance and delivering at the end, agile teams produce small increments of working software, gather feedback, and adjust. The approach was named and given a shared statement of intent by the 2001 Manifesto for Agile Software Development, signed by seventeen practitioners.
The Manifesto sets out four values that define the agile mindset: “Individuals and interactions over processes and tools,” “Working software over comprehensive documentation,” “Customer collaboration over contract negotiation,” and “Responding to change over following a plan.” The authors stress that the items on the right still have value, but that they place more weight on the items on the left.
Twelve supporting principles flesh out the values. They include satisfying the customer “through early and continuous delivery of valuable software,” welcoming “changing requirements, even late in development,” delivering working software “frequently, from a couple of weeks to a couple of months,” and the idea that “the best architectures, requirements, and designs emerge from self-organizing teams.” Working software is named as “the primary measure of progress.”
Agile is an umbrella, not a single recipe. Scrum, Extreme Programming, and Kanban are all agile methods that share these values while differing in their concrete practices, and they stand in contrast to the sequential waterfall model that agile was reacting against.