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.