Prerequisite: Software Development Life Cycle
SDLC stands for Software Development Life Cycle. It refers to the methods of developing quality software by clearly defining the processes involved in the development.
SDLC is usually divided into several phases(stages) for developing software. One of the popular SDLC is the FISH Model. In the Fish Model, verification and validation are done parallelly at each phase by two different teams.
Verification means “reviewing” a whole phase, and Validation means “testing” a whole phase. Except for the deployment and maintenance phases, those two processes are done by separate teams and then reports are generated, by the end of the phases.
- Fish model is preferred for developing secure & supreme quality software.
- This SDLC is expensive in terms of cost & time since it involves verification as well as validation on almost all the phases and it is not suitable for small projects and projects that might need a requirement change in the middle of development.
- Apart from that, the Fish Model is easy to implement and all the documents are created one by one as the phases are completed. So, full documentation of the software being developed is at hand by the end.
The structure of the model looks like a skeleton of a fish and that’s why this SDLC is known as Fish Model.
Phases of Fish Model:
Now, We will see the phases involved in the Fish Model. There are 7 phases in Fish Model and they are,
- Requirements Gathering & Planning
- Development / Coding
The below picture represents an overview of the FISH Model.
1. Requirements gathering and Planning: At first, a contract is signed between both parties (client & organization) to kickstart the project. Then the client’s expectation is thoroughly understood by a business analyst from the organization to prepare a Business Requirement Specifications(BRS) document.
Once the requirements are gathered and reviewed; the following processes will be performed.
- Planning of project execution.
- Choosing the software model for expressing software designs.
- Resource planning.
- Feasibility tests are conducted to evaluate the success ratio of delivering the proposed project. This is where whether to do or drop the proposed project decision is made.
- Risk identification of the project.
- Allocation of members for the project by the project manager.
- So, here’s where all the preparation part of proceeding with the project is done.
2. Analysis: In this phase, Software Requirement Specifications(SRS) document is prepared from the Business Requirement Specifications(BRS) document. Different members like business analysts, software architects, subject-matter experts & team leaders have a great role in preparing the SRS. After the document is prepared it is reviewed by a team and then it will be forwarded to the client for getting approval. Once the client approves the Software Requirement Specification (SRS) document, the design phase BEGINS.
3. Design: In this phase, the developers or technical architect(s) create a document called Design Document Specification (DDS) with the help of the SRS document analyzed in the previous phase.
In this document; the prototype of the proposed project, rough designs, and the looks & workings of the software are designed as well as defined clearly. The designs are primarily categorized into two. They are,
- High-Level Design (HLD): It consists of the basic outlook DESIGN of the software architecture
- Low-Level Design (LLD): LLD has in-depth designs of the overall software architecture.
Once the Design Document Specification is ready, a team will review it. Then it will be forwarded to the client and stakeholders (people involved in the project & its outcome). The DDS document usually has several approaches, the ideal one would be chosen and taken to the next phases.
4. Development / Coding: In this phase, the actual development of the project takes place where developers start writing code as per the decided standards. That’s why it is also called as Coding phase. The codes are usually written as small chunks and then they are integrated into a whole.
After the completion of coding, the codes will be compiled into the machine-readable language (0s1s) and then run to see if the software works as expected without showing errors. Developers are the main characters in this phase. Eventually, codes are documented as Source Code Documents (SDC). After the compilation & running of the code, the code will be tested in several ways for different purposes.
5. Testing: As the development phase is completed, the code gets tested. Developers test the small chunks(units) of code individually, this testing is known as unit testing. Then the code will be combined and tested to check whether the code works as a whole and renders the desired output. This test is known as integration testing.
After the developers finish those tests, the code will be given to the testing team. They will do various tests and check if everything works as expected in Business Requirement Specifications (BRS). If they find anything unexpected or find errors, they will notify the developers to fix them within a specified time. After that, two more tests will be done i.e. Alpha Testing and Beta Testing.
6. Deployment: By this time, the software is completely developed & tested. The test results are reviewed by the stakeholders for the deployment. It is all set to roll out! In general, the client might perform a test before launching in this phase and that’s known as Release Testing.
7. Maintenance: After releasing the software to the end-users, many issues might pop up. Those need to be fixed ASAP. If the issue is bigger, then a new feature might be updated in the software to bring the desired functionality. Thus, the phase of doing the needful after the deployment(launching) of the software is known as the Maintenance phase.
Master Software Testing and Automation in an efficient and time-bound manner by mentors with real-time industry experience. Join our Software Automation Course
and embark on an exciting journey, mastering the skill set with ease!
What We Offer:
- Comprehensive Software Automation program
- Expert Guidance for Efficient Learning
- Hands-on Experience with Real-world Projects
- Proven Track Record with 10,000+ Successful Geeks