You are previewing Estimating Software Costs.
O'Reilly logo
Estimating Software Costs

Book Description

Deliver bug-free software projects on schedule and within budget

Get a clear, complete understanding of how to estimate software costs, schedules, and quality using the real-world information contained in this comprehensive volume. Find out how to choose the correct hardware and software tools, develop an appraisal strategy, deploy tests and prototypes, and produce accurate software cost estimates. Plus, you'll get full coverage of cutting-edge estimating approaches using Java, object-oriented methods, and reusable components.

• Plan for and execute project-, phase-, and activity-level cost estimations

• Estimate regression, component, integration, and stress tests

• Compensate for inaccuracies in data collection, calculation, and analysis

• Assess software deliverables and data complexity

• Test design principles and operational characteristics using software prototyping

• Handle configuration change, research, quality control, and documentation costs

"Capers Jones' work offers a unique contribution to the understanding of the economics of software production. It provides deep insights into why our advances in computing are not matched with corresponding improvements in the software that drives it. This book is absolutely required reading for an understanding of the limitations of our technological advances." --Paul A. Strassmann, former CIO of Xerox, the Department of Defense, and NASA

Table of Contents

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