Software Development Life Cycle is a process followed by software industries to design, implement and test the software products. SDLC is the acronym for Software Development Life Cycle. SDLC process is followed strictly to ensure quality products are delivered to the customers and consumers within the planned budget and time estimates.
An entire team of Software Engineering will be highly involved in the development of the high standard software. Whole Life Cycle defines and improves the overall software quality and development process.
SDLC has six stages while each phase has its own deliverables which serve as the input for the next phase.
Six stages of SDLC
- Requirement gathering & Analysis
- Design
- Implementation & Coding
- Testing
- Deployment
- Maintenance
Let’s explore each stage of SDLC one by one with an example.
- Requirement gathering & Analysis
Requirement gathering and analysis is the fundamental phase of software development. Business requirements and specifications are gathered during this phase.
Top level management of the company like project managers, directors, sales, consulting, marketing and other stakeholders are mainly involved in drafting the requirements of the software. Answers to the following general questions are answered during the project meeting.
- What is the purpose of the system?
- How will the system be used?
- Who will use the system?
- What is the required data?
- What is the outcome/usage of the system?
Once the requirements are gathered, it will be analyzed by a group of individuals to make sure the possibility of incorporating software development with the requirements gathered.
Deliverable: Business Requirement Documentation (BRD), Software Requirement Specifications (SRS), Technical Requirement Specifications documents are created which serves as the input for next phase- Design.
2. Design
The design phase is the second phase of software development. System Architecture is designed during this phase. Design architects, Business Analysts are mainly involved in drafting the design of the software.
High-level design (HLD) and Low-level design (LLD) are designed with the help of the requirements gathered in the first phase of the software development. Following are some of the design documents that helps in developing the software effectively.
- Use case Diagram
- Class Diagram
- Entity-Relationship (ER) Diagram
- Component Diagram
- Workflow diagram
- Activity Diagram
Design documents serve as the input for the implementation/coding phase. Testers come up with test strategy during this phase like what to test and how to test.
Deliverable: System Architecture, HLD, LLD, Detailed Design Specifications (DDS) are created which serves as the input for next phase – Coding.
3. Implementation/Coding
Coding is the third phase of software development. Detailed design specifications are used as the input by developers to build the software product. The main focus of this phase is development. Entire design will be broken into modules and developers will work on individual modules, then they will integrate the separate modules into one system finally.
Coding standards and guidelines are followed while developing the product. It differs between the companies. Coding languages like JAVA, PHP, C++, C#, ASP.NET are used to develop the software and languages are chosen based on the product to be developed. When two developers working on the same software at the same time, code merge is accomplished without much hassle by following proper coding guidelines.
Deliverable: Working software is developed which serves as the input for the next phase – Testing.
4. Testing
Testing is the fourth phase of software development. Working software is used for testing. The main focus of this phase is to ensure quality and to validate the tests against the customer requirements to make sure the product satisfies the customer needs. Test cases and test scripts are used for testing to validate the requirements. Following types of testing are done but the list is not limited:)
- System testing
- System Integration testing
- Component testing
- Component Integration testing
- Performance testing
- Usability testing
- Acceptance testing
Software product bugs, issues, defects are tracked, reported and retested until the product achieves quality.
Deliverable: Test Summary Report, Test results, QA plan, Revised bugs list, User Acceptance test are submitted which serves as the input for the next phase – Deployment.
5. Deployment
Deployment is the fifth phase of software development. Once the product is successfully tested, the software product can be released or deployed to the customers for their usage. If any changes or enhancements required for the software is also conveyed to the team so that the changes will be incorporated in their subsequent releases.
Beta testing is done at the customer’s site before the final deployment to ensure the product meets customer requirements. Beta testing feedbacks and issues are reported back to the engineering team to ensure they address them sooner or later.
Once the issues are fixed, then the product is finalized and will be ready for final deployment.
Deliverable: Deployed software, Customer’s review, Live Production environment, and Data are submitted which serves as the input for the next phase – Maintenance.
6. Maintenance
Maintenance is the sixth phase of software development. Once the product is used by customers, the issues faced by them are addressed during the maintenance phase. Support provided for the deployed software is called Maintenance. Handling of bugs those are missed in the testing phase are taken care of during this phase.
If the deployed system is modified for the new needs, then the existing system should be maintained. If existing system cannot be maintained once the new needs are being added, then the whole software system should be re-designed to accommodate the new changes. The performance of the system is also monitored during this phase. Maintenance phase ensures whether the customer is satisfied with the product that has been delivered.
Deliverable: Updated version of the product, Code maintenance, Live system
Types of SDLC Models
SDLC Models are developed based on the phases of SDLC. The difference between each model would be the sequence in which they happen and the interaction between phases. Common and most popular SDLC Models are,
- Waterfall Model
- Agile Model
- Iterative Model
- V-Model
- Spiral Model
- Big Bang Model
If you like it, share it!
Here are some hand-picked articles that you should read next ?
- Software Testing Life Cycle – STLC
- Agile Model
- Software Testing Principles
- Verification Vs Validation
- Software Testing Methods
In my next post will learn about Software Testing Life Cycle (STLC).