There are several approaches and sets of rules for counting Function Points (e.g. IFPUG, COSMIC, Mk II, etc.). They are all designed to use that most powerful of processors, the human brain. Designing a computer program to automate function point counting has proved impossible to date (and maybe forever) for two main reasons: the current rules assume the pattern recognition and variable input capabilities of the human brain. Put more simply, the rules assume that the counter can receive information (in a wide variety of formats including subject matter interviews) and pick out relevant architectural information.
However, software has evolved for other uses -mainly static code analysis - which uses algorithms to understand the structure of code to evaluate its quality from a code design and implementation perspective. Clearly, such code analyzers can do a good job of measuring software size in the form of lines of code but as we all know that is not particularly useful. Some vendors are now modifying these algorithms to develop software size metrics based on the underlying architecture and using the sort of rules that an IFPUG function point counter would use. It is not realistic to expect these tools to exactly replicate IFPUG function point counts in all circumstances because the IFPUG rules (embodied in the IFPUG Counting Practices Manual) are simply not written in a way that allows a program to encapsulate them all (and the input format variability problem remains). However, these tools are now exhibiting significant signs of being a disruptive technology in the Christensen sense in that while they may not be great at doing everything that a human function point counter can do, they may be better (cheaper) at doing some things e.g. a monthly or quarterly recount of an application portfolio. Here at DCG, I am committing us to work with vendors of these new tools to see if we can develop them together to improve the overall software sizing services that we can deliver to users.
For a longer explanation of where we are, please see the presentation that I made to the 2009 UKSMA Conference in London. One of the ideas that I float in the presentation is the possibility of creating a different, new software size metric that can be automated - a sort of Automated Function Point. A good client of ours, Thierry Fraudet, thought about this and wondered how it might work for COTS or SaaS software? True to form, Thierry answered his own question by suggesting that users could require vendors of COTS or Saas to provide function point counts with their software. What a great idea? And why limit it to automated function points? Why not start asking COTS and SaaS vendors for IFPUG function point counts now? As Thierry says, "What an interesting way to compare license fees!" If you are interested in automated function points, I would love to hear from you.