A function point is a unit of measurement to express the amount
of
business functionality an information system provides to a user. The
cost (in dollars or hours) of a single unit is calculated from past
projects. Function points are the units of measure used by the
IFPUG
Functional Size Measurement Method. The
IFPUG FSM
Method is an ISO
recognized software metric to size an information
system based on the
functionality that is perceived by the user of the
information
system,
independent of the technology used to implement the
information system.
The
IFPUG FSM
Method (ISO/IEC 20926 Software Engineering - Function
Point Counting
Practices Manual) is one of five currently recognized
ISO
standards for
functionally sizing software.
Function points were defined in 1979 in A New Way of Looking at
Tools
by
Allan Albrecht
at IBM. The functional user requirements of
the
software are identified
and each one is categorized into one of five
types: outputs,
inquiries, inputs, internal files, and external
interfaces. Once the
function is identified and categorized into a type,
it is then
assessed for complexity and assigned a number of function
points. Each
of these functional user requirements maps to an
end-user
business
function, such as a data entry for an Input or a user query for
an
Inquiry. This distinction is important because it tends to make the
functions measured in function points map easily into user-oriented
requirements, but it also tends to hide internal functions (e.g.
algorithms), which also require resources to implement. Over the
years
there have been different approaches proposed to deal with this
perceived weakness, however there is no ISO recognized FSM Method
that
includes algorithmic complexity in the sizing result. The
variations
of
the Albrecht based
IFPUG
method designed to make up for this (and other
weaknesses) include:
- Early and easy function points. Adjusts for problem and data
complexity with two questions that yield a somewhat subjective
complexity measurement; simplifies measurement by eliminating the
need
to count data elements.
- Engineering function points. Elements (variable names) and
operators (e.g., arithmetic, equality/inequality, Boolean) are
counted.
This variation highlights computational function.The intent is similar
to that of the operator/operand-based Halstead Complexity Measures.
- Bang measure - Defines a function metric based on twelve
primitive (simple) counts that affect or show Bang, defined as "the
measure of true function to be delivered as perceived by the user."
Bang measure may be helpful in evaluating a software unit's value
in
terms of how much useful function it provides, although there is
little
evidence in the literature of such application. The use of Bang measure
could apply when re-engineering (either complete or piecewise) is
being
considered, as discussed in Maintenance of Operational Systems -An
Overview.
- Feature points. Adds changes to improve applicability to
systems with significant internal processing (e.g., operating systems,
communications systems). This allows accounting for functions not
readily perceivable by the user, but essential for proper
operation.