Software Development Cost Estimation

Software development cost models and estimation techniques are used for a number of purposes.
These include:

  1. Budgeting: the primary but not the only important use. Accuracy of the overall estimate is the most desired capability.
  2. Tradeoff and risk analysis: an important additional capability is to illuminate the cost and schedule sensitivities of software project decisions (scoping, staffing, tools, reuse, etc.).
  3. Project planning and control: an important additional capability is to provide cost and schedule breakdowns by component, stage and activity.
  4. Software improvement investment analysis: an important additional capability is to estimate the costs as well as the benefits of such strategies as tools, reuse, and process maturity.

Just like in any other field, the field of software engineering cost models has had its own pitfalls. The fast changing nature of software development has made it very difficult to develop parametric models that yield high accuracy for software development in all domains. Software development costs continue to increase and practitioners continually express their concerns over their inability to accurately predict the costs involved. One of the most important objectives of the software engineering community has been the development of useful models that constructively explain the development life-cycle and accurately predict the cost of developing a software product. To that end, many software estimation models have evolved in the last two decades based on the pioneering efforts of the above mentioned researchers. The most commonly used techniques for these models include classical multiple regression
approaches. However, these classical model-building techniques are not necessarily the best when used on software engineering data.