Models of SDLC
Waterfall model
Winston Royce introduced the Waterfall Model in 1970. The steps always follow in this order and do not overlap. The developer must complete every phase before the next phase begins. This model is named “Waterfall Model“, because its visual representation resembles a cascade of waterfalls. Figure with phases is given below:
1. Requirements analysis phase: The aim of this phase is to understand the exact requirements of the customer and to document them properly. Both the customer and the software developer work together. It describes “what” of the system to be produced and not “how”. In this phase, a document called Software Requirement Specification (SRS) is created which contained a detailed description of what the system will do in common language.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a suitable form which authorizations further coding in a programming language. It defines the overall software architecture together with high level and detailed design. All this work is documented as a Software Design Document (SDD).
3. Implementation and Unit Testing Phase: During this phase, design is implemented. If the SDD is complete, the implementation or coding phase proceeds smoothly, because all the information needed by software developers is contained in the SDD.
During testing, the code is thoroughly examined and modified if needed. Small modules are tested initially. After that these modules are tested by writing some overhead code to check the interaction between these modules and flow of midway output.
4. Integration and System Testing Phase: This phase is highly crucial as the quality of the end product is determined by the effectiveness of testing carried out in this phase. The better output will lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the efficiency of individual modules. However, in this phase, the modules are tested for their interactions with each other and with the system.
5. Operation and Maintenance Phase: Maintenance is the task performed by every user once the software has been delivered to the customer, installed, and operated.
Advantages of Water Fall Model
1. Simple and easy to understand and use
2. Easy to manage due to the rigidity of the model. Each phase has specific job to do and a review process.
3. Phases are processed and completed one at a time.
4. Works well for projects where requirements are very well understood.
5. Clearly defined stages.
6. Easy to arrange tasks.
7. Process and results are well documented.
Disadvantages of Water Fall Model
1. No working software is produced until late during the life cycle.
2. High amounts of risk and uncertainty.
3. Not a good model for complex and object-oriented projects.
4. Poor model for long and ongoing projects.
5. Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty are high with this process model.
6. It is difficult to measure progress within stages.
7. Cannot accommodate changing requirements.
Spiral model
It is one of the most important Software Development Life Cycle models, which provides support for Risk Handling. In its diagrammatic representation, it looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a Phase of the software development process. The exact number of phases needed to develop the product can be varied by the project manager depending upon the project risks. As the project manager dynamically determines the number of phases, so the project manager has an important role to develop a product using the spiral model.
The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple repetitions of the software development process. It consists of the following phases:
1. Planning: The first phase of the Spiral Model is the planning phase, where the scope of the project is determined and a plan is created for the next iteration of the spiral.
2. Risk Analysis: In the risk analysis phase, the risks associated with the project are identified and evaluated.
3. Engineering: In the engineering phase, the software is developed based on the requirements gathered in the previous iteration.
4. Evaluation: In the evaluation phase, the software is evaluated to determine if it meets the customer’s requirements and if it is of high quality.
Prototyping Model
The prototyping model is a systems development method in which a prototype is built, tested and then reworked as necessary until an acceptable outcome is achieved from which the complete system or product can be developed. This model is used when the customers do not know the exact project requirements in advance. In this model, a prototype of the end product is first developed, tested, and refined as per customer feedback frequently till a final acceptable prototype is achieved.
Requirement Gathering and Analysis of Needs: This is the initial step in designing a prototype model. In this phase, users are asked about what they expect or what they want from the system.
Quick Design: This is the second step in Prototyping Model. This model covers the basic design of the requirement through which a quick overview can be easily described.
Build a Prototype: This step helps in building an actual prototype from the knowledge gained from prototype design.
Initial User Evaluation (Customer Evaluation): This step describes the initial testing where the examination of the presented model occurs, as the customer will tell the strength and weaknesses of the design, which will sent to developer.
Refining Prototype (Customer Feedback): If any feedback is given by the user, then improving the client’s response to feedback and suggestions, the final system is approved.
Implement Product and Maintain: This is the final step in the phase of the Prototyping Model where the final system is tested and distributed to production, here program is run regularly to prevent failures.
Agile Model
The meaning of Agile is versatile. “Agile process model” refers to a software development approach based on reiterative development. Agile methods break tasks into smaller repetitions, or parts do not directly involve long term planning. The project scope and requirements are placed down at the beginning of the development process. Following are the phases in the Agile model are as follows:
- Requirements gathering
- Design the requirements
- Construction/ iteration
- Testing/ Quality assurance
- Deployment
- Feedback
Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility.
Design the requirements: When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.
Construction/ repetition: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undertake various stages of improvement, so it includes simple, minimal functionality.
Testing: In this phase, the Quality Assurance team examines the product’s performance and looks for the bug.
Deployment: In this phase, the team issues a product for the user’s work environment.
Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.