In February 2001, software developers met at the Snowbird ski resort in Utah to discuss lightweight development methods (developing software using less resources and less time). They composed and published the Agile Manifesto
The values of the Agile Manifesto are backed by a set of 12 Agile Principles.
In the Agile Manifesto, the authors outline several guiding values:
Individuals And Interactions
> Processes And Tools
Working Software
> Comprehensive Documentation
Customer Collaboration
> Contract Negotiation
Responding to Change
> Following a Plan
Software is developed in incremental, small, rapid cycles resulting in small incremental releases (small changes) with each release building on previous functionality.
During each iteration, the product is being built and tested. Every iteration results with a deployable product
Continuous Integration, Continuous Delivery, and Continuous Deployment are integral part of agile development.
These approaches share the same prefix ‘Continuous’
, which refer to integrating the increment (shippable software) as well as to deploy the outcome automatically and concurrently without the delay involved in traditional sequential development.
When processes and tools are seen as the way to manage product development and everything associated with it, people and the way they approach the work must conform to the processes and tools.
Conformity makes it hard to accommodate new ideas, new requirements, and new thinking.
In the Waterfall model, developers were soloed in their own areas of expertise.
The Agile Manifesto promotes breaking down the walls that separate people working on
a project. Self-organization and motivation are important, as are interactions like co-location and pair programming.
The manifesto represents a shift away from the generation of formal documents. The success is measured by delivering value with the working software.
As the requirements cannot be gathered completely in the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements.
Agile development is focused on quick responses to change and continuous development, integration and deployment. It is more important to develop a right product than to stick with
the plan.
Strengths | Weaknesses |
---|---|
Working software is delivered frequently (weeks rather than months) - is considered a very realistic development approach. | Depends heavily on customer interaction - the project can head the wrong way if the customer is not clear about the requirements. |
Customers, developers and testers constantly interact with each other: Face-to-face conversation instead of reading the documentation. | Documentation is done at later stages. |
Regular adaptation to changing circumstances. | Only senior programmers are capable of engaging in this kind of development. |
Or project teams whose number of members fluctuates. | |
Even late changes in requirements are welcomed. |
Over the years, many agile frameworks have emerged:
Scrum and related variants continue to be the most common Agile approach used by organizations (https://stateofagile.com , 2020 report).
Scrum and related variants continue to be the most common Agile approach used by organizations (https://stateofagile.com , 2021 report),