Software Cost Management
Project Cost Management Processes
Cost estimating: Developing an approximation or estimate of the costs of the resources needed to complete a project.
Cost budgeting: Allocating the overall cost estimate to individual work items to establish a baseline for measuring performance.
Cost control: Controlling changes to the project budget.
Software Cost Estimation
Software estimation is a complex activity and to take care of it many commercial software estimation tools are developed and marketed. As of 2005, some of these estimating tools include COCOMO II, CoStar, CostModeler, CostXpert, KnowledgePlan, PRICE S, SEER, SLIM, and SoftCost.
The major features of commercial software-estimation tools include the attributes:
- Sizing logic for specifications, source code, and test cases.
- Phase-level, activity-level, and tasklevel estimation.
- Adjustments for specific work periods, holidays, vacations, and overtime.
- Adjustments for local salaries and burden rates.
- Adjustments for various software projects such as military, systems, commercial, etc.
- Support for function point metrics, lines of code (LOC) metrics, or both.
- Support for backfiring or conversion between LOC and function points.
- Support for both new projects and maintenance and enhancement projects.
Some estimating tools also include more advanced functions such as the following:
- Quality and reliability estimation.
- Risk and value analysis.
- Return on investment.
- Sharing of data with project management tools.
- Measurement models for collecting historical data.
- Cost and time-to-complete estimates mixing historical data with projected data.
- Support for software process assessments.
- Statistical analysis of multiple projects and portfolio analysis.
- Currency conversion for dealing with overseas projects.
(Source: Capers Jones, http://www.stsc.hill.af.mil/crosstalk/2005/04/0504Jones.html)
Cost Drivers for Large Software Systems: Paperwork and Defect Removal (Capers Jones)
Large software projects devote more effort to producing paper documents and to removing bugs or defects than to producing source code.
Therefore, accurate estimation for large software projects must include the effort for producing paper documents, and the effort for finding and fixing bugs or defects, among other things.
A key aspect of software cost estimating is predicting the time and effort that will be needed for design reviews, code inspections, and all forms of testing. To estimate defect removal costs and schedules, it is necessary to know about how many defects are likely to be encountered.
The typical sequence is to estimate defect volumes for a project and then to estimate the series of reviews, inspections, and tests that the project utilizes. The defect removal efficiency of each step will be estimated also. The effort and costs for preparation, execution, and defect repairs associated with each removal activity also will be estimated.
One important aspect of estimating is dealing with the rate at which requirements creep and, hence, make projects grow larger during development.
Adjustment Factors for Software Estimates (Capers Jones)
For estimating costs for real software projects, the basic default assumptions of estimating tools must be adjusted to match the reality of the project being estimated. These adjustment factors are a critical portion of using software estimating tools. Some of the available adjustment factors include the following:
Staff experience with similar projects.
Client experience with similar projects.
Type of software to be produced.
Size of software project.
Size of deliverable items (documents, test cases, etc.).
Requirements methods used.
Review and inspection methods used.
Design methods used.
Programming languages used.
Reusable materials available.
Testing methods used.