Software Development Life Cycle (SDLC) is a framework that defines the various tasks to be handled at each step of the software development process to ensure that software of high quality is produced as per the requirements. There are many phases in a software development life cycle or SDLC and different activities are performed in each phase.
What is Software Development Life Cycle (SDLC)?
In simple terms, SDLC is the process that is followed by software companies during the development of the software. There are many phases included in the software development life cycle. Each phase produces a deliverable that is required by the next phase to carry on with the work.
For testing, there is a separate life cycle named Software Testing Life Cycle (STLC). We will discuss STLC in detail in another topic.
Purpose of Software Development Life Cycle
The aim of software development life cycle is to produce high quality software that meets the requirements and expectations of the end users.
Software development life cycle tries to ensure that the software development process is completed within the time frame specified at the beginning of the development process and within the scheduled budget.
Software Development Models
A number of software development approaches are followed by employees during the software development process. These approaches are called software development process models or simply software development models.
There are several different types of software development models.
- Waterfall Model
- Spiral Model
- Rapid Application Development Model
- Incremental Model
- V Model
- Iterative Model
- Prototype Model
- Agile Model
New models keep evolving and each of these models has a distinct software development life cycle so that the software development process is successful. The different types of models will be discussed in another article.
However, every software development life cycle model includes some or all of these phases:
Software Development Life Cycle (SDLC) Phases
- Requirement Analysis
- Development or Coding
Overview of each phase is given below.
- Requirement Analysis: The first and fundamental phase in the software development life cycle is the requirement analysis phase. It is during this period requirements are collected from customers and analyzed.
Senior team members from the development team including the test lead or the test manager take part in the meetings and prepares the Software Requirement Specification (SRS) document with the help of a business analyst.
Based on the software requirement specification document, the testing team prepares the test plan, test scenarios and the test cases.
Planning is also done during this phase and senior members discuss the approach and product feasibility, estimation and budget.
- Design: During the design phase of the software development life cycle, developers along with the development lead and the development architects prepare the high level design document depending on the software requirement specification document.
Example – Assume that your client has requested your company to design an e-commerce site like Amazon.com
During the design phase, some of the modules designed are login module, product set up module, order placement, payment module and so on.
The complete project is divided into architectural modules and flow charts and Data Flow Diagrams (DFD) are used for explaining the process. Communications between the modules and with external modules are also defined.
Hardware requirements, system requirements, and the overall system architecture are specified. The aim of this phase is to make sure every requirement mentioned in the Software Requirement Specification (SRS) is covered by the development team.
During this phase, the testing team will work on the testing strategy in which they specify what to test and how to test.
- Coding: In the coding phase, the development process begins and coding is done using compilers and interpreters.
Modules are assigned to developers based on the high level design document.
Database administrators create the database structure and the necessary data whereas front-end developers create GUI and other interfaces.
While writing code, the developers must follow the guidelines specified by the organization.
The developers then perform unit testing before the modules are integrated and delivered to the testing team. Coding is the longest phase of software development life cycle.
During this period, the testers prepare the test cases by referring to the software requirement specification.
- Testing: Testing phase follows the development phase. Here, the final product is delivered to testers, who test each requirement based on their test cases to make sure they are met.
Functional testing and non-functional testing is carried out. We will discuss each of these testing types in detail in the upcoming articles.
Defects are raised by testers, fixed by developers and retested by testers until all the requirements are met and no new defects are found.
Testers in this phase try to ensure the quality parameters are met before the final product is released to the customer.
- Deployment: After successful completion of the testing phase by testers, the final product is delivered to the customers. Deployment refers to the installation of the software on production servers and getting it up and running.
During this phase, customers perform User Acceptance Testing (UAT) to make sure all their requirements are met and the software is behaving in the expected way.
If any bugs or changes are there, it will be reported to the development team and they will do the necessary changes and test and deliver it to the customers again.
Once all the changes/fixes are done, the final version will be deployed again to the actual production environment.
- Maintenance: Maintenance is the final phase of the software development life cycle. Some organizations have a separate maintenance team to look after the maintenance changes.
During this phase, based on the feedback given by the actual customers after using the system, there will be changes/fixes to be made.
These changes and fixes will be made by the maintenance team or the development team, tested by the testing team and then deployed to production within the specified time period.
It is important to remember that the phases discussed here are applicable to any the software development process models. Only the duration and the activities performed in each phase will differ.