Develop a good software estimate
The place to start your strategy is with a good estimate. While this paper is not intended to be a missive on the art and science of estimation, it does deserve a brief mention. Good software estimates are developed through knowledge about software projects in the past and knowledge about the current set of capabilities being estimated. Good software estimates are developed following a consistent documented process.
The software estimation process requires first that the software project be well understood with respect to the functional and non-functional requirements. Once this information is understood, the estimator should look to identify similar projects from their past or their industry. By comparing and contrasting the current project with history, the estimator can make a reasoned assessment of the ‘size’ of the project being estimated.
The next step is to establish context for the estimate. Understand what activities or work elements need to be estimated and which are not considered part of the project costs. If, for example, some activities are handled as an overhead function available across the organization, these activities may not need to be included in the project estimate. Once a size has been established and other project factors identified – such as complexities, information about the project team, schedule constraints, etc. – an effort estimate can be performed within this context. Effort can be estimated using cost estimating relationships (CERs), either ones developed internally or delivered through a commercially or publically available tool. In the absence of CERs an estimate can be performed by analyzing productivity on similar projects, adjusting for any peculiarities posed by other project factors, and applying this adjusted productivity to the size. It is best to use more than one methodology to estimate software projects so that a sanity check can be performed.
The effort estimate should be aligned with schedule constraints to determine that the resources are available in a timely fashion. If schedule changes are necessary, it is important to reevaluate effort in light of any new schedule constraints as schedule can be an important cost driver. Finally, the inputs to the estimating process should be evaluated with respect to the estimator’s certainty of their values and this analysis should feed an exercise to determine the risk of accepting a specific effort /schedule pair. Using multiple methods to estimate and understanding the risk associated with the estimate may become critical to successful negotiations