Analisi dei punti funzione: misurare il valore reale di una codebase


La Function Point Analysis (FPA), formalizzata dall’IFPUG – International Function Point Users Group, rappresenta uno dei metodi più solidi e oggettivi per misurare la dimensione funzionale di un sistema software.
A differenza delle metriche basate sulle linee di codice, la FPA valuta il software dal punto di vista dell’utente, misurando cosa il sistema fa, non come è stato implementato.


Principi di base

La metodologia IFPUG si fonda sul riconoscimento e sulla classificazione di cinque tipi di componenti funzionali:

  1. External Inputs (EI) – dati o comandi immessi dall’utente o da altri sistemi.
  2. External Outputs (EO) – informazioni elaborate e fornite all’esterno.
  3. External Inquiries (EQ) – richieste di dati con risposta immediata.
  4. Internal Logical Files (ILF) – archivi logici interni gestiti dal sistema.
  5. External Interface Files (EIF) – archivi logici esterni referenziati.

Ogni componente è valutato in base alla complessità funzionale (bassa, media, alta), cui corrisponde un numero standard di Function Points (FP).
Il totale dei FP, eventualmente corretto con fattori di complessità generale (GSC – General System Characteristics), fornisce una misura oggettiva della dimensione funzionale del sistema.


Perché applicarla a una codebase

Analizzare una codebase esistente con la FPA consente di:

  • Stimare l’effort necessario per la manutenzione o l’evoluzione del sistema.
  • Confrontare progetti diversi indipendentemente dal linguaggio o dalla tecnologia.
  • Derivare metriche di produttività (FP per persona/mese) e qualità del codice (defect density per FP).
  • Supportare la pianificazione economica e contrattuale basata su parametri verificabili.

A differenza delle metriche sintattiche, la FPA collega il valore del codice all’effettiva funzionalità percepita dall’utente, restituendo una misura stabile anche in presenza di refactoring o migrazioni tecnologiche.


Riferimenti normativi e standard

La metodologia IFPUG è descritta nello standard ISO/IEC 20926:2009 (Software engineering — IFPUG functional size measurement method), parte della serie ISO/IEC 14143, che definisce il quadro generale per la misura delle dimensioni funzionali del software.

Ulteriori riferimenti autorevoli:

  • IFPUG Counting Practices Manual (CPM), release 4.3.1 – guida ufficiale di riferimento per la misurazione.
  • ISO/IEC 14143-1:2007 — Functional size measurement — Definitions and concepts.
  • Symons, C. (1988). Function Point Analysis: Difficulties and Improvements. IEEE Transactions on Software Engineering, 14(1).
  • Abran, A., Robillard, P. (1996). Function Points Analysis: An Empirical Study of its Measurement Processes. IEEE Transactions on Software Engineering, 22(12).
  • Albrecht, A. J., Gaffney, J. (1983). Software Function, Source Lines of Code, and Development Effort Prediction: A Software Science Validation. IEEE Transactions on Software Engineering, SE-9(6).

Misurare il software non serve a quantificare il codice, ma a comprendere il valore che produce.
La Function Point Analysis traduce la complessità in conoscenza e la conoscenza in governo del ciclo di vita software.