Classical Waterfall Model
Classical waterfall model is a software process model. It is a sequential approach where each activity of a process represents a separate phase and arrange in linear order. Another name for this model is “Linear Sequential Model”. This model divides the software life cycle into six phases.
· Feasibility Study
· Requirements Analysis & Specification
· Design
· Implementation (Coding) & Unit Testing
· Integration & System Testing
· Maintenance
Feasibility Study
A feasibility study is a methodology which determines whether the project is financially worthwhile and technically feasible. When conducting a feasibility study, we can get a basic understand of the problem. Then we can generate alternative solutions and strategies. Strategies can be evaluated as
·Estimated technical difficulty
·Estimated resources
·Estimated development effort
·Estimated development time & cost
Cost/benefit analysis can be used to determine which solution are feasible. Sometimes none of the solutions may be feasible due to
· Resource Limitations.
· Technical Difficulty.
· High Cost.
· Long Development Time
The Requirement Phase
Responsibility of the requirement phase is to document the customer requirements. This phase can be divided into 2 distinct activities.
· Requirements Gathering and Analysis
· Requirements Specification
Requirements Gathering and Analysis
Following activities can be done to gather information
· Meetings
· Interviews
· Discussions
By gathering of information members should identify and eliminate errors of the solution. By conducting requirement gathering and analysis we can understand exactly what the customer needs. Not the thing that they asked.
Requirement Specification
After gathering of requirements, they should be documented in a Software Requirement Specification (SRS). Requirement specification involves documenting the requirements. SRS is the legal contract between the software company and the customer. After the end of the requirement phase customer can approve the SRS document
The Design Phase
In this phase, the problem is further elaborated by drawing sketches and diagram. There are several methods and tools that the software companies used in the designing phase.
When talking about the design phase Structured analysis is an important fact in this phase. The structured analysis is carried out using data flow diagram (DFD).
· Identify the major tasks to be performed by the system
· Identify all data flows into or out of these tasks
· Recursively decompose each task into sub-tasks and identify all data flows between the sub-tasks
· Stop at the algorithm level (when each task can be represented by 1/2 page of pseudo-code)
After Structured analysis, next thing is Structured Design.
According to the requirement, a designer can draw a high-level architecture diagram or low-level architecture diagrams
The Implementation Phase
This is the coding phase. Developer separate task and implement. Each implementing task is known as a module. Each module is implemented as a stand-alone unit. After that unit testing is done. The purpose of unit testing is to ensure that is unit is works correctly in isolation. The product of this phase is a set of independently tested software modules.
The Testing Phase
Testing phase can be divided into 2 steps
· Integration Testing
· System Testing
Integration Testing
Integration testing is done first. Developer tries to combine modules and testing whether those combined is working properly. Integrating modules one at a time makes error location and correction much easier. At the end of this testing, all the system is tested with sample data.
System Testing
System testing is done to ensure the system meets the requirement specified in the SRS document.
This testing is taking place after all modules are integrated. At the end of the Testing phase system is delivered to the customer.
Maintenance
There are 3 categories in the maintenance phase
Corrective Maintenance
Eliminate errors that were not discovered during system development
Perfective Maintenance
To improve the existing system. Adding more functionalities
Adaptive Maintenance
Modify the system to a new environment such as changing the hardware device, operating system
Problems of the classic waterfall model
So far, we discussed the phases of the waterfall model. But did you know that there are problems in this waterfall model? Let’s see what they are.
The classical waterfall model is idealistic
It assumes that no defects are introduced during any of the development phases.
In practice, defects are introduced during every phase of the software life cycle
Hence feedback paths must be added to the classical waterfall model.