Based on the project management processes used in other industries, the waterfall approach to software development follows a sequential set of steps from requirements to release. Organizations that cannot use pure agile methodologies have adapted agile ideas for use in waterfall projects, creating new hybrid methodologies.
The waterfall model is a sequential software development process, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of requirements gathering, analysis, design, development, unit testing, integration testing, acceptance testing and then release:
The waterfall development model originated in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development.
The main advantages of using a waterfall approach are that time spent early in the software lifecycle can lead to greater economy at later stages. For example, a bug found in the early stages (such as requirements specification or design) is cheaper in money, effort, and time to fix than the same bug found later on, once development has started.
Advocates of agile software development argue the waterfall model is a bad idea in practice—since in many (if not most) cases, the design will need significant revision once the end-users have tested the system and provided initial feedback, and any technical limitations not understood during design will require expensive rework that is complex to perform.
In response to the perceived problems with the pure waterfall model, many modified waterfall models have been introduced, these are called hybrid methodologies.
There are many different hybrid methodologies that attempt to apply feedback mechanisms to the traditional waterfall model so that technical and functional shortcomings in the original design that are discovered during development can be more quickly incorporated. Some of the more popular hybrid models include:
The V-Model of software development uses a modified waterfall to provide a sequential development methodology that has feedback mechanisms between the pre-development and post-development phases of the lifecycle:
Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represents time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.
The spiral model is a risk-driven process model generator for software projects. Based on the unique risk patterns of a given project, the spiral model guides a team to adopt elements of one or more process models, such as incremental, waterfall, or evolutionary prototyping.
The key distinguishing characteristics of the Spiral Model are that each iteration of the system follows the four key phases that are designed to identify and mitigate risks:
The iterative nature of the Spiral model makes it an early example of a hybrid waterfall-agile methodology and follows many characteristics (prototypes, experiments/spike solutions) that exist in other more recent pure Agile methodologies such as Scrum, XP and AUP.
Iterative and Incremental development is any combination of both iterative design or iterative method and incremental build model for software development:
The use of iterative/incremental development attempts to mitigate the main criticisms of waterfall / sequential development methodologies since the entire project is broken down into smaller increments or iterations that can apply the lessons learned from the previous iteration.
Learning comes from both the development and use of the system, where possible key steps in the process start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added.
Although iterative development may look at first glance like agile development, there are several key differences, the main one being that iterative development generally follows the same steps as waterfall, just happening in smaller units of time and that with agile you have a potentially shippable product at all times, whereas that is not necessarily the case with iterative development.
When deciding on a requirements management, project management or test management solution, you often have to make a false choice between tools built for waterfall projects and tools build for agile projects. With SpiraTeam you have the flexibility to choose a single system that can be used for agile, waterfall and hybrid projects.
For waterfall projects, you can manage requirements the traditional way using a hierarchy of features, business requirements and system requirements:
Those requirements can then be associated with test cases and development tasks to provide a measure of both test coverage (are the requirements tested) and development progress (has the development been done).
You can then manage your project technical tasks and work breakdown structure (WBS) against these formal requirements:
For agile projects, you can use a Scrum/Kanban agile planning board to manage your user stories, features, acceptance tests, tasks and incidents:
For waterfall projects, you have a traditional task GANTT chart available to see the releases and tasks scheduled over a timeline, with progress indicators:
For hybrid projects, you can use both views (requirements hierarchy and planning board) at the same time using the same data.
In a traditional waterfall project, you have phases such as:
In a hybrid project you may have both phases for the upfront work and then agile-like iterations after the initial design and concept work has been done:
SpiraTeam lets you have release that contain both phases and iterations:
|Epic||Business Requirement||Concept||Business Requirement||Initial Requirement|
|Requirement||System Requirement||Requirement||System Requirement||Detailed Requirement|
|Sprint||-||Increment / Spiral||-||Iteration|
|Test Case||Test Case||Test Case||Test Case||Test Case|
SpiraTeam® provides reporting dashboards of key project quality and progress indicators - requirements test coverage, task progress, project velocity, as well as top risk and issues – in one consolidated view:
The top reasons that our customers choose SpiraTeam over other solutions are:
In addition, we provide superb technical support that ensures that enquiries and questions are dealt with in a timely and professional manner.
To learn more about SpiraTeam and how it can improve your software development processes please:
And if you have any questions, please email or call us at +1 (202) 558-6885