Foreword |
|
xv | |
Preface |
|
xix | |
Acknowledgments |
|
xxv | |
SECTION 1 INTRODUCTION TO SOFTWARE COST ESTIMATION |
|
|
|
3 | |
|
How Software Cost-Estimating Tools Work |
|
|
4 | |
|
Cautions About Accidental Omissions from Estimates |
|
|
15 | |
|
Software Cost Estimating and Other Development Activities |
|
|
17 | |
|
|
20 | |
|
Chapter 2. The Origins of Software Cost Estimation |
|
|
23 | |
|
The Early History of Software Cost Estimation |
|
|
24 | |
|
The Expansion and Use of Functional Metrics for Software Cost Estimating |
|
|
28 | |
|
|
32 | |
|
Chapter 3. Six Forms of Software Cost Estimation |
|
|
33 | |
|
Overview of Manual Software-Estimating Methods |
|
|
34 | |
|
Overview of Automated Software-Estimating Methods |
|
|
36 | |
|
Comparison of Manual and Automated Estimates for Large Software Projects |
|
|
48 | |
|
|
49 | |
|
Chapter 4. Software Cost-Estimating Tools and Project Success and Failure Rates |
|
|
53 | |
|
Probabilities of Software Project Success or Failure |
|
|
55 | |
|
|
59 | |
|
Chapter 5. Sources of Error in Software Cost Estimation |
|
|
61 | |
|
Judging the Accuracy of Software Cost Estimates |
|
|
65 | |
|
Classes of Software Estimation Errors |
|
|
68 | |
|
|
86 | |
SECTION 2 PRELIMINARY ESTIMATION METHODS |
|
|
Chapter 6. Manual Software-Estimating Methods |
|
|
91 | |
|
Rules of Thumb Based on Lines-of-Code Metrics |
|
|
92 | |
|
Rules of Thumb Based on Ratios and Percentages |
|
|
95 | |
|
Rules of Thumb Based on Function Point Metrics |
|
|
99 | |
|
Function Point Sizing Rules of Thumb |
|
|
102 | |
|
Rules of Thumb for Schedules, Resources, and Costs |
|
|
117 | |
|
Rules of Thumb Using Activity-Based Cost Analysis |
|
|
121 | |
|
|
127 | |
|
|
128 | |
|
Chapter 7. Manual Estimating Methods Derived from Agile Projects and New Environments |
|
|
131 | |
|
Metrics Used for Rules of Thumb |
|
|
135 | |
|
Rules of Thumb for Manual Software Cost Estimates |
|
|
140 | |
|
Component-Based Development |
|
|
143 | |
|
Dynamic System Development Method (DSDM) |
|
|
146 | |
|
Enterprise Resource Planning (ERP) Deployment |
|
|
148 | |
|
|
152 | |
|
International Outsourcing |
|
|
155 | |
|
Object-Oriented (00) Development |
|
|
159 | |
|
Capability Maturity Model (CMM) |
|
|
162 | |
|
Software Methods with Only Partial Rules of Thumb |
|
|
167 | |
|
|
167 | |
|
Crystal Development Approach |
|
|
168 | |
|
Feature-Driven Development (FDD) |
|
|
168 | |
|
ISO 9000-9004 Quality Standards |
|
|
169 | |
|
Iterative or Incremental Development |
|
|
169 | |
|
Pattern-Based Software Development |
|
|
171 | |
|
Quality Function Deployment (QFD) |
|
|
174 | |
|
Rapid Application Development (RAD) |
|
|
175 | |
|
|
176 | |
|
|
177 | |
|
Spiral Software Development |
|
|
179 | |
|
Unified Modeling Language (UML) |
|
|
180 | |
|
Use Cases for Software Requirements |
|
|
181 | |
|
|
183 | |
|
|
185 | |
|
|
185 | |
|
Chapter 8. Automated Estimates from Minimal Data |
|
|
189 | |
|
Stage 1: Recording Administrative and Project Information |
|
|
190 | |
|
Stage 2: Preliminary Sizing of Key Deliverables |
|
|
203 | |
|
Stage 3: Producing a Preliminary Cost Estimate |
|
|
219 | |
|
|
224 | |
|
|
225 | |
SECTION 3 SIZING SOFTWARE DELIVERABLES |
|
|
Chapter 9. Sizing Software Deliverables |
|
|
229 | |
|
General Sizing Logic for Key Deliverables |
|
|
229 | |
|
Sizing Methods Circa 2007 |
|
|
230 | |
|
Pattern Matching from Historical Data |
|
|
232 | |
|
Using Historical Data to Predict Growth in Requirements |
|
|
233 | |
|
Mathematical or Statistical Attempts to Extrapolate Size from Partial Requirements |
|
|
234 | |
|
Arbitrary Rules of Thumb for Adding Contingency Factors |
|
|
235 | |
|
Freezing Requirements at Fixed Points in Time |
|
|
236 | |
|
Producing Formal Cost Estimates Only for Subsets of the Total Application |
|
|
237 | |
|
Volume of Function Point Data Available |
|
|
245 | |
|
Software Complexity Analysis |
|
|
247 | |
|
Software Sizing with Reusable Components |
|
|
258 | |
|
Overview of the Basic Forms of Software Sizing Metrics |
|
|
260 | |
|
|
269 | |
|
Sizing Object-Oriented Software Projects |
|
|
275 | |
|
Sizing Text-Based Paper Documents |
|
|
277 | |
|
Sizing Graphics and Illustrations |
|
|
283 | |
|
|
286 | |
|
|
293 | |
|
The Event Horizon for Sizing Software Artifacts |
|
|
295 | |
|
What Is Known as a Result of Sizing Software Projects |
|
|
297 | |
|
Strengths and Weaknesses of Software Size Metrics |
|
|
299 | |
|
|
301 | |
|
|
302 | |
SECTION 4 COST-ESTIMATING ADJUSTMENT FACTORS |
|
|
Chapter 10. Compensation and Work-Pattern Adjustments |
|
|
307 | |
|
Manual and Automated Methods of Adjustment |
|
|
308 | |
|
Exclusions from Normal Software Cost Estimates |
|
|
310 | |
|
Setting Up the Initial Conditions for a Cost Estimate |
|
|
313 | |
|
Variations in Burden Rates or Overhead Costs |
|
|
316 | |
|
Variations in Work Habits and Unpaid Overtime |
|
|
318 | |
|
|
324 | |
|
Chapter 11. Activity Pattern Adjustment Factors |
|
|
325 | |
|
Twenty Five Common Activities for Software Projects |
|
|
326 | |
|
|
332 | |
|
Chapter 12. Software Technology Adjustment Factors |
|
|
335 | |
|
Adjustment Factors and Macro-Estimation Tools |
|
|
336 | |
|
Factors That Influence Software Development Productivity |
|
|
340 | |
|
Factors That Influence Software Maintenance Productivity |
|
|
343 | |
|
Patterns of Positive and Negative Factors |
|
|
345 | |
|
Adjustment Factors and Micro-Estimating Tools |
|
|
347 | |
|
|
362 | |
SECTION 5 ACTIVITY-BASED SOFTWARE COST ESTIMATING |
|
|
Chapter 13. Estimating Software Requirements |
|
|
367 | |
|
Function Points and Software Requirements |
|
|
374 | |
|
Primary Topics for Software Requirements |
|
|
381 | |
|
Secondary Topics for Software Requirements |
|
|
382 | |
|
Positive and Negative Requirements Adjustment Factors |
|
|
383 | |
|
Requirements and End-User Software |
|
|
386 | |
|
Requirements and Agile Applications |
|
|
386 | |
|
Requirements and Management Information Systems (MIS) Projects |
|
|
386 | |
|
Requirements and Outsourced Projects |
|
|
387 | |
|
Requirements and Systems Software |
|
|
387 | |
|
Requirements and Commercial Software |
|
|
388 | |
|
Requirements and Military Software Projects |
|
|
389 | |
|
Requirements and Web-Based Applications |
|
|
390 | |
|
Evaluating Combinations of Requirements Factors |
|
|
390 | |
|
|
393 | |
|
Chapter 14. Estimating Software Prototypes |
|
|
395 | |
|
|
398 | |
|
|
398 | |
|
|
400 | |
|
Default Values for Estimating Disposable Prototypes |
|
|
402 | |
|
Positive and Negative Factors That Influence Software Prototypes |
|
|
404 | |
|
|
407 | |
|
Chapter 15. Estimating Software Specifications and Design |
|
|
409 | |
|
Positive Design Adjustment Factors |
|
|
414 | |
|
Negative Design Adjustment Factors |
|
|
415 | |
|
|
418 | |
|
Chapter 16. Estimating Design Inspections |
|
|
421 | |
|
|
421 | |
|
|
423 | |
|
|
426 | |
|
|
432 | |
|
Chapter 17. Estimating Programming or Coding |
|
|
435 | |
|
The Impact of Reusability on Programming |
|
|
442 | |
|
The Impact of Experience on Programming |
|
|
444 | |
|
The Impact of Bugs or Errors on Programming |
|
|
444 | |
|
The Impact of Unpaid Overtime on Programming |
|
|
446 | |
|
The Impact of Creeping Requirements on Programming |
|
|
448 | |
|
The Impact of Code Structure and Complexity on Programming |
|
|
449 | |
|
The Impact of Unplanned Interruptions on Programming |
|
|
450 | |
|
The Impact of Application Size on Programming |
|
|
451 | |
|
The Impact of Office Space and Ergonomics on Programming |
|
|
452 | |
|
The Impact of Tools on Programming |
|
|
454 | |
|
The Impact of Programming Languages on Programming |
|
|
455 | |
|
The Impact of Schedule Pressure on Programming |
|
|
459 | |
|
|
459 | |
|
Chapter 18. Estimating Code Inspections |
|
|
461 | |
|
Code Inspection Literature |
|
|
461 | |
|
Effectiveness of Code Inspections |
|
|
462 | |
|
Considerations for Estimating Code Inspections |
|
|
466 | |
|
|
470 | |
|
Chapter 19. Estimating Software Configuration Control and Change Management |
|
|
471 | |
|
The Literature on Change Management |
|
|
473 | |
|
Measuring Software Change |
|
|
475 | |
|
Changes in User Requirements |
|
|
479 | |
|
Changes in Specifications and Design |
|
|
480 | |
|
Changes Due to Bugs or Defect Reports |
|
|
481 | |
|
|
482 | |
|
|
483 | |
|
Chapter 20. Estimating Software Testing |
|
|
485 | |
|
General Forms of Software Testing |
|
|
491 | |
|
Specialized Forms of Software Testing |
|
|
495 | |
|
Forms of Testing Involving Users or Clients |
|
|
498 | |
|
|
499 | |
|
Testing Pattern Variations by Industry and Type of Software |
|
|
501 | |
|
Testing Pattern Variations by Size of Application |
|
|
503 | |
|
Testing Stages Noted in Lawsuits Alleging Poor Quality |
|
|
504 | |
|
Using Function Points to Estimate Test-Case Volumes |
|
|
505 | |
|
Using Function Points to Estimate the Numbers of Test Personnel |
|
|
507 | |
|
Testing and Defect-Removal Efficiency Levels |
|
|
508 | |
|
Using Function Points to Estimate Testing Effort and Costs |
|
|
510 | |
|
Testing by Developers or by Professional Test Personnel |
|
|
512 | |
|
|
514 | |
|
The Factors That Affect Testing Performance |
|
|
514 | |
|
|
515 | |
|
Chapter 21. Estimating User and Project Documentation |
|
|
519 | |
|
Estimating Tools and Software Documentation |
|
|
521 | |
|
Quantifying the Number and Sizes of Software Document Types |
|
|
523 | |
|
Software Documentation Tools on Lagging and Leading Projects |
|
|
527 | |
|
|
529 | |
|
Chapter 22. Estimating Software Project Management |
|
|
531 | |
|
The Roles of Software Project Management |
|
|
535 | |
|
Project Managers Who Are Also Technical Contributors |
|
|
537 | |
|
Project Management for Hybrid Projects Involving Hardware and Software |
|
|
538 | |
|
Project Management and External Schedule Pressures |
|
|
538 | |
|
|
539 | |
|
Project Management on Large Systems with Many Managers |
|
|
542 | |
|
Time-Splitting, or Managing Several Projects Simultaneously |
|
|
544 | |
|
The Span of Control, or Number of Staff Members per Manager |
|
|
545 | |
|
Managing Multiple Occupation Groups |
|
|
546 | |
|
The Presence or Absence of Project Offices for Large Systems |
|
|
548 | |
|
Experience Levels of Software Project Managers |
|
|
549 | |
|
Quality-Control Methods Selected by Project Managers |
|
|
550 | |
|
Project Managers and Metrics |
|
|
551 | |
|
Summary of Project Management Findings |
|
|
551 | |
|
|
551 | |
SECTION 6 MAINTENANCE AND ENHANCEMENT COST ESTIMATING |
|
|
Chapter 23. Maintenance and Enhancement Estimating |
|
|
557 | |
|
Nominal Default Values for Maintenance and Enhancement Activities |
|
|
562 | |
|
Metrics and Measurement Problems with Small Maintenance Projects |
|
|
566 | |
|
Best and Worst Practices in Software Maintenance |
|
|
567 | |
|
Software Entropy and Total Cost of Ownership |
|
|
570 | |
|
Installing New Releases and Patches from Software Vendors |
|
|
572 | |
|
|
573 | |
|
|
574 | |
|
Maintenance (Defect Repairs) |
|
|
576 | |
|
|
581 | |
|
|
581 | |
|
Economics of Error-Prone Modules |
|
|
582 | |
|
|
584 | |
|
|
585 | |
|
Code Restructuring and Refactoring |
|
|
586 | |
|
|
588 | |
|
Migration Across Platforms |
|
|
588 | |
|
Conversion to New Architectures |
|
|
589 | |
|
|
589 | |
|
|
590 | |
|
|
590 | |
|
Dormant Application Removal |
|
|
591 | |
|
|
591 | |
|
|
592 | |
|
Retirement or Withdrawal of Applications |
|
|
593 | |
|
|
594 | |
|
Combinations and Concurrent Maintenance Operations |
|
|
594 | |
|
|
599 | |
|
Chapter 24. Software Cost-Estimating Research Issues |
|
|
603 | |
|
|
604 | |
|
Automatic Sizing from User Requirements |
|
|
606 | |
|
Activity-Based Costs for Agile, Object-Oriented, and Web Projects |
|
|
608 | |
|
Complexity Analysis of Software Applications |
|
|
610 | |
|
Value Analysis of Software Applications |
|
|
611 | |
|
Risk Analysis and Software Cost Estimates |
|
|
613 | |
|
Including Specialists in Software Cost Estimates |
|
|
615 | |
|
Reuse Analysis and Software Cost Estimates |
|
|
617 | |
|
Process Improvement Estimation |
|
|
622 | |
|
Methodology Analysis and Software Cost Estimating |
|
|
625 | |
|
Summary and Conclusions About Software Cost-Estimating Research |
|
|
629 | |
Index |
|
631 | |