What is the SDLC (Software Development Life Cycle)?

By Volodymyr Fedorychak

Programming software or an application can be somewhat stressful at times, especially when it comes to coding different parts of a big project. Thus, having a system in place that allows you to take the development process step-by-step without feeling overwhelmed is essential to producing a high-quality piece of software.

This is exactly what the SDLC is - a system of activities that includes several stages or phases and when followed, ensures that you have a good understanding of the task at hand while also eliminating error as much as possible.

In this article, we'll be deep diving into these stages and what each of them includes.

Business Analysis or Discovery Phase

First, you have to plan. There's no such thing as too much planning and if you miss out even one minor detail during this stage, you could find yourself having to revise the entire project.

During the analysis stage, there are a few things that you need to do. You should start by brainstorming and coming up with some ideas to base your project on. For example, if you were developing a new booking system for a hotel, you could consider linking hotel bookings with restaurants bookings - one of many possibilities.

Make sure that the ideas which you come up with are in accordance with your customer's (or your own) requirements so that you're sticking to the original task while being creative and coming up with innovative ideas.

It's also important that you keep in mind the available timeframe, costs, and resources so that you don't end up developing something that your customer's computer system isn't capable of handling, that they can't afford, or that would take a ridiculously long time to program.

All in all, this stage is for you to get a better idea of what the final piece of software should look like as this will be what your work is based of.

At this point in the SDLC, you should have all of the information that you need to make a brief start on the software development and even come up with a basic prototype - at the very least, you should be able to construct a more detailed breakdown of the project than you had before. It's worth taking the time to do a brief prototype so that you and your customers can see your ideas in action and gather some feedback.

Now, after detailing the development project as thoroughly as you can, split it up into smaller tasks. If you're working with a team of developers, then this is also a good time to split up the tasks accordingly so that everyone is familiar with what role they will be taking on and begin preparing.

Design

This stage is relatively simple, in comparison to the other stages of the SDLC, and typically includes a system analyst and the lead developer. They discuss the system that the software is going to be installed on, any limitations that the system has which would be relevant to the software functionality, and they make sure that the proposed piece of software won't encounter any major issues once it has been implemented.

Following on from the Systems Analysis stage, a more complex prototype may be created so that all involved parties can gain a better understanding of what the final product will look like and scope out any problems that might arise.

Before moving onto the next stage, which is programming, the lead developer will confirm all of the plans that have been created and ensure that the client's needs are going to be satisfied, before proceeding and starting the main development.

Programming

There isn't a lot to discuss regarding this stage other than it's time for you to get to work! Put everything that you've planned for into place, begin your programming, and develop a piece of software that you're satisfied with.

One thing worth keeping in mind is that even though you will have gathered all of the information that you need earlier on, if you're unsure of any of the job requirements then contact your client - there's no shame in clearing up any uncertainties and they won't criticize you for doing so.

Testing

Testing the coded program is important. This isn't as simple as running the program, using each of the features once, then calling it quits - you have to conduct thorough testing among several parties while using several testing methods.

Without overcomplicating things, below are some of the things to keep in mind during the testing phase.
When you interact with the program or enter data (input), are you being provided with the output that you expect?
Can each of the program's features be easily identified and do they function as they should?
Does the program fulfil its initial purpose?
Does the program run efficiently and make good use of the computer system's resources?
Are there any improvements that you can make?

After excessively testing your program to make sure that there's nothing wrong with it, you're ready to implement it.

However, if you find that there are problems or that improvements could be made, be sure to fix them before you continue. Remember to take a note of the bugs that you encountered as well as how you fixed those bugs - this is useful in case you experience any related bugs in the future.

Implementation

Finally, it's time to implement the software into the environment that it is intended for. This is the final stage of the SDLC and includes setting up the software on the intended computer system, any other systems that it will be required on, and walking through your client how to use it.

You should also consider putting together a basic user guide, depending on the complexity of your program, so that they have a thorough understanding and they don't need to contact you every time that they have a question or query. Handing out user guides will also make it easier to explain the software to large groups of people.

What's Next?

Now that the software has been created from scratch and is installed and set up as it should be, you can put your feet up and relax.

While not an official stage, after the implementation of the software that you programmed, you should be prepared for maintenance. Generally, maintenance refers to any changes that your client wants to have made to the software, any updates, or fixing any bugs that arise.

Some software development projects will require maintenance while others won't, thus, it is not considered a stage of the SDLC.

To Conclude...

This might seem like an excessive software development model although by following the SDLC, software developers and engineers are able to ensure that they don't make silly (yet vital) mistakes and, as a result, create a piece of software which exceeds their client's expectations.

Having this type of process in place ensures that you are on the right track and given that you'll be constantly going over the notes that you've taken during the planning stage, you'll undoubtedly prevent any uncertainties from wreaking havoc and causing you to start from scratch.