Practical Software Project Estimation: A Toolkit for Estimating Software Development Effort & Duration International Software Benchmarking Standards Group Compiled and edited by Peter R. Hill Mc Grauu Hill New York Chicago San Francisco Lisbon London Madrid Mexico City Milan New Delhi San Juan Seoul Singapore Sydney Toronto
Contents Foreword Acknowledgments Introduction xv xvii xix 1 Project Estimation: Background, Concepts, and Approaches 1 Types of Project Requirements 1 Functional Size 3 Software Estimation Approaches 4 Other Techniques 7 Estimate Ranges 7 Timing of Estimates 7 Producing Use of Function Point Sizing (Functional Size a Detailed Estimate 8 Measurement) in Effort Estimation 10 Summary 11 2 Factors That Influence Productivity 13 Project Attributes That Influence Project Delivery Rate 14 Are Some Languages Better Than Others? 14 What Is the Impact of Team Size? 17 What Other Project Attributes Are. Interesting? 18 Does the Platform Make a Difference? 18 Development Type 19 Language Type 19 Application Type 19 Application Architecture 20 Other Project-Specific Characteristics Known to Influence PDR 20 Summary 23 3 Software Estimates: How Accurate Are They? 25 What Does "Accurate" Mean? 26 The Project Details 26 A General Picture 26 Estimation Techniques 28 Individual Estimates 29
Effort Estimates 29 Effort Estimation Techniques 30 Delivery Date (Project Duration) 31 Duration Estimation Techniques 32 Cost Estimates 33 Summary 34 4 Sizing Software and Size-Approximation Accuracy 37 Sizing Accuracy Levels 38 Level 6: Size Approximation 39 Level 5: Rough Size Measure 39 Level 4: Default Complexity Measure 39 Level 3: Detailed Measure 40 Level 2: Detailed Linked Measure 40 Level 1: Detailed Linked and Labelled Measure 40 Classifying Size Approximation Techniques 43 Size Approximation Accuracy 43 Summary 45 5 Some Practical Software Size Approximation Techniques 47 Direct Size Approximation 48 Derived Size Approximation 48 Early Approximation of Functional Size Using ISBSG Data 49 KISS Quick Software Size Estimation Technique 51 Moving from Basic KISS Quick Approach to Other Accuracy Levels 54 Early & Quick Software Size Estimation Technique 55 Early & Quick for COSMIC Function Point Size 56 Some Other Examples of Extrapolative Approaches to Size Approximation 58 Using Functional Size to Estimate Project Effort and Duration 58 The Need for Caution 59 Summary 59 6 The Problem of Missing Functionality 61 Identifying Missing Functionality 61 Managing Changes and Additions to Functionality 63 Scope Management 63 Summary 63
7 Estimating Using Equations 65 ISBSG Regression Equation Tables 65 Using the ISBSG Regression Equations 66 Creating Graphs from the Equations 67 Example Effort Estimate Using the Equations 68 Summary 69 8 Estimating Using Comparison 71 Using the Comparison Technique 71 Summary 74 9 Estimating Using Analogy 75 Background: Reasoning by Analogy 76 Estimating by Analogy 76 Advantages of Estimating by Analogy 77 The Drawbacks of Estimating by Analogy 79 Summary 79 10 Estimating Using Work Breakdown Structure 81 Work Breakdown Structure: Introduction 81 Using Process Models for Micro-Estimation 83 Summary 85 11 How Do I Estimate a Project Comprising Varying Components? 87 Subsets Implemented Utilizing Different Technologies 87 Code and Reference Tables 87 Subsets Characterized by Technical or Other Complexities 88 Reused Code 88 Summary 88 12 Using Project History Databases 89 Use of an Organization's Own Experience Data 89 Use of the ISBSG Data 90 The ISBSG Repository 90 Guidelines for Use of the ISBSG Data 91 Presentation of Statistics 93 Using Several Estimation Approaches 93 Summary 93 13 Project Estimation Using the ISBSG Repository 95 Case Study: A Student and Staff Records Management System (SSRM) 95
Overview 95 Functional Size Measurement 96 Project Work Effort and Duration Estimates 97 Example 1: Estimating Using Regression Equations 98 Using Regression Equations to Generate Estimates for SSRM 98 Regression Equations: Functional Size 98 Regression Equations: Functional Size and Maximum Team Size 100 Discussion 102 Example 2: Estimating Using Comparison 102 The Estimating by Comparison Technique 103 Using Estimating by Comparison to Generate Estimates for SSRM 104 Discussion 106 Example 3: Estimating Using Analogy 107 The Estimating by Analogy Technique 108 Using Estimating by Analogy to Generate Estimates for SSRM 109 Discussion Summary 112 14 Estimating for Agile Software Development 113 Estimating an Agile Project 114 Story Points 115 The Story Point Scale 115 Calibrating the Story Point Scale Using Past Projects 116 Ill Development Team Velocity 117 Allocating Story Points to Stories 118 Estimating Total Project Schedule and Cost at Project Initiation 121 Allocating Stories to Individual Project Iterations 122 Reviewing the Process at Project Completion 123 Benefits of Agile Software Estimation Using Story Points 123 Comparing Story Points and Function Points 124 Summary 125
' 15 A Guide to Estimating Project Cost Using ISBSG Data 127 Hourly Charge-Out Rate 128 Internal Project: Building Software for Your Own Organization 128 External Project: Building Software for an External Organization 128 Refining Hourly Charge-Out Rate for Project Team Structure 129 Indexing the Charge-Out Rate for Inflation and Currency Movements 130 Additional Cost Considerations 130 Costing Activities Outside Project Development Tasks 130 Costing Effort Contributed by Personnel Not Included in the PDR 132 Summary 132 Additional Steps to Calculate Non-PDR-Related Project Costs 133 16 Creating a Software Project Estimation Framework Using the ISBSG Repository 135 Using the ISBSG PDR Tables to Create Tables for Your Estimating Framework 136 Step 1. Identify the Development Platforms 137 Step 2. Extract PDR Distributions Based on Development Languages 137 Step 3. Adjust the Extracted PDR Distributions According to Team Size Step 4. Benchmarking Your Projects' Step 138 PDR 139 5. Construct the Estimation Framework 140 Estimates Are Targets, Not Predictions 141 Calculating a Benchmark Estimate for a Planned Project 141 Step 1. Adjust PDR for Team Size 142 Step 2. Adjust PDR for Project Size 142 Step 3. Adjust PDR for Development Language 143 Step 4. Calculate Effort Estimate and Consider the Range of Probable Values 143 Summary 144
17 Functional Size Measurement Methods in Use Today 145 How Many FSM Methods Are There? 145 Which FSM Method Should I Choose? 148 How Hard Is It to Measure Functional Size? 148 What Sort of Accuracy Can I Expect from an FSM Measurement? 149 The Value of FSM as a Size Measurement 149 Summary 149 18 A Brief Tutorial on Functional Size Measurement (FSM) 151 ISO/IEC Definitions 151 What Is Functional Size? 153 Analogies to Illustrate Functional Sizing 153 The Key to Functional Size Measurement Is to 'Think Logical" 153 Counting in FSM: An Example Using IFPUG Function Points 155 IFPUG Function Point Components 155 What Is Involved in IFPUG Function Point Counting? 157 The Logical Boundary 159 Where Does Functional Size Fit in with the ISBSG and Software Project Estimating? 160 Summary 161 19 An IFPUG Function Point Case Study 163 New Development Case Study 163 Sample Set of User Reqtiirements 164 Functional User Requirements 164 Functional Size Measurement Using - ISO/IEC 20926: 2009 IFPUG 4.3 165 Determining the Functional Size 165 Enhancement Case Study 167 Sample Set of User Requirements 167 Functional User Requirements 167 Types of Functional Size 169 Summary 170 20 The COSMIC Functional Size Measurement Method 171 Overview of the COSMIC Functional Size Measurement Method 172 Applicability of the Method 172
The Principles for Measuring the COSMIC Functional Size of a Piece of Software 172 The Process for Measuring the COSMIC Functional Size of a Piece of Software 174 COSMIC Method Documentation 175 Summary 176 21 A COSMIC Function Point Case Study 177 Analysis of the Size of the New Software to Be Developed 177 Analysis of the Size of the Enhancement to the Software 179 Overall Size of the Software After the Enhancement 180 Summary 180 22 A FiSMA Function Point Case Study 181 Size Measurement of the New Software to Be Developed 183 Size Measurement of the Enhancement to the Software 185 Overall Size of the Software After the Enhancement 187 Summary 187 A What Is in the ISBSG Repository? 189 Data Availability 189 Data Quality 190 What the ISBSG Data Can Be Used For 190 Considerations 190 ISBSG Project Data Positioning 191 Comparing Apples with Apples 191 Selecting a Suitable Data Subset 191 What You Can Find in the ISBSG Repository 194 Project Origin 196 Project Context 198 Type of Project 200 Type of Product 202 Development Environment 209 Methods and Tools 213 Summary 215 Additional Documentation 215 B Project Delivery Rates by Category 217 Presentation of Statistics 218 Explanation of Tables 218 Use of the Statistics 219
Project Delivery Rates 219 Project Delivery Rate by Use of CASE Tools 232 Project Delivery Rate by Use of Methodology 233 Project Delivery Rate by Relationship Between Customer, Developers, Users 233 Project Delivery Rate by Project Size 234 Project Delivery Rate by Maximum Team Size 237 The Impact of Maximum Team Size and Project Size on Project Delivery Rate. 239 C Estimation Equations 243 What Are These Estimates Based On? 243 Which Equation(s) Should You Use? 244 Do These Equations Apply to My Project? 244 What Do the Statistics Mean? 245 D E Project Sample Demographics Used in Chapter 3 253 The Benefits of Submitting Projects to the ISBSG Repository 257 How to Submit a Project 257 A Description of the Project Benchmark Report 258 F ISBSG Member Organizations 261 Glossary 265 Terms 265 Metrics 277 References 279 Index 283