Functional Point Analysis

What Is Functional Point Analysis?

Functional point analysis (FPA) is a technique for measuring the functional size of software by counting the external inputs, outputs, queries, internal files, and external interfaces it delivers to users, independent of the programming language, technology, or implementation approach. Allan Albrecht of IBM introduced the method in 1979 as a way to quantify software size in terms of business functionality rather than lines of code, which vary widely across languages and development styles. The International Function Point Users Group (IFPUG) standardized the method, which is now codified as ISO/IEC 20926 and recognized as one of five approved ISO standards for functional size measurement.

The method produces a count called function points (FP), a dimensionless number representing the amount of functionality a system delivers. This measure is used to estimate development effort, track productivity across projects and organizations, benchmark vendor performance, and support cost-benefit decisions during software procurement. Because function points are technology-neutral, a project estimated in function points can be compared against historical data regardless of whether the earlier work was done in COBOL, Java, or Python.

Counting Methodology

An FPA count begins by identifying the boundary of the application being measured, which separates the software under consideration from its users and external systems. Within that boundary, a practitioner identifies and classifies five transaction and data function types: external inputs (EI), external outputs (EO), external inquiries (EQ), internal logical files (ILF), and external interface files (EIF). Each identified function is rated as simple, average, or complex based on the number of data elements and file types it references, and each rating carries a corresponding numeric weight. Summing the weighted counts produces the unadjusted function point total. A value adjustment factor based on fourteen general system characteristics, covering items like distributed processing, performance requirements, and reusability, can optionally scale the unadjusted count to an adjusted total, though many practitioners now report only the unadjusted figure. The IFPUG standards and counting guidelines describe the complete procedure.

Relationship to Software Engineering and Cost Estimation

Functional point analysis is deeply embedded in software engineering practice as a foundation for early-lifecycle estimation. Project managers use historical productivity data, expressed as hours per function point or function points per staff-month, to convert a functional size estimate into an effort forecast well before design is complete. This makes FPA particularly valuable during requirements analysis, when lines-of-code estimates are premature and unreliable. Parametric cost models such as COCOMO II can accept function points as an input alongside other project drivers, and many software organizations maintain internal productivity databases keyed on function points to calibrate forecasts for their own teams. An IEEE evaluation of simplified function point methods examines attempts to reduce counting effort while preserving the metric's predictive accuracy. FPA also provides a baseline for cost-benefit analysis: given a function point count for a proposed enhancement, a project sponsor can compare estimated delivery cost against expected business value.

Functional Size Measurement Methods

FPA is the oldest and most widely used method in the broader family of functional size measurement (FSM) techniques. COSMIC (ISO/IEC 19761), NESMA (ISO/IEC 24570), MkII FPA (ISO/IEC 20968), and FiSMA (ISO/IEC 29881) each define alternative counting procedures suited to different software domains, including real-time and embedded systems where IFPUG FPA has known limitations. The COSMIC sizing organization provides a historical overview of the family of ISO-recognized FSM methods and their development paths.

Applications

Functional point analysis has applications in a range of fields, including:

  • Software project estimation and schedule planning
  • Vendor contract negotiation and outsourcing benchmarking
  • Software maintenance cost tracking and productivity measurement
  • Portfolio analysis and prioritization of IT investments
  • Regulatory compliance reporting in industries with software-intensive systems
Loading…