A Software Development Life Cycle (SDLC) model is a framework that describes the exercises performed at each phase of a software development project.
In a Software Development Life Cycle, the activities are performed in five stages −
Requirements Gathering − Requirements for a software to be developed are accumulated. These requirements will be in a language that is comprehended by the client/user. Domain specific terminology is recommended.
Analysis − The gathered prerequisites are analyzed from implementation perspective and the software specifications are written to cover both, the functional requirements and the non-functional requirements.
Design − This stage involves arriving at the software architecture and execution specifics based on technology chosen for development.
Development − In this stage, the code is developed, unit tested, integrated, integration tested and the build is delivered.
Testing − Functional testing of the built software is done in this stage. This additionally incorporates the testing of non-functional requirements.
There are two ways to performing these activities −
Prescriptive − The SDLC models that will give you methods of performing the activities in a endorsed way as defined by the framework.
Adaptive − The SDLC models that will give you flexibility in performing the activities, with specific guidelines that need to be followed. The agile methods mostly follow this approach, with each one having its standards. In any case, following an adaptive or agile approach does not mean that the software is developed without following any order. This would lead to a confusion.
You need to understand that we can't say that a particular SDLC model is fortunate or unfortunate. Every one of them has its own strengths and weaknesses and thus are suitable in specific settings.
When you choose an SDLC model for your project, you need to understand below points −
For example, if the software development is predictable, you can use a Prescriptive methodology. On the other hand, if the software development is unpredictable, i.e. requirements are not entirely known, or the development team does not have earlier exposure to the current domain or technology, etc. then Adaptive approach is the best decision.
In the following sections, you will understand the most prevalent SDLC models that are evolved during the execution of software development projects across the industry. You will also get to know the strengths and weaknesses of every one of them and in what contexts they are reasonable.