The simplest process model is the waterfall model, which states that the phases are organized in a linear order. The waterfall model is also known as classical waterfall model or linear sequential model.
The essence of this model is that the process of software development consists of a linear set of distinct phases. Each phase in this model is distinct and is mandatory for every project irrespective of project size. At every phase, there is a provision for verification and validation and correction of errors and inconsistencies.
Following are the phases of this model :
- Requirement analysis and specification
- Design and specification
- Coding and unit testing
- Integration and system testing
- Operations and maintenance
The phases always occur in this order and do not overlap. The developer must complete each phase before the next phase begins. This model is named “waterfall model” because its diagrammatic representation resembles a cascade of waterfall.
- Requirement Analysis and Specification
This phase exactly tells the requirement and needs of the project. This is very important and critical phase in waterfall model. The purpose of a requirement analysis is to identify the qualities required of the application, in terms of functionality, performance, ease of use, portability and so on.
The requirements describe the “what” of a system, not the “how”. This phase produces a large document, contains a description of what the system will do without describing how it will be done. The resultant document is known as software requirement specification (SRS) document.
An SRS document must contain the following:
- Detailed statement of problem
- Possible alternative solution to problem
- Functional requirement of the software system
- Constraints on the software system
The SRS document must be precise, consistent and complete. There is no scope for any ambiguity or contradiction in the SRS document.
- Design and Specification
The goal of the design phase is to transform the requirements specified in the SRS document into a structure that is suitable for implementation in some programming language. In technical terms, during the design phase the software architecture is derived from the SRS document. Two distinctly different design approaches are available: the traditional design approach and the object oriented design approach.
- Traditional Design Approach : Traditional design consists of two activities; first a structured analysis of the requirements specification is carried out where the detailed structure of the problem is examined. This is followed by a structured design activity. During structured design, the results of structured analysis are transformed into the software design.
- Object-Oriented Design Approach : This is a new paradigm. Various objects in the system are identified. After the identification of objects, the relationships among them are also explored. The OOD approach has several benefits such as lower development time and effort, and better maintainability.
- Coding and Unit Testing
Coding and unit testing is the phase in which we actually write programs using a programming language. Coding can be subject to company wide standards, which may define the entire layout of programs, such as the headers for comments in every unit, naming conventions for variables and subprograms, the maximum number of lines in each component, and other aspects that the company deems worthy of standardization.
The main purpose of this phase is to translate the software design into source code.
Initially, small modules are tested in isolation from the rest of the software product. The purpose of unit testing is to determine the correct working of individual modules.
- Integration and System Testing
During integration and system testing phase, the modules are integrated in a planned manner. The different modules making up a software product are almost never integrated in one shot. Integration is normally carried out incrementally over a number of steps. During each integration step, the partially integrated system is tested and a set of previously planned modules is added to it. Finally, when all the modules have been successfully integrated and tested, system testing is carried out.
The objective of system testing is to determine whether the software system performs as per the requirements mentioned in SRS document. This testing is known as system testing. A fully developed software product is system tested.
The system testing is done in three phases called Alpha, Beta and Acceptance testing.
- Alpha Testing is conducted by the software development team at the developer’s
- Beta Testing is performed by a group of friendly customers in the presence of the software development team.
- Acceptance Testing is performed by the customers themselves. If the software is
successful in acceptance testing, the product is installed at the customer’s site.
Implementation phase is mainly concerned with user training, site selection and preparation and file conversion. Once the system has been designed, it is ready for implementation. Implementation is concerned with those tasks leading immediately to a fully operational system. It includes the final testing of complete system to user satisfaction and supervision of initial operation of the system. There are three types of implementation :
- Implementation of a computer system to replace a manual system.
- Implementation of a new computer system to replace an existing one.
- Implementation of a modified application to replace an existing one using the same computer.
- Operations and Maintenance
Maintenance is an important part of SDLC. If there is any error to correct or change needed by the system then it is done in the maintenance phase. Maintenance of software is also a very necessary aspect related to software development. Maintenance may consume more time than the time consumed in the development. Also, the cost of maintenance varies from 50%-80% of the total development cost.
Maintenance includes the set of activities that are performed after the system is delivered to the customer. Basically, maintenance .consists of correcting any remaining errors in the systems, adapting the application to changes in the environment and improving, changing or adding features and qualities to the application.
Advantages of Waterfall Model
- This model provides a systematic and sequential approach to software
- It is well suited for routine type of projects where the requirements are well
- It follows a simple approach and has proper documentation.
- Enforced disciplined, planned and manageable approach.
Disadvantages of Waterfall Model
- It is difficult to define all requirements at the beginning of a project.
- Difficult to estimate resources accurately.
- Leads to a somewhat bureaucratic style of work.
- This model is not suitable for accommodating any change.
- A working version of the system is not seen until late in the project’s life.
- It is a document driven process that requires formal documents at the end of each