The phases of software development are known as the Software Development Lifecycle (SDLC). The arrangement of the phases are known as a software development methodology,
Phases
Feasibility - is the problem solvable? Requirements - working out what the solution needs to do. Analysis and design - working out how the solution needs to do it. Implementation - developing (coding) the solution. Testing - checking it actually works. Deployment - installing it in the target environment. Evaluation checking in with the user - ‘is the solution complete?’ Maintenance - ensuring it continues to function properly by the way of improvements, patches and updates.
Methodologies
Waterfall
The waterfall model derives its name from its cascading effect from one phase to another. Each phase has a well-defined start and end point with identifiable deliverables.

An evolution of the waterfall model allows you to go backwards and forwards between stages.

Rapid Application Development (RAD)
Rapid application development (RAD) is a methodology that involves producing successive prototypes of the software until a final version is produced and approved.
- Following the initial approval of a feasible program, increasingly refined prototypes are made with reduced functionality.
- These are designed, coded, test and evaluated with the end user.
- You user might decide they are happy with the system or that they want further improvements, which will start a new cycle (iteration).
Spiral (form of RAD)
The spiral model is a risk-driven development methodology. Any project has its own set of unique risks associated with it.
The spiral model is more of a guide for development teams, allowing them to adopt elements of one or more other methodologies like waterfall or RAD.
It is a common misconception that the spiral model is a fixed process that must be followed in the correct order. In reality, it is wholly dependant on the project and its unique risks.
This model is better thought of as a process model generator, where decisions on the software development methodology are made based on the risks identified.
Agile (form of RAD)
Agile development refers to a group of methodologies (not a single one) that came about in the early 2000s.
These methodologies focus on the idea that requirements will shift and change during development – this can only be dealt with by producing software in an iterative way. They are a more refined form of the older concepts behind rapid application development (RAD).
Extreme (form of RAD)
Extreme programming is not so much a software methodology as it is a framework.
It aims to produce very high-quality code and promote developers’ quality of life by encouraging them to adopt a set of common practices that focus on the values of:
- Simplicity
- Communication
- Feedback
- Courage
- Respect
It is considered an agile framework in that it encourages regular, small, iterative software releases. At its core are the concepts of collective ownership and every team member being of equal value.