In order to provide an accurate estimation of a project, it is necessary to take into account several variables:

  • Duration (timeline)
  • Change (RFC)
  • People (project team)
  • Quality (defects)
  • Critical resources (limitations)
  • Efforts
  • 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?

adv_and_disadv.png

History

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.

Functional (Include)

  • 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)
Non-Functional (Exclude)

  • Quality Constraints(Usability, reliability, efficiency, portability)
  • Organizational Constraints (locations for operations, target hardware, standards compliance)
  • Environmental Constraints (interoperability, security, privacy, safety)
  • Implementation constraints (development language, delivery schedule)

Vocabulary

Whenever we learn a new concept, we first need to study its vocabulary. Here are the main terms of function point analysis:

vocabulary.png

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.

softwarecycle.png

Estimation process

Here are the stages to go through to estimate in function points:

estimation.png

Application components

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:

5types_components.png

You can also notice two more types of elements, RET and DET, in the picture, as we also need these for our calculation.

ret_and_det.png

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_app.png

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.

student_app_function_point.png

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:

formula.png

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
Svetlana Mukhina
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.