Software Development Cost Estimating Guidebook
Total Page:16
File Type:pdf, Size:1020Kb
Software Development Cost Estimating Guidebook Software Technology Support Center Cost Analysis Group July 2009 Resource manual for education and support in developing credible software development cost estimates Executive Summary The purpose of the Software Development Estimating Guidebook is to provide the cost analyst with a resource manual to use in developing credible software development cost estimates. A realistic estimate is based upon a solid understanding of the software development process and the historical data that forms a framework for the expected values. An estimating methodology that follows a proven process consistent with best practices and Department of Defense (DoD) policies further contributes to estimate validity. The information is presented at two levels. One level will help the experienced analyst immediately focus on the material necessary to develop an estimate. The second level of information is for the novice, or infrequent user, to use as educational information regarding the software development and estimating processes. The estimating process starts with a determination of the purpose of the estimate. Next, the cost (or effort) and schedule for the software development project are determined using three factors: effective size, development environment, and product complexity. The key, and most important, element in the software estimate is the effective size of the software product. Determining size can be approached from several directions depending upon the software size measure (lines of code, function points, use cases, etc.) used by the development organization. A system developed by writing lines of code requires a different estimating approach than a previously developed or off-the- shelf application. The acquisition phase also influences the analyst’s approach because of the amount and type of software development data available from the program or developers. The development environment is the next most important effort and schedule driver. The environment can be factored into five categories: (1) developer capability or efficiency, (2) personnel experience, (3) development system characteristics, (4) management characteristics, and (5) product characteristics. The last four categories are largely driven by the product requirements. These factors take into consideration the development environment itself, the capabilities and experience of the developers, the developing organization’s management style, security requirements, and so on. These factors, along with software size and complexity, combine to determine the productivity or efficiency with which a developer can “build” and test the software. Ultimately, these environment characteristics drive the cost and schedule of the software development and implementation of the system. It is uncertain who first coined the phrase, “A fool with a tool is still a fool.” Plugging numbers into a parametric model without knowing if the results are realistic fits this adage. This guidebook addresses estimate realism using historical data, industry best practices, and authoritative insight. The insight comes from experts in the fields of software development and cost estimating. This information helps the analyst conduct a “sanity check” of their estimate results. A well-understood and validated estimate offers a defensible position for program office analysts, component cost agency analysts, and independent evaluators. A reasonable estimate is useful in budgeting, milestone decision reviews, and determining the life cycle or other costs of the program. The contents of this guide, ten sections and nine appendices, are grouped into four major parts. An introduction and the basics of the software development process lead off the tutorial. The next two major parts cover the estimating process and related details. Finally, concepts and examples presented in the sections are expanded in a set of appendices. The idea behind this structure is to present principles for instruction and reference in the core sections and, then, examine details and related examples. The information herein is not intended to dictate policy or supplant guidance given in official documents. However, the authors hope that everyone within the software cost estimating community in both the public and private sectors will find it useful. The extent of information on software development and cost estimating presented within these pages is not intended to be all-inclusive. Yet, the guidebook is meant to be comprehensive and complete, providing a single-resource document for use in creating estimates. Table of Contents Executive Summary ........................................................................................................... i List of Figures ................................................................................................................... xi List of Tables ................................................................................................................... xii List of Equations ............................................................................................................. xv Acknowledgements ....................................................................................................... xvii Section 1 Introduction ...................................................................................................... 1 1.1 Development constraints ........................................................................................... 4 1.2 Major cost factors ..................................................................................................... 4 1.2.1 Effective size ...................................................................................................... 5 1.2.2 Product complexity ............................................................................................ 5 1.2.3 Development environment ................................................................................. 6 1.2.4 Product characteristics ....................................................................................... 6 1.3 Software support estimation ..................................................................................... 6 1.4 Guidebook overview ................................................................................................. 7 Section 2 Software Development Process ..................................................................... 10 2.1 The Defense Acquisition System ............................................................................ 10 2.1.1 Framework elements ........................................................................................ 10 2.1.2 User needs and technology opportunities ........................................................ 11 2.1.3 Pre-systems acquisition .................................................................................... 11 2.1.3.1 Concept refinement phase ......................................................................... 11 2.1.3.2 Milestone A ............................................................................................... 12 2.1.3.3 Technology development phase ................................................................ 12 2.1.3.4 Milestone B ............................................................................................... 12 2.1.4 Systems acquisition .......................................................................................... 12 2.1.4.1 System development & demonstration ..................................................... 12 2.1.4.2 Milestone C ............................................................................................... 12 2.1.4.3 Production & deployment ......................................................................... 13 ii 2.1.5 Sustainment ...................................................................................................... 13 2.2 Waterfall model ...................................................................................................... 13 2.2.1 Requirements analysis and specification ......................................................... 15 2.2.2 Full-Scale Development ................................................................................... 16 2.2.3 System Integration and Test ............................................................................. 17 2.3 Software development products .............................................................................. 17 2.3.1 Software Development Plan ............................................................................ 17 2.3.1.1 Project organization .................................................................................. 17 2.3.1.2 Schedule .................................................................................................... 18 2.3.1.3 Software Design Document ...................................................................... 18 2.3.1.4 Quality Plan .............................................................................................. 18 2.3.2 Software Requirements Specification .............................................................. 19 2.3.3 Interface Control Document............................................................................. 19 Section 3 Levels of Detail in Software Estimates ......................................................... 20 3.1 Estimate foundation factors ...................................................................................