Estimating Software Costs: Bringing Realism to Estimating / Edition 2 available in Hardcover, eBook
![Estimating Software Costs: Bringing Realism to Estimating / Edition 2](http://img.images-bn.com/static/redesign/srcs/images/grey-box.png?v11.9.4)
Estimating Software Costs: Bringing Realism to Estimating / Edition 2
- 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](http://img.images-bn.com/static/redesign/srcs/images/grey-box.png?v11.9.4)
Estimating Software Costs: Bringing Realism to Estimating / Edition 2
Buy New
$96.00Buy Used
$42.39-
-
SHIP THIS ITEM
Temporarily Out of Stock Online
Please check back later for updated availability.
-
Overview
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
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