Functional Point Analysis (FPA) for Accurate Software Project Estimation

Learn about Functional Point Analysis (FPA), a method for estimating software project size based on functionality rather than lines of code. This tutorial explains FPA's principles, calculation methods (Unadjusted Function Points, Complexity Adjustment Factor), and its advantages in providing consistent size estimations across different technologies.



Functional Point Analysis (FPA) for Software Estimation

Introduction to Functional Point Analysis

Functional Point Analysis (FPA), initially developed by Allan J. Albrecht at IBM in 1979 and refined by the IFPUG (International Function Point Users Group), is a method for estimating the size of a software project based on its functionality. Unlike methods that count lines of code, FPA focuses on the features the software provides to the user.

Objectives of FPA

The primary goal of FPA is to provide a consistent measure of software size, regardless of the programming language or development tools used. This allows for better project planning, estimation, and tracking across various projects and technologies.

Counting Function Points

FPA counts and categorizes functions within an application into five types:

Type Description Examples
External Inputs (EI) Data entered into the system. Input screens, tables
External Outputs (EO) Data sent out from the system. Output screens, reports
External Inquiries (EQ) Online queries to the system. Prompts, interrupts
Internal Logical Files (ILF) Data stored within the system. Databases, directories
External Interface Files (EIF) Data exchanged with external systems. Shared databases, shared routines

Each function is assigned a weight based on its complexity (low, average, high). These weights are then used to calculate the Unadjusted Function Point (UFP).

Parameter Low Average High
EI 7 10 15
EO 5 7 10
EQ 3 4 6
ILF 4 5 7
EIF 3 4 6

Calculating Function Points

The UFP is calculated by summing the weighted counts of each function type. This UFP is then adjusted using a Complexity Adjustment Factor (CAF) based on 14 General System Characteristics (GSCs) to get the final Function Point (FP) count:

FP = UFP * VAF

Where:

  • UFP is the unadjusted function point count.
  • VAF (Value Adjustment Factor) is calculated from the sum of the General System Characteristics ratings (0-5 each) using the formula: VAF = 0.65 + (TDI * 0.01), where TDI is the Total Degree of Influence (sum of the 14 GSC ratings).

Derived Metrics and FP vs. LOC

Once the FP is determined, other metrics can be derived, such as errors per FP, cost per FP, and productivity (FP per person-month). FPA is also used to estimate lines of code (LOC) and vice versa (a process called "backfiring"). However, FP and LOC are different:

Aspect FP LOC
Basis Specification-based Implementation-based
Language Dependency Language-independent Language-dependent
Orientation User-oriented Design-oriented