February 19th, 2007

Software Cost Estimation With Use Case Points - Final Calculations

all the apples combined

The final step in project cost estimation with use case points is to do the math. First you identify the technical and environmental factors that influence your environment and describe your team. Then you analyze the use cases and actors that describe the expectations of the software and who has them. Finally, you bring it all together to do the math.

Background

This is the sixth article in a series on applying use case points to create reliable software cost estimates. What makes use case points different is that they allow the project cost estimation to happen much earlier in the process. This cost estimation technique was developed by Gustav Karner for Rational Software Corporation in the mid 1990’s.

The introduction to software cost estimation is the right place to start if you came to this article first. In the previous article we discussed:

  1. Technical Factors of the Implementation. Characterizing (non-functional) requirements of the software.
  2. Environmental Factors. Describing the team and the process.
  3. Use Case Quantity and Complexity. Representing what the software is asked to accomplish.
  4. Actor Quantity and Complexity. Enumerating the users of the software.

Collecting The Use Case Point Data

abacus

Use the links above the abacus to review any of the calculations that you performed in the previous articles.

In the first step you determined a numerical representation of the technical factors for your software. This is the technical complexity factor, TCF.

In the second step you created a number representing the environmental factors that influence your team’s ability to get the job done. This is the environmental factor, EF.

In the third step you measured the use cases, creating a representation of the quantity and complexity of the use cases that the software must enable. This is the unadjusted use case points, UUCP.

In the fourth step you reviewed the users of the software - both people and other systems. This is the actor weighting, AW. [Note: Some articles refer to this as the unadjusted actor weight, or UAW].

Calculating The Use Case Points

The formula to calculate use case points is described below in terms of the variables from above: TCF, EF, UUCP, and AW.

Use Case Points = (UUCP + AW) * TCF * EF.

The total use case points equals the sum of unadjusted use case points plus the actor weight, multiplied by both the technical complexity factor and the environmental factor.

The next step is to convert this normalized representation of “how big the job is” into an estimate of effort.

Determining Effort From Use Case Points

This is the part where your math becomes an estimate of effort.

Unfortunately, this is where opinions can sneak in when you’re first using use case points. Different experts identify different values to use.

  • Karner, the originator of the approach, suggests using 20 hours of effort per use case point.
  • A case-study team, cited by Ed Carroll, found empirical data to support using 28 hours per use case point.
  • Other estimates range from 15 to 30 hours per use case point, cited by Roy Clem.

Another approach proposed that “complex projects” have a higher conversion factor (28 to 1) than “simpler projects” (20 to 1). The following calculation determines if a project is complex:

For each of the following environmental factors that has a value below 3, add a point.

  • 1. Familiarity with the project.
  • 2. Application experience.
  • 3. Object oriented programming experience.
  • 4. Lead analyst capability.
  • 5. Motivation.
  • 6. Stable requirements.

For each of the remaining environmental factors that has a value above 3, add a point.

  • 7. Part time staff.
  • 8. Difficult programming language.

Add up the points. If you have fewer than 3 points, use 20 hrs per UCP. If you have 3 or 4 points, use 28 hrs per UCP. If you have 5 or more points, restructure the project.

This makes a lot of sense - it essentially says that inexperienced teams will take 40% longer to complete the project. And when there is a significant disconnect (between capability and expectation), the project should be reset - to lower expectations or increase capabilities or both.

Revise and Refine

The key thing to note is that these “generic” effort-to-UCP conversions are a starting point. You have to adjust them over time to improve the accuracy of your estimates. Maybe you will need to rethink what it means to be “experienced,” or just how difficult “difficult” is.

Use Case Points Can’t Be Proven To Work

This actually identifies a weakness in the approach - you can never prove that it works (or doesn’t). Essentially, you have one equation with two unknowns. If an estimate is proven wrong at the end of the project, it could be because the calculation-math is flawed, or it could be because the estimates along the way are flawed. If your estimates prove to be right, it could be because both are wrong, and the errors happen to cancel each other out.

Use Case Points Are Still Valid

Nonetheless, use case point-based software cost estimates are still reasonable. Producing an estimate with use case points will result in a greater likelihood of project success than any other estimate (that I know of) that can be performed at the same stage in the project, with the same amount of data. And the introspective act of calculating UCP at the beginning of a project will help find and avoid costly mistakes later in the project.

Save Time And Effort

[Update: Download our free excel spreadsheet for calculating use case points.]

Recommended Reading

Please Rate This Article!
Just Plain BadLameAverageGoodGreat (6 votes, average: 4.5 out of 5)
Loading ... Loading ...

5 Responses to “Software Cost Estimation With Use Case Points - Final Calculations”

  1. Patrick Says:

    Question about this series of articles…

    Has anyone out there actually used this estimation scheme? If so, do you have some sort of Excel spreadsheet for doing the survey and calculations on each feature? I’d be interested to see what that would look like.

    Also, how long is this process expected to take? It seems like estimation can take as long as you want it to take, but there’s a law of diminishing returns with resepct to time. Is this process crossing that line?

  2. Aaron Korver Says:

    Okay, so why have an “expert” figure out that a point = a certain hour range? Why not ask the team? Why isn’t the team doing this estimating? Aren’t they the ones doing the work?

  3. Scott Sehlhorst Says:

    Patrick,

    Thanks very much for reading and commenting! I owe you a thank you - my intent was to create the spreadsheet after finishing the tutorial, and I almost forgot. When I saw your comment it reminded me to get it done.

    I think that there is very little incremental effort in creating an estimate this way - relative to the things you should be doing anyway. Identifying actors and use cases - that has to happen regardless. A little incremental effort to classify them.

    The environmental factors shouldn’t take more than an hour to determine, in a discussion primarily with your development manager or dev lead.

    The technical factors could take a couple hours to figure out - they require some insight into the project environment. I would contend that the insight exercise is valuable for future decision making, even if you don’t use it for the estimate.

    You’re exactly right about diminishing returns. I feel that UCP provides a good “rough order of magnitude” estimate (+100%/-50%) with half a day of effort to organize and think as above. The original authors of the method felt like they could achieve +/- 10% data with this approach. I haven’t seen that happen. It may be possible, even realistic, but I’ve always seen projects get “big changes” early in the envisioning stage (where this is most useful), so I haven’t tried to narrow it down. I think there’s a danger of false precision if you do - the UCP calculation creates a number and people will remember it.

    So, I would spend half a day (assuming use cases and actors are defined, which they should be anyway), and then use that for a ROM estimate.

  4. Scott Sehlhorst Says:

    Aaron,

    Thanks for reading and thanks vry much for commenting!

    You’re exactly right - ask the team. When I saw the numbers from the experts, my thought was “Great - I have a starting point. I’ll adapt that to my team as we get good data.”

    If you can go back over historical data, and create a UCP estimate, and compare it with actuals, that would give you a number (to replace the “28″).

    Thanks again!

  5. accidental business analyst » Blog Archive » Estimating With Use Case Points Says:

    [...] Effort Estimation. The previously collected data is converted into man-hours. [...]

Join The Discussion