Software Development Lifecycle, in short, termed as SDLC is a process that defines various stages involved in software development for the delivery of a product. SDLC is very important as it gives a framework for a set of activities and ensures the quality of the product delivered. There are seven phases involved in Software Development Lifecycle. They are Planning, Requirement Analysis, Design, Implementation, Testing, Deployment, and Maintenance. Here we shall see each of these phase-in detail
Phases of SDLC
As the quote says “By failing to prepare, you are preparing to fail”, Planning is very important for any task. Similarly, Planning is the initial phase of the Software Development Life cycle. Planning starts with listing the problems of an Existing system. Problems in the existing system are listed to come up with the objectives of the new system to be developed. Along with the scope of the new system, financial planning and Resources planning are also done in this phase. Then last comes the planning for the project schedule which is very essential to complete the project on time. Only when the planning phase is completed, it can be moved on to the other phases
2. Requirement Gathering and Analysis
Defining Requirements and gathering all required information like the purpose of the new system, end-users for the new system, their needs are all carried out during this phase. Risks involved in the development of the new system are also identified. The analysis is done to ensure that the end-users needs can be met by the new system. All clarifications regarding the requirements are received from the concerned team before starting on the Design part. The output of this phase will be in the form of a document more often called a Software Requirement Specification or SRS document. This document along with new system requirements also contains Software, Hardware, and Network requirements needed for the development of the new system. This will be used as the input for the design phase.
Design is a kind of modeling everything visually. Developers will outline the details for the new system using the Software Requirement Specification document in the form of a Design Document. The Design document will include details like User Interface which will define how the user is going to interact with the new system, Database which is going to be used for storing data, platforms on which the new system will run, Security measures to be taken to protect the system, etc. So both front-end and back-end are defined here. If required, prototypes are also defined. Prototypes give a basic idea of the actual look and feel of the new system. When the design is completed it is time to move on to the next phase, which is the development phase.
This phase is the coding phase. This is the most important phase of SDLC as it is where the actual software is developed. It is the longest phase of SDLC. Here the design document is converted into the software. The developers need to make sure the software meets the Software requirement specifications. Developers will have to follow coding standards and use tools like compilers and debuggers to eliminate coding defects. Identifying coding bugs and fixing them is critical here. Programming languages are chosen based on the requirements and specifications of the project. A detailed design will help in hassle-free code development.
Testing of an application is critical before it is actually made available to the Users. This is part of a Quality Assurance process. It is started as soon as coding is completed and all coding errors are fixed. It is done by Quality Assurance Engineers. Manual or Automated Testing are performed depending on the Project. In the case of Automated Testing, many tools are available in the market. Again depending on the nature of the project automated testing tools are selected. The developed software is tested thoroughly to make sure that the requirements are met. The defects are identified and logged in Defect Tracking tools. Then they are tracked to closure. Different types of defect tracking tools are used by different companies. The initial testing done is called Unit testing. Then the individual units are integrated and integration testing is performed. The software is repeatedly tested to ensure that there are no more defects
When the defects are all closed and no more defects are identified, the software is ready for installation. The installation phase is often called the Deployment phase. In some cases, it could be the deployment of code on a web server, and in some cases, it could be integrating with other systems. The users can start using the software after deployment. In some cases, since the software is deployed to the production environment, again another round of testing is carried out here to ensure that there are no issues in the new environment. The users could also be trained just before this phase to make sure that they are aware of the usage and features of the new system.
Maintenance is an important phase as there might be issues identified when the end-users start using the product. In some cases, the end-users keep changing and there might be different types of issues identified. These issues need to be fixed from time to time. The maintenance time might vary depending on the size of the project. Sometimes even new features are added as per user feedback and released.
There are various SDLC models and the most common ones are Waterfall and Agile. We shall see about these in detail.
This was the most commonly used and most accepted model. The output of one phase of the Software Development Lifecycle is used as the input for the next phase. So the successive phases can be started only after the completion of the previous phase. At the end of each phase review and sign-off is done before moving on to the next phase. The waterfall model is very useful when the requirements are fixed and do not keep changing. The main advantage of the waterfall model is it is easy to follow and the milestones are clearly defined.
Agile is a simple and highly effective process. In the Agile model, the task is divided into small iterations of smaller durations. For each iteration, all phases of SDLC like planning, analysis, design, coding, implementation, testing, and deployment are carried out. Here there will be continuous delivery. Even when there are frequent changes in the requirement that can be handled here easily. During each sprint the new requirements come from Backlog and roll through all phases of SDLC. Since changes are inevitable the agile model helps the project to adapt to it instead of ignoring it.
SDLC is a systematic process and it ensures the quality of the product delivered. All phases of SDLC are very important. So adhering to phases of SDLC is very important for the success of the project.