Software Development Cost Estimating Handbook Volume I
Total Page:16
File Type:pdf, Size:1020Kb
Naval Center for Cost Analysis Air Force Cost Analysis Agency Software Development Cost Estimating Handbook Volume I Developed by the Software Technology Support Center September 2008 Resource manual for education and support in developing credible software development cost estimates Executive Summary The purpose of the Software Development Estimating Handbook 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 handbook 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 volume, 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 parts cover the estimating process and related details. Concepts and examples presented in the sections are covered in greater detail in the 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. This handbook was written for use by the Naval Center for Cost Analysis (NCCA) and the Air Force Cost Analysis Agency (AFCAA). 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 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 handbook is meant to be comprehensive and complete, providing a single-resource document for use in creating estimates. Table of Contents Executive Summary ............................................................................................................. i Acknowledgements ............................................................................................................ xi List of Figures ................................................................................................................... xii List of Tables ................................................................................................................... xiii List of Equations .............................................................................................................. xvi Section 1 Introduction ...................................................................................................... 1-1 1.1 Development constraints ............................................................................................ 1-4 1.2 Major cost factors ...................................................................................................... 1-4 1.2.1 Effective size ....................................................................................................... 1-5 1.2.2 Product complexity ............................................................................................. 1-5 1.2.3 Development environment .................................................................................. 1-6 1.2.4 Product characteristics ........................................................................................ 1-6 1.3 Software support estimation ...................................................................................... 1-6 1.4 Handbook overview ................................................................................................... 1-7 Section 2 Software Development Process ....................................................................... 2-1 2.1 The Defense Acquisition System ............................................................................... 2-1 2.1.1 Framework Elements .......................................................................................... 2-1 2.1.2 User Needs and Technology Opportunities ........................................................ 2-2 2.1.3 Pre-Systems Acquisition ..................................................................................... 2-2 2.1.3.1 Concept Refinement Phase .......................................................................... 2-2 2.1.3.2 Milestone A .................................................................................................. 2-3 2.1.3.3 Technology Development Phase.................................................................. 2-3 2.1.3.4 Milestone B .................................................................................................. 2-3 2.1.4 Systems Acquisition............................................................................................ 2-3 2.1.4.1 System Development & Demonstration ...................................................... 2-3 2.1.4.2 Milestone C .................................................................................................. 2-3 2.1.4.3 Production & Deployment ........................................................................... 2-4 2.1.5 Sustainment ......................................................................................................... 2-4 2.2 Waterfall Model ......................................................................................................... 2-4 2.2.1 Requirements Analysis and Specification .......................................................... 2-6 2.2.2 Full-Scale Development...................................................................................... 2-6 ii 2.2.3 System Integration and Test................................................................................ 2-7 2.3 Software Development Products................................................................................ 2-7 2.3.1 Software Development Plan ............................................................................... 2-8 2.3.1.1 Project Organization .................................................................................... 2-8 2.3.1.2 Schedule ....................................................................................................... 2-8 2.3.1.3 Software Design Document ......................................................................... 2-8 2.3.1.4 Quality Plan ................................................................................................. 2-9 2.3.2 Software Requirements Specification ................................................................. 2-9 2.3.3 Interface Control Document ..............................................................................