Measuring Software

Today, there are several methods to measure the functionality of a software application. The three most common methods are IFPUG/Albrecht Function Points, COSMIC, and MrkII. Each of these methods has plusses and minuses. I prefer the function point metric, first innovated by Alan Albrecht and promoted by the International Function Point User Group (IFPUG). I sat on the board of IFPUG for about a decade, so I am partial to the function points. I often tell people going to an IFPUG conference is a bit like going to a religious rival under a big tent. IFPUG (pronounced IF - PUG) members can be passionate about their methodology, and they often lose site of the actual objective. I was disappointed with IFPUG when they made the decision to only embrace the IFPUG/Albrecht methodology instead of trying to become the umbrella organization of sizing software. It does not really matter which method is chosen or utilized, just pick one and be consistent. The objective is to size software based upon functionality.

A lot of the objections made to sizing software come from individuals who are not familiar with basic measurement theory. Assumptions are made that are false and invalid exceptions are looked for. An assumption that is often made is the cost per function point should be constant. That is, two different software projects of equal size are compared each should be the same cost per function point. This idea of constant unit cost does not hold for anything. As I wrote earlier, the value per carat of a diamond ring varies based upon other factors. Two houses of equal size are not going to cost the same either. As the old saying goes, “In housing, the prices are based upon three factors: location, location, and location.” The key to comparison is if we are going to compare two houses in the same neighborhood we need to know size and several other factors too. In all cases including software there are other factors to consider besides size.