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.


      Phases:

      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


      I.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

      II.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)

      III.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

      IV.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.

      V.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.
      Last modified on 8 June 2009, at 04:02