A Beginner's Guide To The Software Development Life Cycle - Part 01

Introduction to the Software Development Life Cycle (SDLC)

Let me start by saying that the "beginner" in this article refers to me. But if I can help someone else in my shoes, then nothing would make me happier. I am not new to the world of web development. I have been dipping my toes in these waters for a while now, and hence, have come across the words "Software Development Life Cycle" or SDLC for short, quite frequently. While I had a general idea of what this meant, only recently have I started to understand the concept in depth.

Recently, I came across the IBM Front-End Developer Professional Certificate on Coursera, so I decided to take a look at the courses. The first course in the eight-course series was Introduction to Software Engineering, and The first module of the course was about SDLC. And what better way to cement my concepts than to share my learnings with total strangers online? Let's get into the nitty-gritty of SDLC.

The Software Development Life Cycle (SDLC)

The Software Development Life Cycle (SDLC) is a systematic process for software development. In simple words, SDLC is the process that helps us produce high-end, budget-friendly software in a short and predictable time period.
While software systems have existed since around the mid-20th century, the standards to build such systems were only introduced in the late 60s and 70s when the software produced grew more complex by the day. That is when the developers and stakeholders realized the need to conform to a set of standard rules to make software production cost-efficient and less time-consuming and so started the era of SDLC.

Advantages of SDLC

While there are many advantages to SDLC, some of the key benefits are mentioned below:

  • It provides a roadmap to the software development process that helps reduce risk and improve efficiency.

  • It allows for frequent and clear communication between stakeholders and the team producing the software.

  • Each team member has clearly defined responsibilities and tasks which saves time in the long run.

  • Since SDLC in modern software development uses an iterative approach, it makes allowing for changing the requirements much easier.

Phases of SDLC

Although you might come across 5, 6, or even 7 phases to SDLC, I will be sticking with the 6 phases. Remember that each phase is discrete, meaning the tasks from a previous phase do not overlap with the tasks in the next phase. So here are the 6 phases of the Software Development Life Cycle.

Planning

As the name suggests, this stage of the SDLC is all about planning the project. This could mean planning a small component of the whole software or the entire product depending on which SDLC methodology is being used, which will be discussed in the next article.

In the planning stage, everything related to the software is planned out including but not limited to identifying the stakeholders, eliciting requirements from the stakeholders, analyzing the requirements, confirming the requirements with the stakeholders, allocating resources, and scheduling the timeline. This stage provides us with a detailed document containing requirements for our project. The document mentioned can be of three types.

  1. Software Requirements Specifications (SRS): This document is about all the requirements for the software, including functional and non-functional requirements, along with software constraints and system features.

  2. User Requirements Specifications (URS): This document tells us about who the users will be, why the product is needed by the users, and what functionality the users want. URS is usually incorporated into the SRS instead of being used on its own.

  3. System Requirements Specifications (SysRS): This document includes the requirements specifications for not only the software but the entire system that the software will be used in. It means identifying the constraints for the system like hardware requirements, operating system (OS) requirements, and other infrastructure and dependencies requirements.

Design

The Design stage is used to design the system architecture based on the requirements identified in the planning stage. The System Architect designs the product and includes the functionality and system restraints. It usually does not specify how the functionality will be implemented, just what the software should do. A Design Document is created to be used in the next stage. The Design Document gives us information about what is expected of the software, how it should look like, what are the constraints for this software, and how to maintain this software. Roles and responsibilities for teams and team members are assigned at this stage.

Development

In the development stage, the technology stack for the software is determined and the Design Document is converted into an actual working software. Wireframes and mockups are converted into an interactive product with the required functionality using code. In this stage, Technical Documentation is created which can consist of code comments, working papers, and records of engineers' ideas to help understand and maintain the code.

Testing

Testing is crucial to developing high-quality and error-free software. The software can be tested manually, automatically, or using a combination of both. Testing is usually done in various steps to ensure all bugs are caught. There are four levels of software testing.

  • Unit Testing: Unit testing is done by developers after coding the functionality of the software. The code block, often called a module, is then tested to ensure the code works as expected on its own.

  • Integration Testing: Integration testing is done after two or more blocks of code with specific functionalities are integrated into the system. It is done to ensure that the modules work together seamlessly and one functionality doesn't affect the rest of the working code.

  • System Testing: System integration is end-to-end testing of the system after all the modules have been integrated into one product. It is done to ensure that we have working software with all the required functionality and that nothing is broken.

  • Acceptance Testing: Acceptance testing, usually called User Acceptance Testing (UAT) is the final step to ensure bug-free software. In this stage, the software is tested by a limited number of users, and feedback is given on the software to the software development team.

Deployment

Once tested, the software is deployed to the cloud or specified servers and networks using CI/CD pipelines.

Maintenance

Once the software is deployed and is up and running, the maintenance stage begins. This could mean maintaining and/or updating the code and documentation as well as fixing any bugs and releasing new versions so the cycle can begin again.


So, this is all about the SDLC from a beginner's perspective. Keep in mind that while there are many methodologies to develop software, some of which include the Waterfall Method, the V-Shape Model, and the most common one which is the Agile Method (explained in detail in Part 02 of the article), the core stages to develop software remain the same as above.