Estimating Project Size Early in the Life Cycle
Estimating software projects can often be challenging, especially early in the life cycle when things are just getting figured out. The following is a summary of information we presented at the ISMA 14 conference held last week.
There are various methods for estimating. There are judgement methods where individuals use their knowledge and experience to estimate the effort for a project. These methods are dependent on the expertise of those involved and typically result in multiple estimates from multiple people in order to develop a consensus. Another method is decomposition/re-composition which is basically looking at all of the activities required for a project and estimating the effort for each activity. The total estimate is the sum of the effort for each activity. Both of the methods can be effective, but they typically rely on people’s experience and don’t always take into account the uncertainty that exists early in the life cycle.
Parametric estimation uses actual historical and/or benchmark data to estimate projects. Using actual data along with characteristics about the projects providing the data enables the estimator to account for possible variances based on uncertainty of the project. Parametric estimation requires a ‘size’ of the development based on the requirements and then applies a delivery rate based on history to estimate the effort. The ‘size’ part is often where estimators struggle; however, Function Points (FPs) can give the estimator what they are looking for. FPs were originally developed as a communication tool to help define and explain requirements. They can still be used in this fashion and can be developed early in the life cycle. If the correct historical data is collected they can also be used to determine typical scope changes for projects which can narrow the degree of uncertainty for projects.
Some tips for FP counting early in the life cycle follow:
- Count as part of Requirements Gathering
- Use previous FP counts as a guide
- Use ranges and/or average for functional complexity
- Make and document appropriate assumptions (maintenance means add, change, delete)
- Monitor and update as the life cycle proceeds
The key to parametric estimation is having data available that has been analysed and calibrated. Understanding the data and knowing how to use the data is essential in developing and communicating estimates.
Although parametric estimates are strongly recommended as a primary estimation technique it is always good to use multiple methods to confirm/validate the estimates. When it comes to software estimation more data is always better.
- Estimating is primarily a communications process
- Understanding and communicating assumptions is key
- Estimating improves with experience
- Estimates are only as accurate as the requirements
- Historical data greatly improves estimating accuracy
- Calibration is required for great accuracy