How do we estimate the cost of software ?
Software development processes are split into a number of separate activities. Cost estimation of software development project focuses on how associating estimates of effort and time with the project activities. Estimation involves answering the following questions :
How much effort is required to complete each activity?
How much calendar time is needed to complete each activity?
What is the total cost of each activity?
Project cost estimation and project scheduling are usually carried out together. The costs of development are primarily the costs of the effort involved, so the effort computation is used in both the cost and the schedule estimate. The initial cost estimates may be used to establish a budget for the project and to set a price for the software for a customer. The total cost of a software development project is the sum of following costs:
Hardware and software costs including maintenance.
Travel and training costs.
Effort costs of paying software developers.
For most projects, the dominant cost is the effort cost. Effort costs are not just the salaries of the software engineers who are involved in the project. The following overhead costs are all part of the total effort cost:
Costs of heating and lighting offices.
Costs of support staff (accountants, administrators, system managers, cleaners, technicians etc.).
Costs of networking and communications.
Costs of central facilities (library, recreational facilities, etc.).
Costs of social security and employee benefits such as pensions and health insurance.
The aim of software costing is to accurately predict the cost of developing the software. The price of software is normally the sum of development cost and profit. During the development project managers should regularly update their cost and schedule estimates. This helps with the planning process and the effective use of resources. If actual expenditure is significantly greater than the estimates, then the project manager must take some action. This may involve applying for additional resources for the project or modifying the work to be done.