An approach to software development that is iterative, adaptive, and responsive to the particular needs of the client, who is considered a full member of the development team. In practice, this generally means the use of flexible, self-organizing teams whose methods can evolve with increasing knowledge of the project and the changing requirements of the customer. The 2001 Agile Manifesto states strong preferences for ‘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’. At bottom the concept of ‘agility’ is based on a view that software is a product unlike any other.
Various frameworks for agile working have been defined, for example Scrum, XP (eXtreme Programming), and ASD (Adaptive Software Development).