As mentioned in Key Concepts in Modern Application Development, agile software development (often referred to as "Agile") is a set of principles guiding the production of software that focusses on:
These principles are laid out in a document known as the manifesto for Agile software development.
Agile is intended to be very simple and flexible but it can bring significant benefits such as:
Agile's iterative approach and short feedback loops shorten development cycles and enable you to quickly switch priorities based on changing customer requirements and market conditions.
An Agile approach facilitates early and frequent feedback, maximizing the likelihood that the software delivered is exactly what the customer needs.
A combination of the frequent feedback and iterative approach produces another benefit. At the end of an iteration, if stakeholder feedback indicates that the software produced in that iteration is not on target to meet customer requirements, the work done in that iteration can be abandoned and developers can adopt a different approach in the next iteration. The amount of development time lost in such a case would be only one iteration, typically two weeks, which is much less than would be wasted if the same issue arose when following the waterfall model.
A key principle of Agile is that testing is integrated throughout the lifecycle.