In this topic, we described about the below sections -
Fish Model is one of the software development methodologies in which both the verification(Review) and Validation(Testing) would be done parallel by separate team in each phase of the model. The structure of this model looks like skeleton between two parllel lines looks like Fish. So named it as Fish Model. This model is an expensive and time-consuming model.
Fish Model verification and validation generates two different reports at the end of each phase. Because all the phases covered by two different teams except Deployment and Maintenance phases.
All phases of the software development life cycle used in fish model. The phases are associated by the verification and validation process to achieve the development of application are -
- Planning & Requirement Phase.
- Analysis Phase.
- Design Phase.
- Development or Implementation Phase.
- Testing Phase.
- Deployment Phase.
- Maintenance Phase.
Planning and Requirements Phase -
Planning is the first and foremost phase in SDLC. The senior members of the project like Manager, Delivery Manager, Domain Experts, Sales Managers etc involves in this phase. At the first step, the requirement idea and the inputs explains the overview of the estimates to everyone. Based on the inputs, the project execution approach, model used to develop the system would be decided. It also helps to do feasibility study economic and other operational aspects. In this, the overall project planning, resource planning, risk identification and overall project execution planning discussed and finalized. Risk identifying is generally done in this phase. A feasibility study is conducted on the Technical aspects which help to decide and describe the approach which could be followed to implement the project successfully with a low risk.
Requirement Gathering is the most important and first phase of SDLC. In this phase, business analyst and project manager participate in the meetings with client to gather the requirements.
- Client is the owner of the product and provides the information about what to build, who will use it or purpose of it to all the participants.
- Business analyst is the person who gathers the high level requirements from the client and document them in the form of business requirements
- Project Manager can located at onshore/offshore who is going to handle the project.
Business requirements are generally documented in Business Requirement Document (BRS). Note that the BRS document name may gets changed based on the naming conventions defined in the project and name varies from project to project.
Examples - Business Specification (BS), Customer Requirement Specification (CRS), etc, and many more.
Analysis Phase -
Once the requirements gathering phase completed, Business Analyst (BA) converts the business requirements into technical requirements with the help senior team members like SMEs (Subject-matter experts) and team leads. The technical requirements documented in a document called SRS (Software Requirement Specification) document. SRS consists of all the technical requirements for all system involved (that includes cross-applications if exists). SRS document should send for approval from the client or SMEs from client side to proceed with the next phases.
Note that SRS document name varies from project to project based on the naming standard defined. Examples - Requirement Specification Document (RSD), Project Specification Document (PSD), etc, and many more.
Design Phase -
Design phase turns the requirements from SRS into a design plan called the Design Document Specification (DDS). Developers takes the requirements from SRS and creates their rough designs, working models, specifies how the software works, how the new design looks, how the control flow from screen to screen etc,. Design phase also models the design that includes - architecture, user interface, platforms, programming, communications and security etc,. In another words, overall system architecture is designed by defining their functionality of each module that includes their interaction with cross-systems.
The Design Document Specifications that are two types based on their level of design. Those are -
- High-level Design (HLD) - HLD contains the high-level architecture changes or design changes. Senior developers or architects creates HLD.
- Low-level Design (LLD) - LLD constans very detailed level architecture or design changes. Senior developers or developers creates LLD.
These two documents contain only design and sometimes code as well. The architects usually provide more than one approach in a Design Document Specification. This DDS sent for review to all the stakeholders and the best approach would be selected based on the features such as robustness, budget and timing constraints.
Once the architecture is selected, the stakeholders would then propose the modules design, data flow diagrams etc.
Development or Implementation Phase -
Once the DDS gets approved, Development phase gets started. Developers start programming with the code by following organization coding standards. Once coding completed, the programmers uses the programming tools to compile and debug the programs to verify weather new code is working or not.
Developers from all levels in the team involves in this phase. The code is documented as Source Code Document (SCD). Developers has many responsibilities in this phase namely - coding and compilation of source code to make error free.
Testing Phase -
Once the coding completed, the code gets tested to check whether it is working as expected or not. The developer performs the initial testing that are unit testing (UT) and/or Application Integration Testing (AIT) before handover the code to the testing team. If everything is fine, code gets migrated to the testing environment. Testing team will perform the testing from that point. The various testings the testing team performs are - quality testing, system testing, acceptance testing and approval testing.
In this phase, testing team follows the BRS document to verify the new changes or working fine or not. If anything not working, testing team raises the defect and development team has to fix it before the specified time.
Testing team thoroughly tests for the defects by follwing the process defined in STLC (Software Testing Life Cycle) to make sure that each and every component or module is working fine.
- Alpha Testing -
Alpha Testing is a type of testing that is performed to identify every possible issues or bugs before releasing the product to market. The focus of this testing is to stimulate end users with white box and black box testing. The aim is to proceed with the tasks that a typical user might perform. Alpha testing would be carried out in an environment such as lab and usually the testers are the internal employees of the Organization. In simple words, it is the testing that is known as Alpha because it is done early at the end of software development and done before the beta testing.
- Beta Testing -
Beta Testing is performed by the actual users of the software application. It is considered as User Acceptance Testing. It is considered as the final test that is done before shipping a product to customers. Direct customer feedback is a big advantage of Beta Testing. This testing would help to test the product in customer's environment. Beta version of software would be released to a very less number of end-users of the product to get feedback on the quality of the product. Beta testing would reduce the product failure risk and would increase the product quality through customer validation. Ex: - Google Pay application.
Deployment Phase -
Once the software is fully tested and has no defects or errors, then the test results and articrafts gor reviewed by the client and provides approval for deployment. Once the software got deployed to production, then the new functionality available to the end-users who are currently using the system.
Deployement might be complex based on the system design if it is integrated with multiple systems.
Maintenance Phase –
Once the end-user starts using the newly deployed sofotware, there might be a possibility that the real-time issues starts coming up. The team has to fix these issues to avoid the loss in business if the issue has less priority or less impact. If the issue has high priority and has huge impact, client can take a decision to roll out or backout new changes and refine the functionalities as required. This process of taking care for the finished product is called as maintenance.
- Fish model is an SDLC model to develop software with maximum quality.
- Fish model is for more secured projects as well as it is more expensive.
- Verification (Quality Assurance (QA)) - It is a process-oriented to avoid defect and to enhance the development process, therefore design review is part of the verification. It done with no program execution.
- Validation (Quality Control (QC)) - It is product-oriented to gets the defect as well as enhances the product quality, therefore product testing is part of the validation. It done with program execution.
- This model has a parallel arrangement of quality assurance as well as quality control.
- This model creates two reports at the conclusion of every phase, one for verification as well as one for validation.
- Easy to implement.
- Full documentation for the application gets created.
- Used for the complex and secured projects.
- Delivers high quality product.
- Every phase of the model is tested by a separate team for correctness and completeness of the application.
- Costly development methodology.
- Not suitable for small projects.
- Time consuming model to develop the product.
- Failure in development would cause lot of damage and loss as it is an expensive model.
- Risks are not identified at the initial stage and they can't be prevented.
- Requirements can't be changed in the middle of the process.