Function points measure the size of a project, like square feet measures the size of a house.

Function points measure the size of a project, like square feet measures the size of a house.

What are IFPUG Function Points? IFPUG Function Points (there are several non-IFPUG variants) are a measure of the functionality delivered by the project or application.  The measure is generated by counting features and functions of the project or application based on a set of rules. In this case, the rules for counting IFPUG Function Points are documented in the IFPUG Counting Practices Manual. Based on the published rules, the measure of IFPUG Function Points is a consistent and repeatable proxy for size which can be used in estimating and measurement. An analogy for the function point size of a project is the number of square feet of a house when building or renovating. Knowing the number of square feet provides one view of the house, but not the other attributes, such as number of bedrooms.

IFPUG Function Points (or any of the variety of function points) do not measure all aspects of software.  Software projects and applications are combination of functional requirements (what the software does), non-functional (how it does it) and technical requirements (with what). Using our house analogy:

  • Functional: House, 4 bedrooms, 5,000 Square Feet
  • Non-functional: Cedar siding, Red
  • Technical:  Cooper pipes, Slate hall tiles

IFPUG Function Points count the each incidence of the five types of components that most if not all applications have.  In projects, the unique components that are added, changed or deleted (by any means) are accounted for. In an application count, all unique incidences of the five components are counted.   In a project the counting process (in a nutshell) begins by identifying the component, ensuring it is unique and then determining the size.  The Counting Practice Manual provides a set of rules to make the counting process as painless as possible. The five components are:

Data Functions

  1.  Internal Groupings of data called Internal Logical Files (ILF)
  2.  External Groupings of data or External Interface Files (EIF)

Transaction Functions

  1.   External Inputs (EI)
  2.   External Outputs (EO)
  3.   External Inquires (EQ)

The IFPUG Counting Practices Manual includes rules for recognizing and determining the sizing each of the component.

IFPUG Function Points are a representation of the size of software delivered in an application or project. The size is based on a set of rules that can consistently applied by trained counters. Studies have shown that functional size is a good predictor of effort, cost, quality and duration (see any of Capers Jones’ books). As a result, they have been incorporated into many commercial estimation tools.  Agile proponents have some issues with functional metrics, for instance, the perceived overhead of counting functional metrics and the evolutionary nature of Agile projects. Quick and Early Function Points, FP LiteSM and other abstractions of the functional metrics are mechanisms to overcome the overhead criticism and which facilitate quick, repeatable counting, which can be used in evolutionary projects or with lean techniques like Kanban that have granular stories.