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.