Waterfall Model
INF4817 - Software Engineering, Software Engineering Frameworks
Waterfall Model¶
This is the oldest model in Software engineering. It emphasizes planning and distinct non-overlapping stages.
Stages:¶
- System requirements - the systems, hardware and other tools needed to build the system.
- Software requirements - establishing of the expectations for the actual software. All the software functionality, the interaction with external applications (eg. databases), the performances and UI requirements as well.
- Architectural design - determining the software framework, the design of major components of the system and their interactions. It does define low level structure of each of these components.
- Detailed design - Produces a specification doc for each component described in the architecture.
- Coding - implementing the design.
- Testing - determine whether the software meets the requirements.
- Maintenance - address problems/enhancement requests post delivery.
Advantages¶
- Easy to understand and implement
- Good habits - define-before-design and design-before-code
- Documentation driven - easier for for longevity of project with changing teams and on-boarding new members.
- Works well on mature products and weak teams (i.e. dispersed teams)
- Easy to identify deliverables and milestones as each phase is discrete and linear.
- Lower resources required (not as collaboration heavy as other models).
Disadvantages¶
- Requires a lot of upfront information
- Unrealistic expectation to have accurate requirements so early in the project
- Difficult to integrate risk management.
- Difficult and expensive to make changes upstream (document changes).
- Uni-directional, difficult to go backward through the phases with any changes.
- Increases development time and cost.
- Very inflexible - cannot handle vague or grey requirements.
See also¶
References¶
- A Comparison Between Five Models Of Software Engineering