Agile software development
Agile software development (or simply Agile) is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
(TO DO: expand, organize, cross-reference, illustrate.)
Contents
Description
Agile promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.
The Manifesto for Agile Software Development, also known as the Agile Manifesto, first introduced the term agile in the context of software development in 2001.
Agile versus Waterfall
Agile is intended to improve upon the Waterfall model.
One of the differences between agile and waterfall is the approach to quality and testing.
- In the waterfall model, there is always a separate testing phase after a build phase
- In agile development testing is usually done concurrently with, or at least in the same iteration as, programming
Iterations
Iterations are repeating units of time spent on units of work. Terminology and length of time vary from team to team.
A sprint is commonly defined as a two-week unit of work.
- Sprint planning: before the sprint begins, ask:
- What can I (the individual software developer) accomplish in the next two weeks?
- What can I (as team leader) do to facilitate my team members accomplish their tasks?
- Spring followup: share progress with team members, client, stakeholders
- How did this sprint go?
- Results of this sprint help decide what to do in next sprint
Iteration and testing
Because testing is done in every iteration -- which develops a small piece of the software -- users can frequently use those new pieces of software and validate the value.
After the users know the real value of the updated piece of software, they can make better decisions about the software's future.
Retrospectives
Having a retrospective and software re-planning session in each iteration helps the team continuously adapt its plans so as to maximize the value it delivers.
Agile mindset
This iterative practice also introduces a product mindset rather than the waterfall model's project mindset. Software can be seen as a living organism, which actively changes due to environmental change.
As long as the software is being used, especially when it has competition, iterations in agile software development drive the change.
(TO DO: counter-arguments, agile shortcomings, waterfall strengths.)
See also
- Deliverable
- Iteration
- Scrum
- Software development
- Software development process
- Sprint
- Standup
- Waterfall model
External Links
- Agile software development @ Wikipedia