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

Scope:
 * 1) Requirements
 * 2) * Capabilities – what the software does
 * 3) * Human interface – all screens and messages defined
 * 4) * All interfaces to external hardware and software identified
 * 5) * Size and timing requirements
 * 6) Preliminary Design
 * 7) * Structure diagram
 * 8) * Functional flow diagrams
 * 9) * All major function prototypes defined and comments for functions written
 * 10) * All major data structures and data bases defined
 * 11) * Header files defined
 * 12) * Sizing and timing estimates (may be deferred to detailed design)
 * 13) Detailed Design
 * 14) * 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).
 * 15) * Better sizing and timing estimates
 * 16) Code And Unit Test
 * 17) * Convert PDL to code
 * 18) * 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.).
 * 19) * Better sizing and timing estimates
 * 20) * Metrics, test coverage tool results, etc.
 * 21) Integration and Integration Test
 * 22) * Design integration test plan and test code
 * 23) * Run code on target system and debug
 * 24) * Take sizing and timing measurements and ensure that you are meeting requirements.
 * 25) * Line count - Total lines of text, and lines of code.