- Origination of Function Points
- The Function Point Counting Process
- Using Function Points: A Simple Example
- The International Function Point Users Group (IFPUG)
- The Future of Function Points
The Function Point Counting Process
When identifying function points, you must identify logical user data groups maintained within the application. External inputs add, populate, revise, update, or change the data stored. The user data groups are processed separately within an application to permit the extraction of data and the generation of external outputs or external inquiries. These data groups are classified as internal logical files (ILFs). An ILF is counted once per application. Their complexities are based upon their record element types and fields.
Data is often extracted from ILFs in other applications. If data is maintained within a separate application, if none of the data is maintained within the application being counted, and if the user data group is read or referenced to assist in processing external inputs, external outputs, or external inquiries, then it is classified as an external interface file (EIF). Just as with ILFs, EIF complexities are based upon the record element types and fields utilized.
Data received from outside the application boundary that provides control functions or maintains (adds, changes, or deletes data in) an ILF are identified as external inputs (EIs). Data with unique processing requirements is counted as separate external inputs. ILFs and EIFs referenced and fields are counted to determine the complexity of each external input.
Data generated within the application that exits the boundary is counted as an external output (EO) or an external inquiry (EQ). External inquiries include data that is sent to other applications, printed information, screen displays provided to users, and other data2
presentations that include retrievals from any combination of ILFs or EIFs, as long as these data outputs do not contain derived or calculated information, provide control functions, or maintain (add, change, or delete data in) an ILF. If the data output from an application contains derived or calculated information, provides control functions, or maintains an ILF, it is counted as an external output. ILFs and EIFs referenced and fields are counted to determine the complexity of external outputs (EOs) and external inquiries (EQs).
Low, average, and high ILFs, EIFs, EIs, EOs, and EQs are totaled using IFPUG matrices to determine the total unadjusted function points. Values for each category are determined using the standard weights shown in Table 1.
Table 1
Function Point Counting Weights
Type Low Average High Total
EI __ * 3 + __* 4 + __* 6 = __
EO __ * 4 + __* 5 + __* 7 = __
EQ __ * 3 + __* 4 + __ * 6 = __
ILF __ * 7 + __* 10 + __ * 15 = __
EIF __ * 5 + __* 7 + __* 10 = __
The next step is to determine general system characteristics (GSCs) and calculate the value adjustment factor (VAF). Fourteen GSCs are rated from 0 to 5, based on their degree of influence on the application. The 14 characteristics are listed here:
- Data communication
- Distributed data processing
- Performance
- Heavily used configuration
- Transaction rate
- Online data entry
- End-user efficiency
- Online update
- Complex processing
- Reusability
- Installation ease
- Operational ease
- Multiple sites
- Facilitate3
The value adjustment factor for an application is computed by totaling the degrees of influence from the 14 GSCs and adding that total (a value between 0 and 70) to a value of 0.65. The application's adjusted function point count is then determined by multiplying the value adjustment factor by the total unadjusted function points. Readers should refer to the IFPUG Counting Practices Manual for more complete definitions and examples of characteristics to enable easy assignment of scores. This formula was derived through regression analysis to provide the best relationship between effort and function point counts.