Topics in this domain

Function Point Analysis

Project management · 2 min read

How big is this system?

Before you can estimate the cost and time of building software, you need to know how big the job is.

A builder estimates a house by its floor area, not by counting bricks after it’s built. Function points are the “floor area” of software: a measure of how much the system does for its users, which you can count from the requirements before any code exists.

There are two common ways to measure software size:

  • Lines of code (SLOC): easy to count once the code exists, but depends on the programming language and isn’t known until late in the project.
  • Function points: count the functionality delivered to users. Available from the requirements, and the same whatever language is used.

The five things you count

Function points count external inputs, outputs, inquiries, internal logical files and external interface files.
ComponentMeaningExamples
External inputsData or instructions coming into the systemOrder entry screen, incoming file
External outputsInformation going out after processingInvoices, management reports
External inquiriesSimple input-and-response look-ups“Find customer by name”
Internal logical filesData the system maintainsCustomer master, order tables
External interface filesData the system uses but another system maintainsA product catalogue from another system

From count to estimate

  1. Count the five components.
  2. Weight each as low, average or high complexity.
  3. Adjust the total for general system characteristics, such as demanding performance, distributed processing or complex calculations.
  4. Convert function points into effort and cost using the organisation’s historical productivity, such as hours per function point.

Example. Early in a project, the requirements show 20 inputs, 15 outputs, 10 inquiries, 8 internal files and 3 interfaces. Weighted and adjusted, that’s about 400 function points. Past projects took about 8 hours per function point, so effort is estimated at around 3,200 hours, to be refined once the design is done.

Strengths and limits

Strengths: available early; doesn’t depend on the language; good for comparing productivity across projects.

Limits: counting takes training and judgement; it suits business applications better than real-time or maths-heavy software; and the conversion to effort is only as good as the historical data.

Other estimation approaches include expert judgement, comparison with similar past projects, and models such as COCOMO (which uses lines of code).

How the exam asks about it

If the question asks…The answer is usually…
Estimation technique based on user functionalityFunction point analysis
Main advantage of FPA over lines of codeCan be done early; independent of programming language
What FPA countsInputs, outputs, inquiries, internal files, external interface files
Why lines of code is poor for early estimatesThe code doesn’t exist yet and size depends on the language

In short

  • Function point analysis (FPA) measures software size by the functionality delivered to users, regardless of programming language.
  • It counts five things: external inputs, external outputs, external inquiries, internal logical files and external interface files.
  • Each is weighted by complexity, and the total can be adjusted for general system characteristics.
  • Function points can be counted from requirements, so FPA supports early estimates.
  • Lines of code (SLOC) depends on the language and is only known late, so it's poor for early estimates.
  • Size becomes effort and cost using historical productivity data.

Exam traps

  • FPA measures size from the user's perspective, not the code's.
  • You can't count lines of code before the code is written.
  • Function points measure size; turning size into effort needs historical data.

Slides

Click the slide and use the arrow keys. F toggles full screen.

CISA · Domain 3 · Project management

Function Point Analysis

Estimating how big a system is from what it does for users, before any code exists, and why that beats counting lines of code for early estimates.

1 / 8