| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
| |
Introduction to Software Cost Estimation | |
| |
| |
| |
Introduction | |
| |
| |
How Software Cost-Estimating Tools Work | |
| |
| |
Cautions About Accidental Omissions from Estimates | |
| |
| |
Software Cost Estimating and Other Development Activities | |
| |
| |
References | |
| |
| |
| |
The Origins of Software Cost Estimation | |
| |
| |
The Early History of Software Cost Estimation | |
| |
| |
The Expansion and Use of Functional Metrics for Software Cost Estimating | |
| |
| |
References | |
| |
| |
| |
Six Forms of Software Cost Estimation | |
| |
| |
Overview of Manual Software-Estimating Methods | |
| |
| |
Overview of Automated Software-Estimating Methods | |
| |
| |
Comparison of Manual and Automated Estimates for Large Software Projects | |
| |
| |
References | |
| |
| |
| |
Software Cost-Estimating Tools and Project Success and Failure Rates | |
| |
| |
Probabilities of Software Project Success or Failure | |
| |
| |
References | |
| |
| |
| |
Sources of Error in Software Cost Estimation | |
| |
| |
Judging the Accuracy of Software Cost Estimates | |
| |
| |
Classes of Software Estimation Errors | |
| |
| |
References | |
| |
| |
| |
Preliminary Estimation Methods | |
| |
| |
| |
Manual Software-Estimating Methods | |
| |
| |
Rules of Thumb Based on Lines-of-Code Metrics | |
| |
| |
Rules of Thumb Based on Ratios and Percentages | |
| |
| |
Rules of Thumb Based on Function Point Metrics | |
| |
| |
Function Point Sizing Rules of Thumb | |
| |
| |
Rules of Thumb for Schedules, Resources, and Costs | |
| |
| |
Rules of Thumb Using Activity-Based Cost Analysis | |
| |
| |
Summary and Conclusions | |
| |
| |
References | |
| |
| |
| |
Manual Estimating Methods Derived from Agile Projects and New Environments | |
| |
| |
Metrics Used for Rules of Thumb | |
| |
| |
Rules of Thumb for Manual Software Cost Estimates | |
| |
| |
Component-Based Development | |
| |
| |
Dynamic System Development Method (DSDM) | |
| |
| |
Enterprise Resource Planning (ERP) Deployment | |
| |
| |
Extreme Programming (XP) | |
| |
| |
International Outsourcing | |
| |
| |
Object-Oriented (OO) Development | |
| |
| |
Capability Maturity Model (CMM) | |
| |
| |
Software Methods with Only Partial Rules of Thumb | |
| |
| |
Cleanroom Development | |
| |
| |
Crystal Development Approach | |
| |
| |
Feature-Driven Development (FDD) | |
| |
| |
ISO 9000-9004 Quality Standards | |
| |
| |
Iterative or Incremental Development | |
| |
| |
Pattern-Based Software Development | |
| |
| |
Quality Function Deployment (QFD) | |
| |
| |
Rapid Application Development (RAD) | |
| |
| |
Scrum | |
| |
| |
Six-sigma for Software | |
| |
| |
Spiral Software Development | |
| |
| |
Unified Modeling Language (UML) | |
| |
| |
Use Cases for Software Requirements | |
| |
| |
Web-Based Applications | |
| |
| |
Summary and Conclusions | |
| |
| |
References | |
| |
| |
| |
Automated Estimates from Minimal Data | |
| |
| |
| |
Recording Administrative and Project Information | |
| |
| |
| |
Preliminary Sizing of Key Deliverables | |
| |
| |
| |
Producing a Preliminary Cost Estimate | |
| |
| |
Summary and Conclusions | |
| |
| |
References | |
| |
| |
| |
Sizing Software Deliverables | |
| |
| |
| |
Sizing Software Deliverables | |
| |
| |
General Sizing Logic for Key Deliverables | |
| |
| |
Sizing Methods Circa 2007 | |
| |
| |
Pattern Matching from Historical Data | |
| |
| |
Using Historical Data to Predict Growth in Requirements | |
| |
| |
Mathematical or Statistical Attempts to Extrapolate Size from Partial Requirements | |
| |
| |
Arbitrary Rules of Thumb for Adding Contingency Factors | |
| |
| |
Freezing Requirements at Fixed Points in Time | |
| |
| |
Producing Formal Cost Estimates Only for Subsets of the Total Application | |
| |
| |
Volume of Function Point Data Available | |
| |
| |
Software Complexity Analysis | |
| |
| |
Software Sizing with Reusable Components | |
| |
| |
Overview of the Basic Forms of Software Sizing Metrics | |
| |
| |
Source Code Sizing | |
| |
| |
Sizing Object-Oriented Software Projects | |
| |
| |
Sizing Text-Based Paper Documents | |
| |
| |
Sizing Graphics and Illustrations | |
| |
| |
Sizing Bugs or Defects | |
| |
| |
Sizing Test Cases | |
| |
| |
The Event Horizon for Sizing Software Artifacts | |
| |
| |
What Is Known as a Result of Sizing Software Projects | |
| |
| |
Strengths and Weaknesses of Software Size Metrics | |
| |
| |
Summary and Conclusions | |
| |
| |
References | |
| |
| |
| |
Cost-Estimating Adjustment Factors | |
| |
| |
| |
Compensation and Work-Pattern Adjustments | |
| |
| |
Manual and Automated Methods of Adjustment | |
| |
| |
Exclusions from Normal Software Cost Estimates | |
| |
| |
Setting Up the Initial Conditions for a Cost Estimate | |
| |
| |
Variations in Burden Rates or Overhead Costs | |
| |
| |
Variations in Work Habits and Unpaid Overtime | |
| |
| |
References | |
| |
| |
| |
Activity Pattern Adjustment Factors | |
| |
| |
Twenty Five Common Activities for Software Projects | |
| |
| |
References | |
| |
| |
| |
Software Technology Adjustment Factors | |
| |
| |
Adjustment Factors and Macro-Estimation Tools | |
| |
| |
Factors That Influence Software Development Productivity | |
| |
| |
Factors That Influence Software Maintenance Productivity | |
| |
| |
Patterns of Positive and Negative Factors | |
| |
| |
Adjustment Factors and Micro-Estimating Tools | |
| |
| |
References | |
| |
| |
| |
Activity-Based Software Cost Estimating | |
| |
| |
| |
Estimating Software Requirements | |
| |
| |
Function Points and Software Requirements | |
| |
| |
Primary Topics for Software Requirements | |
| |
| |
Secondary Topics for Software Requirements | |
| |
| |
Positive and Negative Requirements Adjustment Factors | |
| |
| |
Requirements and End-User Software | |
| |
| |
Requirements and Agile Applications | |
| |
| |
Requirements and Management Information Systems (MIS) Projects | |
| |
| |
Requirements and Outsourced Projects | |
| |
| |
Requirements and Systems Software | |
| |
| |
Requirements and Commercial Software | |
| |
| |
Requirements and Military Software Projects | |
| |
| |
Requirements and Web-Based Applications | |
| |
| |
Evaluating Combinations of Requirements Factors | |
| |
| |
References | |
| |
| |
| |
Estimating Software Prototypes | |
| |
| |
Disposable Prototypes | |
| |
| |
Time box Prototypes | |
| |
| |
Evolutionary Prototypes | |
| |
| |
Default Values for Estimating Disposable Prototypes | |
| |
| |
Positive and Negative Factors That Influence Software Prototypes | |
| |
| |
References | |
| |
| |
| |
Estimating Software Specifications and Design | |
| |
| |
Positive Design Adjustment Factors | |
| |
| |
Negative Design Adjustment Factors | |
| |
| |
References | |
| |
| |
| |
Estimating Design Inspections | |
| |
| |
Inspection Literature | |
| |
| |
Inspection Process | |
| |
| |
Value of Inspections | |
| |
| |
References | |
| |
| |
| |
Estimating Programming or Coding | |
| |
| |
The Impact of Reusability on Programming | |
| |
| |
The Impact of Experience on Programming | |
| |
| |
The Impact of Bugs or Errors on Programming | |
| |
| |
The Impact of Unpaid Overtime on Programming | |
| |
| |
The Impact of Creeping Requirements on Programming | |
| |
| |
The Impact of Code Structure and Complexity on Programming | |
| |
| |
The Impact of Unplanned Interruptions on Programming | |
| |
| |
The Impact of Application Size on Programming | |
| |
| |
The Impact of Office Space and Ergonomics on Programming | |
| |
| |
The Impact of Tools on Programming | |
| |
| |
The Impact of Programming Languages on Programming | |
| |
| |
The Impact of Schedule Pressure on Programming | |
| |
| |
References | |
| |
| |
| |
Estimating Code Inspections | |
| |
| |
Code Inspection Literature | |
| |
| |
Effectiveness of Code Inspections | |
| |
| |
Considerations for Estimating Code Inspections | |
| |
| |
References | |
| |
| |
| |
Estimating Software Configuration Control and Change Management | |
| |
| |
The Literature on Change Management | |
| |
| |
Measuring Software Change | |
| |
| |
Changes in User Requirements | |
| |
| |
Changes in Specifications and Design | |
| |
| |
Changes Due to Bugs or Defect Reports | |
| |
| |
Summary and Conclusions | |
| |
| |
References | |
| |
| |
| |
Estimating Software Testing | |
| |
| |
General Forms of Software Testing | |
| |
| |
Specialized Forms of Software Testing | |
| |
| |
Forms of Testing Involving Users or Clients | |
| |
| |
Number of Testing Stages | |
| |
| |
Testing Pattern Variations by Industry and Type of Software | |
| |
| |
Testing Pattern Variations by Size of Application | |
| |
| |
Testing Stages Noted in Lawsuits Alleging Poor Quality | |
| |
| |
Using Function Points to Estimate Test-Case Volumes | |
| |
| |
Using Function Points to Estimate the Numbers of Test Personnel | |
| |
| |
Testing and Defect-Removal Efficiency Levels | |
| |
| |
Using Function Points to Estimate Testing Effort and Costs | |
| |
| |
Testing by Developers or by Professional Test Personnel | |
| |
| |
Test Case Coverage | |
| |
| |
The Factors That Affect Testing Performance | |
| |
| |
References | |
| |
| |
| |
Estimating User and Project Documentation | |
| |
| |
Estimating Tools and Software Documentation | |
| |
| |
Quantifying the Number and Sizes of Software Document Types | |
| |
| |
Software Documentation Tools on Lagging and Leading Projects | |
| |
| |
References | |
| |
| |
| |
Estimating Software Project Management | |
| |
| |
The Roles of Software Project Management | |
| |
| |
Project Managers Who Are Also Technical Contributors | |
| |
| |
Project Management for Hybrid Projects Involving Hardware and Software | |
| |
| |
Project Management and External Schedule Pressures | |
| |
| |
Project Management Tools | |
| |
| |
Project Management on Large Systems with Many Managers | |
| |
| |
Time-Splitting, or Managing Several Projects Simultaneously | |
| |
| |
The Span of Control, or Number of Staff Members per Manager | |
| |
| |
Managing Multiple Occupation Groups | |
| |
| |
The Presence or Absence of Project Offices for Large Systems | |
| |
| |
Experience Levels of Software Project Managers | |
| |
| |
Quality-Control Methods Selected by Project Managers | |
| |
| |
Project Managers and Metrics | |
| |
| |
Summary of Project Management Findings | |
| |
| |
References | |
| |
| |
| |
Maintenance and Enhancement Cost Estimating | |
| |
| |
| |
Maintenance and Enhancement Estimating | |
| |
| |
Nominal Default Values for Maintenance and Enhancement Activities | |
| |
| |
Metrics and Measurement Problems with Small Maintenance Projects | |
| |
| |
Best and Worst Practices in Software Maintenance | |
| |
| |
Software Entropy and Total Cost of Ownership | |
| |
| |
Installing New Releases and Patches from Software Vendors | |
| |
| |
Major Enhancements | |
| |
| |
Minor Enhancements | |
| |
| |
Maintenance (Defect Repairs) | |
| |
| |
Warranty Repairs | |
| |
| |
Customer Support | |
| |
| |
Economics of Error-Prone Modules | |
| |
| |
Mandatory Changes | |
| |
| |
Complexity Analysis | |
| |
| |
Code Restructuring and Refactoring | |
| |
| |
Performance Optimization | |
| |
| |
Migration Across Platforms | |
| |
| |
Conversion to New Architectures | |
| |
| |
Reverse Engineering | |
| |
| |
Re-engineering | |
| |
| |
Dead Code Removal | |
| |
| |
Dormant Application Removal | |
| |
| |
Nationalization | |
| |
| |
Mass Update Projects | |
| |
| |
Retirement or Withdrawal of Applications | |
| |
| |
Field Service | |
| |
| |
Combinations and Concurrent Maintenance Operations | |
| |
| |
References | |
| |
| |
| |
Software Cost-Estimating Research Issues | |
| |
| |
Metrics Conversion | |
| |
| |
Automatic Sizing from User Requirements | |
| |
| |
Activity-Based Costs for Agile, Object-Oriented, and Web Projects | |
| |
| |
Complexity Analysis of Software Applications | |
| |
| |
Value Analysis of Software Applications | |
| |
| |
Risk Analysis and Software Cost Estimates | |
| |
| |
Including Specialists in Software Cost Estimates | |
| |
| |
Reuse Analysis and Software Cost Estimates | |
| |
| |
Process Improvement Estimation | |
| |
| |
Methodology Analysis and Software Cost Estimating | |
| |
| |
Summary and Conclusions About Software Cost-Estimating Research | |
| |
| |
Index | |