What and Why
Software(or System or Application) Development Life Cycle is a systematic process that enables the production of high-quality, low-cost software in the shortest possible time. It includes frameworks describing all aspects of the software development project from planning, requirements gathering, analysis, implementation, testing, documentation, deployment, and maintenance.
The software development life cycle adds value to software development in the following ways:
SDLC encompasses seven steps, which are followed in a logical order.
Requirements gathering, Planning
The requirement is the first stage in the SDLC process. The senior team members conduct it with inputs from all the stakeholders and domain experts in the industry. Planning for the quality assurance requirements and recognizing the risks involved is also done at this stage.
This stage gives a clearer picture of the entire project's scope and the anticipated issues, opportunities, and directives that triggered the project. Requirements gathering stage needs teams to get detailed and precise re- requirements. This helps companies to finalize the necessary timeline to finish the work of that system.
System and Feasibility analysis
Once the requirement analysis phase is completed, the next SDLC step is defining and documenting software needs. This process is conducted with the help of the 'Software Requirement Specification’ document, also known as the 'SRS' document. It includes everything which should be designed and developed during the project life cycle.
There are mainly five types of feasibilities checks:
Design and Modeling
The system and software design documents are prepared in this third phase as per the software requirement specification document. This helps define the overall system architecture. In addition, this design phase serves as input for the next phase of the model.
There are two kinds of design documents developed in this phase. High- level and Low-level design.
High-Level Design (HLD)
Low-Level Design (LLD)
Design elements describe the desired system features in detail. They generally include functional hierarchy diagrams, screen layout diagrams, tables of business rules, business process diagrams, pseudo-code, and a complete entity-relationship diagram with a full data dictionary. These design elements are intended to describe the system in sufficient detail, such that skilled developers and engineers may develop and deliver the system with minimal additional input design.
Once the system design phase is over, the next phase is coding. In this phase, developers start to build the entire system by writing code using the chosen programming language. In the coding phase, tasks are divided into units or modules and assigned to the various developers. It is the most prolonged phase of the Software Development Life Cycle process.
In this phase, the developer needs to follow specific predefined coding guidelines. They also need to use programming tools like compilers, interpreters, debuggers to generate and implement the code.
Once the software is complete and it is deployed in the testing environment. The testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer's requirements.
During this phase, the QA and testing team may find bugs/defects that they communicate to developers. Then, the development team fixes the bug and sends it back to QA for a re-test. This process continues until the software is bug-free, stable, and working according to the business needs of that system.
The following are types of testing that may be relevant, depending on the type of system under development:
Deployment and Delivery
Once the software testing phase is over, and there are no bugs or errors left in the system, the final deployment process starts. Based on the feedback given by the project manager, the final software is released and checked for deployment issues, if any.
Operations and maintenance, Bug and change requests, enhancements
The actual problem starts when the customer starts using the developed system, and those need to be solved from time to time. Maintenance is the seventh phase of SDLC, where the developed product is taken care of. According to the changing user end environment or technology, the software is updated timely.
Once the system is deployed and customers start using the developed system, the following three activities occur.
Environments are controlled areas where systems developers can build, dis- tribute, install, configure, test, and execute systems that move through the SDLC. Each environment is aligned with different areas of the SDLC and is intended to have specific purposes. Examples of such environments include the following:
This SDLC model is considered to be the oldest and most forthright. We finish with one phase and then start with the next, with the help of this methodology. Why the name waterfall? Because each of the phases in this model has its own mini-plan, and each stage waterfalls into the next. A drawback that holds back this model is that even the tiny details left incomplete can hold an entire process.
This SDLC model stresses on repetition. Developers create a version rapidly for relatively less cost, then test and improve it through successive versions. One significant disadvantage of this model is that it can eat up resources fast if left unchecked.
This model can be considered an extension of the waterfall model, as it includes tests at each stage of development. However, just like the case with waterfall, this process can run into obstructions.
Big Bang Model
This SDLC model is considered best for small projects as it throws most of its resources at development. However, it lacks the detailed requirements definition stage compared to other methods.
One of the most flexible of the SDLC models is the spiral model. It resembles the iterative model in its emphasis on repetition. However, even this model repeatedly goes through the planning, design, build and test phases, with gradual improvements at each stage.
Agile is the new normal; It is one of the most utilized models, as it approaches software development in incremental but rapid cycles, commonly referred to as "sprints ."With new changes in scope and direction being implemented in each sprint, the project can be completed quickly with higher flexibility. In addition, agile means spending less time in the planning phases, and a project can diverge from original specifications.