Project estimations is at best a dark art; added to this is the fact that they are often required at the start of a project when your understanding is at it’s lowest. However it is a necessary evil for the purposes of budgeting, planning and proposals. There are a number of techniques that take a shot at providing credible estimates. I’ve used the following two with some success.
Point based relative estimation
This works well where the requirements are at very high-level at the time. Here point based relative size estimates are provided for each requirement. Then a sample set is taken and further elaborated. Once this sample is elaborated then each requirement is broken into tasks to provide effort estimates in man days or hours. These effort estimates can then be used to extrapolate the relative effort required for the rest of the requirements.
Three Point Estimation
This works well where the requirements are relatively well defined and we have an architecture/solution in mind. The technique is based on providing best case, worst case and likely case estimates for each requirement. We normally briefly discuss the solution for each requirement breaking it down into high-level tasks around the candidate architectural layers. The totals for the 3 types of estimates are gathered and to work out the Standard Deviation
((worst case - best case)/6) and the Weighted Average Estimate
(best case + (4*likely case) + worst case)/6. We can then work out the level of confidence as follows:
- 50% confidence on the
- 70% confidence on
Weighted Average + Standard Deviation
- 95% confidence on
Weighted Average + 2 * Standard Deviation
- 99.5% confidence on
Weighted Average + 3 * Standard Deviation
Note: The functional and non-functional requirements are not the only factors in project estimates. You must also consider, in addition, other aspects such as Resourcing, Project Dependencies, Project Setup, Testing, Support, Training, Handover etc.