Software models are the methodologies that describe the ways in which we can develop a particular software product in order to validate the software’s functionality and fulfil the Quality standards.
Software Models are the standard approaches developed and designed to define the way in which a particular software product can be developed in an organisation using any specific software model.
Following are the major two software models widely used :
A) Waterfall Model
Waterfall Model is one of the major used models to develop a software product.
Waterfall model is a sequential model which means it follows a well defined sequence (one phase after the another) in order to develop a software.
Following are the different phases of waterfall model :
1. Requirement Analysis: Requirement analysis is the first and basic step of the waterfall model in which requirements and specifications are gathered about the software product that needs to be developed like what the system should do, how it should be designed, how it should perform its tasks etc.
2. System design: system design is the second phase of the waterfall model where the detailed design of the software is developed including the work flow of the software., specifications of the software and also how the software used behave based on the applied condition/input.
3. Implementation: implementation begins just after the system design phase is completed. Once the system design is ready, the developer-team starts building the actual system using the suitable programming language.
4. Testing: once the software product is ready, it is sent for testing where the quality standards and functionality of the system is verified against various inputs given by the testing team. If a bug is found in the system, the testing team reports it to the application team for further needed changes. Again after the changes made, the software is retested by the testing-team and this process continues until the software is not found bug-free.
5. Deployment: Once the software product is found bug-free in the testing stage, the next stage is deployment.User acceptance testing is done at this phase to check whether the software meets the user’s requirements and quality standards.
6. Maintenance: Maintenance is the last phase of the waterfall model. In the maintenance phase, a maintenance team is available to solve user’s queries and the problems that can arise in the system in the future.
B) Agile Model
Agile model is one of the widely used models in real scenarios.
Most of the big companies also follow an agile model in the software industry as IBM, Cisco,Microsoft,AT&T etc.
Agile Model follows an iterative development approach.
In an agile model, the whole task or the process is divided into a number of iterations based on the project requirement. Then these iterations are deployed. Typically, the time of an itertion in an agile model is 3-4 weeks. Since the whole project using agile methodology is divided and deployed in a number of iterations, the risk is also reduced regarding the overall software project in case of agile model.
Following are the phases in the Agile model are as follows:
Requirements gathering: In requirement gathering, we collect all the requirements regarding the software that needs to be developed like what the system should do, how it should be designed, how it should perform its tasks etc. .In requirement gathering, brainstorming sessions are also done among project-members to get more and more innovative ideas about the software product that needs to be developed.
Design the requirements: Once the requirements are gathered, the next phase is to design those requirements in a well-documented format, UML diagrams can be used to implement the design of the actual system that will be developed and how the data must flow in the proposed system.
Construction/ iteration: In the construction phase, the developers start implementing the design using suitable programming language into the actual system. The whole System is developed into a number of iterations and various changes are made into the developed system based on the feedback by client and project manager. Here the customers get the iterations on regular intervals so better customer satisfaction can be achieved using the agile model.
Testing/ Quality assurance: Once the System is developed by developer-team, the system is sent to testing-team to test the system against bugs, functionality and quality standards that the software product must meet. In the testing phase, the testing-team tests the software by applying various inputs and testing techniques. If any bug is found during the testing phase, the testing team reports it to the developer team for further solution. After the changes have been made by the developer-team in order to fix the bug, the testing team retests the software and this process continues until the software is not found bug free, stable and meeting the quality standards.
Deployment: After the final software product is bug free and passed by the testing team, the software is deployed at the end user site where User acceptance Testing (UAT) is performed against various given inputs to check the software functionality and user/customer satisfaction from the customer's end.
Maintenance and Feedback: Maintenance and feedback is the last phase of the agile model. In the maintenance phase, a maintenance team is available to solve user’s queries and the problems that can arise in the system in the future. Maintenance team works on the feedback provided by the customer regarding the software product developed for the customer.
C) Spiral Model
Spiral model is another most important model used in project development. Spiral model deals with risk assessment, that is why it is also called risk-driven model. In spiral model the whole software is divided into various number of prototypes and all n number of prototypes goes through the following 4 stages:
Following are the major phases of spiral model :
Planning: In planning phase the objectives the determined i,e., what are the specifications that needs to be included in the system, what are constraints of the software product that need to be developed, what the system should do, how it should be designed, how it should perform its tasks
Risk Analysis: Risk analysis is the second phase of the spiral model. In this phase, the risks regarding the software are identified and then the methods/ways that can be determined to resolve the risks of the system.
Development: In the development phase, the actual system is developed by the development team and then gets tested by testing-team.
Assessment: Assessment is the final phase of the spiral model where we plan the next level phase i.e the design,risk analysis,development of the next level prototype of the proposed system.
All the above described methods are followed in each module of the software.
D) Iterative Model
In Iterative model, the project is divided into a number of iterations or modules. The whole project is developed, divided and deployed into iterations or tasks.
Following are the phases of iterative model:
Requirement: In this phase all the requirements are gathered and well documented in a document known as Software Requirement specification (SRS).
Design and Development: Based on the information gathered from the SRS which was developed in the Requirement phase, the system-design is formed.The actual development of the system starts by the developer-team using suitable programming language.
Testing: Once the System is developed by developer-team, the system is sent to testing-team to test the system against bugs, functionality and quality standards that the software product must meet. In the testing phase, the testing-team tests the software by applying various inputs and testing techniques. If any bug is found during the testing phase, the testing team reports it to the developer team for further solution. After the changes have been made by the developer-team in order to fix the bug, the testing team retests the software and this process continues until the software is not found bug free, stable and meeting the quality standards.
Implementation: After the final software product is bug free and passed by the testing team, the software is deployed at the end user site where User acceptance Testing (UAT) is performed against various given inputs to check the software functionality and user/customer satisfaction from the customer's end.
2. What is User Acceptance Testing (UAT) ?
User Acceptance Testing (UAT) is one of the most important testing performed after the product has been made for the final deployment.
UAT is performed at the end user or client site.
As the name suggests, In UAT the product is tested for the validation of end-to-end business flow.
UAT is done at the final phase of testing after functional, integration and system testing is performed successfully.
UAT primarily focuses on customer satisfaction regarding the final deployed position at client side.
UAT is done by the intended/final users of the developed software product.
Sometimes, the client hires a tester at the client side to perform testing on the client’s behalf at the client end, then this testing is known as Beta Testing.
3. Bug Life Cycle
Bugs are the errors that arise in any software product and disturbs software’s normal or expected flow/result. Bugs can be dynamic or static.
Following are the 9 major possible states that a bug can enter during its life cycle:
New: When a bug is reported/tracked for the first time, the bug is labelled as new.
Assign: When a bug is reported and assigned to the development team for further fixation then the bug is called/labelled as assigned. ‘Assign’ is the status of a bug where the bug is assigned to the developer team and not yet resolved.
Active: When the development team starts working on the bug fixation, then the bug is labelled as ‘Active’.
Test: when the developer team makes the necessary changes in the application for the reported bug-fixation and sends it for further testing after the changes have been made, then the bug is labelled as ‘Test’.
Verified: when the tester retests for the bug after the ‘test’ state /changes made in the software and if there is no further bug detected in the software, then the bug is labelled as ‘verified’.
Closed: A bug is labelled as ‘closed’ state by the tester, if the bug doesn’t exist in the software after the fixation.
Reopened: when a bug is not fixed even after some changes have been made into the software then the bug is reopened by the tester for further bug-fixing, then the bug is said to be in ‘Reopened’ state.
Rejected: when a developer finds that the reported bug does not need any primary focus or fixation then the bug is labelled as ‘rejected’.
Deferred: when the bug is not not found as of prime priority by the developer and is expected to be resolved in the upcoming/next release then the bug is said to be in deferred state.