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.
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 lifecycle. Each phase produces a deliverable that is required in the next phase to carry on with the work.
Purpose of the Software Development Life Cycle:
The aim of the software development life cycle is to produce high-quality software that meets the requirements and expectations of the end-users.
Software development lifecycle tries to ensure that the software development process is completed within the timeframe 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.
SDLC – Requirement Analysis
- The first and fundamental phase of the software development lifecycle 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 test cases.
- Planning is also done during this phase and senior members discuss the approach and product feasibility, estimation, and budget.
Read Also: Defect or Bug Life Cycle
SDLC – Design
- During the design phase of the software development lifecycle, 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.
- During the design phase, some of the modules designed are login module, product set up the 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 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.
SDLC – 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 the software development lifecycle.
- During this period, the testers prepare the test cases by referring to the software requirement specification.
SDLC – 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.
SDLC – 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 an 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.
SDLC – Maintenance
- Maintenance is the final phase of the software development lifecycle. 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 of the software development process models. Only the duration and the activities performed in each phase will differ.