Waterfall Method

The original Waterfall method, as developed by Royce, is featured in Figure 1. The steps include Requirements Determination, Design, Implementation, Verification, and Maintenance. Other models change the Requirements phase into the Idea phase (Jonasson, 2008), or break the Requirements phase out into Planning and Analysis (Hoffer, George, Valacich, 2008). Furthermore, some models further break the Design phase out into Logical and Physical Design subphases (Hoffer, et al, 2008). As previously mentioned, however, the basic underlying principles remain the same.

The Waterfall method makes the assumption that all requirements can be gathered up front during the Requirements phase (Kee, 2006). Communication with the user is front-loaded into this phase, as the Project Manager does his or her best to get a detailed understanding of the user’s requirements. Once this stage is complete, the process runs “downhill” (Hoffer, et al, 2008).

The Design phase is best described by breaking it up into Logical Design and Physical Design subphases. During the Logical Design phase, the system’s analysts makes use of the information collected in the Requirements phase to design the system independently of any hardware or software system (Hoffer, et al, 2008). Once the higher-level Logical Design is complete, the systems analyst then begins transforming it into a Physical Design dependent on the specifications of specific hardware and software technologies.

The Implementation phase is when all of the actual code is written. This phase belongs to the programmers in the Waterfall method, as they take the project requirements and specifications, and code the applications.

The Verification phase was originally called for by Royce to ensure that the project is meeting customer expectations. However, under real-world analysis and design, this stage is often ignored. The project is rolled out to the customer, and the Maintenance phase begins.

During the Maintenance phase, the customer is

the developed application. As problems are found due to improper requirements determination or other mistakes in the design process, or due to changes in the users’ requirements, changes are made to the system during this phase.

The Waterfall method does have certain advantages, including:

  • Design errors are captured before any software is written saving time during the implementation phase.
  • Excellent technical documentation is part of the deliverables and it is easier for new programmers to get up to speed during the maintenance phase.
  • The approach is very structured and it is easier to measure progress by reference to clearly defined milestones.
  • The total cost of the project can be accurately estimated after the requirements have been defined (via the functional and user interface specifications).
  • Testing is easier as it can be done by reference to the scenarios defined in the functional specification.

Unfortunately, the Waterfall method carries with it quite a few disadvantages, such as:

  • Clients will often find it difficult to state their requirements at the abstract level of a functional specification and will only fully appreciate what is needed when the application is delivered.  It then becomes very difficult (and expensive) to re-engineer the application.
  • The model does not cater for the possibility of requirements changing during the development cycle.
  • A project can often take substantially longer to deliver than when developed with an iterative methodology such as the agile development method. (“The Waterfall Development Methodology”, 2006).

Due to these and similar problems, systems analysts began looking for alternative methods of designing systems. In the following sections, I will go over select methods that have been developed. I will concentrate on methodologies that have been classified as Agile. In this paper, I will concentrate on Extreme Programming, Scrum, and Test-Driven Development.