One of the great things about Function Point Analysis (FPA) is that it can be a terrific validator of the work you’re doing as a business analyst. For example, here’s one of the guidelines I came up with after I learned about FPA:
If you can’t count the Function Points when you’re about to start developing a software project, you’re about to enter a world of hurt.
A world of hurt
In short, if you can’t count the Function Points when you’re telling the developers to start warming up their keyboards, it means that there’s something wrong with your specification — it’s somehow incomplete or inaccurate. You’re missing database tables, data entry screens, reports ... something.
When this happens, you’re not very far from seeing some disagreements between your Project Customers and Project Developers, with the typical conversations starting something like, “But you said ...,” or “You didn’t tell me about ...”
FPA as a validator
This is one of the things I like most about FPA. Not only can it give you information about the size of your software projects, it can also act as a validator of what you’re about to do. On a complex project it’s very easy to miss functionality or have mistakes in your designs, and having an FPA specialist walk through each of the tables, fields, and screens in your application — using a structured FPA process — is a great validator of the completeness of your design.
Several times after I became a Certified Function Point Specialist (CFPS), I had the opportunity to look at designs other people had put together, and typically in just a few minutes I could tell them, “You’re missing X, Y, and Z,” at which point we’d have a discussion about X, Y, and Z.
Summary
As I’ve mentioned before, the cost of adding FPA has been measured as less than 1% of the overall cost of software development, but more importantly, I’ll state that the use of FPA will make you a much better software development organization. Rather than having the feeling that something is missing, you can use FPA techniques to figure out what’s missing, and if you really want to be a professional developer, that’s an important skill.
(For more information, here’s a link to my collection of Function Point Analysis tutorials and presentations.)