Software Engineers Handbook/Life Cycle/Development Methodologies/Traditional Waterfall

From Wikibooks, open books for an open world
Jump to navigation Jump to search

When it was first created, the Waterfall Model of Software Development presumed that writing software is a linear process, with clearly defined phases. Many experts have come to realize that this is not true in all cases. However, Waterfall is always useful as a checklist, even if it is not followed in a linear, rigorous fashion. A summary follows.


  1. Requirements Allocation
  2. Preliminary Design (AKA Top Level Design or Architecture)
  3. Detailed design
  4. Code and Unit Test
  5. Integration and Integration test


  1. Requirements
    • Capabilities – what the software does
    • Human interface – all screens and messages defined
    • All interfaces to external hardware and software identified
    • Size and timing requirements
  2. Preliminary Design
    • Structure diagram
    • Functional flow diagrams
    • All major function prototypes defined and comments for functions written
    • All major data structures and data bases defined
    • Header files defined
    • Sizing and timing estimates (may be deferred to detailed design)
  3. Detailed Design
    • PDL C Program design language (or pseudo code) written. Rule of thumb: 1 line of pseudo code = 3 to 10 lines of “C” code (approximately).
    • Better sizing and timing estimates
  4. Code And Unit Test
    • Convert PDL to code
    • Design unit test plan and test code. Test Drivers, test stubs, and any special requirements defined (e.g., special test hardware configurations, test software, lab equipment, etc.).
    • Better sizing and timing estimates
    • Metrics, test coverage tool results, etc.
  5. Integration and Integration Test
    • Design integration test plan and test code
    • Run code on target system and debug
    • Take sizing and timing measurements and ensure that you are meeting requirements.
    • Line count - Total lines of text, and lines of code.