# Software Engineering: Function Point Analysis: Counting FPs

Intro | Counting | Data FPs | Transactional FPs | Estimation

## Counting function points

The process of counting function points can be broken down into the following steps.

1. Choose the type of function count appropriate to the project (new development, modifying existing program, or measuring an existing program). We will only be concerned with new development.
2. Define the scope of the application.
3. Count all data function points, adjusted by their complexity.
   Typically data function points are usually counted before transactional function points. If you are storing your data in a database, tables (except those used only for implementing many-to-many relationships and lookup tables) will either be an ILF or an EIF.
   - Internal Logical Files (ILF). Tables that are updated by the application.
   - External Interface Files (EIF). Tables that are only referenced by the application.
   The number of function points is computed by a matrix based on the numbers of ILFs, EIFs and their complexities, as measured by DETs (Data Element Types), which correspond closely to fields in a table, and RETs (Record Element Types).
   See Data Function Points for more detailed instructions on counting data function points.
4. Count all transactional functions, adjusted by their complexity.
   - External Inputs (EI). External input is an "elementary process that processes data or control information that enters from outside the boundary of the application." The data may alter an ILF and/or alter the behavior of the system. It must leave the system in a consistent state. Control information must have a business meaning (eg, not navigation actions, not login or startup operations, not refreshing, not clicking to move data, ...).
   - External Outputs (EO) are outputs that calculate a value or update an ILF.
   - External Inquiries (EQ) simply present ILF data without any calculation (except reformatting etc).
   See Transactional Function Points for more details on computing transactional function points.
5. Sum the above to get the unadjusted function points (UFP) count.

   Computing Function Points
   | By Complexity | Total
   Source | Low | Avg | High |
   --- | --- | --- | --- | ---
   ILF - Internal Logic File | ____ x 7 = ____ | ____ x 10 = ____ | ____ x 15 = ____ |
   EIF - External Interface Files | ____ x 5 = ____ | ____ x 7 = ____ | ____ x 10 = ____ |
   EI - External Inputs | ____ x 3 = ____ | ____ x 4 = ____ | ____ x 6 = ____ |
   EO - External Outputs | ____ x 4 = ____ | ____ x 5 = ____ | ____ x 7 = ____ |
   EQ - External Queries | ____ x 3 = ____ | ____ x 4 = ____ | ____ x 6 = ____ |

6. Determine the adjustment factor, which is based on 14 project characteristics. Work on a ISO standard for FPA, renamed function size measurement, excludes this adjustment factor, so we'll ignore it.
7. Calculate the adjusted function point count, which is simply the unadjusted function point count for our purposes.

Now you have the total number of function points. These can be used for many purposes, but one of the main uses is to estimate schedule and manpower requirements.

## Going from function points to schedule/effort estimates

You can use standard formulas and tables to transform function points into schedule and effort estimates. Effort Estimation gives a method of transforming function points into schedule or effort.