Software Development Life-cycle
Stages/Phases within SDLC
⛲ Waterfall Method
The name comes from the cascading effect from one phase to another.
Each phase has a well-defined start and end point with identifiable deliverables.
A slightly evolution allows you to move forwards and backwards in stages.
Advantages | Disadvantages |
|---|---|
Simple – Easy to manage | Carries a lot of risk |
Everyone is clear on responsibilities | User doesn’t get to see finished project until end |
Clear deliverables to meet | Misunderstanding requirements can lead to a project that’s not easy to fix |
Easy to tell if a project is on schedule | Requirements must be very well understood, so this model is not suitable for complex projects |
When would you use it?
It’s not really used today but as it is easy to manage, large-scale development projects that are well-understood, not too complex and carry little risk would be perfect for waterfall.
Rapid Application Development (RAD)
Producing successful prototypes of a software until a final version is approved.
Each prototype is analysed, designed and then tested in a loop until correct.
Advantages | Disadvantages |
|---|---|
Requirements of the project don’t need to be entirely clear from the start | Focus on usability rather than how the product works. Not suitable for projects that require high efficiency of code |
Focus groups involving the user in each iteration | Regular contact with the client must be maintained at all times |
Continuous feedback results in excellent usability | Scales poorly for large projects with big teams |
When would you use it?
Good for projects where the initial requirements are not fully understood, as the iterative nature prevents development from becoming too side-tracked.
Spiral Model
It’s a risk-driven development methodology.
A guide for teams allowing them to adopt elements of other methodologies.
It’s not always a fixed process, the order might change depending on risks.
Better thought of as process model generator, decisions in the software development life-cycle are based on risks identified.
Determine objectives → Identify & resolve risks → Development → Plan for next
Advantages | Disadvantages |
|---|---|
Risk management is at the heart of the model | Complex nature of risk analysis increases costs |
Ideal for projects with a high level of risk | If risk analysis is done badly. the project suffers |
When would you use it?
Suitable for large-scale problems and those that involve a higher degree of risk, especially where the user doesn’t fully understand their requirement upfront.
⏩ Agile Methodology
Refers to a group of methodologies that came out in the early 2000s.
The methodologies state that requirements in development shift during development, thus software must be produced in an iterative way.
These methodologies are a more refined version of RAD.
Each iteration is known as a sprint. It should be a small piece of focused work.
Advantages | Disadvantages |
|---|---|
Emphasises programming, so the quality of the code is likely to be very high | Requires a team of programmers working in close collaboration. Can be difficult to organise |
Core principles and processes lead to a productive development team | Client must be able to commit to working full-time with the development team. |
Some of the processes involved can be quite costly (e.g: paired programming) |
When would you use it?
When the emphasis of a project is on the quality of finished code, agile and extreme programming processes are ideal.
Extreme Programming
Less of a methodology, more of a framework.
It encourages developers to produce a high quality level of code.
Considered an agile framework, it encourages small & iterative releases.
Every member is of equal value in the development team.
Advantages | Disadvantages |
|---|---|
Emphasises programming, so the quality of the code is likely to be very high | Requires a team of programmers working in close collaboration. Can be difficult to organise |
Core principles and processes lead to a productive development team | Client must be able to commit to working full-time with the development team. |
Some of the processes involved can be quite costly (e.g: paired programming) |
When would you use it?
When the emphasis of a project is on the quality of finished code, agile and extreme programming processes are ideal.