Estimation (or estimating) is the process of finding an estimate, or approximation, which is a value that is usable for some purpose even if input data may be incomplete, uncertain, or unstable.
Software development effort estimation is the process of predicting the most realistic amount of effort (expressed in terms of person-hours or money) required to develop or maintain software based on incomplete, uncertain and noisy input.
In essence, estimation is the essential crux of software development, which is required for following purposes –
- Evaluation of the total cost of the project
- Decide on number of engineers (developers, testers and/or business analysts) required on the project
- Decide tentative release date of the product
- Decide tentative release date to deliver a feature (or set of features) into existing product
Estimates can be broadly categorized like below and other variants also exists –
- Estimate based on Work breakdown structure
- Predictions and projections
- Estimate based on past history of the project and team strength