The software development life cycle (SDLC) is a framework used in project management to describe the stages and tasks involved in each step of writing and deploying the instructions and data computers use to execute specific tasks. An SDLC model maps the complete software development process from its initial planning through maintenance and eventual retirement and replacement of the completed application.
An important goal of the SDLC is to quickly and efficiently produce high-quality software in a series of phases that are called steps. The number of steps in an SDLC will vary depending on the business and its software product goals. For example, at the most basic level, software is designed, developed, tested and then released. Upon release, the software is maintained until it is discontinued. Typically, there will be between five and seven steps—although there can be more.
Software development life cycle steps
In general, the SDLC process follows these phases
Stage 1: Planning and Requirement Analysis
Requirement analysis is the most important and fundamental stage in SDLC. It is performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry. This information is then used to plan the basic project approach and to conduct product feasibility study in the economical, operational and technical areas.
Planning for the quality assurance requirements and identification of the risks associated with the project is also done in the planning stage. The outcome of the technical feasibility study is to define the various technical approaches that can be followed to implement the project successfully with minimum risks.
Stage 2: Defining Requirements
Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer or the market analysts. This is done through an SRS (Software Requirement Specification) document which consists of all the product requirements to be designed and developed during the project life cycle.
Stage 3: Designing the Product Architecture
SRS is the reference for product architects to come out with the best architecture for the product to be developed. Based on the requirements specified in SRS, usually more than one design approach for the product architecture is proposed and documented in a DDS - Design Document Specification.
This DDS is reviewed by all the important stakeholders and based on various parameters as risk assessment, product robustness, design modularity, budget and time constraints, the best design approach is selected for the product.
A design approach clearly defines all the architectural modules of the product along with its communication and data flow representation with the external and third party modules (if any). The internal design of all the modules of the proposed architecture should be clearly defined with the minutest of the details in DDS.
Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.
Developers must follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers, etc. are used to generate the code. Different high level programming languages such as C, C++, Pascal, Java and PHP are used for coding. The programming language is chosen with respect to the type of software being developed.
Stage 5: Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the product where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS.
Stage 6: Deployment in the Market and Maintenance
Once the product is tested and ready to be deployed it is released formally in the appropriate market. Sometimes product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing).
Other organizations may include steps for deconstructing, retiring and replacing software as well.
There are a myriad of various SDLC models to choose from when developing software, and the right one depends on the requirements of any given project. Several models can be combined into a hybrid methodology. Documentation is crucial, regardless of the type of SDLC model for a given application, and is usually done in parallel with the development process.
For example, the waterfall model is a linear, sequential approach to the software development life cycle (SDLC) that emphasizes a logical progression of steps. Similar to the way water creates a waterfall by flowing down a creek and over a cliff, once development work in a waterfall model has been completed, it cannot be revisited. The term is often associated with large, monolithic software products developed before the turn of the century. Most developers do not develop code with waterfall now since it is considered unrealistic to finish a piece of code, and not revisit it.
In contrast, the Agile model for SDLC is a more modular and flexible approach. Agile approaches software development in incremental cycles, called sprints. Each sprint is iterative and code is designed to be modular.
Following are the most important and popular SDLC models followed in the industry −
Benefits and challenges of the SDLC
Benefits that come with a well-defined SDLC include:
Aids in anticipating in possible mistakes.
Measures progress easily.
The shorter each software iteration is, the easier testing can become.
Utilizing sprints in an SDLC model can aid in development speed.
However, if used less optimally, SDLC can come with hindrances such as:
Some models require more resources than others.
Not all models are optimal for specific environments.
If a mistake is made in a planning stage, then it could mean delays in the software development stage.
Not all models are easily adaptable.
Many advantages are specific to the specific model chosen. To better represent advantages and disadvantages in this way, we can use both waterfall and agile models to compare. Waterfall and agile are often compared SDLC models, as they were the most widely used at different points in time. Waterfall methods have the advantage of being easy to understand, well defined and easy to verify each phase. The waterfall model can also be used in small development teams. However, the waterfall model does not allow for the start of the next phase until the previous one is finished, is not suitable for long term projects and can get expensive if any changes are needed.
Meanwhile, agile enables flexibility, while each iteration is separated by sprints and is well suited for both long and short term projects. However, agile is high in development cost, needs skilled teams, and can be exhausting for teams to work on sprints.
The Tech Platform