Compare common development processes

This covers linear (waterfall/cascade) and iterative(prototyping/rapid application development) methodologies of executing the development framework, and compares the advantages and disadvantages.

A methodology describes how the stages of the development framework are completed.

Linear – waterfall/cascade

In it’s most simplistic definition each phase must be completed before the next phase can begin and there is no overlapping of the phases.

The Waterfall Model illustrates the system development process in a linear sequential flow; hence it is also referred to as a linear-sequential life cycle model. This means that any phase in the development process begins only if the previous phase is complete.

Waterfall Model design

In the Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.

The following is a diagrammatic representation of a waterfall model.

Waterfall Methodology Application

Every project is different and requires a suitable SDLC approach to be followed based on the internal and external considerations. Some situations where the use of Waterfall model is most appropriate are:

  • Requirements are very well documented, clear and fixed.
  • Product definition is stable.
  • Technology is understood and is not dynamic.
  • There are no ambiguous requirements.
  • Ample resources with the required expertise are available to support the product.
  • The project is short.

Waterfall Model Pros & Cons

ADVANTAGES

  • Easy to schedule and manage tasks
  • Can be completed quicker than an iterative approach
  • Works well for smaller projects
  • Simple and easy to understand
  • Can cost less than an iterative approach

DISADVANTAGE

  • No working product is produced until late in the life cycle
  • Not a good methodology for complex projects
  • Not a good methodology for projects without experienced people involved.
  • Not a good methodology for long projects
  • Doesn’t work well for projects with risk of changing requirements (revision)
  • Difficult to measure progress within stages (how well a project is proceeding) – the projects success will only really be known at the end
  • Not a good methodology for novel (new) technologies

Iterative – Prototyping/Rapid Application Development

With the iterative methodology, the iterative process starts with a simple implementation of a small set of the requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed.

An iterative lifecycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the system, which is then reviewed in order to identify further requirements. This process is then repeated, producing a new version of the system at the end of each iteration of the model.  It should be noted that while an iterative methodology can be applied to any type of project the RAD (Rapid Application Development) iterative methodology is more suited to software development.

Prototyping Methodology design

After the Preliminary Analysis the iterative process starts incrementally iterating through parts of the analysis, design, and development stages. Changes are made incrementally during each iteration – this evolves the project rather than creating completely new versions each time. Each iteration design modifications are made and functionality is added.

If a project is iterative it doesn’t mean there is no deadline, or it can run on randomly. The number of length of iterations should be planned. GANTT and PERT charts are still utilised to plan a project timeline.

The following is a diagrammatic representation of a Prototyping or Iterative model:

It’s worth repeating, the whole project is not repeated, such as the initial analysis and requirements, but mainly the design and development stages (which involves testing).

Iterative Methodology Application

Like other methodologies, iterative and incremental development has some specific applications. This model is most often used in the following scenarios:

  • Requirements of the complete system are clearly defined and understood, but minor requirements may not be fully formed.
  • Major requirements must be defined; however, some functionalities may be added during the project.
  • A new technology is being used and is being learnt by the development team while working on the project.
  • Resources with needed skill set are not available and/or are planned to be used on a contract basis for specific iterations.
  • There are some high-risk features and goals which may change in the future.

Iterative Methodology Pros and Cons

ADVANTAGES

  • Problems are identified earlier in the project
  • A working model is quickly produced
  • Parallel development by multiple teams/programmers can be completed at the same time
  • Risks are quickly identified, and money saved
  • Testing can be started earlier
  • Risk analysis is easier
  • Better suited for medium to large scale projects
  • Earlier feedback from end-users/customers

DISADVANTAGES

  • More resources may be required
  • Not suitable for small projects
  • Although the cost of change is less, it may increase costs due to requested changes during testing
  • Management of a project is more complex
  • Highly skilled resources are required for planning and risk analysis