Waterfall model
The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin. This type of software development model is basically used for the project which is small and there are no uncertain requirements.
At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project.
Phases of Waterfall Model
Requirements Gathering and Analysis
In this phase the requirements are gathered by the business analyst and they are analyzed by the team. Requirements are documented during this phase and clarifications can be sought.
The Business Analysts document the requirement based on their discussion with the customer.
Going through the requirements and analyzing them has revealed that the project team needs answers to the following questions which were not covered in the requirements document –
- Will the new banking application be used in more than one country?
- Do we have to support multiple languages?
- How many users are expected to use the application? etc
System Design
The architect and senior members of the team work on the software architecture, high level and low level design for the project.
It is decided that the banking application needs to have redundant backup and failover capabilities such that system is accessible at all times.
The architect creates the Architecture diagrams and high level / low level design documents.
Implementation
The development team works on coding the project.
They take the design documents / artifacts and ensure that their solution follows the design finalized by the architect.
Since the application is a banking application and security was a high priority in the application requirements, they implement several security checks, audit logging features in the application.
They also perform several other activities like a senior developer reviewing the other developers code for any issues. Some developers perform static analysis of the code.
Testing
The testing team tests the complete application and identifies any defects in the application.
These defects are fixed by the developers and the testing team tests the fixes to ensure that the defect is fixed.
They also perform regression testing of the application to see if any new defects were introduced.
Testers with banking domain knowledge were also hired for the project so that they could test the application based on the domain perspective.
Security testing teams were assigned to test the security of the banking application.
Deployment
The team builds and installs the application on the servers which were procured for the banking application.
Some of the high level activities include installing the OS on the servers, installing security patches, hardening the servers, installing web servers and application servers, installing the database etc.
They also co-ordinate with network and IT administrative teams etc to finally get the application up and running on the production servers.
Maintenance
During the maintenance phase, the team ensures that the application is running smoothly on the servers without any downtime.
Issues that are reported after going live are fixed by the team and tested by the testing team.