Cost estimation is a set of techniques and procedures used to arrive at a cost estimate. These techniques are utilised by the process of cost estimation to compute the output from the given set of inputs. The inputs to the process of cost estimation are also called as cost drivers and the outputs are expressed in the form of efforts, duration, loading, or modified requirements to name a few.

There is an abundance of techniques and models which help in cost estimation in the software industry. Here's a brief outline of the various techniques with a mention of their specialities and limitations.

**Algorithmic (parametric) model:**This model takes the aid of mathematical equations to calculate cost estimation. The mathematics involved in this model is based on historical cost data and theory. The cost drivers or the inputs to this model comprise of function points and SLOC (source line of code). Examples of function points include user interactions, external inputs and outputs, as well as the files utilised by the system. The cost is estimated as a function of the software product, project and process attributes such as the size of the code. Example utilising this model is the COCMO.

Cost estimate = a x (size^b) x M

Where,

a=organisation depending constant

b=factor for effort spent in projects

m=factor reflecting the people/project/process attribute

**Expert Judgement:**This method of cost estimation makes use of the tenure based project experience gained by the estimator. All the domain based knowledge achieved by working in similar projects is brought to the fore in arriving at an estimated figure. Examples using this concept are Delphi & WBS (Work breakdown structure). This technique has been found to be very useful where there is a lack of quantifiable data. However the approach suffers from difficulty in documenting the factors incorporated by the estimator.**Estimation by analogy :**Similar in content to the expert judgement approach, this method merely uses information and experience gained by a previously executed project. Using the tool of extrapolation, this data is compared with the information derived from the proposed project with similar area of expertise, to conclusively arrive at a rough cost estimate.**Top down approach:**Also called as the Macro model, the top down approach initiates with coming down to every major detail related to the software product or project. Thereafter, the product/project is divided into components belonging to lower levels. Following this, distinct labour categories are created relevant for each segregated task. The product of the costs incurred and the number of tasks involved is calculated to get to the final figure for the total labour costs incurred in the project. The approach requires a thorough knowledge of the project pricing mechanism for computation of accurate estimates. The approach has appeal limited to small scale installations.**Bottom up approach:**In this method, the project managers add on to their costs upwards initiating from the lowermost levels. The process is time consuming as every possible expense be it labour related or equipment based is added up starting from the foundation levels. This approach is well suited to large multi faceted projects.