 Hello students welcome to the lecture of software engineering and today we are going to discuss project scheduling and project scheduling tools. So let's see what we have discussed till now. In seventh lecture we have seen estimation for software projects in which we have seen how to calculate line of course function count and we discussed about the Kokoma models all these things and chapter is software project management which we are discussing and in this chapter we have discussed three things that is project management concepts then we discussed software measurement and matrices and estimation for software projects. Now we will discuss these two things these two things are remaining in software engineering syllabus and today we will discuss this topic that is project scheduling. So till now okay this is one of the important chapters for the exam perspective most of the questions are being asked from this chapter itself and then mostly asked from the estimation of project and project scheduling and software measurement and matrices. So let's overview the lecture which we are going to discuss today. Today we are going to discuss project scheduling and all the concepts related to project scheduling we are going to discuss today and what is the outline. First we will see overview of scheduling why we want to schedule the project and what is the need of scheduling then see we will see why project scheduling is important and if we do not schedule a project what will happen then we will see the basic concepts of scheduling what are the activities involved in scheduling then we will see objectives of project scheduling then we will discuss project scheduling process okay this is important part project scheduling process in which we divide the process complete project into activities then we plan the activities accordingly then we will see project scheduling tools we have some project we have some interesting tools for project scheduling like gen chart activity network all these things we will discuss in this chapter okay then we will see the part and CPM approach for project scheduling okay so critical path method is being asked most of the time in the exams so we will see this in details then we will see how we can track the project schedule okay because they are scheduling a project and in the project management we want to track the progress of the report how much of the project how much we have completed till now and what is the deadline are we missing the deadline or we are going according to the deadline all these things we will see in scheduling okay how to match up the catch up the deadline and how to how to plan the activities such that we can easily catch the deadline and does not go beyond the deadline okay all these things we will see in this and in last we will see summary of the lecture so the objective of this lecture is to introduce software project management and to describe its distinctive characteristics and to discuss project planning and the planning process okay then you will see how to how to represent the planning graphically okay to show how graphical schedule representation are used by project management then you will see to discuss the notations of risk and disk management processes so till now we have seen that in first lecture we have seen some process models like waterfall models spiral model or prototyping model iterative models all these models okay so now what we will do is because we have reached at the end of the course of the software engineering so now we will connect the dots we will see how we can connect all these things first we studied about the basics of software engineering then we have seen the software development models then we saw how how requirements are gathered then we see how how to manage the process how to manage the project so now we will we will connect all these dots okay we have selected a process model to develop a software then we have identified we have identified what are the tasks involved in developing a software like if you are if you have selected waterfall model for developing your software then what are the tasks involved in this okay tasks are software requirement gathering then feasibility study then design coding and all these things all these cases are the task in a software engineering okay so we have identified the task which will be performed to complete a software then we have estimated the resource required to complete this project okay we have seen what are the resources like time people tools all these things we have seen how to calculate this okay in third chapter we we have calculating calculated the matrices values like line of course effort people production productivity duration line of or document lines all these all these matrices we have seen till now okay now we will connect all these things why we selected a model then why we have so many activities in a model then why we need to calculate the matrices like line of order function count in advance before starting the project now what we'll do is we will connect these dots that is you have to create a network of software engineering tasks that will enable you to get the job done on the time okay you will have some you will have some tasks or activities to complete a project okay what we will do is now we have a first we have a project and from this project we will divide this project into the activities and then activities are defined with the completion time start time and what are the resources to be allocated to activity like this we will we will go activity wise okay so we will divide complete project into activities then we will assign the resources to activities okay so once the network is created you have to assign responsibility for each task make sure it gets done and adopt the network as risk become reality so after dividing your project into activities what you will do is you will assign this activity to a concerned person for example first activity is requirement analysis so you will assign this this activity to analyst okay for example second second activity is design of the software designing so software architect is the person for designing the software okay then you will have coding activity so developer or coder is the person concerned person who will handle the coding of the software like this you will divide the software into activities and then you will assign the persons to these activities okay so what are the objectives of project scheduling first objective is completing the project as early as possible by determining the earliest start time and finish of each activity so with each activity we have allocated the start time and finish time so we will have some activities which will depend on each other which means that we cannot start one activity before completing the previous activity for example we have coding activity and before coding we do designing okay designing activity cannot be done without requirement analysis like these activities are related to each other they cannot go parallel okay they have to be done in serial first we will do requirement analysis then we will do designing then we will do coding so like this to each activity we will assign the start time and finish time and like this we will assign some resources to each activity like person and time then calculating the likelihood a project will completed within a certain time of period okay so then whenever you have a project with the project we have a deadline associated okay either deadline is given by the client or you decide the deadline by calculating the result by calculating the time required to each activity okay so deadline can be decided by you that is developer or by the client so then after deciding the deadline you will see what is the probability that I can complete this project within the given okay then finding the minimum cost schedule needed to complete the project by a certain date okay investigating the results of possible delays in activities completion time okay so it is not it is not sure that whatever time we are going to activity we can finish in this time okay any activity can take more time or less time it is possible to vary the timing of activity completion and starting timing if one dependent task is completing lately then next task which is dependent on this task will surely start lately okay for example your your assigned time to design activity was 10 days but designing completed in 15 days so the starting time of the coding will also vary okay starting will also be delayed smoothing out resource allocation or the duration of the project so with scheduling what you can do is you can also schedule the resources at what time what resources should be given to which person or which activity okay like this you can schedule the resources also then you are scheduling the project in order to build a complex system many soft-changing tasks occur in parallel okay it is possible that we can have multiple tasks in parallel okay the result of work performed during one task may have a profound effect on but to be conducted in other tasks for example if you change the design of a module you have to change the coding also okay okay if you if you are if you are make if you are using a different algorithm then you have to change the coding of this part okay like this some activities are dependent on each other coding activity is related is dependent on design activity okay so like this design activity and coding activity can also go in parallel how let's say you have divided a software into parts then what you can do is you can design a part and in parallel you can you can design a part and can after after completing the designing of an activity you can do the coding of this part when you are doing the coding for first component what you can do is in parallel in designing phase the person who is concerned with designing can design the second module when this person complete the designing of second module the person who is concerned with coding can start the coding of this second module like this these activities can go like pipelining okay like in the pipelining but before before ending the designing phase you cannot start the coding phase it's but also virtually impossible to assess progress on a moderate or large software project without a detailed schedule okay we require a schedule to actually handle a large project so scheduling is required why why what is the need of scheduling because we have seen a lot of late late delivery in software software industry is suffering from the late delivery of softwares that's why a concept of project scheduling came into picture and what are the reasons of late software delivery we have some some real reasons why softwares are delivered lately and a realistic deadline established by someone outside the software development group and forced on managers and practitioners within the group so what happens is client does not know what what is the what time the software is going to take okay for example he does not know use your software how complex software you are demanding and he is deciding the deadline okay whenever client decide the deadline without the prior information of the product which is demanding then it will be a unrealistic deadline okay most of the time it will be a unrealistic deadline so deciding the deadline this should be the work of the development team okay so development team should do all the evaluations like how much time each activity will take and how time can vary according to that they should decide the deadline not the person who does not know anything about the project okay so if any person decides about the deadline and he does not know anything about the development process and what happens in developing a software then he will most of the time he will decide a unrealistic deadline then sometimes it happens that customers requirements changes whenever then we are actually developing the project in in then software development is in progress customer requirement may change so if customer requirement is changing then you have to schedule the changes also okay you have to reflect this schedule this change into the schedule also so if you know if you are not changing the schedule according to the requirements what will happen is you will miss the deadline okay now project is becoming becoming big because now you have to add more functionalities but you have kept the same schedule so in this case what will happen is your schedule will go beyond the time okay which means it will go it will miss the deadline an honest underestimate of the amount of effort and number of resources that will be required to do the job okay it is possible that you can underestimate the resource required for a company for a particular project if you are doing the underestimation of the resources then it will happen that you will miss the resources for example you are underestimating the number of people required to complete a project okay a project should should there should be 10 people should be assigned to a project but you are assigning five people so what will happen the project will take more time in software development process lot of risks are involved if you ignore the risk it is possible that your software may go beyond the deadline or it will there there will be a lot of problems if you ignore the risk okay risk are definitely involved in everything in software development process we have some risk and we have to take care of those also technical difficulties that could not have been forced in advance okay it is possible that the software tools which are available will not be will not be enough for developing the particular software so it is possible that technical difficulties can also come human difficulties that could not have been foreseen in advance miscommunication among project staff and results in delay so it is it is possible that due to miscommunication between the project staff or like in team it is possible that you can delay your software a failure by project management to recognize that the project is falling behind schedule and the lack of action to correct the problem so what should we do if we have an unrealistic deadline okay we cannot just go to the customer and say that this is unrealistic deadline and you need to increase the time okay you need to give us more time so you cannot just say like this or you cannot say like we cannot complete this project in this time what you need to do is you need to do particular you need to first you need to do a particular research why this deadline is unrealistic you need to show them in on papers you need to tell them the reason why your your deadline is unrealistic if deadline is unrealistic what you can do what you should what you can suggest them to meet the deadline and also project should also go smoothly so what you need to do is if you miss if you say if you if you know that the deadline is unrealistic what you can do perform a detailed estimate using historical data from past projects take the past projects and see why this why this project will take more time okay give the reason using the past projects determine the estimate effort and duration for the project okay effort estimation and duration at the estimation can be done before starting a project with the help of those projects which you have already developed okay past projects using an incremental process model develop a software engineering strategy that will deliver critical functionality by the imposed deadline what you can do is if you know if you know that the deadline is unrealistic you can deliver the software in parts okay let's say your your software should be completed in 12 months so what you can do is after every three months you can deliver a particular functionality of a software complete software is not delivered at once what you will do is you will keep developing the software and will keep delivering the software okay as we have seen incremental software mode process model we have studied incremental process model in which what we do is we develop the software in parts and after developing each each version of the software we keep delivering it okay so user can use the software before that before the deadline but he will not be able to use the complete software he will be able to use only a particular part of the software meet with the customer and using the detailed estimate which you have done till now explain why imposed deadline is unrealistic okay you have to be a solid reason with the proof why your deadline is unrealistic so be certain to note that all estimates are based on performance on past project okay you cannot just imagine and say and write them that this deadline is unrealistic you have to estimate the deadline according to the past projects you have to estimate the time required and resources required according to according to those project which you have already completed okay also be certain to indicate the percent improvement that would be required to achieve the deadlines as it currently exists so now let's come to the project scheduling actual project scheduling what happens in scheduling first phase is compartmentalization in compartmentalization what we do is the product and process must be decomposed into a manageable number of activities and tasks okay so what we do is first we divide the product and process to develop a software into the task for example we can divide divide a software process into the tasks according to the process model we have chosen for example you are choosing waterfall model then you will divide the process into seven parts like first process first is your problem statement then requirement analysis feasibility study designing coding like this these are the activities interdependency task that can be completed in parallel must be separated from those that must be completed serially so if you do not separate the task which can be completed in parallel and which can be done in serial then what will happen is you will end up doing those those those tasks which can be done in parallel you will be ending them doing serial so it will take more load time more time so six tasks if six tasks can be done in parallel in one day it will take one day okay if six tasks if you do not identify which tasks can be done in parallel and which can be done in serial so you will end up doing all the tasks in serial so it will take more time time allocation then now you have identified the tasks of a process or your product what what are the tasks or activities you have to do to complete this project now after identifying the tasks what you need to do is to allocate the time to each activity you will allocate the start time earliest start time or earliest finish time like this all these times will be given to activity okay and how much time this task will take and when when this task will start and when when this task will end like all these times are allocated to a particular particular task effort validation project manager must ensure that on any given day there are enough staff members assigned to completed the task within the time estimated in the project plan so you know that you need to complete this project in this in this given deadline so this is the responsibility of project manager to ensure that on a given day number of number of person which are required to complete a task should be there okay so effort means effort is calculated in person months or you can if you if you are talking about daily life then you can say in person days so on each day number of person or number of staff should be available to do a do a particular task defined responsibilities which means every schedule needs to be assigned to a specific team member as I have given example like for project for doing the requirement analysis this this task should be given to analyst and for doing the coding this task should be given to coders or developers like all the activities have some concerned persons and team members to which you will give all these things defined outcomes every task in this schedule needs to have a defined outcome and we will decide what will be the outcome of this task what will be the deliverable by this task for example in requirement analysis deliverable is SRS document so these are the outcomes of different different activities so we have to define the outcomes of each activity defined milestones a milestone is accomplished when one or more product work product from an engineering task have passed quality review okay so my we will reach the milestone when we when the verification is done of your task and all the outcomes and all the deliverers have been verified for example these are the activities and milestones you have first activity that is feasibility study and from the feasibility study we get the feasibility report and from the requirement analysis we get the SRS document okay and from the prototype development we get the evaluation report from design we will get the architectural by software architect and requirement specification we get the software requirement specification document so these are the milestones achieved on these activities okay so these are the activities and given milestones are these for these activities so how what is what is the process and what are the steps in project scheduling what we do when we start scheduling the process we have a particular if we are studying the software engineering and for doing everything we have a engineering approach which means we have a predefined professional process for doing a particular particular task for example if you are doing the scheduling so you will have a particular number of steps in which you will do the scheduling of a software first one is split project into tasks and estimate the time and resource required to complete each task okay so divide the divide the complete product into tasks and assign the time and resources required to complete this task organize tasks concurrently to make optimal use of workforce so what you need to do is to meet the deadline or to complete the projected deadline what you need to do is you need to identify what tasks can be done in parallel okay as we have discussed earlier minimize task dependencies to avoid delays caused by one task waiting for another to complete so it is possible that one task can let's say for example we have a task a and then we have a task b and c like this we have task a b c d so b is dependent on a c is dependent on a and d is dependent on a and with each activity we have a start time and finish time like this okay so start time for first activity is zero and finish time is the time which will be required to complete this activity okay so if this and the starting time for second activity is the time which at which this time this activity will finish because we can start this activity only after complete completion of this activity okay d can be started after the completion of a if a fails or for example a delays by 10 then this this will also the starting time of this will also do will increase by plus 10 so whatever delays comes in first activity this delay will be reflected on the activity which is dependent on this activity so organized minimize the task dependencies to avoid delays caused by one task waiting for another to complete dependent on project managers intuition and experience okay so this is the process first what we do is we identify the activities then identify activity dependencies and we will draw a graph from this activity which will be called dependency graph then we will see for each activity we will see what are the resources required for each activity then allocate the people to activities for example giving the different different phase are assigned to different different people in the team then create the project chart okay you in this we will see what are the bar chart and giant charts what are the activities task task required to complete a project are called the activities okay activity is a small entity and tasks are called activities estimated completion time are associated with this activity with each activity we will have completion time each activity completion time is related to the amount of resource committed to it okay so if we have less number of resources for one activity then it will take more time okay if we have more number of resources for an activity then it will take less time for example activity a requires 10 days to complete with two people so if you increase the number of people what will happen is time will decrease completion time will decrease so like this this sentence is saying activity completion time is related to the amount of resources committed to it the degree of activity drills depends on the application and the level of specific specificity of data to determine optimal schedule we need to identify all the project activities okay this is one of the important part of scheduling a process to schedule a process first you need to divide into activities and you need to clearly identify whatever the activity is required to to achieve a particular milestone okay so you have to clearly declare what are the activities required to complete this product determine the business relation among activities business relation means which activity is related on which activity okay which activity is parent of which activity so all these dependencies are need to be determined based on this information we can develop managerial tools for project control we will see what are the managerial tools we have some tools for project scheduling so we have some scheduling tools what are these tools we have activity networks we will see what is activity network through the example task network or activity network are graphical representation that can be of the task interdependencies and can help define a rough schedule for particular project scheduling tools should be used to schedule any non-trivial project then we have approach which is called part program evaluation and review technique and then we have critical path method that is cpm we will see these two methods within example are equivalent techniques that allow software planner to identify the chain of dependent tasks in the project work deck down the structure that determine the project duration time so these two methods are used to find the dependencies in number of tasks then timeline or we can say gen chart we have seen operating system what are the gen charts they are related to task and time so gen chart enables software planner to determine what task will be needed to be conducted at a given point in time so let's say in operating system we have seen this kind of gen chart in which in this in this direction we have time and then we have processes like this p1 will complete at time and this is the starting time of a process and this is the finish time of the process then we have bus time bus time which means what is the time required to complete this process like this in activity from these activities we will we will deliver we will design a gen chart we will tell us in at what time the project will complete okay this will be the project completion time at the end the best indicator of progress is the completion and successful review of a defined software product so now we will see an example of these tools how we can use these tools to schedule a particular project so for example we have an example of a company that is abc computers and abc computers manufactures personal computers so we will see from the starting how we can schedule the task and how we can schedule the project from this example it is about to design manufacture and market so they have three activities first they design the software design the personal computer then they manufacture it then they mark it so the abc palm 2000 and palm book computers they design these two computers and they they will see they will have some sometime associated with design manufacturing and marketing so there are three major tasks to perform that is manufacture the new computer train staff and vendor representatives okay you will have to train the staffs and vendors then advertise the new computers so you will be having the training for users and developers of the computer and you then after completion of the manufacturers manufacturing process what you will do is you will advertise the new computer so abc needs to develop a business relation chart so how they will do that the chart gives a concise set of tasks and their immediate predecessors what are the activities required before starting an activity so this is the description of activities required for abc computers to to design manufacture and advertise a particular computer so they are designing some computers personal computers so first is manufacturing activity in this what they will do is first activities they will design the prototype okay what will be the prototype of my computer what are the things i am going to include in my computer in my personal computer all these things will be will be included in a prototype then they will purchase the material required to manufacture a personal computer for example he will purchase hard disks and let's say motherboard and let's say dbd rom and rem is all these things will be purchased then manufacture of prototype model you have designed a prototyping model then you have your material then what you can do is you can use the prototype to design the or manufacture the particular personal computer after manufacturing the computer according to prototype model what you can do is you can revise for optimization you can you can you can revise your design for optimization can you make any optimization in your in your design then initial production start training these are the activities manufacturing activities then training activities then advertising so what we are doing is they are designing the computer then we are manufacturing the computer then training the staff for using the computer and for doing the marketing of the computer then we are doing the advertising and advertising activities are reproduction advertising and post redesign advertising so from the activity description chart we can determine immediate predecessor for each activity. For example, Activity B cannot be started before completing the activity. Activity A is an immediate predecessor of Activity B because it must be completed just prior to the commencement of B. So, Activity is an immediate predecessor. This is predecessor and this is successor. So, Activity B cannot be started before finishing the activity. So, like this we will generate the activity description chart from the site of activities.