|
|
|
|
|
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.
|