Transcript for:
Software Development Life Cycle (SDLC) - Day 2

hello everyone my name is Abhishek and welcome back to my channel so first of all thank you so much for watching my previous video on devops that is Introduction of devops so today is day two if you haven't watched the day one video on devops I would highly recommend you to go back and watch the day one so there is a devops Zero to Hero playlist which contains day zero day one and all the other related videos and the following videos will also be posted on the same playlist okay so now what did we discuss in the previous class just to give you a quick recap for the people who have followed we just learned uh you know what is devops why devops and how do we introduce ourselves in a devops interview so this is the thing that we learned in our previous class that is day one so now today we are at day two of devops right so what are we going to learn in day two is typically the software development life cycle so now you might ask me like the you know why do we why everybody has to learn about software development life cycle so irrespective of the field that you're in whether you are a developer whether you are a tester you are into software development or devops everybody has to understand the concept of software development life cycle so the software development life cycle in short is also called as sdlc okay so people also call it as sdlc so don't confuse don't get confused if they call it as sdlc so s t l c so this is software development life cycle now what is software development lifecycle and why is it important for devops and all the other Engineers to learn this okay so now understand it in this way we have uh you know opted for a separate and complete day for learning software development life cycle that is because everybody has to understand software development life cycle if you have to work in an organization so when you work in an organization or when you work in the field of software or the IT industry there is a standard that is followed by every organization whether it's a startup whether it's a MNC or it's a unicorn everybody follows a specific standards and it is important for you to understand the standards to work in that organization now what is software development lifecycle it is a process used by the software industry whether it's a process or whether it's again a culture but it's a set of standard that is followed in the software industry to design okay develop and to test okay so to design develop and test there is a standard that is followed because whether you are working at Amazon whether you're working at Flipkart or whether you're working at Tesla so everybody has to do this three steps right one is design develop test and there are other faces also but on a high level basis these are the phases of your software development life cycle now what are these faces and what are included in each and every of these phase okay but before we go there what is the actual end goal of software development life cycle okay now I said you that there is a design phase there is a development phase and there is a testing phase but ideally what is the end goal so the end goal is to deliver a high quality product right so you might ask me uh what happens if I don't test the product so if you don't test the product end of the day you've made a design you developed a design and you delivered it to the customer but who was testing this uh product or who was testing this delivery so that's why to meet your customer expectations or you know if you want to uh deliver a prompt application to your customer you have to follow these faces like without design you cannot develop and once you develop without testing your product will not be of high quality so that's why you have to follow the standard to deliver high quality product so this is a overall high level uh explanation of software development life cycle that is software development lifecycle is a process that is followed by the industry to design develop and test high quality product okay so this is about software development life cycle but now what we'll do is we'll try to Deep dive and we'll try to see we'll take an example organization because we wanted to learn everything practically so what I do is I'll show you with an example let's say we are working at Flipkart okay or to avoid any such names what I'll do is let's say we are working at example.com so example.com can be any e-commerce website so let's say I'm working at example.com so this can be anything this can be Flipkart this can be Amazon or anything so for just for our understanding I just named it as example.com so now at example.com we deliver a e-commerce application okay let's assume that we are building and developing a e-commerce application so again the process will be same for any organization but just for understanding and reference we are choosing example.com so now in example.com what usually happens is there are different faces before we deliver the application to the customer okay so these faces are nothing but so you have let me try to do it in this okay so we can draw it by ourselves that's fine so we have firstly we have a face called planning okay we'll deep dive into each of these things okay don't worry then we have a face called so this is a standard thing you can refer any book or you can go through any videos so these steps are same because there are standards right these are called standards so for standards everybody has to follow the same standards so these are standards that are approved and yeah followed by every organization design and then we will move to the faces like building okay what is building we are building a software right and then we move to phase called testing and then we move to once we test what we'll do we'll deploy okay and then whenever we want a new feature again we'll follow the same approach so that's why this is a circle okay what is the reason why I took a circle here like you know I draw a circle here because everybody has to follow this circular approach for each and every feature that they are developing in their organization okay let's say this e-commerce.com okay or this example.com what they have decided is they want to start a new feature or they want to support a new feature to the customer so let's say uh just for an example okay let's say they don't have kids section okay understand this as a e-commerce Merchant or cloth selling website and this cloth selling website were not selling clothes for kids okay till this point of time they were only selling for men women okay they don't have a kid section so what the organization has decided was on their research they found out that example.com can also get benefited from selling kids kids clothing so they have decided like you know the organization has decided to launch a kids uh kids catalog so for that what happens is they have to go through this process okay so this is the standard that is followed across the organizations right so let's try to understand each and every phase now once we understand each and every phase we'll also try to see where devops will come into this picture and how can devops improve this process right because our end goal is to understand software development life cycle and also understand this in the point of view of a devops engineer okay because you have to once you join an organization you have to improve your organization's efficiency right your end goal like on every class that we are learning only think in a point of view that whenever you are learning a new thing let's say you're learning terraform let's say you're learning ansible your point of view or your way of thinking has to be in a way that okay now I am learning terraform how can I use this terraform in the organization and how can I improve organization's efficiency that should be our end goal and you are the uh member who has to decide if your organization will require this or not let's say everybody in the everybody in the devops community is promoting terraform but it might mean that in your organization terraform but why uh is not a right fit okay so in such cases end of the rates you are called right because you are a devops engineer who is thinking of improving your organization's efficiency so it's not your manager or it's not somebody else as a devops engineer you have to suggest them that okay terraform might be a best tool in the community but for our organization it's not a right fit so think in that approach every time you work in whether in the current organization or in your future organizations always keep this approach okay so firstly what happens is there is a high level design that is decided to Launch uh kids catalog so who has decided this let's say the organization uh the CTO or somebody has thought they just given a thought that okay the kids catalog might be a good option so now what happens is once they are done with that so you know you will move to the planning phase so what happens in the planning phase is you have to gather the requirements right so as a CTO CTO can suggest you many things but who has to do the planning and requirement okay planning Place requirements so who has to do the plannings and requirements Gathering it has to be your uh I mean your core members right whether it's your business analyst or your product owner so they have to deal with the planning Place requirement stage okay so what happens in the planning plus requirement stage it's a one of the fundamental stages because it's a starting stage of your software development life cycle and your product owner or your business analyst or your senior members can also get involved you know they get the inputs from the customers so let's say example.com is already live to the customers so you have to gather your feedback from the customers what your customers are feeling okay are your customers are feeling uh if you launch a kids catalog is it useful for them if they are thinking if I mean if you have 10 customers and you are looking at potential customers another 15-20 members and if nobody is interested in the kids catalog then it's of no use to launch so what you can do is you can suspend the idea at this stage only you know you do not have to propagate this idea to the all the other stages so that's right planning and requirement is one of the most important stage okay when is the requirement what you have to do in terms of requirements you have to gather the requirements let's say again the same example you have 10 customers today and potential customers are 15 to 20 what you have to do is even in the kids what are your customers are interested are they interested in the kids range between 6 to 12 are they interested in the kids range from one to four years so you have to get this information like how many customers are interested in this one how many customers are interested in this one once you have this Collective information that face is called planning and requirements phase once you come up with this planning and requirement phase then you can start with the defining and designing phase okay so in terms of defining requirements what you do is that you clearly Define these requirements in terms of documents okay now what do you mean by documents so in terms of documents you have to write uh like you know whether whether let's say you're a product owner is there or your business analyst who is talking to your customers somebody what they have decided is that okay I did a customer research and on my customer research I understood that 6 to 12 years four customers are interested one to four years 16 customers are interested now what they'll do is that they will write a document that is called as software requirement specification document okay so in software requirement specification document they would provide all their data that they have collected as part of the planning phase after that we will move to the designing phase okay so designing phase is very critical phase because in designing phase you will do high level design and low level design okay so what is high level design hld and lld so hld and lld let's say you have a architect okay or you have a team leader or a Senior Resource what this members will do is they will write a high level design on the high level design you will be talking about the overall like you know your system has to be uh scalable or whenever uh there is a requirement this kids catalog have to be scalable to uh probably there might be more load for the kids catalog during Christmas so you have to build your kids catalog application in such a way that it is scalable when required or it is highly available so these things you will Define in hld you might say that you know I want to use this kind of database I want to use uh n number of replicas of my application so such things are defined in the high level design and coming to the low level design your architect or again your senior member of the team the development team what they would do is they would write the low level design requirements that is okay let's use use this particular function so let's use this particular modules let's say your organization is using Java or python so in the low level design the senior members of the team would desire would design the systems in such a way they would mention that okay I want to use SQL that my mySQL database I want to call from this application I want to make a function call so all those this uh like you know it has to pass such an argument it has to receive such response so these kind of things you would mention in the low level design that is very low extremely low level design perfect so now you understood what is planning and requirement you understood what is defining phase you understand what is designing phase and then what we'll do is we will move to the components that are most important for devops engineers okay so till this point of time as a devops engineer you can get involved out of your personal interest but where your actual importance would come into picture is these three phases that is building the software testing the software and deploying the software and as a devops engineer you can automate these processes okay so our focus of Interest always is automation so that's why here you can bring in your automation so which phases of software development life cycle are devops Centric or or a devops engineer should be interested in that are building phase testing phase and deployment phase no I am not saying that you should not get involved in the designing defining or the planning phase let's say you are a critical resource of your team or you are a devops engineer who is development in heart okay uh probably you are also interested in development and devops engineers in such cases you can get involved in all of these phases but primarily your point of Interest or your focus of Interest should always be these three things that is building a software testing a software and deploying the software so what I'll do is we'll take these three phases in the next slide and we'll try to understand each of them in detailed okay we'll come back to this slide again but before that let's try to understand these faces in detail that is building then you have testing and finally you have deployment okay so these are the three phases building phase testing phase and deployment phase let's try to understand each of them in detail and how can develop how can a devops engineer can improve the efficiency of these faces we'll also take a look at that okay first of all building the software what do my what do I mean by building so ins in this case building is nothing but developing okay so once your senior members of the team have come up with the uh low level design and the high level design let's say and your product owner and business analyst have come up with the planning requirements and software uh requirement document okay what is the next thing that you have to do is this application has to be developed right so all your stories are created all the documents are written now you have to move to the next stage that is developing right so okay all the things are done you spoke to the customers you got all the requirements Your Design documents are ready so it comes to the developers and what this developers will do they'll start writing the application code in their favorite language or the language that is used within your organization so this face is called as developing phase so what happens in the developing phase probably the custom uh sorry your developer uh he will read the jira items or he will read the uh documents that are prepared and he'll start writing the code okay so let's say he start writing the code and what he'll do is once he writes the code he'll push this to a common location in the organization so most of the organizations these days use git if you don't know about git don't worry we'll talk about git in the future but for now just understand it's as a source code repository that is a repository that is storing all the code why you need a source code repository because it cannot be only with this one developer right so this developer this is a developer laptop but you have to always uh share this code within the other members of the team so that's why you store them in a source code repository that is a centralized repository or a distributed repository so for example in this case I choose git son of the developer wrote the code he got it reviewed by his peer members okay so PR members are nothing but other members of the team and finally push the code to the git okay now this is done this face is called as a developing phase once this is done what you have to do then H face would be testing this application right so let's say a developer said that it is working fine on my server would everybody believe it no end goal has to be to deliver a prompt and a quality code to the customer so that's why it has to go through the testing phase so this phase is called testing phase so what happens in the testing phase this application that is stored in the git repository that is taken and deployed in a server and then you have a team in the organization that is called QE team who are this QE team they are the quality assurance Engineers okay so quality assurance Engineers they basically take care of testing the software so here the developers has built the software QE has tested the software okay so this face is primarily for developers this face is primarily for QE engineers and then there is a deployment phase what happens in the deployment phase you know on the diploma in the deployment phase you basically promote this application to the production okay so here you are testing in a virtual server that can be you know uh like uh any staging server or your development server or anything but finally you push it to your production server right who is receiving this in the production server your customer so this happens with the this is the entire things that happen in a software development life cycle now you have to ask me okay I learned about everything you said this is used by developers this is used by QA now where is devops coming into picture so all these three things okay even if you remember in our last class what we thought what we learned in the last class is that a devops is nothing but it's just a culture okay so where devops comes into picture is improving the organization's efficiency now developer has written the code he stored it in his local repository okay and finally he pushed it to the git repository here the testers are testing the code and here you are moving the application to the production so devops engineer basically fastens this process right so he improves the process to deliver the code quickly okay and by ensuring all of these terms are matched okay it evolves engineer ensures that the building testing and the deployment processes are followed without any manual intervention that is everything happens in a automated way okay so everything is automated efficiency right uh just a second is there any problem with my speaker okay I'm not sure if the last sentence was overheard or I see some error with the speaker but just to repeat so what a devops engineer does he fastens the process okay by fastening the process he means that devops engineer would automate the process okay what happens with automation always automation will lead to efficiency right if you are doing a very good automation it is always directly proportional to the efficiency of your product delivery so that's fine devops engineer comes into the picture so you know if you go back to this specific slide it devops engineer is primarily responsible for automating these three phases of your software development life cycle so that's why it is very important and essential for everybody to understand software development life cycle whether you are a devops engineer a developer tester or anyone because in an organization you all work together right when you are working together as a team you have to follow a certain standard so that standard is called software development lifecycle and because we are focused in devops and because we are learning devops in this classes you have to understand that a devops engineer is primarily focused in building testing deployment automation right so devops engineer is not individually involved in building because he does not develop the software he does not test the software he does not deploy the software everything happens automatically right so manually you are not going to deploy the software in production so you are going to as a devops engineer you are going to automate and write this automation scripts so that it improves the efficiency and reduces the time by avoiding manual intervention so now I hope the software development life cycle is clear to you and finally if we go back to this slide you know all this process can be done in different ways okay so if you are talking about the project management there are different things like there is a waterfall model there is iterative model there is agile model so what are what are these models will learn during our project management classes so there is a project management class but on a high level you have to understand that every organization these days is using a agile methodology so in agile methodology what happens is you follow all of these faces but you do it agile like you know you take short Sprints that is you don't wait till all of your planning is done or you don't wait all of your Define or design documents is done once a small chunk of it is done you start with all of this process and then the other chunk is then you again follow this entire circuit that is called agile but we are not going into depth of these Concepts at this point of time so the primary idea of this class is everybody should understand the concept of software development life cycle and how devops Engineers are are important for the software development life cycle okay I hope it is clear and if tomorrow in any interview questions if somebody is asking you what are the pillars of software development lifecycle and as a devops engineer which components or which pillars are you interested you would essentially say these are the pillars of software development life cycle these are the things and as a devops engineer I am primarily focused on automating and improving the efficiency of building testing and the deployment phase okay so I hope uh this is clear to you and uh this is everything that uh someone has to learn about the software development life cycle and whether you are doing it on cloud whether you you are doing it on on-premises everybody follows the same standard because it's a standard that is approved and accepted by white I mean through throughout the industry okay so uh in case you have any questions uh you can put those questions in the comment section and you all know that I uh promptly reply to uh each and every comment and in case you have any questions that you cannot put in the comment section you can also reach out to me on LinkedIn and finally there is a small request if you feel that there are people who want to learn devops for free and they don't know about our channel so please take out some time to share these videos with those people uh you can just share our Channel link with them or you can share this video link with them so that everybody who is willing to learn devops for free will be benefited out of these videos and everybody knows that that is our primary intention okay so uh if you like the video click on the like button if you have any questions uh do post them in the comment or if you have any feedback whether it is good or bad uh you know please put that in the comment section and finally if you haven't subscribed to our Channel don't forget to subscribe our Channel thank you so much I'll see in the next video take care everyone bye