Software Estimation and specifically agile software estimation is difficult and notoriously unreliable. And yet having reliable estimates is essential for effective planning.
Managers and executives are constantly faced with difficult decisions about software work in the face of unreliable estimates. They need to know the likely cost and duration to develop software, so that they can plan accordingly. They are expected to make dependable decisions about priority and resource allocation and yet often do so without reliable estimates for the time and needed. Decisions based on poor estimates are very costly, conversely, reliable estimates are very valuable.
Most software professionals believe that it is impossible to estimate software development work, or that it is too time consuming to even try. This is not so.
Estimates provided by developers or development teams are almost always understatements of the time and effort actually required. (why this is so, will be explained in another article). Developers often resist offering estimates at all, to avoid the estimates being treated as commitments to management.
It is incumbent on the industry to get better software (effort) estimation. Only this way can wasteful delays and overspends be avoided.
What is the best way to Estimate?
As many as 60 factors can affect the time and effort to develop software (such as complexity, work environment, executive support, technical experience, requirements volatility). There is one factor though that is most significant – size, more specifically functional size.
Estimate Software Functional Size First
Once you know the functional size, you can go on to derive related estimates for other dimensions, such as:
- resources needed
- time to develop
- tests needed to achieve suitable quality
What is Functional Size (Estimation)?
Functional Size measurement (FSM) is a methodology. It is a universal means of assessing software size. It is considered from the users perspective. It requires you to read and interpret requirements and specifications, and then calculate the number of functions points. The functional size is independent of the coding language used to develop it. FSM has been around for many years and has proven to be the most reliable measure of software size. FSM allows you to estimate or measure size before, during and after the code has been written.
Automated Estimation with ScopeMaster
ScopeMaster is the first and only tool to reliably estimate functional size directly and automatically from requirements. Dont just take our word for it though, experts and academics around the world agree: Academic validation of ScopeMaster as an automated sizing tool.
ScopeMaster was conceived as a tool to automate the clerical work of measuring functional size of software from requirements. “The reason I set out to write a tool to do this is because, as a software project manager, I found that functional size is the single most significant factors that I need to manage a project successfully.”
ScopeMaster interprets the functional intent of the user story or software requirement, and so is able to automate functional sizing, which can then be used for further estimation of software development.
Not only ScopeMaster much faster than measuring manually (about 4 times faster), it takes much of the drudgery out of doing the job. ScopeMaster “reads” the requirements, identifies language patterns that implicate functional need and then sizes them accordingly. It can estimate size at about 3 CFP per second. First pass automated analysis takes seconds and gives a good first estimate of the size. A review by an experienced analyst is necessary to a) correct mistakes in requirements and b) verify the functional size of each requirement. Once verified by the analyst, the estimate becomes an exact count/measurement.
COSMIC Functional Sizing
Over the years, several variations of functional size metric have been created. Only five have achieved ISO recognition (COSMIC, IFPUG, Mark II, NESMA and FiSMA). IFPUG, Mark II, NESMA and FiSMA are all similar in that they are derived from the original ruleset created by Allan Albrecht back in the 1980’s. The COSMIC functional size methodology evolved from earlier methodologies, specifically designed to address the shortcomings of them. The key advantages that make COSMIC more relevant to modern software are:
- COSMIC FSM is designed to handle interconnected software layers – suited to modern software architectures.
- COSMIC measurements can be made before all requirements are known – highly suited to Agile development.
- COSMIC FSM is principle (not rules) based – easy to learn
Function Points and Story Points
Story points are prevalent across all Agile projects, they are a team-specific proxy measure for effort. By this, I mean that each team has a common understanding of the magnitude of a story point, it is typically in the order of a few hours of effort, but there are no strict rules. I saw one organisation that had 6 teams each of which had a different understanding of the size of a story point. Story points are not a universal currency, they are not a standard, they cannot reliably be used to compare teams or projects. Story points are a useful internal indicator of anticipated effort. Function points however are universal, standard and highly applicable to Agile development as much as any other development methodology. I advocate, continue with story points at the team level, but use function points for everything else. For more on the merits of CFP vs Story Points
Size is the cornerstone of Software Estimation
Once you know the functional size in COSMIC function points (CFP), you can quickly establish other metrics that are directly related to size, such as cost, effort and schedule. Once the size in CFP is established you can then use industry conversion values that map function points to effort, cost and schedule. Rather than use industry conversions, you can use your own historical project data to establish your own benchmarks.
What can you estimates based on size
- Schedule (number of months needed to deliver)
- Cost (total cost to design, develop, test and deliver)
- Effort / Resources (effort needed to design, develop, test and deliver)
- Quality (defect potentials for each constituent of the delivery)
How fast can you derive estimates
Manually, a competent analyst can count (measure) function points at a rate of about 100-500 FP per day (approx $100k – $500k of software). This depends on the quality and clarity of the requirements and specifications. The speed also depend on the experience and ability of the analyst.
Take a few past projects, insert their requirements into ScopeMaster to get the functional size. Given that you (should) know the cost, effort and schedule of those projects. You can then use that data to predict the next project, simple, easy and fast.
Size is not the only factor that affects estimation accuracy, but it is the most significant one.
For those who consider estimation to be harmful, unimportant or just too difficult, check out Steve Mconnell’s excellent article on the subject of why estimation is an important and valuable skill that project managers need.
Advice on the web:
- Glen Alleman’s excellent compendium of Software Estimating Resources
- Steve Mconnell’s blog on Software Estimation
- Software Estimation, Demystifying the black art