2k likes | 2.27k Views
Day 2, Part 2 Estimating Software Effort & Cost Section 1 – Fundamental Issues. Outline. Measures of Effort Inputs to the Effort Estimate Effort Estimation Steps Estimation based on Historical Productivity Wideband Delphi for Effort Estimation Bottom Up Estimating.
E N D
Day 2, Part 2 Estimating Software Effort & CostSection 1 – Fundamental Issues
Outline • Measures of Effort • Inputs to the Effort Estimate • Effort Estimation Steps • Estimation based on Historical Productivity • Wideband Delphi for Effort Estimation • Bottom Up Estimating
The Overall Planning Cycle Manage Risks Analyze Job Generate Initial Plans Generate Detailed Plans Execute Measure, Manage Productivity and Quality
Detailed Planning - Processes Source Information Statement of Work Requirements Constraints Standards Processes History etc. Estimate Effort and Cost Estimate Size WBS Size Effort & Cost Revise & Negotiate Not OK Complete Detailed Planning Evaluate Estimate Schedule Schedule OK
Effort Is ... … the amount of labor required for the project • It is typically measured in staff- months, staff-days or staff-hours • A month (or calendar-month) is a measure of time • A staff-month is a measure of effort If three people complete a job in 1 calendar-month, it is a 1 calendar-month job that requires 3 staff-months of effort
Effort Is Not Defined Precisely • There are no generally accepted, precise definitions for terms like staff-month or staff-day • And people are known to “fudge” the definitions in their own favor
We do 50 LOC per staff month - you do only 40! How do you measure staff months? Two Executives on the Golf Course
Staff-Hours, Staff-Days, or Staff-Months • There are many ways to measure these • And these three are NOT necessarily related in a simple manner • Because of this, comparisons can be very misleading
How Many Hours per Day? • 1 staff-hour = 1 person working for 1 hour • 1 staff-day = 1 person working for 1 day • How many staff-hours per staff-day? • 7? 7.5? 8.0? 8.5? 9.5? ??? • How do you handle paid overtime? • How do you handle unpaid overtime? • How do you handle breaks, lunch hours, etc.?
How Many Days per Month? • How many productive staff-days per staff-month? • 30? 21? 19? ??? • Does it depend on which month? The underlined value is the default assumed by many U.S. companies and many estimating models (this value allows for average number of vacation days and holidays in the U.S.)
How Many Hours per Month? 144? 148? 152? 160? 175? 184? ??? Factors that can affect this: • Which month is it? • What is the length of the work day? • How do you handle overtime? • Vacations and holidays • Sick days • What country you are in? • How do you allocate management overhead
Consistency is the Most Important Factor • If you measure effort consistently, you can understand what it costs, compare different projects, and predict future performance Lines of code per staff month Objects Tested per staff hour
Consistency Allows Reasonable Comparisons With Past History • Like software size, there are many ways to measure effort and many arguments why each is good or bad • You cannot make meaningful evaluations if each project measures effort differently
We don’t know - we didn’t count unpaid overtime How many hours did you really spend? Projects Often Hide Actual Effort Data • You cannot tell what really happened on a previous project if you don’t know how they measured effort
Measure Hours if you Can • There tend to be fewer variations in how a staff-hour is measured • But many organizations use staff-months -- so you need to know how to convert properly in your organization
What Does a “Staff-month” Mean? • If it requires 12 staff-months, does this mean • 12 people for 1 month? • 1 person for 12 months? • 3 people for 4 months? • does it depend on the people? • Too often, scheduling and estimating tools make the assumption that all of these are equivalent
vs How Flexible is a Staff-Month? • There is some flexibility, but only so much • Brooks (see references: “The Mythical Man-Month”) explored this issue in considerable detail
Cost of Adding More People Brooks’ Equation for Intercommunication Effort CC = (N * (N-1))/2 Where ... N = Number of people CC = Communication Complexity (extra overhead of managing N people)
You Cannot Just AllocatePeople Arbitrarily COCOMO MODEL OF TIME VS EFFORT staff-days required to do the work Optimal Schedule Calendar Time Allocated for the Work
The Optimal ScheduleDepends on Many Factors • Process, people, nature of task, tools, management approach, environment, … • Different cost estimating models make different assumptions about these matters and how they affect the results
Your Experience Counts More Than Any Model • Until we have a better theoretical foundation, the only way to determine the optimal is through experience • The various estimating models represent the experience of their originators and thus may predict different “optimal” schedules
Your Actual High Level Schedule May be Determined by Other Factors • In early planning, your project’s overall goals and milestones may define constraints • Product deadlines may determine schedule dates • Reviews may have to occur at times convenient to others • Customers • Managers
Compare the Actual and the Optimal Schedule to Gauge the Schedule Risk • If the optimal is significantly different from the actual, you have schedule compression, which means a significant expectation of • increased cost, and • schedule risk Optimal vs. actual schedule information may help you determine cost impact (see “cost drivers,” later in this part)
Tasks to be Performed Are a Major Input to Effort Estimation • Typically these are found in the WBS • Software development tasks (design, code, test) • Additional development tasks (requirements, system integration) • Support tasks (CM, QA, management) • Tasks requiring additional labor (documents, audits, etc.) • Additional dollar costs (travel, equipment, etc)
Other Inputs to Effort Estimate • Estimated software size • Historical data on effort & productivity • High level schedule • Process and methods • Programming language • Operating system for target system • Tools to be used • Staff experience level
Effort Estimating Steps 1) Summarize and document the requirements for each task • Basis of estimate • WBS dictionary 2) Quantify the magnitude of each task • Size & complexity for software • # of pages, # of trips, # of whatever for other things
Effort Estimating Steps 3) Estimate effort for software development tasks 4) Estimate again with an alternative method 5) Resolve discrepancies between the two methods (repeat from step 1, as required) 6) Add effort estimates for other tasks (such as support tasks)
Estimate Development Costs Then Estimate Other Costs In Other Words ... Estimate Size and Then Effort • Software Development Tasks • requirements • design • code • ... Convert to $ WBS Total Cost Estimate • Other Tasks and Costs • management • travel • training • overhead • facilities • equipment • software • … Estimate Costs Directly or as % of Development Costs
Notes for Effort Estimation • Accuracy of estimate depends on • Experience • Historical data • Availability of information • & LUCK! • At the start of a project, you are lucky to be within 20% unless you have very good historical data • It is not unusual to be 100% off
Good History Data Good historical data are essential for accurate estimating.
Architecture of Spreadsheet Effort Schedules Size / Reuse Software Reuse Analysis Final Effort Estimate Generic Schedule Productivity Based Effort Estimate Effort Schedule Final Size Estimate Historical Size Estimate Model Based Estimate Delphi Size Estimate Other Effort Estimates ... Other Size Estimates ...
Effort Can Be Estimated From Size and Productivity Effort = Size * Historical Productivity Examples: • Staff Days = Lines of Code*Staff Days/LOC • Staff Days = Modules*Staff Days/Module • Staff Days = Function Points*Staff Days/FP Whatever unit you measure, if you have good historical data, this method can be fast and effective
Typical values forProductivity Rates • 2-15 LOC/day for high order languages • 3-25 LOC/day for assembly language • Lower values for constrained projects • real time/ safety critical systems etc. • Higher numbers for commercial applications with few constraints • Even higher numbers can be achieved if you use 4GLs, high levels of reuse, etc.
Example • In the past, we have had the following productivity: • 4 LOC/sd for complex software • 8 LOC/sd for simple software • For the new “8000 LOC”, “complex” software, it should take 8000/4 = 2000 staff days …But how accurate is this?
Historical Data (Typical) LOC Developed per Staff-day
Historical Data are Seldom Precise or Consistent Example: Effort for complex software varies from 2 to 6 LOC per staff day, with a mean of 4 LOC per staff day The expected effort for an 8000 SLOC program might be • As low as 1334 staff days or ... • As high as 4000 staff days!
In Other Words • Historical Data usually gives a RANGE of values, not a precise estimate Based on past experience, this project should take from 100 to 125 staff months
Three Risk Management Approaches • Use multiple estimating methods • They will help improve the bounds on your estimate • Each new method will identify issues that other methods overlook • Set aside a “reserve” amount based on the level of risk in your estimate • Plan to update your estimates • You will have better information in the future
What Do Multiple Methods Tell You? • They help you understand the degree of uncertainty and/or confidence in your estimate - so you can manage more effectively • They force you to ask hard questions about what facts each method overlooks • They help you learn
Statistical Variances and Uncertainties Region of Likely Costs Method 1 True Cost? Method 2 Method 3
Beware of Averages • Significant differences in estimates usually mean significant differences in assumptions or facts considered • In such cases, averages may be meaningless X X X X X X X Average is Meaningless
Wideband Delphi • Wideband Delphi can be used to estimate effort as well as size • On small projects this is often the most effective way to estimate effort • Also useful for estimating other costs, such as management overhead, tools, support functions etc. x xx x x I assume it will take 3 people for 2 months.
Bottom Up Estimating • This method may take a lot of time • It may or may not be based on size estimates • This method has several benefits • Each part of the project is estimated by someone who knows that part well • Individuals “buy in” to the estimate because it was based on their expertise • It is easy to compare actual results with estimates and determine if and where you went wrong
Bottom Up Estimating Process 1) Break the software down into components -- as detailed as you can • Break down until the individual parts are small enough for an individual to develop in a short time (1 week to 1 month perhaps) • If you do not know, make a reasonable estimate of how you could break each part of the software into smaller parts 2) Estimate each part 3) Combine estimates
Software for “C” Compiler Build “C” Compiler Build Test Suite Write Documentation Write Installation Software Manage Software Development User Interface File System Parser Code Generator Run Time System Data base I/F Sort Module Command Processor Table Interface Synchro- nizer Error Processor Bert & Sally Joe Joe Mary & Jim Bert Sally Sample Breakdown