In this article, we will discuss the topic of SDLC (software development life cycle) means what is the life cycle of developing software. Life cycle means what steps we follow to develop software.
Software Development Life Cycle (SDLC)
SDLC is a process of software development, where we develop software in a systematic way. Every software has a life cycle and SDLC study helps to understand the life cycle of software. It is the systematic process for developing software, where software engineers analyze user needs and develop the software according to the user’s requirements.
Why do we need SDLC?
The main aim of SDLC is to develop high-quality software at the lowest cost and in the shortest time in a systematic and professional way.
When we develop software, we need to have to learn to code but only learning to code, we can’t develop software in a systematic and professional way because coding/programming is a part of software development. To develop software, we have to follow many other steps includes Planning, requirements gathering, design documents, coding and programming, testing, and maintenance.
Let’s an example of building life cycle,
- First customer comes to you for developing a building (like school, college, home, shopping mall, etc.) then what do we do?
- We can’t just develop a building because if we don’t know what our customer wants then how can we develop any building.
- So first we talk to the customer and collect the requirements from the customer.
- After that, we create a building design means architecture or blueprint on paper or on a computer.
- Then we develop the building through builders.
- The work is not complete hereafter that we inspect the building or test the building.
- Then our building will be developed and lastly, we also maintain the building from time to time.
You can read this article: What is software engineering and Software Crisis?
Phases of SDLC
- Feasibility Study
- Requirements analysis and specification
- Requirement gathering and analysis
- Requirements specification
- Design Documents
- Development phase
- Software Testing
- Software Maintenance
Feasibility study involves the analysis of the problem and it is the most important and fundamental stage in SDLC.
Feasibility Study is the first stage of software development, which is performed by the senior members of every department, where they collect basic information from the customer. This information helps the project managers to plan the basic project approach.
In a software company, every customer comes with a problem and we analyze whether we are feasible or not to solve the customer’s problems.
We estimate the rough idea of the resource requirement as well as estimate the time for completion.
It is a planning phase, where we plan the project by collecting customer information, where we determine whether the software project can be developed within the customer’s budget.
Types of feasibilities checks:
- Economic Feasibility: Every customer has a budget so we check, can we develop the software within the customer’s budget or not?
- Schedule Feasibility: Time is important so we check, can we complete the project within the time given by the customer.
- Operational Feasibility: we develop software according to our customer requirements. Customer always tells us what operations he wants in software so we check, can we create operations according to our customer requirements.
- Legal Feasibility: We check whether the project meets the cyber law rules and other regulatory frameworks
- Technical Feasibility: In this feasibility, we check current technology means we check whether the current computer system can support the software.
Requirement Analysis and Specification
So once we complete the feasibility study means we check that we are feasible to complete the project then we start to develop the project, where our next step is to collect the software requirements.
The aim of the requirement analysis and specification phase is to understand the exact requirements of the customer and to document them properly.
This phase consists of two distinct activities:
- Requirements gathering and analysis
- Requirements Specification/Documentation (SRS)
Requirements gathering and analysis
The requirements gathering is the activity to collect all the relevant information of the software product from the customers.
Every software has a purpose and without requirement, we can’t develop any software because if we don’t know what to do in software then how can we develop software. So the software requirement phase is the most important phase of software development because the whole project is based on customer requirements.
We collect all the exact requirements of a software project by talking to the customer through interviews and discussions. Clients are most important in any business so all the details and specifications of the software project must be discussed with the client. We collect maximum information from the client.
Requirements Specification/ Documentation (SRS)
After collecting all the customer requirements, the next phase is the software requirements specification.
Requirement Documentation is a very important activity after the requirement gathering and analysis. This is a way to represent requirements in a consistent format
This is a documentation phase, where all the project requirements are converted into documentation means all the collecting information from the customers is written systematically in some documents.
This documentation is important because this is the base of the project which helps engineers to develop the software systematically.
The customer requirements are identified during the requirement gathering and analysis activity, which are organized into an SRS document.
After collecting project requirements and writing into some documents, then the next phase in SDLC is design documents where software designs are prepared using the SRS documents.
In this phase, SRS documents where customer requirements are written are transformed into a structure that is used as a blueprint for the next phase.
This is the architectural phase, we design the architecture of the system using the SRS documents means we sketched a blueprint of the project on paper or on a computer. This blueprint sketching helps the team members for consecutive and systematic work.
In other words, System design is the process where we define system architecture, components, modules, interface, and data of a system using the requirement specification documents.
The various phases can be involved in this phase:
Algorithms, Flowchart, Pseudocode, DFD, ER Diagram.
Once the software design phase competes then the next phase is the development phase where we start to develop the actual system.
In this phase, the programmer’s team receives the blueprint of the project and starts the logical coding in a programming language.
This is a coding phase, where programmers start to develop the system by writing code using the programming language. They already decided which language they use for developing the system.
In the development phase, the whole work is divided into modules and assigned to the various developers. The whole system is developed into modules or units means the system first developed in small programs.
To develop the system, all levels of developers are involved, including seniors, juniors, and freshers.
After the development phase then the next phase in SDLC is the testing phase where we test our software. Testing is a very important phase in SDLC.
In this phase, we run our software and check whether the software gives us the desired result or not. Testing is an important part of the project because it helps to improve the quality of the project, without testing we should never give the software to the customer.
First, the question is generated – “Why should we do the testing?”
After the development of the software, there can be many defects in the system or the system may not work as they are expected. So testing helps to find the defect in the system so we can remove it later.
Software testing involves examining and checking the software, through the different testing processes. Testing is not done by programmers, a software company always hires testers for testing the software. There is a separate department for testing, people are appointed separately for this. You can also take a job in testing.
In software testing, we verify software completeness means we check functional requirements. We also identify any technical bugs or errors and ensure the software is error-free.
After software testing and removing all the bugs or errors, the software is handed over to the customer, but here software life cycle is not ended, a successful software also needs maintenance from time to time.
Maintenance is the backbone of software success. When software is developed, then the software needs to be modified from time-to-time to keep it up to date with the environmental changes and changing the user requirements.
Software maintenance is needed to adding some new features in the software or any bugs find which was not found in the testing phase.
Regular Maintenance of the product also maintains the satisfaction level of the customer.
Nowadays, companies are paying more attention to the maintenance of their product.
For Example, Windows and several antiviruses software are regularly updated to maintain their performance.
Software Maintenance is needed for:-
- For errors Correction
- Change in user requirement with time
- To Upgrade the hardware and software requirements
- To enhance the system efficiency
- To optimize the code to run faster
- To modify the components
- To reduce any unwanted side effects.