Abbreviated as SDLC, software development life cycle refers to whole process of software development. It defines and describes, each and every phase that contributed towards the development of the software. It is a standard practice that empowers organizations to follow systematic & well-defined approach, for carrying out the development in an effective way, so as to achieve desired software product of highest quality.
Following are the reasons causing the need for SDLC:
SDLC comprises of different phases that are followed sequentially, in order. It starts from a phase of requirement gathering & analysis, and ends with maintenance phase. The six phases of Software Development Life Cycle in a subsequent manner are:
This phase visions the gathering of business requirements, followed by the analysis to study and validate the feasibility of these requirements for implementation in the system. Client and Project Manager are the key persons in this phase. They are responsible for determining and managing the requirements, through various meetings and discussions. The outcome of this phase is Software Requirement Specification (SRS). This phase is followed by Designing phase.
During designing phase, blueprint/software design is prepared, on the basis of inputs, provided from the requirement gathering and analysis phase i.e. SRS. This blueprint helps in determining the requirements, needed in the development of software such as hardware and system requirements. The outcome of this phase is software design. This phase is followed by Implementation phase.
The software design, visible in documents, is implemented in this phase through coding and programming. This phase generally involves modules and codes. It is one of the longest phase of the SDLC. The key identity of this phase is developers. The outcome of this phase is a developed or working software product that acts as an input for the next stage i.e. testing phase.
In this phase, developed software is handed over to the testing team, to evaluate and validate the functioning of the software product, in accordance with its pre-defined requirements and meet the end users' expectations. It involves several types of testing, such as unit testing, integration testing, system testing and acceptance testing. This phase works as a gate for the release of software product in the market.
After getting through testing phase, successfully, software product is ready to get deployed on customer's side for its use.
Maintenance phase is all about resolving defects or issues, occurring on the customer's side, while using the software product. It ensures the fixing of all issues post the deployment of software product at the customer's site.
Based on different practices, strategies and needs of the software product, various types of SDLC models are available to approach, for developing the software product. Some of the well-known SDLC models are:
It is a linearly downward and sequential flow of phase-wise development of software. Waterfall Model doesn't allow any overlapping of different testing phases.
Software development begins with the codes related to each functionality is designed and developed in the form of iterative cycles. With the completion of each iteration other remaining features or functions are subsequently developed till the time the complete software has been built. Read our article on iterative model.
Mainly used for large scaled projects requiring continuous enhancement, spiral model combines the working ideas of waterfall & iterative model of software development.
Also known as the verification & validation model, V model is just an extension of the waterfall model. For every development phase, there is an associative testing phase.
Commonly used for small scale projects, big bang model involves focussing all the capabilities towards understanding and implementing the requirements as they arrive. Big bang model doesn't lay too much of emphasis on planning.
With focus on process adaptability and rapid delivery, the product is broken down into smaller iterative builds in agile model. Each iteration is worked upon by a group of cross functional teams working concurrently on various facets like planning, designing, testing, coding, analysis of requirements.
Involves building a prototype model of the original software application for displaying the chief functionality desired by the end user but will not be possessing the same logic as present in the original application.
Rapid Application Model involves prototyping and iterative development of software application with little or no planning involved. The client requirements are collected from interactive workshops or targeted user based groups. This is followed by rapid testing of the prototypes and integrated iteratively to form the whole product.