The Waterfall Model
is the root of all other models
still prevalent in general
exists in many versions
supported by many methods/techniques
Waterfall Model for Development
Here, steps (phases) are arranged in linear order
A step take inputs from previous step, gives output to next step (if any)
Exit criteria of a step must match with entry criteria of the succeeding step
It follows ‘specify, design, build’ sequence that is intuitively obvious and appears natural
5 Phases
1. Analysis
2. Design
3. Implementation
4. Testing
5. Deployment / Operation
Analysis Phase:
Decide what the project is suppose to do, what the goal of the final product is
Do NOT think about how the program will accomplish tasks
Output of this phase - requirements document
Describes what program will do once completed
Example –
User manual: tells how user will operate program
Performance criteria (will complete X tasks in Y time)
Design:
Plan for implementation
Decide what structures will best suit your task
In object oriented programming, this is choosing the classes and methods to use (and create)
Output: Classes and methods description
Usually diagramed using UML, can use CRC cards
Implementation:
Actual coding part of the process
Edit à Compile à Run
Output: Completed program
Testing:
Run tests to verify the program works correctly
Remember the two main types of testing
Unit Testing
System Testing
Output: a report of the tests and their results
Deployment:
AKA Operation, Maintenance
Users install program
Users use program for its intended purpose
Bug fixes
New features
Advantages of a Waterfall Model:
A waterfall model helps find problems earlier on which can cost a business less than if it was found later on.
Requirements will be set and these wouldn't be changed.
As everything is documented a new team member can easily understand what's to be done.
Implementers have to follow the design accurately
Highly disciplined process of documentation.
Easily observable development progress.
Easy to create budget
Disadvantages of a Waterfall Model:
If requirements may change the Waterfall model may not work.
Many believe it is impossible to make one stage of the projects life cycle perfect.
Difficult to estimate time and cost for each stage of the development process.
Constant testing of the design is needed.
Document centric; can be difficult for customer to understand.
Not user centered.
Makes assumptions about requirements that are inflexible.