Effort Estimation (估计) And Scheduling (时序安排) Presented by Basker George Effort Estimation & Scheduling Most difficult & important activities in managing project Important estimate : Effort, Schedule & Cost If effort estimate is available, it is easy to determine schedule estimate. Hence for effective planning, effort & schedule estimate is required for the project & various task of project. Effort Estimation & Scheduling The contract between Vendor & Customer is based on cost & schedule Estimates. In case there is a project overrun (蔓延) the customer will not pay more Hence good estimation is essential for any software organization. Without good EFFORT estimate, effective planning of software project is not possible. Effort Estimation & Scheduling A proper effort estimation method is a requirement for Software Project Planning KPA of CMM level 2. “Good estimation method are available for projects” is the requirement of “Integrated Software Management” KPA of CMM level 3. Use of past estimation data for future projects is the requirement for “Quantitative Process Management” KPA of CMM Level 4. Effort Estimation Effort estimation usually takes place at the early stage of the project Effort estimation can rely on “gut feeling” or previous experience (CMM level 1) A scientific approach is to use a estimation model for obtaining the effort estimates We shall study the estimation models Effort Estimation Model (型) A software estimation model defines precisely which values are needed & how these values can be used to compute the effort. Size of the software is a major factor in determining how much effort is needed to build it. Cont…… Hence with the estimation of size, we can estimate the efforts One approach for estimating size is to decompose (分解) the system into smaller parts & then estimate the size of the system based on size of its parts. Cont…… This approach is preferred, as estimating size for smaller system is easier than carrying out the same task for a larger system. If function points are used for size, then the size in function points can be counted using function point rules. The size can also be counted in terms of LOC Knowledge about Software project Effort Estimate Extract values of some characteristic Estimation Model Top-Down Approach In Top-Down approach for estimation of effort, some equation is used to estimate the total effort required for entire project. Then the efforts for different phase are determined as percentage of the total effort. COCOMO model is the most famous model for effort estimation using top-down approach. http://www.cs.unc.edu/~stotts/COMP145/cocomo.html Bottom-Up Approach In this approach, the estimate is first obtained for parts of the project, then the overall estimate is obtained. That is, major activities are identified & then estimation is done for each activity. Form this estimate, the effort for overall project is obtained. This approach does not require size to be estimated. Bottom-Up Approach This approach can be used without the use of past data. Experience may be used to estimate the effort required for activity. This approach is also used when a project involves mix of different software language & technologies, making size estimation difficult. Bottom-Up Approach The risk involved in bottom-up approach are: Miss some important activity Difficult to estimate task overhead (project management which can span the entire project) Conclusion Both top-down & bottom-up approach require information about the project to estimate Size for Top-Down approach List of task for Bottom-Top approach Both types of estimates become more accurate if more information is available about the project or as the projects proceeds. Building Estimation Models Size based Top-Down estimation model are generally built from data taken from completed projects Many factors affect the effort required for a project. There are around 68 factors that affect productivity. Building Estimation Models The COCOMO model first estimates the efforts based on size & then correcting the estimates based on the values of 15 different parameters Complexity Database size Performance requirement etc.. Estimation at Infosys At infosys estimation takes place after analysis For projects that has little past data, bottom-up approach is used. As the types of projects undertaken at Infosys vary substantially, the bottom up approach is preferred & recommended. If past data & capability baseline is available, then task based approach is used. Estimation at Infosys For Bottom-Up approach, the software under development is first divided into major program (or Units). Each program unit is classified as simple, medium & complex based on some criteria. For each classification some standard “Build effort” (coding & testing) is identified. Estimation at Infosys Once the Build effort for each program unit is known, then total effort for BUILD PHASE of the project is known. Once the effort for coding is known, the efforts for other phase of project is determined as percentage of coding effort. From these estimates the total efforts for the project is obtained. Steps for Estimation. 1. 2. 3. Identify programs in the system & classify them as Simple, Medium & complex(S/M/C). If PCB exists, Get average build effort for S/M/C program from baseline. If project-specific baseline does not exists, use project type, technology, language & other attributes to look for similar projects in PDB. Use data from these projects to define the build efforts for S/M/C programs. Steps for Estimation. 4. 5. If no similar projects exists in PDB & no project specific baseline exists, (say project is new technology), use average build efforts for S/M/C programs from the general process capability baseline. Use project-specific factors to further refine the build effort for S/M/C programs. Steps for Estimation. 6. 7. 8. Get the total build effort using the build effort for S/M/C programs. Use the effort distribution data in the capability baseline or similar projects in the PDB to estimate the efforts for other tasks & the total effort. Refine the estimate based on projectspecific factors. Effectiveness of the approach A common way of analyzing the effectiveness of an estimation approach is to see how the estimated effort compares with the actual effort. This comparison give a general idea about the accuracy of estimates That is weather programmers were overstretched or underutilized. Actual versus estimated effort 3500 2000 0 0 500 1000 1500 2000 2500 3000 Top Down Estimation This approach starts with the estimation of size of the software. The size is estimated in terms of function points or LOC Top Down Estimation overall approach 1. 2. 3. Get the estimate of total size in function points Use productivity data in the process capability baseline for similar process type or productivity data in the process database for similar projects to fix productivity level for the project. Obtain the overall effort estimate from productivity & size estimates. Top Down Estimation 4. 5. Use effort distribution data from the process capability baseline (or similar projects)_to estimate the effort for different phases. Refine the estimates, taking projectspecific factors into consideration Scheduling (时序安排) Scheduling activity can be broken into two sub activity 1) Determine overall schedule (project duration) with milestone 2) Detail schedule of various tasks 1) Overall Scheduling Once the effort is known, the various schedule are determined depending upon resources(people). Overall schedule for the project is driven more by the business requirement of customer. Also schedule for major milestone is also fixed. Manpower BuildUp Peak Team Size Design Build Test Actual versus estimated efforts for recently completed projects 600 300 0 0 100 200 300 400 500 600 2) Detailed Schedule The detailed schedule is determined by refining each task in the top-level schedule. Each activity under top-level activity is scheduled in a manner such that the schedule for the top-level activity can be met. Cont… The final schedule lists all the task to be done in the project, along with start date, end date, assigned personnel & other information for each task. For detailed scheduling features of MSP (Microsoft Project) can be used. Cont.. For each activity listed in MSP Activity code Program code Module code The effort Duration Start date End date resources needed and resource dependency (same resource by two task) are also specified Cont.. After all these inputs are entered, the resource loading analysis is performed using MSP MSP eventually gives Loading of resources Hence if some activity are overloaded or under loaded, activity or resource can be modified for balanced load. As changes occur, MSP is also kept current to reflect the actual status of the project. This schedule is useful as a key in project monitoring & control system.