Function Point Analysis
A structured method for measuring software functionality and complexity by quantifying the business functions and data transformations from a user's perspective.
Function Point Analysis (FPA) is a software metrics methodology developed by Allan Albrecht at IBM in 1979 to quantify the size and complexity of information systems based on their functional requirements and logical design. It represents a significant shift from traditional code-based metrics towards measuring software from a user-oriented, business functionality perspective.
The core principle of FPA aligns with systems thinking by viewing software as an interconnected set of functional components that transform inputs into valuable outputs. It measures five key elements:
- External Inputs (EI)
- External Outputs (EO)
- External Inquiries (EQ)
- Internal Logical Files (ILF)
- External Interface Files (EIF)
Each element is evaluated for its complexity (Low, Average, or High) based on the number of data elements and file types referenced. This creates a structured abstraction of the system's functionality that is independent of implementation technology.
The method employs weighted scoring to account for varying degrees of complexity and effort required for different functional types. The resulting Function Point count provides a standardized measure of software size that can be used for:
FPA's significance extends beyond mere measurement, as it represents an early attempt to create a formal methods for understanding software system complexity. It connects to broader concepts in systems analysis and cybernetics by providing a systematic way to decompose and quantify information processing systems.
The methodology has evolved through various standards (IFPUG, NESMA, COSMIC) while maintaining its core principle of measuring software from a functional perspective. This evolution reflects the ongoing challenge of measurement theory intangible intellectual constructs in information systems.
Critics argue that FPA's reductionism may oversimplify complex software relationships, leading to the development of complementary metrics like use case points and story points in agile methodologies. However, its enduring influence on software measurement and estimation practices demonstrates its value in understanding and managing software complexity.
FPA's theoretical foundation connects to broader concepts in general systems theory through its emphasis on:
- System boundaries definition
- Input-output relationships
- Functional decomposition
- Complexity measurement
The method continues to evolve alongside modern software development practices, contributing to our understanding of how to measure and manage increasingly complex information systems.