Sitemap

Software Development Lifecycle: Key concepts and Things to know

We know, things will start with some boring definitions 😅 but we must know them in order to proceed.

A software development lifecycle(SDLC) can be defined as a process or a plan for how we can plan,develop,test and deploy our applications.

Before specifying the most famous models of SDLC , let us first break down the different stages that an SDLC must include:

1/Planning:

During this specific phase, we try to collect all the necessary requirements to create a software requirement document.

2/Conception

Called also the design phase, It is the step where we try to design how our data will be stored , how we will manage our classes,prototypes, etc..

3/Implementation

Well , nothing to say about this step aside the fact that it is the development phase

4/Test

During this step we try all the differents tests on our application to check its functionalities and also to see whether it is ready or not to be deployed .

5/Deployment

Once our application or software is ready and has successfully passed the tests , we need to put it now in a environment where it will be accessible for users to be used.This is the deployment phase.

6/Maintenance

Once our application is deployed we need to make sure that is always working fine and there are no crashes or bugs happening.

Now that we have covered the key concepts of an SDLC , we need to see some models that were implemented .

Throughout the history of software , there were many models of SDLC but one of the most famous among them is…

Yeah , I am sure you guessed it right, it is the Waterfall model.

So how does the waterfall model work exactly?

Press enter or click to view image in full size

Well as its name suggests , it looks like a waterfall .This model organizes things in a sequential way. So each phase depends on the outcome of the previous phase(based on the definition provided by AWS)

Well this model brings out some advantages as well as some disadvantages.

On the positive side, it provides us with more discipline during the management of the project and the results of each phase are quite good.However , one of the major cons of this model is that there is a little room for change once a phase is considered complete, as changes can affect delivery time, cost, and quality of the software.

So as you can see for bigger projects , a small change could cause a disaster. Consequently the waterfall model is not suited for bigger projects .

Well there is another famous model that solves the problem of the waterfall,which is the agile model.

Well for that model , things work a little bit differently.Instead of working on the whole project at once, we divide the project into small increments in order to deliver the software fastly. We usually call this principle time to market.

Get Blogs4devs’s stories in your inbox

Join Medium for free to get updates from this writer.

One of the main advantages of this model relies within its rapid deployment and its possibility of change.It also includes the users of the software by collecting thief feedback.

However every model must have some problems 😅and one of the issues of this model we over rely on the users ‘s feedback, it could lead to some excessive changes and can consequently cost a lot of time and energy.

Delivering Software: The Old Way

Before the emergence of devops , the traditional model followed a more siloed and sequential approach where each team worked on its own.It was more of a waterfall model. The main problem that was back then was the cultural change between each team, the development team was fond of change and the latest technologies.However for the operational team , it was different because they wanted more stability in the environment. Consequently, this has led to more delays in delivering the software.For example , fixing a simple bug in an application could take days or weeks before it was fixed due to this separation between the teams.

Press enter or click to view image in full size

Furthermore, this problem has led to differences in the environment as the dev team used specific versions of the software.However as for the ops , they used different versions which has led to conflicts and delays in delivering software.

Besides there was another major problem related to how applications were deployed because they were very costly and each application should be deployed on a certain VM and as you may know, once the workload is high, we need to duplicate the instances of VM which is not as cheap as it may seem.

As you have noticed , the old way doesn’t seem to be as bright as it intended to be.So many problems and so many issues were created which caused a lot of delay in the delivery process. 🫠

Well when the agile methods have appeared , this has made a radical change in the tech industry and has led to the birth of the devops.

Delivering Software: The DevOps Way

As I have mentioned in the introduction , Devops is more of a cultural change where the dev and the ops could collaborate and deliver software rapidly,frequently and reliably.

Devops has brought a new mentality within the tech companies and has helped the industry to involve into a new level.The way of developing a delivering applications has changed thanks to devops.

Let us understand more about those 3 keywords that we have mentioned within the definition ;we have first rapidly.

As you may know we live in a very fast evolving world where every week we see a new software coming out and an application appearing which is a good indicator on how companies focus more on the time to market.They want their products to be launched as soon as possible in order to take control of the market .

Second , we have frequently which means that solutions must be delivered frequently.As I have mentioned earlier, one of the devops principles is that time to market that must be quick, However we cannot provide a complete solution in such a short amount of time, that is why we first deliver an MVP that stands for minimum viable product.Once the MVP delivered, it is time to focus on adding new functionalities within the application .Consequently , we tend to make frequent deliveries.

Last , we do have the term reliably which simply means that our software should be reliable.In other words, it needs to have some kind of transparency when delivering it.

Devops:Key concepts

Devops is about three main things:

1/ People

2/ Process

3/ Tools

Press enter or click to view image in full size

People:

The people represent the most important factor within a company and having such a collaborative team is a key for growth as well as success.Consequently , Devops gives a very importance in the change of the culture among employees in order to make a better environment suitable for innovation and collaboration.

Within the devops, we focus more on establishing the collaboration between the different teams and to avoid blaming, during some tough situations, which is useless and a waste of time.

Let us dive a little bit deeper within this factor, because it is extremely important:

Before the emergence of devops, most of the teams within companies take many forms like this:

As you can see, there is clearly no communication between the teams.In other world each one is living in its own world 😪

They were some kinds of enhancement, like including the devops team within the dev or the ops , but still the problem of communication and collaboration remains there.

Once the devops has emerged, we finally started to seem the structure of teams looking more like this:

Process:

Devops focus more on automation in order to make the deployment of the applications easier and more efficient.That’s why we focus on a core concept within the devops which is the continuous integration as well as the continuous delivery.Well you will be wondering what do we mean by these concepts? Don’t worry I will try to explain it later 😀As for now , all I want you to remember is that within the process we tend to make more automation and consequently deploy our applications faster instead of waiting weeks.

Tools:

There are many tools used within the devops and they have proved their use in the tech industry and each one of them serves a specific purpose. I don’t want to specify any kind of tool because we will be learning about them more in the next chapters.So let’s not burn events.

In conclusion , we have seen that devops has made life easier and has improved the tech industry.

Devops in practice :Introducing the 3-tier Web Application

Well, during our journey, we will be using a lot of examples in order to understand mora about the tools that we will be using.For that , I have two simple applications that we will be using. First a three tier application:

Press enter or click to view image in full size

As you can see this is a simple three tier application with a frontend made with angular and a backend made with spring boot as well as a mysql database.This is a simple Crud application , but you need to have mysql installed before on your local computer in order to test it and see all its core functionalities.

Furthermore , there is an example of a microservice architecture that I will be providing later.

That concludes this blog. See you in the next one! 👍

--

--

Blogs4devs
Blogs4devs

Written by Blogs4devs

Welcome to our Medium page, where we dive deep into the world of technology! Here, we explore the latest trends, innovations, and best practices.