Agile software development is a collection of practices that minimize unnecessary overheads while still delivering products that meet customer needs. The Agile Manifesto, located at AgileManifesto.org, hosts the twelve founding principles of agile software development. AllAboutAgile.com also lists ten attributes of an agile process. These include the flexibility to handle changing requirements, a focus on frequency and early delivery of products, and active customer involvement and feedback throughout the development process.
Agile processes emphasise regular interaction with the customer and often require software to be delivered early and often. Examples of agile frameworks include Scrum, Extreme Programming and the Dynamic System Development Method. These frameworks contrast with traditional heavyweight processes, such as the Unified Process, which react slowly to changing customer needs or expectations.
One example of an agile process is Scrum. The main components of Scrum are team roles, the prioritized task backlog, the concept of a sprint, and short, regular roundup meetings. The key team role is that of the scrum master, whose duty is to remove impediments that prevent work from being done.
The task backlog is a prioritized list of work, such as feature-, bug- and development-related tasks that are assigned to team members during each sprint. A sprint is a fixed period of time during which assigned tasks must be completed and made ready for review. The main meetings are held for reviewing finished sprints and planning future sprints.
Scrum also has a timeboxed daily morning meeting, where the team members announce their goals for the day and report potential work impediments to the scrum master.