Agile Software Development Process

Agile software development processes are built on the foundation of iterative development. Agile processes use feedback rather than planning, as their primary control mechanism. This software process model recognises that software, like all complex systems, evolves over a period of time.

The main principles of the Agile Software Development process are:
Capture and define requirements at a high level
User involvement is essential
The team must be allowed to make decisions
Develop small, incremental releases and iterate
Focus on frequent delivery of products
Requirements evolve but the timescale is fixed
Complete each feature before moving on to the next
Testing is integrated throughout the project lifecycle - test early and often
A collaborative & cooperative approach between all stakeholders is essential

Requirements

The first step in the process is to identify some high-level requirements as well as the scope of the release.

Architecture & Design

The goal of the architecture and design phase is to try to identify an architecture that has a good chance of working. The architecture is often defined using free-form diagrams which explore the technical infrastructure, the major business entities and their relationships. The design is derived in a modelling session, in which issues are explored, until the team is satisfied that they understand what needs to be delivered.

Development

The development phase uses an evolutionary method that is an iterative and incremental approach to software development. Instead of creating a comprehensive prerequisite such as a requirements specification, that you review and accept before creating a complete design model; the critical development piece evolves over time in an iterative manner. The system is delivered incrementally over time, rather than building and then delivering your system in a single "big bang" release.

Test & Feedback

One of the key principles of the Agile Methodology is to conduct the testing of the software as it is being developed. The software development is test driven. The unit testing is achieved from the developer's prospective and the accetpance testing is conducted from the customer's prespective.