Software Development Life Cycle (SDLC) is a well-planned approach for carrying out the design, development, and validation of the high-quality software products. The SDLC intends to deliver high-end software that adheres or surpasses customer expectations, completes implementation within estimates timelines and cost.
SDLC is an abbreviation for the Software Development Life Cycle. Another popular name for SDLC is the Software Development Process.
It is a framework which elaborates tasks at each stage in the Software Development Life Cycle.
ISO/IEC 12207 represents the global standard for the SDLC process. It intends to be the standard which outlines all the tasks needed for building and maintaining a software product.
SDLC – Software Development Life Cycle
SDLC is a methodology for developing a software product adopted by most of the software organizations. It includes a comprehensive plan outlining how to code, maintain, patch and remodel or improve the specific software. The life cycle represents a process for enhancing the quality of software and the entire development cycle.
The following diagram is a pictorial representation of the several stages of a conventional SDLC.
The Software Development Life Cycle comprises of the following phases:
Phase-1: Planning and Requirement Analysis
Requirement analysis is the most critical and central phase in SDLC. It gets carried out by the senior developers/testers of the team with information from the client, the pre-sales, market studies and domain specialists of the industry. These inputs help in planning the project approach and to perform the feasibility analysis based on the financial, operational and technical aspects.
QA (quality assurance) activity identification, project risk assessment also happen in the planning phase. Next, the feasibility study is a kind of technical analysis which aims to find out the most efficient ways to complete the project without any risk.
Phase-2: Defining Requirements
After getting through the requirement analysis, the next activity is to publish a clear definition of each of them in the form of a document. You suppose to share it with the customer or with the business analyst for the approval. This artifact is the Software Requirement Specification AKA SRS. It lists out every product requirements with sufficient details needed to start the design and development activities.
Phase-3: Designing the Software Architecture
SRS details act as the single point of reference for Software architects to chart out the best design for the product development. Usually, it is a practice to come out with multiple solutions and prepare a Design Document Specification AKA DDS with a detailed solution approach.
Now, the DDS has to go through for the approvals from all the key stakeholders. Several factors like the risks, robustness, modularity, cost, and timelines play significant roles in deciding upon the design approach for the implementation.
The final design solution mentions what all modules should it have, their architecture, workflows, entity, and data-flow diagrams along with the third-party dependencies if any. The DDS should even provide a clear view of the internal structure of the components to prevent any confusion later.
Phase-4: Building or Developing the Software
This phase is where the real development begins by following through the design guidelines. The dev team writes code for each module as per the definition laid down by the DDS. A well-written design document which has sufficient, structured, and apt details, can make coding relatively easy and assist the developer to finish on time.
Every organization has a sort of coding standards, guidelines and best practices which intend to produce quality and reusable code. All the programmers should know and practice them while working on a development task. He or she must be mindful of the IDE, compilers (e.g., GCC/MSVC), interpreters (e.g., Python LINT), and debuggers (e.g., WINDBG, GDB). The selection of the programming language depends upon the nature of the software to build and also its ability to develop faster.
Phase-5: Testing the Software
Some testing happens in almost all the stages of the Software Development Life Cycle. For example: Reviewing the SRS, DDS, unit testing of individual modules, all such activities are some forms of validation. Even though, the product requires extensive testing to confirm that each component and all the functionalities work inline with the customer requirements. Also, it is a formal phase of the SDLC in which the QA team produce a testing plan, write test cases, log defects, perform regression and make sure the software attains the highest of the quality standard.
Phase-6: Deliver to Market and Maintenance
After the Software testing finishes successfully, the product gets ready to ship to the customer for the deployment. In some organization, they split this phase into sub-phases as per their business policies. They first do a release specifically for a market-facing group of people and gets it tested in a real-time environment for their acceptance. It is a sort of User Acceptance Testing AKA UAT.
Their inputs may lead to fixing some usability bugs or enhancements crucial for the market perspective or can also give a green status for delivering it to the target customers. After the product is out for delivery to the market, it enters into the maintenance phase.
Software Development Life Cycle (SDLC) Models:
The industry has received a no. of Software Development Life Cycle models over the years. Incrementally, each of them has come up the solution of some technical or business problem and tried to improve the ability to deliver to the market. Since all these models result into a process, hence we can even call them as the Software Development Process Models.
Below is the list of SDLC models which have gained popularity and accepted industry-wide throughout the years.
1. Waterfall Methodology
2. Iterative Model
3. Spiral Model
5. Big Bang Model
There are several other development practices such as the Agile Methodology, RAD (Rapid Application Development) Process, and Extreme programming models.