Complete Software Development Process & Agile Methodology
Nowadays, We are using many software applications, social media, e-commerce websites, games, etc.. all these are developed by some companies, and the companies while developing the project follow some methodologies means the way an organization is developing the applications.
First, we look at very high level picture of the complete software development process for in our case will take Facebook as an example which is complex and it will probably require all different IT roles. and responsibilities to make the whole FaceBook process possible.
Programming:
Facebook is software right? and it was developed by the developers team. Developers code in different languages to make an application.
If it's a small app then one team per app or if it's a complex application in our FB which is complex then there will be Per feature one team.
They code for new functionality but also if something is'nt working they will also fix the bugs. Next step is testing
Testing:
If you have existing code we need to add new feature.Also make sure that new code doesn't break the old functionality. Testing is done by developers and also companies have their own dedicated testers to test the software and nowadays these testing are automated using Python scripting and etc..
Next, the application can be released.
Release:
Roll it out to the new world
Release of software:
->Building application(Packages, Congifuration, Compressed, Code)
->Run it on servers
->Upgrading Existing software
This is the place where the Operation team places in.
Operation:
Running software in production and they are Responsible for delivery to people.
Development Vs Operation
After the developement process once finished. Part of integrating new code. The challenges are
->No downtime
The operation team has to ensure that no downtime. Let's imagine if facebook wasn't working for a couple of minutes it will be an annoying situation. so they have to make sure that it has no downtime and other work is if server fail, it happen often because it's just a hardware.
->Handle huge traffic
Millions of request send to server per second example: Like, share updates
How does all these happen, How does operation has no downtime, Load resistent and keeps running even millions request at same time
Basically they make sure that underlying infrastructure is working perfects and performance of operation
How Dev team & Ops team differ
Both are the same part of SDLC
The deployment requires some configuration
->Environment Vars
->Folder on the server
->Database
The environment needs to be prepared
*The Developers team will document each and every instruction
*The Operation team try to follow instructions
but there will often be some missing parts, not clear enough because the developers team and operations team doesn't communicate much.
Methodology
Now one thing that heavily influence speed and process of Software Development actually happen inside organization is the Methodology.It's the way an organization is developing the applications
Waterfall methodology
Requirements
It's a planning part.
The team member will document each and every feature
It includes
->How FB actually looks like
->Uploading picture
->Profile
->Story
->Events
->FB Shop
It takes many months to document everything.
Development
In this stage the developers team will code complete application. Each feature add new Functionality to the application.
It takes months or even years to complete the coding part entirely
Testing
Each every feature gets tested one by one. Load test, performance test and there will be some mismatch between the Document and Code so again it will be corrected again it takes months to test it
Operation
It's a huge preparation, need to implement many servers
It takes years in order to make infrastructure
The problems in Waterfall methodology
This waterfall or traditional methodology is
-> Very ineffective
-> Over time requirements
-> Many places of failure
The companies found Agile methodology. The main advantage of agile methodology is the speed of development, testing, and deployment cycles.
Basically, the idea behind the agile methodology is just waiting to develop the whole application start to finish by checking each feature and by fixing each and every bugs
And since, agile is methodology or frameworks that tells you what are the good practice and efficient ways to do things. It has specific implement of that method or framework
Scrum and Kanban - Specific Implementations
Depending on the company and the team's needs they may work on different frameworks
Agile is CI/CD
The Agile is CI/CD which strives to company to make much more efficient ways to do things better.
Subscribe to my newsletter
Read articles from Christober directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Christober
Christober
A sophomore undergrad Engineering Student Learning DevOps and like to deepen my Knowledge in this field.