How do you know how long it will take? Gut feel is how many do their estimations.
Late last year, I attended a webinar that intrigued me. I had heard of feature point analysis (FPA) before, but I didn’t know much about it. I decided to look into it more.
Software sizing is the software engineering term for estimating the size of a piece of software (whether component or entire application). These estimates then can be used in project management activities. Software sizing processes are a requirement for CMMi level 2.
Lines of Code
One of the original measurements for coding projects was Lines of Code (LOC). When procedural languages were the norm, it gave a rough estimate of effort based upon the developer’s output. With OO software, though, it is a less useful measure, and so it has fallen out of favor in recent times.
In the 1970s, IBM tapped Allan Albrecht to come up with a better tool for estimation. The result was published in 1979. He came up with a way of measuring based upon 5 areas: Internal logical files, external interface files, external inputs, external outputs and external queries. The Code Project has a 2 part posting that goes into more detail on function point analysis. Unfortunately, it appears there were supposed to be additional postings that did not occur.
One of the complaints leveled against such measurement is the amount of time required to do the measurements. However, an experienced person can document one person-year’s worth of effort in about one day. While some criticisms of function point analysis may be valid, “others are excuses for avoiding the hard work of measurement” (Total Metrics). There are far too many organizations that would avoid procedures in the estimation process if it took an hour because it would “take too long”.
To me, the biggest disadvantages are the requirements of previous measurements and specialized training. Previous measurements can be substituted with industry standards, though you will lose the impact of organizational maturity and influences. Training and experience increase the accuracy of estimates by the estimator.
You also have a catch-22 situation in that functional requirements need to be detailed enough to make an accurate estimate. No matter the method of estimating, you’ll have this problem, anyhow. Estimates are improved through the progressive elaboration of requirements.
Both of these disadvantages are quite likely to discourage, rather than encourage, a more systematic approach to estimation. In addition, FPA is not without its critics for other reasons. For one thing, best practices in software and the way software is developed is pretty far removed from the 1970s, when FPA was developed.
In addition, project management itself has changed a lot since then. The concept of FPA might have worked fine with monolithic waterfall projects. However, with the adoption of Agile by many organizations, such detailed analysis prohibits change rather than encouraging it.
Use Case Points
One alternative to pure FPA is estimation built upon the number and complexity of use cases. There are tools that can make this much easier, and anyone who understands use cases already can put together an estimate with little additional training.
There is a Windows tool you can use to estimate size with use cases called EZ Estimation at http://ezestimation.googlepages.com/. I downloaded it, and it looks like a pretty decent estimator that can be used in the requirements gathering phase.
Conclusions
A good plan today is better than a perfect plan tomorrow.
~ George S. Patton
One thing to keep in mind is that any initial estimate is going to be wrong. That is why progressive elaboration is pointed out in the PMBOK. One place I worked realized this and broke all but the smallest of projects out into an analysis phase and a construction phase. The gateway for the construction phase was how the estimate stacked up against the analysis estimate and whether or not the project was still worth it.
The beauty of Agile, of course, is that estimates are adjusted as more is learned. Estimates become more accurate, as estimates over the life of the project become more accurate towards the end.
If time allows, however, it would seem prudent to do enough analysis upfront so as to be able to hit that middle ground of estimation so that less will be left out in the end. By doing use cases and using estimating tools based upon that seems to me to be the most reasonable approach. The larger the project, the more this approach might make sense. In an Agile environment, this would be done once to get the best possible overall estimate, but user stories, backlogs and adjustments after a sprint would still be carried out on a normal basis. The key would be “appropriate detail” in use cases.
I would love to hear anyone’s experience with these. I have a feeling it depends a lot upon the type of project, the type of customer and the overall project size.
Technorati Tags:
pm,
it pm,
project management,
software development,
estimating,
software sizing,
function points,
function point analysis,
use cases,
agile,
waterfall
—
Sources:
- Buglione, Luigi. (25 July 2008). Functional Size Measurement. Retrieved 12 May 2009 from http://www.geocities.com/lbu_measure/fpa/fpa.htm.
- Cohn, Mike. (2005). Estimating With Use Case Points. Retrieved 12 May 2009 from http://www.methodsandtools.com/archive/archive.php?id=25.
- Function point. (n.d.). Retrieved 12 May 2009, from http://en.wikipedia.org/wiki/Function_points.
- s.kushal. (11 Mar 2007). Function Point and Function Point Analysis. Message posted to http://www.codeproject.com/KB/architecture/Function_Point.aspx.
- Software Composition Technologies, Inc. (June 2003). Function Point FAQ. Retrieved 12 May 2009 from http://www.royceedwards.com/floating_function_point_faq/about_function_point_analysis.htm.
- Software Sizing. (n.d.). Retrieved 12 May 2009, from http://en.wikipedia.org/wiki/Software_Size.
- Total Metrics. (June 2007). Methods for Software Sizing: How to Decide which Method to Use. Retrieved 12 May 2009 from http://www.totalmetrics.com/function-point-resources/downloads/Why-use-Function-Points.pdf.