Waterfall Development Waterfall development is an approach to software development that breaks a project into finite phases. Each phase is performed in order, and each depends on the completion of preceding phases. Under the waterfall development method, each portion of work is evaluated separately and is often performed by different teams. There are various schools of thought about what the actual phases should be, but the progression always relies on heavy up-front planning. Here's a common breakdown of the waterfall development process: Evaluate the problem-This is where the concept is born. Identify deficiencies with existing solutions and gather information. Propose a solution-Present a detailed description of the solution, including pros and cons and the problems the software will address. Finalize timelines, budgets, work breakdown structures, and other supporting documentation. Most importantly, identify and analyse requirements. Design the architecture-Once the proposal has been accepted, create models of the solution, including workflow and dataflow diagrams, module and functionality layouts, and any other descriptions required by the solution. A vigorous review process usually accompanies this phase. Develop the code-Use the blueprints created in previous phases to write, debug, and unit-test the code. Next, integrate the code and test portions of the system. Finally, test the entire system. This cycle isn't complete until all tests have passed. Deploy and use the system-Roll out the resulting functionality and provide training and documentation to users as needed. Maintain the solution-Support and upgrade the software when necessary and fix post-production bugs. Below are listed the stages of development used by large scale projects in a waterfall development process. These stages cover, requirements, design, coding and testing. Documentation and Quality Assurance stages are also listed to show their work in parallel |
Advantages Predictability of release based on detailed requirements and detailed designs. Highest Quality is achievable because all required use cases can be individually tested. Disadvantages Not suited to short deadline based projects due to long development cycles. Not appropriate for an environment with constantly changing requirements. Large overhead due to large number of artifacts (documents, designs and plans). Testing at end of project can reveal basic flaws if requirements or design are not thorough. Load and Capacity must be tested early to avoid issues. Recommendations Use for large development project teams with large requirements and quality based requirements for deliverables. Useful when customers are large institutions. Not recommended for time constrained projects. Description Taken From http://www.zdnet.com.au/builder/manage/project/story/0,2000035082,20266893,00.htm |
Example Waterfall Development Process
|
Development Stage |
Documentation Stage |
Quality Stage |
Initiation |
Project Start |
|
|
|
Initial Project Plan |
|
|
|
|
|
|
Requirements |
Business Requirements |
Documents Required |
Quality Requirements |
|
Use Cases |
Training Required |
Number of users |
|
UI Design |
Installations Required |
Transactions per hour |
|
Services Requirements |
Administration Required |
Number of Use Cases |
|
Project Plan 1 |
|
|
Design |
High Level Dev Plan |
Documentation Plan |
Test Plan Design |
|
Detail Design |
Documentation Outline |
Test Plan Inventory |
|
Project Plan 2 |
|
|
Coding |
Coding |
Documentation Begins |
High Level Test Plans |
|
Code Complete |
|
Load Testing |
Integration |
|
|
Capacity Testing |
|
Integration Testing |
|
Integration Testing |
|
UI Freeze |
|
Detail Test Plans |
|
|
Documentation Draft |
Automated Test Creation |
|
QA Acceptance Test |
QA Acceptance Test |
QA Acceptance Test |
Test |
|
Documentation Complete |
|
|
QA Cycle 1 |
|
QA Cycle 1 |
|
Beta |
|
Beta |
|
QA Cycle 2 |
|
QA Cycle 2 |
Ship |
GA ship date |
|
GA ship date |