--- Video Title: Software Development Life Cycle Description: Software Development Life Cycle Watch more Videos at https://www.tutorialspoint.com/videotutorials/index.htm Lecture By: Mr. Arnab Chakraborty, Tutorials Point India Private Limited --- Software Development Life Cycle, in short we usually call it as SDLC. So, let us discuss in our Software Development Life Cycle, what are the different phases and in which sequence they are appearing. So, Software Development Life Cycle or SDLC if for short is a well defined structure sequence of stages in software engineering to develop the intended software product. We know that whenever we develop one software for a specific application, then usually we call it as a software product. So, SDLC provides a series of steps to be followed up and to design and develop a software product efficiently, SDLC framework includes the following steps. So, what are the steps we are having? We are having communication, requirement gathering, feasibility study, system analysis, system software design, coding, testing, integration, implementation, operations and maintenance and here we are having this position. So, these are the different phases or stages through which the SDLC is to take place. So, let us go one by one. We shall discuss each one of them into further details. So, at first we are sticking with the communication. This is the first step where the user initiates the request for a desired software product. The user contacts the service provider and tries to negotiate the terms, submits the request to the service providing organization in writing. So, at first the communication will be built in between the users and the respective service providers. The next step is our recommend gathering. This step onwards the software developers team work to carry out on the project. So, this team holds discussion with various stakeholders from the problem domain and tries to bring out as much information as possible on their requirements and expectations. So, we know that stakeholders are those persons who are positively or negatively affected by the execution of a project. But here we are considering those stakeholders who are from the problem domain. So, that after having a good communication with them, we can gather and accumulate all the requirements and their expectations. The requirements are contemplated and segregated into user requirements, system requirements and functional requirements. So, actually here after getting all these requirements, the requirements are to be segregated mainly into three different categories. So, one is our user requirements, next one is the system requirements and the functional requirements. These requirements are collected using a number of practices as given. So, So, how can we collect all these requirements from the users? So, starting the existing or obsolete system and the software. So, after doing the study on the existing system or the obsolete system that means the old version system and then from there we can easily gather the requirement list. So, conducting interviews of users and developers, referring to the databases or collecting answers from the questionnaires in the form of a feedback. So, using any one of the methods or combination of multiple such methods, we can gather the requirements and user expectations from the new version of the software or from the newly built developed software. So, here we are having one project charter. This project charter may have different formats depending upon the company, depending upon the nature of the software project, this project charter fields may get changed. Here we have shown a sample project charter. So, it should have a project title obviously. So, on which project title this project charter has been developed. So, project title should be there and then we are having this problem statement, goal statement, the voice of customer, we are having the project team who is the leader and who are the other team members member 1, member 2, member 3 in this way. We are having the project information, there is a project start and project end. A project cannot go forever, it must have a certain start date and end date and project approach, the project scope, what are the features to be We are having the resources, the key matrix. In this way, we are having the milestones, that means how many phases for the phase segregation. We can put some milestones in between and then the signatures will be there. So, for that some space will be kept. So, this is one sample project charter template for your understanding. So, next one we are going for the feasibility study. After recommend gathering, the team comes up with the rough plan of software process. As this step, the team analyzes if a software can be designed to fulfill all requirements of the user. And if there is any possibility of software being no more useful. So, in this way, we are at first we are analyzing all these requirements and we are trying to frame that what software will be the suitable one for this one. It is also analyzed if the project is financially, practically, and technologically feasible for the organization to take up. So, obviously, whenever you are going for a very complicated project or very large project, obviously, the budget against that project, the cost against that project will be also high. So, whether this company is can permit that cost, whether this particular organization can take up those challenges. So, these things are to be justified. So, there are many algorithms available which help the developers to conclude the feasibility of a software project. So, using different kinds of algorithms, we can test the feasibility of the software project that how this project can get implemented. So, next one we are having this system analysis. At this step, the developers decide a roadmap of their plan and try to bring up the best software model suitable for the project. And system analysis includes understanding of software product limitations, learning system related problems or changes to be done in the existing system beforehand and identifying and addressing the impact of the project on organization and personal etc. So, these are the different steps and different points to be noted, points to be taken care of in case of system analysis. That means, what are the different limitations of the existing software, the understanding of that and then learning system related problems or changes to be done in the existing beforehand and identifying and addressing the impact of the project on the organization and personnel who are going to use these softwares. So, all these things are to be analyzed in this system analysis phase. The project team analyzes the scope of the project and plans the schedule and resources accordingly. So, what will be the plan, in which way, what are the different tasks and activities to be carried out and in which sequence, will they be carried out in the sequential fashion or will they be carried out in the parallel and concurrent way. What are the different resources will be required. So, all these things will be analyzed in this system analysis phase. After system analysis, we are going to discuss software design. The output of system analysis will be the input for this respective software design. And all those analysis This will be will be put will be put in front of us, so that we can design the software accordingly. And in this particular phase, we shall segregate our design into two types of one is a logical design and the one is a physical design. So, next step is to bring down whole knowledge of the requirements and analysis on the desk and design the software product. So, previous stage experiences will be analyzed will be taken care of in the software design. The inputs from users and information gathered in recommend gathering phase are the inputs of this step. The output of this step comes in from in form of two designs. One is a logical design and another one is a physical design. Engineers produce metadata and data dictionaries, logical diagrams and data flow diagrams and in some cases pseudocodes. For this respective defined type different types of diagrams and different types of pseudocodes, we are having separate videos. Please watch all of them and those diagrams and this pseudocodes will be used in our software design phase. Next one we are going for coding. This step is also known as the programming phase. The implementation of software design starts in terms of the writing program code in the suitable programming language and developing error free executable programs efficiently. In this coding obviously you are also doing the simultaneously debugging of the of the code so that we can get some error free executable code which can implement the intent and purposes of the software. Next one we are having this testing. An estimate says that 50 percent of the whole software development process should be tested and errors may ruin the software from critical level to its own removal. So, that means errors are to be removed thoroughly so that the software will be reliable and people can work on that. So, that is why we should give emphasis very heavy emphasis on this testing phase. Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various level of code such as module testing, program testing, product testing, in-house testing and testing the product as users end. So, there are different kinds of testing are possible where having a separate chapter chapter in our tutorial on the software testing you can watch them. There we have discussed all this testing method and into further details. Early discovery of errors and their remedy is the key to reliable softwares. Whenever errors will get detected, if it has got detected in the early stage of the software development, it will be less costly, but when it will get detected at the latter stage of the software development, then obviously it will be a very costly affairs for us. Next one is the integration. So, software may need to be integrated with the libraries, databases and other programs. And this stage of SDLC is involved in the integration of software with other world entities. So, different libraries, packages, different kinds of other programs. So, all these things are to be integrated so that the software can run and can give us the fruitful output. Next one is the implementation. This means, this means installing the software on user machines. At times software needs post installation configurations at the user end and software is tested for portability and adaptability and integration related issues are solved during this implementation. So, now the software is going to be implemented and during this implementation, we are having some challenges like the we can check the portability of the software, the adaptability of the software and integration related issues. So, this is known as the implementation phase. Now, the next one is the operation and maintenance. So, this phase confirms the software operation in terms of more efficiently and less errors. If required the users are trained on or aided with the documentation on how to operate the software and how to keep the software operational. So, for this particular point, we should mention that the software should be user friendly. So, the user can interact with the software in a very friendly environment. And we might be requiring some training to the user so that they can use it use the software in a fruitful way. Some documentation can be given to them. Some help files must be given to them. So, that is why the user can get a very easy environment to work with the software. The software is maintained timely by updating the code according to the changes taking place in user end environment or the respective technology. This phase may face challenges from the hidden bugs and real world unidentified problems. So, this is known as the operational, operation and maintenance phase. Now, in this diagram, we shall discuss what are the different roles associated with various phases in our SDLC. So, in the planning and control phase, if we consider this particular phase, project manager and quality reviewer, these roles are associated. For this recommend analysis, team assessор process in this particular phase, you can consider this business recommend analyst, system analyst and they might be working under the supervision of lead. In the design phase, the architect of the software, the designer, they might be working under this lead designer. So, under this build phase, developer will be working under lead developer. So, in case of testing So, in the beginning phase, the system tester and indication tester, they will be working under say lead tester. So, here we have given you one sample, the roles that in which phase which roles are associated, but obviously organization wise or the software project wise, this particular roles can have some alterations and modifications. So, in this particular session, we have discussed a lot on the software development life cycle. Thanks for watching this video.