Overview of the Software Development Life Cycle
5 min read
Whether you are a software developer, project manager, or business owner, understanding the SDLC can help you create high-quality software that meets the needs of your users.
I was curious about how the various software applications we use were created, as I'd initially stated in my previous article. My experience so far has enlightened me on this subject, and I will be sharing what I have learned in this article.
One of the first things I learned was that software is usually born out of ideas, and it could be from various factors such as solving problems, easing complex processes, meeting a need, etc. Software development is not just an overnight process; it is a well-thought-out process that passes through several phases.
Software Development Life Cycle (SDLC)
The software development life cycle is the process in which high-quality software is developed from idea conception to making the product available for use. There are various phases involved which are described below.
In the examples, a web application would be used as the case study but this process applies to other software products as well.
There are different phases in the software development life cycle (SDLC) depending on the model used. However, most models include the following phases:
This is the initial phase in developing a product. The idea needs to be clearly stated here. Afterward, research and feasibility studies are conducted to ascertain the need for the product or if it would perform well in the market.
It also involves planning the expected scope of getting the product out to consumers, the size and expertise of the team needed, and projecting the estimated cost for the project. The roles involved in this phase usually include the project leaders or stakeholders, business analysts, product owners, and project managers.
This is the phase where the plan or ideas are translated into aesthetically pleasing User Interface(UI) Designs. Tools such as Adobe XD and Figma are used. This phase is very important as it allows the stakeholders to give feedback before development starts.
Without a UI, there might be a lot of back and forth about several things in the UI not being as it should be, such as background color, positioning, font family, font sizes, text, images, button look, etc. Also, the design prototype shows the interrelation between the different screens, and flaws in user experience can easily be corrected.
This is also the phase where the structure of the software is defined, and the tools/technologies that would be used in the development phase would be defined. Roles in this phase usually include Product designers, User experience(UX) researchers, Project managers, Engineering leads, etc.
The development phase is typically divided into two sub-phases, namely:
This is the part of the software that users interact with. It translates the high-fidelity mock-up, known as the final design, into what users can interact with either through a browser, a mobile or desktop application, watches, and other devices.
It is also responsible for communicating with other services through an application programming interface(API). This is the reason why when users register/log in on a site and provide some information on the site; the information can be stored somewhere else (database). Roles involved usually include Frontend developers, Full-stack developers, Web developers, etc.
This is the aspect of development that is behind the scene and users don't interact with directly. I guess that's why it is labeled 'Backend' because it is usually behind the 'Front' users interact with. Have you ever wondered how you go to a website and register, then later return to the site and log in with the right details, and you are recognized, while when you put in the wrong details your details are said to be incorrect? Well, this is where application data are handled, stored, and retrieved.
It is also responsible for integrating business logic for the application and works closely with a database system. Roles involved usually include Backend developers, API developers, Cloud developers, etc.
Quality Assurance (QA) Testing
At this phase, the code that has been written in the development stage needs to be tested to ensure that the requirements defined are met and also, that the new code added has not broken previous work done. There is usually a staging environment for this to be done. If a code fails the test, it moves back to the development phase to fix any issues. QA Engineers, Software testers, QA Analysts, and Test Engineers are roles usually involved in this phase.
User Acceptance Testing (UAT)
This is performed by the client or end-user to verify the application meets the need of the end users. If it passes, then it can move ahead to the next phase - deployment.
The deployment phase, which happens after the UAT, involves pushing the code into the production environment in which it would be used by the product end users. The time of the release of the code should be decided upon by the client and development team.
At this phase, the product is being used by the consumers or users. Feedback is gotten from the users and used to improve the product. New features are also conceived to delight consumers. These bring about another cycle in the development process. This iterative approach is used to fix bugs and add new features or functionalities to launched sites.
There are several other roles required in the SDLC process based on the business needs and structure of the organization. Data scientists, Data annotators, Artificial Intelligence Engineers, Scrum Masters, Game developers, Augmented Reality(AR) / Virtual Reality (VR) Engineers and many other roles are career paths that can be considered.
I hope you enjoyed and learned from this brief introduction to the various process involved in the software development life cycle.