The benefits look to be very attractive: It measures what the user asks for, not how it is implemented. It is technology independent. It adds only 1% of management cost. It is repeatable with 10% accuracy. It works well with agile processes that are based on use cases.
An Example of Real Numbers
From an example presented by devdaily.com, here are some numbers of a small project involving a distributed Swing application with embedded database:
- The project was estimated 400 FPs.
- At completion, the measured FPs are 440.
- It looks like the measurement covers only the development part. The test is done by the customer.
- Two developers, used 540 hours. A 0.815 FPs/hour rate.
- The real calendar duration is 10 weeks. Or a 0.55 FPs/hour calendar rate, translating to about 88 FP/SM (FP per man-month).
- The developer charged a $250/FP rate.
Once a FP number is determined for a project, some magic formulae can further assist the planning of the work:
Project Duration = 2.5 * (Cube root of work months)
Optimum Staffing Size = Square root of work months
Project Duration = 0.75 * (Cube root of work month)
To gain accuracy with FP analysis, the customer, the type of application, the developers, the technology, etc, should stay the same. If any of them changes, the numbers should be re-aligned through experiments. A few notes about the technology change:
- The author to the above example found web application is much much faster than Swing application.
- Some statistics shows different programming languages have varying LOC/FP. This can be a guideline for choosing languages.
This table from qsm.com web site shows lines-of-code per function-point for some common languages:
As is evident from the table, choosing Java over C should have an increased productivity by a factor of two to five. Average three.
In comparison, the 4GL supports 12-20 FP/SM, or 16-27 LOC/FP. Compare to the 88 FP/SM number in the example above this seems low. Keep in mind the specific example is about analysis and development phases only.
Another industrial data table by Mayer Consulting shows statistics of more programming languages.
Since FP counts data and file elements only, it may not apply to all types of applications. As a comment to this news on theserverside.com suggests, FP is all about client-server information systems. It breaks down on complex multi-tiere systems because it does not account for the quality goals of a system: performance, maintainability, robustness, etc.