Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Predicting the “size” of a software system becomes progressively easier as the project advances. The first time an attempt is made, at the front end of the life cycle, little is known except for high-level customer requirements. This is equivalent to requesting a custom-built home, beginning with only an idea of the layout—the square footage may be estimated by architect and client, but it may well change as requirements are clarified and blueprints evolve. Near the end of a software development project, there are fewer tasks remaining and stable specifications, allowing for far more accurate estimation. Of course, we can't wait until near the end to provide estimates—we are required to estimate cost, calendar time, and effort seemingly way too early. At no other time are the estimates so important than at the beginning of a project, yet we are so unsure of them. Go/no-go decisions are made, contracts are won and lost, and jobs appear and fade away based on these estimates. As unconfident and uncomfortable as we may be, we must provide these estimates.
There are two major steps in determining how long a project will take and how much it will cost. The first is to estimate its size; the second is to use size along with other environmental factors to estimate effort and its associated cost. Sizing is the prediction of coding needed to fulfill requirements. Estimation is the prediction of resources needed to complete a project of predicted size, taking into account factors of calendar time, staff, and budget constraints. We will discuss the second step in Chapter 11, “Estimating Duration and Cost.” Here, in Chapter 10, we are concerned with the first step, which is estimating the size of the software project. Size may be measured in various units, according to what is appropriate for the project and for your organization.