Software Development Life Cycle (SDLC) is a well-defined and structured framework that guides and enables the steps involved in the development of high-quality, low-cost software production at each phase in the shortest production period possible. It is a process incorporated by the software industry by covering a detailed plan for designing, creating, developing, testing, deploying and maintaining high-quality software.
The process of Software Development Life Cycle (SDLC) –
SDLC is a process defining the various stages that are involved in developing and delivering a high-quality product. The stages of SDLC cover the complete life cycle of software i.e. the period from its inception to completion and retirement of the product.
Adhering to the SDLC process allows the development of the software in a systematic and disciplined manner. In other words, it enhances the chances and scope of development speed while minimising project risks and other costs associated with alternative methods and techniques of such production.
SDLC maps the various stages and activities performed and to be performed for the software product and various stages of software are capable of performing more than one activity. Thus, SDLC is an overall methodology for improving the quality of software by enhancing its development process.
Purpose and Importance of SDLC–
The purpose of SDLC is to deliver a high-quality customised product. SDLC closely follows its purpose and becomes highly important for the hereunder reasons –
SDLC aids assistance in planning, estimating, developing and scheduling a project.
SDLC is a standardised framework and hence it increases transparency and visibility on all aspects of the project.
It also offers the advantage of easy tracking and control, making the process convenient.
It considerably has a quick development period i.e. it lowers the risk of the project and thus improves and retains client relations.
It reduces the overall project management expenses, and cost of production and makes the project feasible.
This brings attention to the need for SDLC –
What is the need for SDLC in product development?
To determine a suitable life cycle model, the developing team needs to observe and execute a particular plan to achieve its goal.
Unless there exists an exact life cycle model, it will be troublesome for the software production team to continue with their work. As while working on developing a software product, there must be a very clear and thorough understanding among the team members of what they are supposed to do and how they are expected to do it.
If else wise, it will compel all the hard work, time spent, efforts and the overall project toward failure.
For instance –
When software is to be developed, a team is divided to work on each feature of the product, as per their area of expertise. However, if one establishes his task to decide on a design first, whereas another may begin with coding first, and the other may consider documenting first, then, it is quite obvious that the project will fall apart because it is of utmost importance to have a good knowledge and understanding among the team members to deliver an expected product.
From an overall view, SDLC adheres to a number of phases as Requirement gathering, Designing, Coding, Testing, and Maintenance, to develop and deliver the product in a systematic manner.
And the SDLC model is responsible for describing the entry and exit criteria for each particular phase. Each phase may begin only if its particular stage-entry criteria have been fulfilled or otherwise not. So, managing and monitoring the progress of a project becomes really difficult for software project managers without an SDLC model.
The process of developing software can be represented with an SDLC cycle that contains the 6 phases of SDLC.
Phases of Software Development Life Cycle –
Phase #1 - Requirement analysis and gathering –
The first step of the software development life cycle begins with gathering all the relevant information from the customer to develop a product as per their expectation. Ambiguities, if any, must be resolved and removed at this particular phase only.
The Business analyst and the Project Manager organise a gathering with all fundamental and essential information from the client, such as, what the customer wants, who will be the end consumer, and what is the ultimate purpose of the product. Thus, prior to making a product, a core comprehension and gathering proper knowledge and information regarding the end product is extremely beneficial.
Suppose, a customer wishes for an application which involves financial transactions. In such cases, the requirement has to be made clear such as what kind of transactions he will be performing, how such transaction will take place and in which currency it will be done, etc.
Once all such queries are satisfied and all the needed data gathered, an analysis is conducted to confirm the feasibility of the development of a product and if any point needs to be clarified, a meeting is set up for further discussion.
Once the need is clearly and completely understood, the SRS (Software Requirement Specification) document is developed. This SRS document must be thoroughly understood by the developers and should be further reviewed further by the customer for future reference.
Phase #2 - Design –
The second phase of SDLC involves designing i.e. with the help of the gathered data from the SRS document input is generated and software architecture is used for implementing system development.
Phase #3 – Implementation or Coding –
Once the developer receives the Design document, the process of implementation/coding begins. The Software design is further translated into source code, and all the other components of the software are implemented altogether in this phase.
Phase #4 –Testing –
Post-completion of coding, the process of testing starts at once. All the modules are released for testing and the developed software is tested thoroughly if any defects are detected they are assigned to developers to get them fixed.
Until the software functions as per the customer’s expectation, it is tested and retested over and over again. In this phase, the testers refer to the SRS documents to ensure that the software is produced as per the customer’s requirement standard.
Phase #5 –Deployment –
Following this, the next phase is put into action, i.e. the product is deployed in the production environment or the first User Acceptance Testing (UAT) is done to determine the overall quality and work of the software on the basis of customer need and expectation.
In a UAT, a replica of the production environment is created where the customer along with the developers tests the software. If the customer gives his affirmation, then the customer allows it to go live.
Phase #6 – Maintenance –
Once the product is deployed in the production environment, it becomes the duty of the developers to care for and make necessary enhancements if any issue arises.
7 Software development Life Cycle Models -
A software development life cycle model (SDLC model) is a well-defined and descriptive representation of the software development cycle. Although these models might have a different approaches, the basic phases and activities are alike for all the models.
SDLC Model #1 – Waterfall Model –
The waterfall model is the most primitive model ever known in the field of SDLC. It is also popular as the linear sequential model, as the outcome of one phase is the input for the next and any further development is not possible unless the previous phase is complete.
Initially, the requirement gathering and analysis are conducted and once it is done, the process of system design begins. The SRS document acts as the output for the Requirement phase and as an input for the system design.
In the process of system design, the documents which act as input for the next phase i.e. implementation or coding are created.
In the following stage of implementation, the software is coded and the developed product is made ready for the next phase i.e. testing.
The developed code is thoroughly tested in this phase to detect the defects in the software if any. The defects are then logged into the defect tracking tool and the product is retested once again. Until flawless, and all the bugs are fixed, tests are performed and once perfected the software is ready to be launched.
In the following phase of deployment, after the customer has signed off, the developed code is moved into production.
Any further issues in the production environment are then resolved by the developers which fall under the category of maintenance.
Advantages of the Waterfall Model –
It is simple and easy to understand.
It is completed in a step-by-step process.
Deliverables of each phase are well defined, and the output of one stage becomes the input of another and thus leaving no space for complexity.
Disadvantages of the Waterfall Model –
The waterfall model is time-consuming and cannot be employed in a short-duration project as each and every phase of this project needs a considerable amount of time.
It cannot be employed in projects which have uncertain requirements or wherein the requirement keeps on changing as this model expects a clear and organised gathering and analysis phase, and any sudden change in the later stages would increase the cost.
SDLC Model #2 –V-shaped Model –
The V-shaped SDLC is also known as the Verification and Validation Model in this model Verification and Validation i.e. the stage of development and testing is performed in a parallel manner. The V model is almost similar to the Waterfall model, except for the fact that the test planning and testing begin at an early stage.
Verification Phase –
Requirement Analysis –
All the needed information is gathered & analysed in this phase and the verification activities also include reviewing the requirements.
System Design –
Once the analysis is done and the requirement is clear, a system is designed. The components of the product are created and documented together in a design.
High-level design –
High-level design refers to the architecture/design of modules and takes into account the functionality between the two modules.
Low-level Design –
Low-level design refers to the architecture/design of individual components.
Once the design is over, the product is coded.
Validation Phase –
Unit Testing –
Unit testing is done by using the unit test cases, that are designed and performed in the low-level design phase, i.e. on individual components. This test is performed by the developer itself to detect early defects.
Integration Testing –
It is performed by using integration test cases in High-level design as it is done on integrated modules, it is performed by testers.
System Testing –
This test is done in the phase of system design. The functionality of the complete system is tested.
Acceptance Testing -
Acceptance testing is associated with the phase of requirement analysis phase and is done in the customer environment to check customer acceptance.
Advantages of the V Model –
Easy and understandable.
A systematic and disciplined model with a high-quality product.
It is good for smaller projects.
Disadvantages of the V Model –
Not suitable for ongoing projects.
Changes at a later stage can cost more.
SDLC Model #3 –Prototype Model –
This model is developed prior to developing the actual software. Prototype models have a limited functional capability and are inefficient to perform when compared to the actual software. It is a valuable mechanism as it helps to understand customers’ needs and thus dummy functions are used to create such prototype models.
As prototype models are built prior to the actual software, it serves as a means to get valuable feedback from the customer. This feedback is implemented and the prototype is again reviewed and evaluated by the customer for the possibilities of changes if any. This process of evaluation is continued until the model is finally accepted by the customer.
Once the requirement gathering is completed, a quick design is created and the prototype which is presented to the customer for reviewing is built.
Customer feedback is considered to modify the prototype and is again presented to the customer for further evaluation. Once the customer approves the prototype, it is used as an input (requirement) for building the actual software. And, the actual software is developed using the Waterfall model.
Advantages of Prototype Model –
Reduced cost and time of development of the software as the defects are found much earlier in this stage.
Any sort of missing details, defects, and possible changes can be easily identified in the evaluation phase and can be implemented in the refined prototype or in the actual software.
As the customer can openly discuss and freely state his opinion from the initial stage, the chances of confusion in the requirement are reduced considerably.
Disadvantages of Prototype Model –
Customer involvement may at some point create complexity in the scope of the application and may result in an increased delivery time of the product.
SDLC Model #4 –Spiral Model –
The model adds iterative and prototype approaches. Spiral models are followed by iterations and the loops in this model represent the phase of the SDLC process. The innermost loop is requirement gathering & analysis and follows Planning, Risk analysis, development, and evaluation. The next loop is designing which follows the process of Implementation and testing.
The Spiral Model can be further explained in four phases –
Phase #1 – Planning: This phase includes requirement gathering and all the gathered information from the customer is then documented. For the next phase, a software requirement specification document is created.
Phase #2 – Risk Analysis: By determining the risks, the best solution is selected and further analysis is done with the help of a prototype.
For instance – the risk involved in accessing data from a remote database could be that such access might be too slow. Such risks can be resolved with the help of a prototype of the data access subsystem.
Phase #3 – Engineering: Once the risk analysis is over, the rest of the process of coding and testing is performed.
Phase #4 – Evaluation: Once all the other processes are done, the customer finally evaluates the already developed system and plans for the next iteration.
Advantages of Spiral Model –
Extensive risk analysis with the help of a prototype model.
Changes in the functionality can be done smoothly with the next iteration.
Disadvantages of Spiral Model –
Best suited for large projects
A large number of iterations may lead to higher costs and result in more time to complete the final product.
SDLC Model #5– Iterative & Incremental Development Model –
In this model, the product has divided the product into smaller chunks. For instance – A feature to be developed in the iteration is decided and implemented as every iteration undergoes the phases i.e. Requirement Analysis, Designing, Coding, and Testing.
Once this stage is done, the product is verified and delivered to the customer for evaluation and feedback. The feedback so received from the customer is then implemented in the next iteration along with the newly added feature.
There are 4 phases of the Iterative & Incremental Development Model –
Phase #1 – Inception Phase – This phase includes the requirement and scope of the Project.
Phase #2 – Elaboration Phase – In the second phase the working architecture of a product is delivered which is a complete product covering the risks identified in the inception phase and also fulfils all the non-functional requirements.
Phase #3 –Construction Phase – The third phase of construction of the architecture is filled in with the code which can be readily deployed and is created through careful analysis, designing, implementation, and testing of another functional requirement.
Phase #4 –Transition Phase – The product is deployed in the Production environment in this phase.
Advantages of Iterative & Incremental Development Model –
Ease of risk analysis and identification.
Changes in the requirement can be easily incorporated and the new requirement will not increase the cost in the next iteration.
Defects can be detected easily at an early stage.
As divided into smaller chunks makes it easier to manage the ultimate product.
Disadvantages of Iterative & Incremental Development Model –
Complete requirements and understanding of a product are required to break down and build incrementally.
SDLC Model #6– Big Bang Model –
The Big Bang Model does not have any particularly defined process. This model doesn’t require much planning and scheduling and thus the developer does the requirement analysis & coding and develops the product as per his knowledge and understanding. It is used for small projects only and there is no testing team. So, as a result, no formal testing is done and this could also become a cause for the failure of the project.
Advantages of the Big Bang Model –
1. Simple model.
Requires less planning and scheduling.
The flexibility of the developer.
Disadvantages of the Big Bang Model –
Highly risky and uncertain.
Cannot be used for large, ongoing & complex projects.
SDLC Model #7–Agile Model –
The Agile Model is a combination of Iterative and Incremental models and focuses more on flexibility while developing a product rather than on the requirement.
In this method, a product is broken into small incremental chunks and is not developed as a complete product. Each chunk is built in terms of features and the next one is built on a previous one.
In this method, iterations are termed sprints and each sprint lasts for2-4 weeks. On completion of each sprint, the owner verifies the product and post-approval it is delivered to the end customer.
Customer feedback is implemented to improve and enhance the work in the next sprint. Each sprint is tested to minimise the risk of any failures.
Advantages of the Agile Model –
Flexible to changes.
Ease of adding new features.
Feedback and suggestion to offer customer satisfaction are taken at every stage.
Disadvantages of the Agile Model –
Lack of documentation
Requires experience and highly skilled resources
Lack of clarity in the client may lead to project failure.
Benefits of the SDLC –
If done correctly, SDLC can allow the highest level of management control and documentation.
Developers get a clear understanding of what they are supposed to build and why.
Software product developers can’t move on to the next stage until the prior one is completed and affirmed by a manager, this leads to a clear stage progression.
SDLC models implement checks and balances, thus ensuring that all software gets tested prior to its installation. This ensures fault-free software.
As all SDLC stages are so developed that give feedback to each other, these models, therefore, help and allow the projects to iterate and improve upon themselves over and over again until it attains perfection.
Adhering to a suitable life cycle thus becomes very important for completing a project successfully and making management easier in the process.
Indeed different Software Development Life Cycle (SDLC) models have their own advantages and disadvantages. Determining the best model for any Project takes factors like Requirement (whether it is clear or unclear), System Complexity, Size of the Project, Cost, Skill limitation, etc. into consideration.
Such as, in case of an unclear requirement, Spiral and Agile models can be used easily to accommodate changes at any stage whereas the Waterfall model is a basic model as all the other SDLC models are based on that only.