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:
- External Inputs (EI) – dati o comandi immessi dall’utente o da altri sistemi.
- External Outputs (EO) – informazioni elaborate e fornite all’esterno.
- External Inquiries (EQ) – richieste di dati con risposta immediata.
- Internal Logical Files (ILF) – archivi logici interni gestiti dal sistema.
- 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.