Agile software processes are characterized by unpredictable requirements that change over time. Agile methods promote iterative development in short cycles with customer involvement and frequent review. The Agile Manifesto from 2001 defines key agile principles including valuing individuals, collaboration, response to change, and working software over documentation. Popular agile methods include scrum, extreme programming, feature-driven development, and lean software development.