Function points are one of the most widely used measures of software size. The basis of function points is that the "functionality " of the system that is; what the system performs, is the measure of the system size. In function points, the system functionally is calculated in terms of the number of function it implements, the number of inputs, the number of output etc.
Parameter that can be obtained after requirements analysis and that are independent of the specification (and implementation) language.
The original formulation for computing the function points uses the count of five different parameters, namely, external input types, and external output types, logical internal file type, external interface file types and external inquiry type. According to the function point approach these five parameters capture the entire functionality of a system.
However, two elements of the same type may differ in their complexity and hence should not contribute the same amount of the "functionality " of the system. To account for complexity, each parameter in its type is classified as simple, average, or complex. Each unique input (data or control) type that is given as input to application from outside is considered of external input type and is counted. The source of external input can be the user, or some other application, files.
An external input type is considered simple if it has a few data elements and affects only a few internal fields of the application. It is considered complex if it has many data items and may have internal logical files that are needed for processing them. The complexity is average if it is has many data items and many internal logical files are needed for processing them. The complexity is average if it is in between.
Similarly, each unique output that leaves the system boundary is counted as external output type. Reports or messages to the users or other applications are counted as external input types. The complexity criteria is similar to that of the external input type. For a report, if it contains a few columns it is considered simple, if it has multiple columns it is considered average, and if it contains complex structure of data and reference many files or production, it is considered complex.
Each application maintains information internally for performing its functions. Each logical group of data or control information that is generated, used and maintained by the application is counted as a logical internal file type. A logical internal file is simple if it contains a few record type, complex if is has many type, and average if it is in between.
Once the counts for all five different types are known for all three different complexity classes, the raw or unadjusted function point can be computed as a weighted sum as follows: -
i=5 j=3
UFP = ? ? w_{ij }C_{ij}
Where i reflects the row and j reflects the column in Table, wij is the entry in the ith row and jth column of the table (i.e. it represents the contribution of an element of the type i and complexity j); and Cij is the count of the number of elements of type i that have been classified as having the complexity corresponding to column j.
Once the UFP is obtained, it is adjusted for the environment complexity. For this 14 different characteristics of the system are given. These are data communications, distributed processing, performance objective, operation configuration load, transaction rate, on line data entry, end user efficiency, on-line update, complex processing logic, re-usability, installation ease, operational ease, multiple sites, and desire to facilitate change. The degree of influence of each of these factors is taken to be from 0 to 5,
Function type |
Simple |
Average |
Complex |
External input |
3 |
4 |
6 |
External output |
4 |
5 |
7 |
Logical internal file |
7 |
10 |
15 |
External interface file |
5 |
7 |
10 |
External inquiry |
3 |
4 |
6 |
representing the six different levels : not present (0), insignificant influence (1), modern influence 92), average influence (3), significant influence (4), and strong influence (5). The 14 degrees of influence for the system are then summed, giving total N (N ranges from 0 to 14*5 = 70). This N is used to obtain a complexity adjustment factor (CAF) as follows:
CAF = 0.65 + 0.01 N.
With this equation, the value of CAF ranges between 0.65 and 1.35. The delivered function points (DFP) are simply computed by multiplying the UFP by CAF. That is,
Delivered Function Points = CAF * Unadjusted Function Points.