Estimating Software Costs: Bringing Realism to Estimating / Edition 2

Estimating Software Costs: Bringing Realism to Estimating / Edition 2

by Capers Jones
ISBN-10:
0071483004
ISBN-13:
9780071483001
Pub. Date:
04/19/2007
Publisher:
McGraw Hill LLC
ISBN-10:
0071483004
ISBN-13:
9780071483001
Pub. Date:
04/19/2007
Publisher:
McGraw Hill LLC
Estimating Software Costs: Bringing Realism to Estimating / Edition 2

Estimating Software Costs: Bringing Realism to Estimating / Edition 2

by Capers Jones
$96.0
Current price is , Original price is $96.0. You
$96.00 
  • SHIP THIS ITEM
    Qualifies for Free Shipping
  • PICK UP IN STORE
    Check Availability at Nearby Stores
  • SHIP THIS ITEM

    Temporarily Out of Stock Online

    Please check back later for updated availability.


Overview

Publisher's Note: Products purchased from Third Party sellers are not guaranteed by the publisher for quality, authenticity, or access to any online entitlements included with the product.


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


Product Details

ISBN-13: 9780071483001
Publisher: McGraw Hill LLC
Publication date: 04/19/2007
Edition description: REV
Pages: 644
Product dimensions: 6.20(w) x 9.10(h) x 1.57(d)

About the Author

Capers Jones is a leading authority in the world of software estimating. He was the founder and chairman of Software Productivity Research, where he currently serves as chief scientist emeritus.

Read an Excerpt

Chapter 12: Automated Estimates from Minimal Data

Among software project managers, having full information about a software project to create an initial cost is a rarity. Estimates are demanded by both clients and senior management before the requirements are known, before the team is assembled, and before the tools and methods are selected. The majority of early cost estimates have to be produced in a hurry with less than complete information about the factors that will influence the outcome of the project.

This chapter discusses some of the estimating features that commercial estimating-tool vendors have developed to allow useful estimates from imperfect and partial information. These early estimates have the advantage of being easy and very quick to create. Often, from the time an estimating tool is turned on until the estimate is finished is a matter of less than five minutes. Of course, no one can expect high precision from estimates that are based only on a few known factors.

Whether software cost estimation is performed manually or via MT., means, it is still a complex technical activity that requires dealing with a large number of rules and with many kinds of adjustment factors. However, with estimating tools many of the factors are assigned default values or can be inherited from similar projects.

The commercial software-estimating tools are usually calibrated so that average performance is the assumed value for all settings and This means that when you are creating an initial cost estimate and don't yet know all of the information needed for high Precision you can simply accept the average settings for such topics assignment scopes, available workhours, or team experience levels and create preliminary estimates using these default settings until more accurate information is known later.

To give a framework for discussing the sequence of activities that must be completed when constructing an initial software cost estimate for a project, three stages can highlight the basic sequence of software-estimating activities:

    Stage 1: Recording administrative and project information

    Stage 2: Preliminary sizing of key deliverables

    Stage 3: Producing a preliminary cost estimate

As a general sequence describing the way early software estimation works, these three stages apply both to software cost estimation tools and to manual software cost estimation methods.

As we move through the stages of preparing software cost estimates, note that the same factors that influence the outcome of the estimate are also key factors for software measurement purposes. This explains why so many of the software cost estimating vendors are also measurement experts and have benchmarking services: You cannot build an effective software cost estimating tool without substantial historical data from which to derive the algorithms.

For any kind of software cost estimate, some kind of input information has to be provided by the users, sizing of various deliverables must occur, adjustments to basic estimates for experience and complexity and other factors must be made, and all of the pieces of the estimate must be totaled at the end to produce the final estimate.

We'll begin our tour of automated estimating by examining the minimum kinds of information needed to do preliminary, early estimates. Then we will move to the more extensive kinds of information needed to calibrate and adjust the estimate for optimal precision.

Let us now consider the three software cost estimating stages in sequence, starting with the minimum amount of information that has to be provided in order to allow at least a rough estimate using commercial software-estimating tools.

Stage 1: Recording Administrative and Project Information

Since software cost estimates will have a life expectancy that can run from weeks up to several years, the first kind of information that needs to be recorded is administrative information, such as the name of the project for which the estimate is being prepared, and some information about the participants in the estimating process so that they can be contacted if needed.

Most items of administrative information are straightforward and readily available and are known even before the requirements begin. A few optional topics are exceptions, however, such as recording a standard industry classification or identifying the starting date of the project in question.

Following are samples of some of the questions used by the author and other vendors of commercial software cost estimating tools to collect basic administrative information when performing software cost estimates.

This administrative information is optional in terms of getting some kind of estimate out of a commercial software-estimating tool. However, to keep one project's estimate from being confused with another, at least the names of the project, the project manager, and the person preparing the estimate should be recorded. Also, this kind of administrative information will allow an estimate to be picked up after a period Of weeks or months without confusion as to which project it deals with.

The security level is optional for many estimates, but is an important item for military and classified software projects. Security may also have relevance for software estimates in competitive situations, such as bids, or for software estimates being prepared in the course of litigation, such as tax cases or breach of contract cases.

The project name is included for convenience in telling one estimate from another, since any large company may have dozens of ongoing software projects in any given month.

The estimate number is useful in distinguishing early estimates from later estimates. For example, an estimate numbered 1 for a particular project is not likely to be as firm as an estimate numbered 6 for the same project.

For estimates that are being prepared for litigation, it is important to record the name of the estimating tool. Also, some large enterprises have as many as half a dozen different software cost estimating tools available, so it is useful to record which tool is used for which estimate. Of course, most of the commercial software cost estimating tools identify themselves on their printed outputs and also on screen, but some in-house estimation tools may not do this.

The project description is optional and, of course, does not affect the outcome of a project at all. Its purpose is to facilitate separating one project from another if a company does a lot of similar kinds of work. For example, as the Eurocurrency conversion work expands throughout the world, project descriptions might be used for such purposes as "Euro conversion for project A," "Euro conversion for project B," and so on.

The standard industry classification (SIC) code is optional, but can be very useful. The SIC coding method was developed by the U.S. Department of Commerce to assist in performing statistical studies of trends within industries. Many large-scale economic studies utilize SIC codes, including software benchmarking studies.

There are two-digit and four-digit versions of the SIC code, with the four-digit form giving greater granularity. The full set of SIC codes and their definitions are available from the Government Printing Office in Washington, D.C., or even as advertisements from such companies as Dun and Bradstreet.

The purpose of recording the optional SIC codes is to allow benchmark comparisons of your projects with similar projects within the same industry. Although use of the SIC code is purely optional, if you want to compare your projects against a knowledge base of projects from within your own industry, then use of the SIC code is recommended. . . .

Table of Contents


Foreword     xv
Preface     xix
Acknowledgments     xxv
Introduction to Software Cost Estimation
Introduction     3
How Software Cost-Estimating Tools Work     4
Cautions About Accidental Omissions from Estimates     15
Software Cost Estimating and Other Development Activities     17
References     20
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
References     32
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
References     49
Software Cost-Estimating Tools and Project Success and Failure Rates     53
Probabilities of Software Project Success or Failure     55
References     59
Sources of Error in Software Cost Estimation     61
Judging the Accuracy of Software Cost Estimates     65
Classes of Software Estimation Errors     68
References     86
Preliminary Estimation Methods
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
Summary and Conclusions     127
References     128
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
Extreme Programming (XP)     152
International Outsourcing     155
Object-Oriented (OO) Development     159
Capability Maturity Model (CMM)     162
Software Methods with Only Partial Rules of Thumb     167
Cleanroom Development     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
Scrum     176
Six-sigma for Software     177
Spiral Software Development     179
Unified Modeling Language (UML)     180
Use Cases for Software Requirements     181
Web-Based Applications     183
Summary and Conclusions     185
References     185
Automated Estimates from Minimal Data     189
Recording Administrative and Project Information     190
Preliminary Sizing of Key Deliverables     203
Producing a Preliminary Cost Estimate     219
Summary and Conclusions     224
References     226
Sizing Software Deliverables
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
Source Code Sizing     269
Sizing Object-Oriented Software Projects     275
Sizing Text-Based Paper Documents     277
Sizing Graphics and Illustrations     283
Sizing Bugs or Defects     286
Sizing Test Cases     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
Summary and Conclusions     301
References     302
Cost-Estimating Adjustment Factors
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
References     324
Activity Pattern Adjustment Factors     325
Twenty Five Common Activities for Software Projects     326
References     332
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
References     362
Activity-Based Software Cost Estimating
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
References     393
Estimating Software Prototypes     395
Disposable Prototypes     398
Time box Prototypes     398
Evolutionary Prototypes     400
Default Values for Estimating Disposable Prototypes     402
Positive and Negative Factors That Influence Software Prototypes     404
References     407
Estimating Software Specifications and Design     409
Positive Design Adjustment Factors     414
Negative Design Adjustment Factors     415
References     418
Estimating Design Inspections     421
Inspection Literature     421
Inspection Process     423
Value of Inspections     426
References     432
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
References     459
Estimating Code Inspections     461
Code Inspection Literature     461
Effectiveness of Code Inspections     462
Considerations for Estimating Code Inspections     466
References     470
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
Summary and Conclusions     482
References     483
Estimating Software Testing     485
General Forms of Software Testing     491
Specialized Forms of Software Testing     495
Forms of Testing Involving Users or Clients     498
Number of Testing Stages     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
Test Case Coverage     514
The Factors That Affect Testing Performance     514
References     515
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
References      529
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
Project Management Tools     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
References     551
Maintenance and Enhancement Cost Estimating
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
Major Enhancements     573
Minor Enhancements     574
Maintenance (Defect Repairs)     576
Warranty Repairs     581
Customer Support     581
Economics of Error-Prone Modules     582
Mandatory Changes     584
Complexity Analysis     585
Code Restructuring and Refactoring     586
Performance Optimization     588
Migration Across Platforms     588
Conversion to New Architectures     589
Reverse Engineering     589
Re-engineering     590
Dead Code Removal     590
Dormant Application Removal     591
Nationalization     591
Mass Update Projects     592
Retirement or Withdrawal of Applications     593
Field Service     594
Combinations and Concurrent Maintenance Operations     594
References     599
Software Cost-Estimating Research Issues     603
Metrics Conversion     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
From the B&N Reads Blog

Customer Reviews