An Accurate and Believable Estimate When generating a level-of-effort estimate for a software product, there are two outcomes that everyone wants to achieve: They want the estimate to be accurate and they want it to be believable. Interestingly enough, most everyone recognizes that any estimate, no matter how well it was developed, is not likely to have pin-point accuracy. In fact, it is commonly accepted that most estimates are a best guess and that somewhere down the lifecycle line, a new estimate will need to be developed. Conceding the fact that there is agreement about the issue of accuracy, is there at least an opportunity to strive for an estimate that is believable? The difference between being accurate and being believable is perhaps nuanced, but if the customer (whomever requested the estimate) believes in the current estimate (that it is as close to accurate as possible, based on current information), understanding that it may change, aren’t we in a better position to manage the project than if they had simply dismissed the estimate outright? Creating a Believable Estimate The question then becomes how best to produce a believable estimate. The proven approach is to create an estimate whereby both the developers and the customer provide input and are involved in the process. The result is that all parties are confident that the basis for the estimate is reasonable, logical and well thought out. The first step in this process is for the developer to demonstrate to the customer that they fully understand their requirements. And furthermore, the developers have to make it clear that they have taken all of the customer’s requirements into consideration when generating the estimate. The goal is to avoid the customer questioning the resulting estimate because they believe that the developers “didn’t understand what was requested.” To demonstrate knowledge and understanding of the customer’s requirements, and at the same time provide the estimator with a valuable piece of input to their estimating model, the next step is to perform a functional analysis and sizing of the customer’s requirements. The industry best practice for this process is a technique called Function Point Analysis. Function Point Analysis Function Point Analysis is an ISO-accepted software sizing practice based on the features and functions that make up the customer’s requirements. The resulting function point size can be shared with the customer in terms that they understand and that is in their own language. How does this technique lead to a more believable estimate? It demonstrates an understanding of what the customer wants, using that information as the basis of the estimate. So, it stands to reason that the customer is going to be more comfortable in accepting the estimate. The Function Point Analysis methodology identifies the key functional elements of a customer’s requirements. Those key elements include transaction-based functions (defined as inputs, outputs and inquiries) and data functions (defined as logical groups of maintained data and all interfaces). That’s it – well, almost. Following well-defined guidelines, the Function Point Analyst will seek to identify all unique occurrences of these five key elements. Each one of these elements is identified as a unit of functionality that relates specifically to a stated requirement and is readily understood by the customer. Once identified, the Function Point Analyst then assesses the complexity of each unique element based on a set of standards and guidelines. For example, not all inputs are treated equally, and so each unique input is evaluated for its level of complexity and assigned a function point value based on that. After assigning function point values to each unique element, a total sizing is computed. This size represents the functional value (function points) for the software as stated by the customer in the requirements document. The House Analogy Sizing software using function points is often described as being analogous to using a square-foot measure to communicate the size of a house being built. When developing a cost estimate for building a new house, the builder takes onto consideration the number of square feet. However, there are many other factors that are also considered when building a new house. For example, the condition of the land that the house is being built on, the number of rooms and windows the homeowner wants, the type of materials being used, etc. The same is true of developing software; knowing the size of the software is important, but there are other variables and risks to be considered. To be a realistic and believable estimate, we certainly want to demonstrate the fact that we understand the features and functions (size) of the deliverable, but we also want to indicate that we have considered all the known variables and risks that can potentially impact the delivery and the cost of the software. Those variables can be many, and often include technical considerations, environmental impacts and issues related to available resources. Having the ability to identify and assess these variables helps to make a more believable estimate. Going back to the house analogy, a builder considers many of the risks that may be encountered while building a home to the proposed specifications. When developing a projected cost for the new homeowner, the builder identifies all of the risks that are known at that time that would impact the cost and the completion date. These risks are communicated to the new homeowner and serve to foster a greater understanding of the believability of the estimate and the chance of alternative outcomes. So too with developing software; there are always a number of unknowns. Historically, estimators have quietly “padded” their estimates, knowing that they are likely to encounter some problems and delays along the way. The hope is that they have overstated the estimate enough and can end up coming in under budget and deliver sooner than planned. However, it seldom works out that way, and instead, cost overruns and delays are incurred, much to the chagrin of the customer (and in turn, the developer). Alternatively, it makes more sense to avoid these guesstimates and be transparent with the customer, indicating that there are known risks and that those risks have been taken into account as much as possible in the current estimate. By making the customer aware of potential pitfalls, it not only informs them of what may occur, but it also serves to set expectations as to what may happen if all does not go as planned. There are some excellent, commercially available estimating tools that provide a selection of risk indicators and predictors for a given software project. These tools allow the estimator to generate different what-if scenarios depending on the impact of the various risks that have been identified. This creates a mindset with the customer that helps them to understand that risks are a fact of life, but that they can be managed and accounted for. The key to generating manageable estimates is to make them believable. Demonstrating a knowledge of functional requirements and sizing those requirements is an industry best practice. Identifying the risks and their impact on the project and then communicating that information to the customer makes for a believable estimate. www.softwarevalue.com | +1.610.644.2856 | [email protected] Measure. Optimize. Deliver.
© Copyright 2025 Paperzz