OU blog

Personal Blogs

Sebastian Tyrrell

Function points

Visible to anyone in the world
Edited by Sebastian Tyrrell, Saturday, 6 Mar 2010, 15:01

I received a question relating to the calculation and use of function points the other day.

The first point to make is that these are in no way central to this course but for those that are interested there is a quick primer in Appendix C. Function point analysis (see http://www.ifpug.org) is one way of measuring the size and complexity of a software based product before it is built, and can also be useful in tracking changes and maintenance costs.

The analysis is based on the complexity of the inputs, outputs and data storage requirements - all things that will be familiar to you from your data flow analyses. It is a formal technique and appears to get good results when used properly - it can be used not only for system development but also for maintenance (an organisation might monitor the maintenance cost per function point and replace their systems if it goes above a critical level, for example).

The fp's are measured on the basis of the system as seen from the user perspective, which ties in well with our course.

Some common problems:

  • fp analysis not planned and too hurried → guesstimates being made that are really not much better than guessing the numbers of lines of code.
  • unqualified analysts do the job → non-repeatable and non-verifiable result.
  • different perspectives in different organisations → difficult or impossible to compare between companies and often projects

See http://www.softwaremetrics.com/fpafund.htm for an overview, there is also an online tutorial at http://devdaily.com/FunctionPoints/.

p. 279 of MRP discusses the the delivery rate (suppose we start with an average delivery rate of 16 function points per person month). Although MRP describes this as an "average" they don't source it and they don't state which "average" they mean.

The appendix does introduce a sourced "rule of thumb" from Capers Jones (see MRP p. 508)

  • effort (person-months) = (function points / 150) x function points0.4.

There is more detail on this derivation at Software Sizing during Requirements' Analysis, with some discussion of  differences between domains and languages. Although these might provide first-cut rules of thumb it is fair to say that most organisations starting to use fp's would need to derive them over time and the first couple of projects: development methodology, process and implementation language as well as the application domain will all affect the efforts needed. Another factor is the inevitable (though hopefully small) difference in the fp counts coming from different organisations.

Generally though the figures I have seen over the years tend to be in the range 10 - 100 function points per person month, and more clustered around the lower end of that range and, as the Capers Jones equation neatly demonstrates, the effort is in any case not a linear function of the fp count.

I have come across a variant called "use case points", somewhat more related to the concepts of the course but clearly less well-known. See http://www.ibm.com/developerworks/rational/library/2870.html

 

Permalink
Share post