Some "Rules of Thumb" for estimating:
CODE SIZE
Function Points are a useful way of comparing size independent of programming languages. Using a method
called backfiring
developed by Capers Jones, you can estimate
the number of Function Points in your software by using the ratio of Lines
Of Code (LOC) to Function Points (FP). For example,
- Average number of lines of C code equivalent to one Function Point: 128 LOC
- Average number of lines of C++ code equivalent to one Function Point: 53 LOC
- Average number of lines of Perl code equivalent to one Function Point: 27 LOC
- Average number of lines of Visual Cobol equivalent to one Function Point: 20 LOC
In our experience, a feature-rich document processing application easily reached 6,000 FPs. Payroll processing applications typically hover around 10,000 FPs. A software product that automates manufacturing and distribution functions also reached about 10,00 FPs.
Standard for counting LOC: http://sunset.usc.edu/research/CODECOUNT/index.html
DEFECTS
- Average number of potential defects per Function Point: 4
- Typical distribution of bugs by severity: Our rule of thumb is to expect 20% of the total potential bugs to be severe (either causing the software to crash or causing important features to operate inaccurately or to be inaccessible).
- Average length of time to find, communicate, diagnose, and resolve a bug found in system test (alpha or beta): 5 workdays (includes only time spent by S/W Quality Engineer, not developer).
TOTAL WORK HOURS TO DELIVER FUNCTIONALITY
- If the application is about 100 FPs, it takes about 18 hours per FP.
- If the application is about 1,000 FPs, it takes about 28 hours per FP.
- If the application is about 10,000 FPs, it takes about 44 hours per FP.
Clearly, size matters when it comes to average workhours per Function Point. Larger projects require a good deal more communication to make sure that everyone is on the same page, understands the projects goals and priorities, and their own parts in relation to the whole. The need for accelerated delivery leads to the desire for greater parallelism in work efforts and that means an even greater need for accurate and timely communication.