Project managers must take cost estimates seriously if they want to complete software projects within budget constraints. After developing a good resource requirements list, project managers and their software development teams must develop several estimates of the costs for these resources. There are several different tools and techniques available for accomplishing good cost estimation.
Software development project managers should prepare several types of cost estimates for most projects. Three basic types of estimates include a rough order of magnitude or ROM, a budgetary estimate, and a definitive estimate.
A rough order of magnitude estimate provides an estimate of what a project will cost. A rough order of magnitude estimate can also be referred to as a ballpark estimate, a guesstimate, a swag, or a broad gauge. This type of estimate is done at the early stages of a software development project, or even before a project is officially started. Project managers and upper level management use this type of estimate to help make project selection decisions. The time frame for this type of estimate is usually three or more years prior to completion of the software project. A rough order of magnitude estimate's accuracy is typically twenty-five percent below or seventy-five percent above the actual final cost of the project. In some cases, software development project managers will automatically double estimates for software development projects because of a history of cost overruns on information technology based projects.
A budgetary estimate is used to allocate money into an organization's budget. Many organizations develop budgets at least two years into the future. Budgetary estimates are made one to two years prior to the software project completion. The accuracy of budgetary estimates is typically ten percent below to twenty-five percent above the actual final cost of the project.
A definitive estimate provides an accurate estimate of project costs. Definitive estimates are used for making many purchasing decisions for which accurate estimates are required and for estimating final software development project costs. As an example, if a software development project involves the purchase of 50 copies of a compiler suite from an outside provider in the next 2 months, a definitive estimate would be required to aid in evaluating supplier proposals and allocating the funds to pay the chosen supplier. Definitive estimates are made one year or less prior to the software development project completion. A definitivie estimate should be the most accurate of the three types of estimates. The accuracy of this type of estimate is normally five percent below to ten percent above the actual final cost of the project.
The number and type of cost estimates vary by application area. Estimates are usually done at various stages of a software development project and should become more accurate as time progresses.
In addition to creating cost estimates, it is also important to provide supporting details for the estimates. The supporting details include the ground rules and assumptions used in creating the estimate, a description of the software development project used as a basis for the estimate, and details on the cost estimation tools and techniques used to create the estimate. These supporting details should make it easier to prepare an updated estimate or similar estimate as necessary.
A cost management plan is a document that describes how the organization will manage cost variances on the project. For example, if a definitive cost estimate provides the basis for evaluating supplier cost proposals for all or part of a software development project, the cost management plan describes how to respond to proposals that are higher or lower than the estimates. Some organizations assume that a cost proposal within ten percent of the estimate is acceptable and only negotiate items that are more than ten percent higher or twenty percent lower than the estimated costs. The cost management plan is part of the overall software development project plan.
A large percentage of the total software development project costs are often labor costs. Many organizations estimate the number of people or hours they need by department or skill over the life cycle of a software development project.
Developing a good cost estimate is difficult. There are several tools and techniques available to assist in creating them. Four of the commonly used tools and techniques are analogous cost estimating, bottom-up estimating, parametric modeling, and using computerized tools.
Analogous estimates are sometimes referred to as top-down estimates. Analogous estimates use the actual cost of a previous, similar software development project as the basis for estimating the cost of the current software development project. This technique requires a fair amount of expert judgment and is less costly than the other methods. However, this method is also less accurate. Analogous estimates are most reliable when previous software development projects are similar in fact, not just in appearance. Groups preparing cost estimates must have the necessary expertise to determine whether certain parts of the software development project will be more or less expensive than analogous projects. If the software development project to be estimated involves a new programming language, or working with a new type of computer hardware or network, the analogous estimate technique may result in too low of an estimate.
Bottom-up estimates involve estimating individual work items or activities and summing them to get a software development project total. This is sometimes referred to as Activity Based Costing. The size of the individual work items and the experience of the estimators drives the accuracy of the estimates. If a detailed work breakdown structure is available for a software development project, the project manager could have each individual responsible for a work package develop their own cost estimate for that work package. The project manager would then add all of the cost estimates to create cost estimates for each higher level work breakdown structure item and finally for the entire software development project. Using smaller work items increases the accuracy of the cost estimate because the individuals assigned to complete the work develop the cost estimate instead of someone who is unfamiliar with the task. The drawback with bottom-up estimates is that they are usually time-intensive and therefore expensive to develop.
Parametric modeling uses software development project characteristics in a mathematical model to estimate project costs. A parametric model might provide an estimate of fifty dollars per line of software code based on the programming language the project is using, the level of expertise of the programmers, and the size and complexity of the data involved. Parametric models are most reliable when the historical information that was used to create the model is accurate, the parameters are readily quantifiable, and the model is flexible in terms of the size of the software development project.
One of the popular parametric models is the Constructive Cost Model, which is used for estimating software development costs based on parameters such as the source lines of code, or function points. Function points are technology-independent assessments of functions involved in developing a system. For example, the number of inputs and outputs, the number of files maintained and the number of updates are examples of function points. The number of function points can then be used to determine the Source Lines of Code, which is a developer written line of code that is not a blank line or a comment.
Computerized tools, such as spreadsheets and software development project management software, can make working with different cost estimates and cost estimatoration tools easier. Computerized tools, when utilized properly, can also help improve the accuracy of estimates. In addition to spreadsheets and software development project management software, m ore sophisticated tools are available for estimating software project costs. Some products include Galorath's SEER Suite of Tools, Cost Xpert's Cost Xpert Suite 3.5, and Owens and Minors Cost Track PRICE Estimating Suite.
Another common technique for cost estimating is using resource cost rates. For example, a software development project manager can estimate the number of people or hours required for a software development project or activity and multiply that quantity by a cost rate. Cost rate estimation can also be used for materials.
Cost estimating is a very important part of project cost management. There are several types of cost estimates including rough order of magnitude, budgetary, and definitive. Each type of estimate is done during different stages of the software development project life cycle, and each has a different level of accuracy. There are several tools and techniques available for developing cost estimates, including analogous estimating, bottom-up estimating, parametric modeling, and computerized tools. Although there are many tools and techniques to assist in creating software development project cost estimates, many software development project cost estimates are very inaccurate, especially those involving new technologies or software development.