Software Estimation: Demystifying the Black Art. Redmond, Wa.: Microsoft Press, 352 pages, 2006. Retail price: $39.95. ISBN: 0735605351. Order paperback or Kindle from Amazon.com or Ebook from O'Reilly. Look for best price from CampusI (biggest list of sources). Non-US buyers, check out AddALL for exchange rates and non-US sellers.

Detailed Book Outline

Welcome

Art vs. Science of Software Estimation

Why This Book Was Written and Who it is For

Key Benefits Of This Book

What This Book is Not About

Where to Start

If you bought this book because you need to create an estimate right now …
If you want to improve your personal estimation skills,
If you want to improve your organization’s estimation track record, or
If you’re looking for a better understanding of software estimation in general …

CRITICAL ESTIMATION CONCEPTS

1 What is an “Estimate?”

1.1 Estimates, Targets, and Commitments

1.2 Relationship between Estimates and Plans

1.3 Communicating about Estimates, Targets, and Commitments

1.4 Estimates as Probability Statements

1.5 Common Definitions of a “Good” Estimate

1.6 Estimates and Project Control

1.7 Estimation’s Real Purpose

1.8 A Working Definition of a “Good Estimate”

2 How Good an Estimator Are You?

2.1 A Simple Estimation Quiz

2.2 Discussion of Quiz Results

How Confident is “90% Confident?”

How Wide Should You Make Your Ranges?

Where Does Pressure to Use Narrow Ranges Come From?

How Representative is This Quiz of Real Software Estimates?

3 Value of Accurate Estimates

3.1 Is it Better to Overestimate or Underestimate?

Arguments Against Overestimation

Arguments Against Underestimation

Weighing the Arguments

3.2 Details on The Software Industry’s Estimation Track Record

How Late are the Late Projects?

One Company’s Experience

The Software Industry’s Systemic Problem

3.3 Benefits of Accurate Estimates

3.4 Value of Predictability Compared to Other Desirable Project Attributes

3.5 Problems with Common Estimation Techniques

4 Where Does Estimation Error Come From?

4.1 Sources of Estimation Uncertainty

4.2 The Cone of Uncertainty

Can You Beat the Cone?

The Cone Doesn’t Narrow Itself

Accounting for the Cone of Uncertainty in Software Estimates

Relationship Between the Cone of Uncertainty and Commitment

The Cone of Uncertainty and Iterative Development

4.3 Chaotic Development Processes

4.4 Unstable Requirements

Estimating Requirements Growth

4.5 Omitted Activities

4.6 Unfounded Optimism

4.7 Subjectivity and Bias

4.8 Off-the-Cuff Estimates

4.9 Unwarranted Precision

4.10 Other Sources of Error

5 Estimate Influences

5.1 Project Size

Diseconomies of Scale

When You Can Safely Ignore Diseconomies of Scale

Importance of Diseconomy of Scale in Software Estimation

5.2 Kind of Software Being Developed

5.3 Personnel Factors

5.4 Programming Language

5.5 Other Project Influences

5.6 Diseconomies of Scale Revisited

FUNDAMENTAL ESTIMATION TECHNIQUES

6 Introduction to Estimation Techniques

6.1 Considerations in Choosing An Estimation Technique

What’s Being Estimated

Project Size

Small
Large
Medium

Software Development Style

Evolutionary prototyping
Extreme Programming
Evolutionary delivery
Staged delivery.
Rational Unified Process
Scrum

Effect of Development Style on Choice of Estimation Techniques

Development Stage

Early
Middle.
Late.

Kind of Development

Accuracy Possible

6.2 Technique Applicability Tables

7 Count, Compute, Judge

7.1 Count First

7.2 What to Count

Find something to count that’s highly correlated with the size of the software you’re estimating
Find something to count that’s available sooner rather than later in the development cycle
Find something to count that will produce a statistically meaningful average
Understand what you’re counting
Find something you can count with minimal effort

7.3 Use Computation to Convert Counts to Estimates

Example of Counting Defects Late in a Project

Example of Estimation by Counting Web Pages

7.4 Use Judgment Only as a Last Resort

8 Calibration and Historical Data

8.1 Improved Accuracy and Other Benefits of Historical Data

Accounts for Organizational Influences

Avoids Subjectivity and Unfounded Optimism

Reduces Estimation Politics

8.2 Data to Collect

Issues Related to Size Measures

Issues Related to Effort Measures

Issues Related to Calendar Time Measures

Issues Related to Defect Measures

Other Data Collection Issues

8.3 How to Calibrate

8.4 Using Project Data to Refine Your Estimates

8.5 Calibration with Industry Average Data

8.6 Summary

9 Individual Expert Judgment

9.1 Structured Expert Judgment

Who Creates the Estimates

Granularity

Use of Ranges

Formulas

Checklists

9.2 Compare Estimates to Actuals

10 Decomposition and Recomposition

10.1 Calculating an Accurate Overall “Expected Case”

The Law of Large Numbers

How Small Should the Estimated Pieces Be?

10.2 Decomposition via an Activity-Based Work Breakdown Structure

10.3 Hazards of Adding Up Best Case and Worst Case Estimates

Warning: Math Ahead!

What Went Wrong

10.4 Creating Meaningful Overall Best Case and Worst Case Estimates

Computing Aggregate Best and Worst Cases for Small Numbers of Tasks (Simple Standard Deviation Formula)

Computing Aggregate Best and Worst Cases for Large Numbers of Tasks (Complex Standard Deviation Formula)

Creating the Aggregate Best and Worst Case Estimates

Cautions about Percentage Confident Estimates

11 Estimation by Analogy

11.1 Basic Approach to Estimating By Analogy

Step 1: Back to the Triad Case Study

Step 2: Comparing the Size of the New Project to a Similar Past Project

Step 3: Build Up the Estimate for the New Project’s Size as a Percentage of the Old Project’s Size

Step 4: Create an Effort Estimate from the Size of the New Project Compared to the Previous Project

Step 5: Check For Consistent Assumptions Across the Old and New Projects

11.2 Comments on Uncertainty in the Triad Estimate

Estimation Uncertainty, Plans, and Commitments

12 Proxy Based Estimates

12.1 Fuzzy Logic

How to Get the Average Size Numbers

How to Classify New Functionality

How Not to Use Fuzzy Logic

Extensions of Fuzzy Logic

12.2 Standard Components

Using Standard Components with Percentiles

Limitations of Standard Components

12.3 Story Points

Cautions about Ratings Scales

12.4 T-Shirt Sizing

12.5 Other Uses of Proxy Based Techniques

12.6 Additional Resources

13 Expert Judgment in Groups

13.1 Group Reviews

13.2 Wideband Delphi

Effectiveness of Wideband Delphi

“The Truth is Out There”

When to Use Wideband Delphi

14 Software Estimation Tools

14.1 Things You Can Do With Tools That You Can’t Do Manually

Simulating project outcomes
Probability analysis
Accounting for diseconomies of scale
Accounting for creeping requirements
Estimation of less common software issues
Calculation of planning options and integration with planning tools
What-if analysis
Referee for unrealistic project expectations
Acting as an objective authority when revising estimation assumptions
Sanity checking estimates created with the art of estimation
Estimating large projects

14.2 Data You’ll Need to Calibrate the Tools

14.3 One Thing You Shouldn’t Do with a Tool Any More than You Should Do Otherwise

14.4 Summary of Available Tools

15 Use of Multiple Approaches

Lessons for Software Estimation

16 Flow of Software Estimates on a Well-Estimated Project

16.1 Flow of an Individual Estimate on a Poorly Estimated Project

16.2 Flow of an Individual Estimate on A Well-Estimated Project

16.3 Chronological Estimation Flow for an Entire Project

Estimation Flow for Large Projects

Estimation Flow for Small Projects

16.4 Estimate Refinement

16.5 How to Present Reestimation to Other Project Stakeholders

When to Present the Reestimates

What If Your Management Won’t Let You Reestimate?

16.6 A View of a Well-Estimated Project

17 Standardized Estimation Procedures

17.1 Usual Elements of a Standardized Procedure

17.2 Fitting Estimation into a Stage-Gate Process

17.3 An Example of a Standardized Estimation Procedure for Sequential Projects

17.4 An Example of a Standardized Estimation Procedure for Iterative Projects

17.5 An Example of a Standardized Estimation Procedure from an Advanced Organization

17.6 Improving Your Standardized Procedure

SPECIFIC ESTIMATION CHALLENGES

18 Special Issues in Estimating Size

18.1 Challenges with Estimating Size

Role of Lines of Code in Size Estimation

18.2 Function-Point Estimation

External Inputs
External Outputs
External Queries
Internal Logical Files
External Interface Files

Converting from Function Points to Lines of Code

18.3 Simplified Function Point Techniques

The Dutch Method

GUI Elements

18.4 Summary of Techniques for Estimating Size

19 Special Issues in Estimating Effort

19.1 Influences on Effort

19.2 Computing Effort from Size

Computing Effort Estimates Using the Art of Estimation

What Kinds of Effort Are Included in This Estimate?

19.3 Computing Effort Estimates Using the Science of Estimation

19.4 Industry Average Effort Graphs

19.5 ISBSG Method

19.6 Comparing Effort Estimates

20 Special Issues in Estimating Schedule

20.1 The Basic Schedule Equation

20.2 Computing Schedule Using Informal Comparisons to Past Projects

20.3 Jones’s First-Order Estimation Practice

20.4 Computing a Schedule Estimate Using the Science of Estimation

20.5 Schedule Compression and the Shortest Possible Schedule

Shortening the nominal schedule increases overall effort
There is an impossible zone, and you can’t beat it
Extending schedule beyond the nominal schedule usually reduces total effort, if you reduce team size

20.6 Tradeoffs Between Schedule and Effort

Schedule Compression and Team Size

20.7 Schedule Estimation and Staffing Constraints

20.8 Comparison of Results from Different Methods

21 Estimating Planning Parameters

21.1 Estimating Activity Breakdown on a Project

Estimating Allocation of Effort to Different Technical Activities

Estimating Requirements Effort

Estimating Management Effort

Estimating Total Activity

Adjustments Due to Project Type

Example of Allocating Effort to Activities

Developer to Tester Ratios

21.2 Estimating Allocation of Time to Schedule

21.3 Converting Estimated Effort (Ideal Effort) to Planned Effort

21.4 Cost Estimates

Overtime
Is the Project Cost Based on Direct Cost, Fully Burdened Cost, or Some Other Variation?
Other Direct Costs

21.5 Estimating Defect Production and Removal

Estimating Defect Removal

An Example of Estimating Defect Removal Efficiency

21.6 Estimating Risk and Contingency Buffers

21.7 Other Rules of Thumb

21.8 Additional Resources

22 Estimate Presentation Styles

22.1 Communicating Estimate Assumptions

22.2 Expressing Uncertainty

Plus-or-Minus Qualifiers

Risk Quantification

Confidence Factors

Case-Based Estimates

Coarse Dates and Time Periods

22.3 Using Ranges (of Any Kind)

What level of probability should your range include?
Can you live with the midpoint of the range?
Should you present the full range, or only the part of the range from the nominal estimate to the top end of the range?
Can you combine the use of ranges with other techniques?
How do your company’s budgeting and reporting processes deal with ranges?

Usefulness of Estimates Presented as Ranges

Ranges and Commitments

23 Politics, Negotiation, and Problem Solving

23.1 Attributes of Executives

23.2 Political Influences on Estimates

External Constraints

Budgeting and Dates

Negotiating an Estimate vs. Negotiating a Commitment

What To Do If Your Estimate Doesn’t Get Accepted

Responsibility of Technical Staff to Educate Non-Technical Stakeholders

23.3 Problem Solving and Principled Negotiation

A Problem-Solving Approach to Negotiation

Separate the People from the Problem

Focus on Interests, Not Positions

Invent Options for Mutual Gain

Insist on Using Objective Criteria

Technical Staff and Technical Management Own the Estimate
Non-Technical Stakeholders Own the Target
Technical Staff and Non-Technical Staff Jointly Own the Commitment
Don’t negotiate the estimate itself
Insist that the estimate be prepared by a qualified party
Refer to your organization’s standardized estimation procedure
Weather the storm

Appendices

A. Estimate Sanity Check

B. Answers to Quiz in Chapter 2, How Good an Estimator Are You?

C. Summary of Estimation Tips

Email me at stevemcc@construx.com.