Use Case Points

From Square Root

Jump to: navigation, search

See the Construction Estimation Report for the final results of all these calculations.

This is the first cut of a larger project estimation based on use case points as outlined in Estimating with Use Case Points by Mike Cohn[1].

This wiki page is meant to demonstrate the process. The excel spreadsheet in Sharepoint is the definitive reference for true estimated values.

Contents

Unadjusted Use Case Weight

Use Case Transactions Complexity Weight
Agree on Definitions8Complex15
Identify Assets and Goals6Average10
Collect Artifacts3Simple5
Categorize Requirements3Simple5
Prioritize Requirements7Average10
Inspect Requirements4Average10
Perform Security Risk Assessment7Average10
Select Security Elicitation Technique5Average10
Elicit Security Requirements6Average10
Perform Privacy Risk AssessmentAverage10
Select Privacy Elicitation TehcniquesAverage10
Elicit Privacy RequirementsAverage10
Register New User4Average10
Reset Password2Simple5
Edit Profile2Simple5
View User Profile2Simple5
Log In1Simple5
Log Out1Simple5
Manage Project15Complex15
Create Project6Average10
Install Square Tool6Average10
Integrate with Requisite ProComplex15
Export DataAverage10
Create or Edit Inspection Technique3Simple5
Create or Edit Elicitation Technique3Simple5
Teach Step2Simple5
Close StepSimple5
Send Notification4Average10
Choose StepSimple5
Manage SiteAverage10
Total255

Unadjusted Use Case Weight

Complexity Weight Number of Use Cases Product
Simple 5 12 60
Average 10 14 150
Complex 15 3 45
Total 255


Unadjusted Actor Weight

Actor Actor Type Weight
Requirements Engineer Complex 3
Lead Requirements Engineer Complex 3
Stakeholder Complex 3
Site Administrator Complex 3
System Administrator Average 2
Requirements Consumer Simple 1
Total 15


Unadjusted Use Case Points

Unadjusted Use Case Weight + Unadjusted Actor Weight = 255 + 15 = 270 Unadjusted Use Case Points

Adjusting for Technical Complexity

Philosophically, we want to avoid adjusting the use case point estimate to avoid injecting biases into the estimate. With this in mind, unless a factor is obviously applicable or not applicable, it will receive an average weight.

Factor Weight Assessment Impact
Distributed system2510
Performance objectives200
End-user efficiency133
Complex processing133
Reusable code133
Easy to install0.552.5
Easy to use0.552.5
Portable236
Easy to change133
Concurrent use133
Security133
Access for third parties155
Training needs133
Total47


Technical Complexity Factor = 0.6 + (0.01 * Technical Factor) = 0.6 + (0.01 * 47) = 1.07

Adjusting for Environmental Efficiency

Philosophically, we want to avoid adjusting the use case point estimate to avoid injecting biases into the estimate. With this in mind, unless a factor is obviously applicable or not applicable, it will receive an average weight.

Environmental Factor Weight Assessment Impact
Familiar with the development process1.534.5
Application experience0.531.5
Object-oriented experience133
Lead analyst capability0.531.5
Motivation155
Stable requirements236
Part-time staff-100
Difficult programming language-13-3
Total18.5

Environment Complexity Factor = 1.4 + (-.03 * Environment Factor) = 1.4 + (-.03 * 18.5) = 0.845


Adjusted Use Case Points

Factor Weight
Unadjusted Use Case Weight 255
Unadjusted Actor Weight 15
Technical Complexity Factor 1.07
Environmental Factor 0.845
Total Use Case Points 244

Total Use Case Points = (Unadjusted Use Case Weight (projected) + Unadjusted Actor Weight (actual)) * Technical Complexity Factor * Environmental Factor = (330 + 15) * 1.07 * 0.845 = 244

Deriving Size/Effort

We will assume 20 - 28 hours per use case points[2].

Total Effort (low) = Number of Use Case Points * 20 = 244 * 20 = 4,880 hours

Total Effort (high) = Number of Use Case Points * 28 = 244 * 28 = 6,832 hours

Buffers

Steve McConnell compiled a list of rules of thumb that should be considered when calculating a schedule[3]. We will consider some of the rules of thumb for building buffer into this estimate. The adjustments are applied to the original time estimate.

  • Administrative and clerical support: 10%
  • Configuration management support: 2%
  • IT Support: 2%
  • Scope Creep: 4%
  • New language, tools (learning curve): 20%
  • New development environment (learning curve, problems): 20%
  • Total buffer = 58%

Estimate with buffers (low) = 7,710.4 hours

Estimate with buffers (high) = 10,794.56 hours


Final Estimate

8,000 - 11,000 hours


Verification

To verify I'm going to convert the use case total to function points and use COCCOMO to calculate another time estimate. This assumes that the size estimate is approximately correct. Conversion constants were taken from this table[4].


Function points = 80% * Unadjusted Use Case Points = 80% * 255 = 204 function points.

This yields a LOC estimate of 8,160 according to the table.

COCOMO II (post architecture algorithm) gives the following high and low estimates.

  • Optimistic = 23.7 person months = 3,792 hours
  • Likely = 29.6 person months = 4,736 hours
  • Pessimistic = 37.0 person months = 5,920 hours

I assume there are 160 in a single person month.

4,000 - 6,000 hours + buffers

This is a drastic divergence from the Use Case point estimates which indicates that architectural decisions are rolled into the use case point estimates.

This gives a rate of 2.04 LOC/hour to 1.36 LOC/hour.

MSE Adjustments

Sampling 6 MSE Teams that used Java or C# in past projects, teams produced on average 12,384 LOC during summer development. Assuming that teams in the past had approximately 2,760 hours of development time as we do this gives a coding rate of 4.48 LOC/hour.

Assuming we code at a similar rate we should be able to finish the 8,160 LOC in approximately 1,819 hours.

Adjusted Use Cases Points per Hour

This information will be used to determine how much functionality can be completed by the end of the project. For now it is based on the industry average data from above. Once sufficient team data is collected, this rate can be revisited.

Use Case Transactions Complexity Weight Adjusted Value Time in Hours
Agree on Definitions8Complex1514442
Identify Assets and Goals6Average109284
Collect Artifacts3Simple55158
Categorize Requirements3Simple55158
Prioritize Requirements7Average109284
Inspect Requirements4Average109284
Perform Security Risk Assessment7Average109284
Select Security Elicitation Technique5Average109284
Elicit Security Requirements6Average109284
Perform Privacy Risk AssessmentAverage109284
Select Privacy Elicitation TehcniquesAverage109284
Elicit Privacy RequirementsAverage109284
Register New User4Average109284
Reset Password2Simple55158
Edit Profile2Simple55158
View User Profile2Simple55158
Log In1Simple55158
Log Out1Simple55158
Manage Project15Complex1514442
Create Project6Average109284
Install Square Tool6Average109284
Integrate with Requisite ProComplex1514442
Export DataAverage109284
Create or Edit Inspection Technique3Simple55158
Create or Edit Elicitation Technique3Simple55158
Teach Step2Simple55158
Close StepSimple55158
Send Notification4Average109284
Choose StepSimple55158
Manage SiteAverage109284
Total2552377482

References

  1. Cohn, Mike. "Estimating with Use Case Points", Mountain Goat Software
  2. Schneider, Geri and Jason P. Winters. 1998. Applying Use Cases: A Practical Guide. Addison Wesley.
  3. McConnell, Steve. Software Estimation: Demystifying the Black Art
  4. Jones, Capers. Estimating Software Costs: Bringing Realism to Estimating, McGraw-Hill Osborne Media