How to estimate application size in Function Points
In order to provide an accurate estimation of a project, it is necessary to take into account several variables:
People (project team)
Critical resources (limitations)
Size (scale of the project)
Size can be calculated in story points, function points, work units, etc. In this post, we will look closely at only the Size variable, learning what it is and how to calculate it in function points.
Advantages and disadvantages
Why should you use function points for application or project size calculations? When can it help you?
The idea of function points is not a new concept; it was developed by Allan J. Albrecht in the mid 1970s. The method’s description was first published in 1979, and then later in 1983. In 1986, the International Function Point User Group (IFPUG) was set up. Since 1987, membership in the IFPUG has grown from 100 members to 600 members in 1997. In less than six years, conference attendance grew from 125 in 1988 to over 300 by 1997. Examining IFPUG, the majority of its members are from North America. There are also numerous affiliate organizations of IFPUG in Italy, France, Germany, Austria, India, The Netherlands, Australia, Japan, and several other countries.
Functional and non-functional requirements
In order to operate with function points, we also need to know what the difference between functional and non-functional requirements is.
Data Transfer (Input customer data, send control signal, send transactions from one system to another)
Data Transformation (Calculate bank interest, derive average temperature, use billing data to produce invoice totals)
Data Storage (Store customer order, record temperature over time, store controlled parameters to drive data)
Data Retrieval (List current employees, retrieve satellite position, display a report of employee dependents)
Whenever we learn a new concept, we first need to study its vocabulary. Here are the main terms of function point analysis:
Stages of software development cycle
If your project is already being developed, can you calculate its size in function points? Please, have a look at the picture below to find out when during the software development cycle it's recommended to use function point analysis.
Here are the stages to go through to estimate in function points:
Now let's see a very simple example of how to calculate function points, which can also be used to estimate application and/or project size.
First of all, we need to define the application components that we take into consideration when counting function points. There are 5 of them:
Internal Logical File (ILF) – data which resides within the boundaries of the application and is maintained (added, changed, deleted and/or updated) by the application
External Interface File (EIF) – a user-recognizable group of logically related data or control information which is referenced by the application being measured, but maintained within the boundaries of another application. It is identified as an ILF in another application(s)
External Input (EI) – an elementary process that processes data or controls information sent from outside the boundaries of the application. Words that suggest EIs: Add, Make Inactive, Allocate, Modify, Assign, Record, Associate, Remove, Change, Reset, Create, Delete, Import, Reverse, Set, Undo, Update, Upload, Withdraw
External Inquiry (EQ) – is an elementary process that sends data or controls information outside the boundaries of the application (using data retrieval only). Words that suggest EQs: Browse, Display, Enquire, Extract, Inquire, List, Pick, List, View
External Output (EO) – is an elementary process that sends data or controls information outside the boundaries of the application, and includes additional processing beyond that of an external inquiry. Words that suggest EOs: Adjust, Export, Generate, Notify, Print, Report, Summary
You can see these 5 types of components in the picture below:
You can also notice two more types of elements, RET and DET, in the picture, as we also need these for our calculation.
RET - a record element type (RET), it is a user-recognizable subgroup of data elements within an ILF or EIF
DET - a unique, user-recognizable, non-repeated attribute
Now let's try to find these components within the requirements for an application used to track student information:
Student data is defined as 1 Internal Logical File. Add, Change and Delete are 3 External Inputs. There is also 1 RET and 6 DETS in this set of requirements.
As we have now counted the components, let’s now count function points. We will need formulas to do this. First, we need formulas to define the complexity of our components. As you can probably remember, we have 1 ILF with 1 RET and 4 DETS and 3 EIs with 1 FTR and 5-6 DETs. Here they are:
As you can see, all our components are considered to have low complexity. We are now very close to getting our estimation in function points…we only need to define the weights of the components.
The weight is 3 for our 3 EIs and 7 for ILF. Thus, we multiply 3 by 3 (9) and 1 by 7 (7) and, in sum (9+7), we get 16 function points. We did it!
If you would like to get more details on Function Point Analysis, watch a webinar on this topic here: watch
An Agile coach and a trainer at Luxoft Agile Practice. She has over fifteen years of experience in IT as a delivery manager and department head. She is currently working closely with delivery managers, teams and businesses, performing project assessments, providing teams and individuals Agile coaching, creating and conducting trainings and workshops. She enjoys observing how a new concept or approach is internalized and waiting for the “A-ha” moment to arrive. She is passionate about showing innovative and useful tools to teams and individuals, and loves helping make their daily tasks less burdensome and more fun.