In the IT industry it is a big process to design the architecture, develop software and test it. Software Development Life Cycle (SDLC) aims to make quality software that meets or exceeds consumer specifications and that gets completed within the decided period and cost estimates. They are the tasks that are accomplished at every step in a software development process.
It is a detailed plan that describes the steps to develop, replace, alter, maintain or modify a specific software. It describes a method that improves the quality of software and the whole development process.
Below are the stages of SDLC:
The main, foremost step of SDLC is an analysis of requirements and planning according to those requirements. The senior members handle this first stage, in which they take input from the customers, market surveys, sales department, etc. All the input is collected and used to plan the project and to figure out the product feasibility, operation, and technical areas.
Quality assurance requirements are also planned and the associated risks are identified. The result of the technical feasibility defines different technical methods that can be used to implement the project.
After the requirements are analyzed, they should be documented and then approved by the customer. This is known as the Software Requirement Specification (SRS) document.
The SRS document is a reference for the architects so that they can derive the best architecture for the product to be developed. After the SRS document, another product architecture is documented that is called Design Document Specification (DDS).
All important stakeholders review the DDS and based on different parameters like design modularity, budget, risk assessment, and product robustness, the design approach is selected for a particular product.
In this stage the actual development takes place. The programming code is made as per the DDS. If the design is made in an organized and detailed manner, code generation can be done without any difficulties.
The coding guidelines must be followed by all the developers defined in their specific organization. Languages such as Java, Python, C++, PHP are used for coding, as per the requirement of the software coding language.
Nowadays, product testing is one of the subsets in all SDLC models, as the activities of testing are now mostly included in all stages of SDLC. During product testing, all the bugs are tracked, reported, fixed, and retested until the product reaches the standards that are written in the SRS document.
Once the product is built and the testing is done, it’s formally deployed in the market. The product may be released in a small segment and there again it will be tested in an actual business environment, also called User Acceptance Testing (UAT).
Then with feedback from UAT, it may be enhanced based on the target market. After the product is released in the target market, maintenance is done for existing customers of the product.
There are several SDLC models which can be followed during the development of software that can fit any requirements.
Popular SDLC models in the industry:
Waterfall Model
Spiral Model
V-Model
Iterative Model
Big Bang Model
RAD Model
Agile Model
Rapid Application Development and Prototyping
Let’s discuss the popular SDLC models now.
It is the linear-sequential life cycle model that was the first SDLC model to be introduced. It is easy to work with and understand. The main thing to remember about this model is that every phase must be finished before the next phase starts, as there should be no overlapping in the before and after phases.
Advantages:
It is easy to use and work with.
Phases are finished one at a time.
It lets you manage and departmentalize control.
The model is rigid, as in every phase there are specific deliverables and a process to review.
It works best for small projects where the requirements are understood well.
Disadvantages:
The waterfall model does not allow us to go back to the previous phase once we have moved to the next phase.
As in the world of technology, requirements can never be predefined, it keeps on changing with time, therefore it’s difficult to state all the requirements.
For a complex project, it is not suitable.
It is a way of breaking the larger software development process into smaller chunks. In this model, the code is developed and tested in multiple cycles. In every cycle, additional features can be developed and tested until we come to the end of the software applications that need to be deployed.
Advantages:
Less cost to change the requirements as it has many iterations.
As there are many iterations, it’s easier to test and debug the issues.
Risks are easy to handle.
Disadvantages:
No phases overlap each other.
The system architecture is still problematic as the requirements gathered for the entire software development life cycle are predefined.
The spiral model follows the iterative methodology with controlled and systematic methods of the waterfall model. Thus, it’s a combination of both waterfall and iterative models. It handles incremental releases of the software or increment changes that happen in every iteration.
Advantages:
Features can be added in a systematic way and development is fast.
Space for customer feedback is there.
Any additional functionality can be added at any later stage.
Risk is managed by continuous development.
Disadvantages:
It is good for large projects only.
There is too much documentation due to intermediate phases.
It can happen that the software is not released as per schedule.
As the name suggests, the process in the V-model takes place in a V-shaped sequential manner. The full form of the V-model is the verification and validation model. Every development phase has a testing phase associated with it.
Advantages:
The defects are found very easily and early in this model, as with every development we are finding the issues.
The downward flow of defects is not there.
Easy to use, works well with small projects.
Disadvantages:
Least flexible and rigid.
No software prototypes are produced as the software is developed in the implementation phase.
All the testing documents need to be updated when there are any changes during the development.
It is the model in which we have continuous iteration in the development phase as well as testing and as per the changing requirements, the changes are made in every iteration.
Advantages:
Productivity increase: With the help of the agile model resources can be used in a better way. As the work is divided into the number of iterations, there is always a deadline to complete that iteration. Developers are always involved in developing and not sitting idle.
Customer engagement: Customers are more involved in the development process. With the help of the requirements as per the customer, the tasks can be prioritized accordingly. The continual engagement of customers reduces confusion, as the developers can know exactly what the customer wants.
Changes are managed: At the end of every iteration, the changes made are reviewed, and any changes pending can be put to the next iteration.
Visibility: There is more visibility in this model from knowing the requirements of the product at every stage to the completion.
Disadvantages:
As the requirements are continuously changing the effort cannot be calculated at the beginning of SDLC.
There is not much emphasis on designing and documentation.
The product/ software can be mismanaged if the client is not clear with its requirements.
I hope you enjoyed learning about how each model works in the software development life cycle.