GUI Elements
As an alternative to counting function points directly, you might count GUI elements instead.
Count the number of GUI elements according to the categories in the table below. Afterwards convert the GUI elements to an approximate function-point count by transferring appropriate entries to a look-up table.
Substituting GUI Elements for Function Points
| GUI Element | Function-Point Equivalent |
|---|---|
| Simple Client Window | 1 Low Complexity External Input for add, change, and delete (if present), plus 1 Low Complexity External Query |
| Average Client Window | 1 Average Complexity External Input for add, change, and delete (if present), plus 1 Average Complexity External Query |
| Complex Client Window | 1 High Complexity External Input for add, change, and delete (if present), plus 1 High Complexity External Query |
| Average Report | 1 Average Complexity External Output |
| Complex Report | 1 High Complexity External Output |
| Any File | 1 Low Complexity Internal Logical File |
| Simple Interface | 1 Low Complexity External Input if coming in; 1 Low Complexity External Output if going out |
| Average Interface | 1 Average Complexity External Input if coming in; 1 Average Complexity External Output if going out |
| Complex Interface | 1 High Complexity External Input if coming in; 1 High Complexity External Output if going out |
| Message or Dialog Box | Not counted; are counted as part of the screen they connect to |
The lookup table could look as follows (adapted from McConnel, Software Estimation - Demystifying the Black Art):
Program Characteristic | Low Complexity | Medium Complexity | High Complexity |
|---|---|---|---|
External Inputs | __ × 3 | __ × 4 | __ × 6 |
External Outputs | __ × 4 | __ × 5 | __ × 7 |
External Queries | __ × 3 | __× 4 | __ × 6 |
Internal Logical Files | __ × 4 | __ × 10 | __ × 15 |
External Interface Files | __ × 5 | __ × 7 | __ × 10 |
If you use this approach, recognize how much uncertainty is feeding into your estimate. Some uncertainty likely exists in your original counts of the number of GUI elements or your estimates of them. You introduce additional uncertainty when you convert from GUI elements to function points. And you introduce still more uncertainty when you convert from function points to lines of code.