Measuring IS Effort: IFPUG, COSMIC and the ISO Standards, with a Worked Banking Case Study

Measuring software by lines of code is like measuring a building by the number of bricks used: the figure tells you more about the construction technique than about the building. Functional Size Measurement (FSM) solves exactly this problem by shifting the point of observation away from implementation and onto the Functional User Requirements.

Two methods dominate industrial practice: IFPUG Function Point Analysis and COSMIC. Both are full ISO standards. Yet they do not measure quite the same thing, and choosing between them is not a neutral decision. This article covers their counting mechanics, their normative grounding, and applies both to a single banking scope to show the gap in concrete terms.

1. The governing framework: the ISO/IEC 14143 family

Before comparing methods, one has to understand the standard that defines what an FSM method is. The ISO/IEC 14143 series measures nothing itself: it establishes the meta-framework that any candidate method must conform to.

PartScope
ISO/IEC 14143-1:2007Definition of FSM fundamental concepts
ISO/IEC 14143-2Conformity evaluation of measurement methods
ISO/IEC 14143-3Verification of FSM methods
ISO/IEC 14143-4Reference model
ISO/IEC 14143-5Determination of functional domains
ISO/IEC 14143-6:2012Guide for use of the series and related standards

Part 1 introduces two structuring concepts. FUR (Functional User Requirements) are the requirements describing what the software must do for the user, independently of how it does it — quality, performance and technology requirements are explicitly excluded. The BFC (Base Functional Component) is the elementary unit of FUR that a given method identifies and counts. This is where methods diverge: each defines its own BFCs.

A frequently misunderstood point: ISO/IEC 14143-1 prescribes no counting rules and recommends no method. It serves as a conformity test. That is why several competing ISO standards coexist for the same object.

The five ISO-standardised FSM methods

StandardMethodStatus
ISO/IEC 20926:2009IFPUG FSM MethodVery widely deployed
ISO/IEC 19761:2011COSMICSteady growth, strong in embedded and real-time
ISO/IEC 20968:2002Mk II Function Point AnalysisResidual use, mainly UK
ISO/IEC 24570NESMA FPA v2.1IFPUG-compatible variant, Dutch origin
ISO/IEC 29881FiSMA 1.1Finnish origin, limited diffusion

Alongside these five sits ISO/IEC 19515 (OMG Automated Function Points), which specifies an automatable count derived from source code, aligned with IFPUG rules. It is not an FSM method in the 14143 sense but an automation specification.

2. IFPUG Function Point Analysis — ISO/IEC 20926

The method traces back to Allan Albrecht’s work at IBM in the late 1970s. The International Function Point Users Group, founded in 1986, has maintained it since. ISO standardisation happened in two stages: ISO/IEC 20926:2003 covered version 4.1; the second edition, ISO/IEC 20926:2009, cancels and replaces it.

A practical caveat: the ISO standard covers only the unadjusted count. The Counting Practices Manual (CPM), currently at release 4.3.1, reproduces the normative content and supplements it with detailed rules and worked examples. The CPM is what practitioners actually use, and it underpins the CFPS certification.

Five component types

Data functions — what the system stores:

  • ILF (Internal Logical File): a logically related group of data maintained inside the application boundary.
  • EIF (External Interface File): a group of data referenced by the application but maintained by another application.

Transactional functions — what the system does:

  • EI (External Input): processing of incoming data that maintains an ILF or alters system behaviour.
  • EO (External Output): data sent outside the boundary involving additional processing logic — calculation, derivation, data creation.
  • EQ (External Inquiry): data retrieval sent outside the boundary without processing logic and without maintaining an ILF.

The EO/EQ distinction is the single most common source of error among newcomers. The discriminating criterion is the presence of derived data or a state change.

Complexity weighting

Each component is rated low / average / high by cross-referencing DETs (unique user-recognisable fields), RETs (subgroups within a logical file) and FTRs (logical files referenced by a transaction). The grid is fixed:

Function typeLowAverageHigh
ILF71015
EIF5710
EI346
EO457
EQ346

The sum of the weights yields the UFP (Unadjusted Function Points) — the only quantity covered by ISO/IEC 20926.

The VAF: a legacy to drop

The historical model applied a Value Adjustment Factor, derived from 14 general system characteristics, varying the total within a ±35% range. That factor blends functional size with non-functional characteristics, contradicting the very definition of FSM. It is excluded from the ISO standard and considered obsolete.

To cover the non-functional dimension, IFPUG developed a separate instrument: SNAP (Software Non-functional Assessment Process), whose Assessment Practices Manual is at version 2.4. SNAP produces SNAP points, counted separately from function points — the two must never be added together.

Structural limitations

The weighting scale is capped. An ILF with 200 DETs and one with 20 DETs both score 15 points once past the high-complexity threshold. This compression penalises algorithmically dense software. Beyond that, the model was designed for business systems, where most of the value lies in manipulating logical files — an assumption that transfers poorly to real-time and embedded software.

3. COSMIC — ISO/IEC 19761

COSMIC — Common Software Measurement International Consortium — emerged in the late 1990s from an international effort explicitly designed to move past the limits of so-called “first-generation” methods. It was standardised as ISO/IEC 19761:2003 (then called COSMIC-FFP), and revised as ISO/IEC 19761:2011. The Measurement Manual is at version 5.0, published in separate parts. A notable difference: this manual is freely downloadable, whereas the IFPUG CPM is a paid product.

A single BFC: the data movement

Where IFPUG counts five weighted component types, COSMIC recognises exactly one: the data movement. The underlying principle is that a functional process reduces to a set of movements of a single data group.

MovementDescription
Entry (E)A data group crosses the boundary from a functional user into the process
Exit (X)A data group crosses the boundary from the process out to a functional user
Read (R)A data group is read from persistent storage
Write (W)A data group is written to persistent storage

Each movement counts as 1 CFP (COSMIC Function Point). No weighting, no complexity grid, no ceiling.

Key concepts

  • Functional user: any sender or receiver of data with respect to the software being measured. It may be a human, but equally another piece of software, a sensor, or an actuator. This generalisation is what makes the method applicable to real-time and embedded systems.
  • Functional process: a set of movements triggered by a single triggering event. It always contains at least one Entry plus one Exit or Write — a floor of 2 CFP.
  • Boundary: separates the measured software from its functional users.
  • Layer: an architectural partition; each layer is measured separately and sizes are then summed.
  • Measurement strategy: a preliminary phase fixing purpose, scope, functional users and granularity. Part 3a of the manual documents standard strategies ensuring like-for-like comparisons.

The additivity property

A direct consequence of the absence of weighting: COSMIC sizes are strictly additive. The size of a whole equals the sum of the sizes of its parts, and the size of a change equals the sum of movements added, modified and deleted. This considerably simplifies incremental measurement and agile project tracking.

4. Structured comparison

CriterionIFPUG (ISO/IEC 20926)COSMIC (ISO/IEC 19761)
GenerationFirstSecond
UnitUFPCFP
BFC types5 (ILF, EIF, EI, EO, EQ)1 (data movement, 4 subtypes)
WeightingFixed low / average / high gridNone — 1 movement = 1 CFP
Scale ceilingYes (15 max for an ILF)No
AdditivityImperfectStrict
UserPrimarily humanHuman, software, sensor, actuator
Preferred domainsBusiness systems, enterprise ISReal-time, embedded, middleware, mobile, IS
Reference manualCPM 4.3.1 (paid)Measurement Manual v5.0 (free)
CertificationCFPS / CFPPCOSMIC certification (Parts 1 and 2)
Non-functionalSNAP APM 2.4, counted separatelyOut of scope by design
Historical dataVery large (ISBSG)More recent but growing

5. Banking case study: a consumer credit origination module

Nothing beats a real scope measured twice. Take a consumer credit origination module, made up of application capture, a scoring engine, offer generation and fund release. We measure it first with IFPUG, then with COSMIC.

Scope and boundary. The module interacts with the customer master data (CRM), maintained by another application, with the payment incident register, and with the payment system that executes transfers. All three sit outside the boundary.

5.1 IFPUG count

Data functions

ComponentTypeComplexityWeight
Credit application fileILFHigh15
Decision and scoring historyILFAverage10
Rate scheduleILFLow7
Customer master data (CRM)EIFAverage7
Payment incident registerEIFLow5
Data subtotal44

Transactional functions

ComponentTypeComplexityWeight
Create or amend a credit applicationEIHigh6
Upload a supporting documentEILow3
Record an override decisionEIAverage4
Instruct fund releaseEIAverage4
Generate the loan offer (APR, schedule)EOHigh7
Return the score and rejection reasonsEOAverage5
Monthly production reportEOAverage5
View an application statusEQLow3
Search applications by customerEQAverage4
View the current rate scheduleEQLow3
Transaction subtotal44

Functional size: 44 + 44 = 88 UFP.

Note how the three outputs are classified. Generating the loan offer is an EO rather than an EQ because it computes the APR and produces the repayment schedule: derived data is created. Viewing the rate schedule, by contrast, is a plain EQ — it retrieves without calculating. That is precisely the boundary discussed earlier.

5.2 COSMIC count of the same scope

The functional users here are the relationship manager, the CRM, the incident register and the payment system. Each functional process decomposes into movements.

Functional processEXRWCFP
Create a credit application11215
Amend an application11114
Upload a supporting document11013
Compute the score11316
Record an override decision11114
Generate the loan offer11316
View an application status11103
Search applications by customer11103
View the current rate schedule11103
Instruct fund release11114
Return rejection reasons11103
Produce the monthly report11204
Total48 CFP

Fund release illustrates what COSMIC adds: the Exit to the payment system counts as a movement in its own right, because that system is a functional user just as a human would be. IFPUG folds it into an EI without distinguishing the recipient.

5.3 What the gap tells us

On this scope, 88 UFP correspond to 48 CFP — a ratio of roughly 1.8. That ratio does not transfer. It depends entirely on the structure of the software measured: a module rich in logical files and thin on interactions pushes the ratio up, a heavily transactional one pushes it down. The conversion formulas circulating in the literature give acceptable results on conventional business systems and degrade markedly elsewhere. A conversion is never a measurement: if the result will underpin a contractual commitment, recount.

5.4 From count to effort estimate

Functional size is not an estimate: it is an input. To obtain an effort figure, combine it with a productivity ratio drawn from the organisation’s own history. If the bank historically observes 1.4 person-days per function point on this type of development, the initial estimate lands at 88 × 1.4 ≈ 123 person-days.

Three caveats attach to that figure. The productivity ratio must come from comparable projects in technology, team and domain — a ratio borrowed from another organisation has no predictive value. Non-functional requirements (availability, regulatory compliance, security, performance under load) are not in the 88 UFP; in a banking context, where compliance weighs heavily, they are assessed separately, via SNAP or an internal model. And the figure is a negotiation baseline, not a commitment: it is best expressed as a range and revised at each increment.

6. Selection criteria

Choose IFPUG when:

  • the scope is a conventional business information system;
  • the organisation already holds productivity history expressed in function points;
  • contractual or regulatory context requires it — several public procurement bodies explicitly reference IFPUG;
  • access to a pool of CFPS-certified counters is decisive;
  • estimation relies on mature external benchmarks such as ISBSG.

Choose COSMIC when:

  • the software is real-time, embedded, or has no direct human user;
  • the architecture is heavily distributed or multi-layered;
  • the approach is incremental and strict additivity is a prerequisite;
  • the objective is measuring evolutive maintenance, counting impacted movements;
  • the setup budget is constrained — the manual is free and the learning curve shorter.

In either case, some non-negotiable principles. Never mix units: a portfolio measured partly in UFP and partly in CFP produces no usable data. Document the measurement strategy — scope, boundary, functional users, granularity — without which a measurement is neither reproducible nor auditable. Separate functional from non-functional. And measure early: a measurement produced at project end has no decision-support value left.

Conclusion

IFPUG and COSMIC are not in opposition: they answer adjacent questions from distinct conceptual models. IFPUG brings historical depth, a mature ecosystem and solid contractual grounding in the business-systems world. COSMIC brings a simpler, more general and mathematically better-formed model, particularly suited to modern architectures and to software with no human user.

The ISO/IEC 14143 framework guarantees that both genuinely measure functional size in the normative sense. The rest — method choice, rigour of the measurement strategy, consistency over time — is a matter of organisational discipline. And it is that discipline, far more than the choice of method, that determines the real value of a measurement programme.

Normative references

  • ISO/IEC 14143-1:2007 — Functional size measurement — Part 1: Definition of concepts
  • ISO/IEC 14143-6:2012 — Part 6: Guide for use of the ISO/IEC 14143 series
  • ISO/IEC 20926:2009 — IFPUG functional size measurement method 2009
  • ISO/IEC 19761:2011 — COSMIC: a functional size measurement method
  • ISO/IEC 20968:2002 — Mk II Function Point Analysis
  • ISO/IEC 24570 — NESMA functional size measurement method v2.1
  • ISO/IEC 29881 — FiSMA 1.1 functional size measurement method
  • ISO/IEC 19515 — OMG Automated Function Points (AFP) 1.0
  • IFPUG — Function Point Counting Practices Manual, release 4.3.1
  • IFPUG — SNAP Assessment Practices Manual, release 2.4
  • COSMIC — Measurement Manual for ISO 19761, version 5.0 (Parts 1, 2 and 3a)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *