Software development Life Cycle (SDLC)
What is Software Development Life Cycle and is it important for me to know about it? The answer is YES. In case, you are planning to design/ develop or somehow related to the process of creating the software/ application, you should know it. Software Development Life Cycle (SDLC) comprises of all stages from inception to implementation of software. You must be wondering that why there is a single model which caters the need of all kind of projects? There are several models like waterfall model, incremental model, iterative model, V model etc. These models are used worldwide to develop software. The choice of model depends on requirements and purpose of software. The SDLC cycle, if followed, ensures the quality of the software.
Without following the SDLC, what one delivers might not be what customer has visioned
Is there anything common in all these SDLC models and if there is something common then what is it and what is its relevance? Different Software Life Cycle Models describe phases in software development and the sequence in which these phases are followed. Every phase provides inputs for the next phase. There are 6 important phases which are common in every SDLC model.
- Requirement Gathering and Analysis
- Implementation or Coding
Below is the description of these phases. The sequence of these six phases may change depending on the model chosen.
Requirement Gathering and Analysis– This is the most important stage in Software Development as during this stage we get to know what are the expectations of the customer, what are his requirements, who will be the target audience etc. If we get this stage wrong then no matter how perfectly we implement the other stages, the customer will not get what he envisaged. Meetings with the managers, stakeholders and the users may give a fair idea on what is expected. Once the requirements are gathered there is a Feasibility Analysis to check how much of the idea can be put into action. This stage requires research and analysis from the company developing it and the clients.
Design– In this stage a blueprint of various process and software is prepared from the requirements gathered in first phase. The final output of this phase is a formal design document which freezes the design and act as input for the coding phase. This document specifies everything from software and hardware requirements to overall system architecture.
Implementation/ Coding– This phase involves the actual coding/programming of the software. In this phase the task is divided among the programmers based on their skill set of either the module or the technology. Once the code is created, it is compiled by the developers. This is generally the longest phase in the SDLC. The output of this phase is library, executables, user manuals and additional software documentation.
Testing– This phase is concerned with validation and verification of the software created. This stage ensures that the compiled code and the software are working fine without any visible issues that can hamper the working of the software. The software is tested against the requirement and once it meets the exit criteria, the code is deployed.
Deployment– After successful testing, the software is delivered to customer for their use. This phase involves the packing of all sub packages, together with all relevant documentation in a suitable format for distribution.
Maintenance– Once the code is deployed and is used by the customers; there might be some problem which can crop up from time to time that needs to be rectified. The process of taking care and making some minor enhancements on the developed software is maintenance.
Generally, for short term projects, release phase is a point of sign off.
To sum up, Software Development Life Cycle is important for everyone to know from the programmer to the project manager. There are different SDLC models depending on the requirement and purpose of the software/ application to be created. The common thing in all these models is the phases, namely requirement gathering and analysis, design, coding, testing, deployment and maintenance.