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

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.