Software Development Estimation

 

Estimation in software development is approximating how much effort is required to accomplish a task. Estimation plays a significant role in software development to establish cost assessments and delivery schedules, and a software project's success relies on estimations that reflect accurate effort prediction. Accurate effort estimations provide stakeholders with forecasting data for planning, budgeting, and project scheduling. 

Multiple factors contribute to inaccurate effort estimations. Factors that adversely affect software development effort estimation are the uncertainty of the effort required to complete the task, software size, estimator experience, inconsistent and incomplete data, dependency on the environment, and frequent changes in requirements. Additionally, estimation models perform differently in different environments and development project types. Considering multiple factors, estimating effort in software development can thus be difficult, and underestimation is problematic.

Multiple factors affect software development estimation. Influences that affect estimation accuracy are software size, the team’s experience, the team's skill, the number of nonfunctional requirements, the distribution of the team geographically, and the level of communication the customer provides. Factors that affect accurate estimation are requirements uncertainty, software size, the estimator's experience, incomplete data, and changes in requirements. The accuracy of estimates improves through the use of local context, historical estimation error intervals, the avoidance of misleading estimation information, the use of a checklist, the conducting of a group-based approach, and the avoidance of early estimation based on incomplete information.

Providing accurate effort estimates in software development can be problematic. Estimating effort in software development projects at the beginning of the lifecycle is more challenging due to the “cone of uncertainty”. Delaying the estimation until the requirement specification phase can reduce inaccuracy, thus providing a more realistic and accurate estimation. However, estimations many times are requested before the elaboration of requirements. As a project progresses, uncertainty decreases as knowledge increases regarding the product. Estimations are predictions, and there is uncertainty as each project is unique, and there are no two projects with the exact requirements.

Software effort estimation is more challenging in agile projects due to changes in requirements and uncertainty experienced in the development process. Two factors are associated with estimates that positively influenced project success. The first factor is that senior management ensures that a software estimate relies on facts rather than guessing or opinion. The second is that senior management recognizes that estimates are critical to organizational success. Accurate estimates increase the probability of project success; yet estimate accuracy remains an elusive target.