Agile software development

From Wiki @ Karl Jones dot com
Revision as of 05:08, 9 September 2015 by Karl Jones (Talk | contribs)

Jump to: navigation, search

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.)

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

External Links