# The Simple Function Point method

The Simple Function Point (SFP) method is a lightweight Functional Measurement Method.
The Simple Function Point method was designed by Roberto Meli in 2010 to be compliant with the ISO14143-1 standard and compatible with the International Function Points User Group (IFPUG) Function Point Analysis (FPA) method. The original method (SiFP) was presented for the first time in a public conference in Rome (SMEF2011)
The method was subsequently described in a manual produced by the Simple Function Point Association: the Simple Function Point Functional Size Measurement Method Reference Manual, available under the Creatives Commons Attribution-NoDerivatives 4.0 International Public License.

## Adoption by IFPUG

In 2019, the Simple Function Points Method was acquired by the IFPUG, to provide its user community with a simplified Function Point counting method, to make functional size measurement easier yet reliable in the early stages of software projects. The short name became SFP. The SPM (Simple Function Point Practices Manual) was published by IFPUG in late 2021.

## Basic concept

When the SFP method was proposed, the most widely used software functional size measurement method was IFPUG FPA. However, IFPUG FPA had (and still has) a few shortcomings:
* It is not easy to apply. It requires certified personnel, and the productivity of measurement is relatively low (between 400 and 600 Function Points per day, according to Capers Jones, between 200 and 300 Function Points per day according to experts from Total Metrics).
* The measurement is partly subjective, since some of its measurement rules have to be suitably interpreted by the person who performs the measurement.
* The diffusion of the method in the software development community is quite limited.
To overcome at least some of these problems, the SFP method was defined to provide the following characteristics:
* Easy to apply;
* Less subject to interpretation, being based on quite straightforward definitions;
* Easy to learn: specifically, people familiar with IFPUG FPA could learn SFP very quickly with very little effort;
* Compatible with the IFPUG FPA; specifically $Size_{[UFP]}=Size_{[SiFP]}$, that is, a measure of size expressed in UFP should be equal to the measure expressed in SiFP (In this article we use “UFP” for unadjusted Function Point to designate the unit of measure defined by IFPUG FPA and SiFP the unit of measure defined by SFP).
The sought characteristics were achieved as follows:
IFPUG FPA requires that
* logical data files and transactions are identified,
* logical data files are classified into Internal Logical Files (ILF) and External Interface Files (EIF),
* every transaction is classified as External Input (EI), External Output (EO), External Query (EQ),
* every ILF and EIF is weighted, based on its Record Element Types (RET) and Data Element Types (DET),
* every EI, EO and EQ is weighted, based on its File Types Referenced (FTR) and DET exchanged through the borders of the application being measured.
Of these activities, SFP requires only the first two, i.e., the identification of logical data files and transactions. Activities 4) and 5) are the most time consuming, since they require that every data file and transaction is examined in detail: skipping these phases makes the SFP method both quicker and easier to apply than IFPUG FPA. In addition, most of the subjective interpretation is due to activities 4) and 5), and partly also to activity 3): skipping these activities makes the SFP method also less prone to subjective interpretation.
The concepts used in the definition of SFP are a small subset of those used in the definition of IFPUG FPA, therefore learning SFP is easier than learning IFPUG FPA, and it is immediate for those who already know IFPUG FPA. In practice, only the concepts of logical data file and transaction have to be known.
Finally, the weights assigned to data files and transactions make the size in SFP very close to the size expressed in Function Points, on average.

## Definition

The logical data files are named Logical Files (LF) in the SFP method. Similarly, transactions are named Elementary Process (EP). Unlike in IFPUG FPA, there is no classification or weighting of the Base Functional Components (BFC as defined in ISO14143-1 standard).
The size of an EP is 4.6 SFP, while the size of a LF is 7.0 SFP. Therefore the size expressed in SFP is based on the number of data files (#LF) and the number of transactions (#EP). Belonging to the software application being measured:
$Size_{[SFP]}=4.6\ \#EP+7\ \#LF$

## Empirical evaluation of the SFP method

Empirical studies have been carried out, aiming at
* evaluating the convertibility of SFP and UFP measures
* comparing the SFP and UFP measures in supporting the estimation of software development effort

### Convertibility between SFP and FPA measures

In the original proposal of the SiFP method, a dataset from the ISBSG, including data from 768 projects, was used to evaluate the convertibility among UFP and SiFP measures. This study showed that on average $Size_{[UFP]}=1.0005\ Size_{[SiFP]}$.
Another study also used an ISBSG dataset to evaluate the convertibility among UFP and SiFP measures. The dataset included data from 766 software applications. Via ordinary least square regression, it was found that $Size_{[SiFP]}=0.998\ Size_{[UFP]}$.
Based on these empirical studies, it seems that $Size_{[SiFP]}\approx Size_{[UFP]}$ (note that this approximate equivalence holds on average: in both studies an average relative error around 12% was observed).
However, a third study found $Size_{[UFP]}=0.815\ Size_{[SiFP]}$. This study used data from only 25 Web applications, so it is possible that the conversion rate is affected by the specific application type or by the relatively small size of the dataset.
In 2017, a study evaluated the convertibility between UFP and SiFP measures using seven different datasets. Every dataset was characterized by a specific conversion rate. Specifically, it was found that $Size_{[SiFP]}=k\ Size={[UFP]}$, with $k\in [0.957,1.221]$. Noticeably, for a dataset, no linear model could be found; instead the statistically significant model $Size[SiFP]=Size[UFP]^{1.033}$ was found.
In conclusion, available evidence shows that one SiFP is approximately equivalent to one UFP, but this equivalence depends on the data being considered, besides being true only on average.
Considering that the IFPUG SFP basic elements (EP, LF) are totally equivalent to the original SiFP elements (UGEP, UGDG), the previous results hold for the IFPUG SFP method as well.

### Using SFP for software development effort estimation

IFPUG FPA is mainly used for estimating software development effort. Therefore, any alternative method that aims at measuring the functional size of software should support effort estimation with the same level of accuracy as IFPUG FPA. In other words, it is necessary to verify that effort estimates based on SFP are at least as good as the estimates based on UFP.
To perform this verification, an ISBSG dataset was analyzed, and models of effort vs. size were derived, using ordinary least squares regression, after log-log transformations. The effort estimation errors were then compared. It turned out that the two models yielded extremely similar estimation accuracy.
A following study analyzed a dataset containing data from 25 Web applications. Ordinary least squares regression was used to derive UFP-based and SiFP-based effort models. Also in this case, no statistically significant estimation differences could be observed.