Che cos'è il punto funzione COSMIC e in che cosa differisce dalla stima in ore?

Mesterséges Intelligencia Központ Kft., azienda di sviluppo software con sede a Budapest, misura il software in punti funzione COSMIC: la dimensione è così una proprietà del software, non l'impressione di chi stima, quindi è verificabile, rimisurabile e permette di confrontare due offerte.

In sintesi: COSMIC (ISO/IEC 19761) misura la dimensione funzionale del software: ogni movimento di dati, cioè Entry (ingresso), Exit (uscita), Read (lettura) o Write (scrittura), vale 1 punto funzione COSMIC (CFP). La stima in ore dice quanto lavoro si aspetta chi stima; la dimensione misurata dice quanto è grande il compito. Per questo è verificabile, si può misurare di nuovo e consente di confrontare due offerte; l'impegno si ricava dalla dimensione e dalla produttività misurata nella pratica.

Che cos'è la misurazione della dimensione funzionale?

La dimensione del software si può esprimere in molti modi: in righe di codice, in ore, in punti. La misurazione della dimensione funzionale (in inglese functional size measurement, FSM) misura che cosa deve saper fare il software dal punto di vista dei suoi utenti, non come viene realizzato. I suoi concetti di base sono fissati dalla norma ISO/IEC 14143-1:2007; secondo la descrizione della norma, l'obiettivo è proprio che la misurazione si concentri sulle funzioni richieste dall'utente invece che sul modo in cui vengono realizzate.

La base della misurazione è l'insieme dei requisiti funzionali dell'utente (functional user requirements, FUR): la parte dei requisiti dell'utente che descrive quali compiti e servizi il software deve svolgere. Le prestazioni, la sicurezza o la tecnologia scelta non ne fanno parte (ne parliamo sotto, tra i limiti).

Esistono diversi metodi standardizzati di misurazione della dimensione funzionale. I più noti sono COSMIC (ISO/IEC 19761:2011) e il metodo IFPUG (ISO/IEC 20926:2009); l'ISO ha standardizzato anche altri metodi (NESMA, FiSMA, Mk II). Tutti partono dai requisiti, ma con regole diverse e unità di misura diverse, perciò i numeri misurati con metodi diversi non sono direttamente confrontabili.

Che cos'è COSMIC?

COSMIC è l'acronimo di Common Software Measurement International Consortium: un'organizzazione senza scopo di lucro che cura il metodo e organizza la certificazione dei misuratori. Il metodo è nato alla fine degli anni Novanta come evoluzione dei precedenti metodi a punti funzione, nel 2003 è diventato una norma ISO, e l'edizione attualmente in vigore è la ISO/IEC 19761:2011. La descrizione dettagliata del metodo, la versione 5.0 del COSMIC Measurement Manual, si può scaricare gratuitamente; la prima parte è stata pubblicata nel 2021, la seconda nel 2024.

Secondo la norma, il metodo è adatto a misurare software applicativo (ad esempio sistemi aziendali), software in tempo reale e combinazioni dei due. Con esso si possono cioè misurare sia un sistema ERP, CRM o di negozio online sia un software di controllo.

I concetti del modello COSMIC

COSMIC descrive il software con un modello semplice: il software scambia dati con i suoi utenti funzionali attraverso il proprio confine, e all'interno del confine legge dalla memoria persistente e vi scrive.

ConcettoChe cosa significaEsempio
Utente funzionalechi o che cosa invia dati al software o ne attende dati: una persona, un altro software o un dispositivol'addetto, il sistema di fatturazione
Confineun'interfaccia concettuale tra il software misurato e i suoi utenti funzionalil'interfaccia web e l'interfaccia aperta verso gli altri sistemi
Evento innescanteun evento in seguito al quale l'utente funzionale avvia un processosi presenta un nuovo cliente
Processo funzionaleun'unità elementare dei requisiti, eseguibile in modo autonomo: una sequenza coerente di movimenti di dati«registrazione di un nuovo cliente»
Gruppo di datiun insieme di attributi di dati che riguardano un'unica cosa su cui il software deve gestire datiil Cliente: nome, indirizzo, partita IVA, e-mail
Movimento di datilo spostamento di un singolo gruppo di dati; ne esistono quattro tipiveda sotto

I quattro movimenti di dati:

Alcune delle regole di misurazione che determinano il conteggio:

Il risultato si colloca su una scala di rapporti, cioè le dimensioni si possono sommare e confrontare: due parti da 40 CFP insieme fanno 80 CFP, e il totale parziale si può indicare anche per ciascun gruppo di funzioni.

Un esempio svolto: «registrazione di un nuovo cliente»

Prendiamo un requisito semplice: «L'addetto registra i dati del nuovo cliente (nome, indirizzo, partita IVA, e-mail). Il sistema verifica che il cliente non sia già registrato, lo salva e segnala l'esito positivo o l'errore.» I passi della misurazione:

  1. L'utente funzionale è l'addetto, l'evento innescante è il fatto che si presenta un nuovo cliente.
  2. Il gruppo di dati è il Cliente; i quattro attributi riguardano la stessa cosa, perciò formano un solo gruppo.
  3. I movimenti di dati si individuano dalle frasi del requisito, e ciascuno viene contato.
PassoMovimento di datiGruppo di datiDimensione
L'addetto invia il moduloEntry (ingresso)Cliente1 CFP
Il sistema verifica se il cliente esiste giàRead (lettura)Cliente1 CFP
Il sistema salva il nuovo clienteWrite (scrittura)Cliente1 CFP
Segnalazione dell'esito positivo o di qualsiasi erroreExit (uscita)messaggio di errore e di conferma1 CFP
Totalequattro movimenti di datiun gruppo di dati4 CFP

Allo stesso modo è costruito anche l'esempio «registrazione di un nuovo dipendente» della guida pubblicata sul sito di COSMIC. Le modifiche del requisito si vedono così nella dimensione:

L'esempio mostra anche perché la misurazione è verificabile: dietro ogni CFP ci sono un requisito con un nome, un gruppo di dati e una regola. Se qualcuno la contesta, si può dire esattamente di quale riga si tratta.

Misurare presto, affinare dopo

La misurazione COSMIC inizia fissando lo scopo e l'ambito della misurazione: che cosa misuriamo, che cosa vi rientra e a che cosa serve il risultato. Per una misurazione precisa servono requisiti abbastanza dettagliati da permettere di individuare i processi funzionali e i loro movimenti di dati. All'inizio di un progetto spesso non ci sono ancora; per questo caso COSMIC raccomanda metodi di approssimazione pubblicati per la stima precoce della dimensione, e dopo l'elaborazione dei requisiti può seguire la misurazione precisa.

La guida del metodo avverte anche che molte esigenze che inizialmente sembrano non funzionali (ad esempio il tempo di risposta o la facilità d'uso) nel corso del progetto si trasformano in funzioni del software, e per questo la dimensione sembra crescere. Non è un difetto della misurazione: mostra che il requisito è diventato più preciso. In pratica conviene quindi scrivere la specifica voce per voce, misurare di nuovo le modifiche con lo stesso metodo e indicare a parte la dimensione della modifica. Così la crescita della portata non avviene in silenzio, ma si vede in numeri.

Confronto: ore, story point, IFPUG, COSMIC

CriterioStima in oreStory pointPunti funzione IFPUGPunti funzione COSMIC
Che cosa esprimeil lavoro che si aspetta chi stimala stima relativa del team; non sempre è chiaro se di dimensione, impegno o tempodimensione funzionaledimensione funzionale
È standardizzatononosì, ISO/IEC 20926:2009sì, ISO/IEC 19761:2011
Da che cosa dipendedall'esperienza, dalla prudenza e dal team di chi stimadal team specifico; in ogni team significa qualcosa di diversodai requisitidai requisiti
È verificabile dall'esternosolo in base alla spiegazione di chi stimadifficilmente, fuori dal teamsì, secondo regole pubblichesì, secondo regole pubbliche e disponibili gratuitamente
Unità di misuraorail punto proprio del teampunto funzione IFPUGCFP, 1 CFP = 1 movimento di dati
A che cosa serve meglioa pianificare compiti brevi e ben conosciutialla pianificazione degli sprint del team stessoa misurare la dimensione, a confrontarea misurare la dimensione, a confrontare, come base per l'offerta e la pianificazione

La stima in ore non è uno strumento sbagliato, misura solo un'altra cosa: il lavoro previsto, che oltre che dalla dimensione del compito dipende anche dalle competenze, dagli strumenti e dalla prudenza del team. Gli story point sono utili per la pianificazione all'interno del team, ma secondo la guida pubblicata sul sito di COSMIC sono soggettivi, e il loro significato cambia da team a team. IFPUG e COSMIC sono entrambi dimensioni funzionali standard, ma con regole diverse, perciò i numeri dei due metodi non sono intercambiabili.

Perché la dimensione misurata è una base più affidabile?

Per rispondere con precisione alla domanda del titolo: COSMIC non stima le ore in modo più preciso, ma misura la grandezza del compito, e grazie a questo la stima dell'impegno diventa più affidabile. I motivi:

La guida di COSMIC cita diversi studi in cui la dimensione misurata in CFP seguiva l'impegno effettivo più da vicino della stima espressa in story point. La stessa guida avverte anche che l'impegno stimato a partire dalla dimensione è affidabile se il processo di sviluppo è sufficientemente ripetibile e l'impegno è determinato soprattutto dalla dimensione. La dimensione misurata è quindi un punto di partenza migliore, ma per una buona stima bisogna conoscere anche la produttività.

Che cosa non misura COSMIC?

La dimensione COSMIC misura le funzioni, e la descrizione del metodo lo dice apertamente. Che cosa non esprime:

Per questo una buona offerta, accanto alla dimensione misurata, indica a parte ciò che la dimensione non esprime: le integrazioni, i requisiti non funzionali, l'interfaccia e la grafica personalizzate, le diverse piattaforme, la migrazione dei dati, i calcoli complessi e il funzionamento in tempo reale. Nelle nostre offerte queste voci compaiono così; ne parliamo nella pagina Prezzi.

Come lo usiamo nel nostro lavoro?

Misuriamo la dimensione funzionale dello sviluppo in punti funzione COSMIC. Per la misurazione abbiamo costruito un nostro flusso di lavoro assistito dall'intelligenza artificiale, e il risultato viene controllato da una persona in un giro di revisione. I passi:

  1. Specifica voce per voce: suddividiamo lo sviluppo in gruppi di funzioni e descriviamo ciascuno con lo stesso schema: obiettivo, attori, dati, funzioni, funzioni di IA e ciò che non ne fa parte (veda: Come lavoriamo).
  2. Più conteggi indipendenti: ogni gruppo di funzioni viene contato più volte da più modelli linguistici; la dispersione dei conteggi mostra l'incertezza.
  3. Giro di riconciliazione: garantisce che ogni processo funzionale conti esattamente una volta, anche se compare in più descrizioni.
  4. Revisione: esaminiamo la misurazione, chiariamo i punti incerti e, se necessario, correggiamo a mano gli accorpamenti automatici.
  5. Congelamento: la misurazione finita si può fissare come versione non modificabile, e questa diventa la base del contratto.

Nell'ulteriore sviluppo di un sistema esistente descriviamo a parte la parte esistente, così nella dimensione conta solo la parte nuova. La misurazione segnala anche ciò che la dimensione funzionale non esprime.

Come si passa dalla dimensione all'offerta e alla pianificazione?

Il prezzo dell'offerta deriva dalla dimensione misurata, integrato dalle voci che la dimensione non esprime. Poiché vediamo la dimensione anche per ciascun gruppo di funzioni, su questa basiamo anche la pianificazione: l'ordine delle fasi, il contenuto delle dimostrazioni e le scadenze. Se strada facendo nasce una nuova esigenza, la misuriamo allo stesso modo, e si vede di quanto cambia la portata e che cosa significa per il prezzo e per la pianificazione. Per questo un prezzo e una scadenza concreti li indichiamo solo dopo la misurazione, non in base a una prima conversazione.

Confrontare due offerte in base alla dimensione

Se chiede un'offerta a più sviluppatori, la dimensione aiuta a capire se riguardano lo stesso compito. Conviene procedere così:

  1. La stessa specifica: ogni offerente riceve la stessa descrizione voce per voce.
  2. La dimensione e l'elenco dei processi: chieda per quale dimensione e per quali processi funzionali è stato indicato il prezzo.
  3. Le cause delle differenze: se due offerte differiscono, verifichi se la differenza sta nella dimensione, nelle voci non espresse dalla dimensione o nel prezzo per unità di dimensione.
  4. Le voci separate: chieda che cosa compare in una riga a parte (integrazione, migrazione dei dati, gestione) e che cosa non è compreso nel prezzo.
  5. La gestione delle modifiche: chieda come vengono misurate e prezzate le modifiche in corso d'opera.

Se un offerente non misura la dimensione funzionale, la sua offerta resta comunque confrontabile, purché abbia formulato il prezzo sullo stesso elenco dettagliato di processi. Degli altri criteri per la scelta dello sviluppatore parliamo nell'articolo Come scegliere un'azienda di sviluppo software?; se serva davvero uno sviluppo su misura aiuta a deciderlo l'articolo Software su misura o soluzione pronta (SaaS)?.

Domande frequenti

Che cos'è il punto funzione COSMIC?

Il punto funzione COSMIC (CFP) è l'unità di misura della dimensione funzionale del software secondo la norma ISO/IEC 19761. Un CFP è un movimento di dati: l'ingresso, l'uscita, la lettura o la scrittura di un gruppo di dati in un processo funzionale. La dimensione del software è la somma dei movimenti di dati dei suoi processi.

In che cosa differisce dalla stima in ore?

La stima in ore indica il lavoro previsto, e dipende da chi stima e dal team. COSMIC misura la dimensione del compito a partire dai requisiti, con regole pubbliche, perciò partendo dalla stessa specifica anche un'altra persona può arrivare allo stesso risultato. Le ore si possono poi ricavare dalla dimensione e dalla produttività misurata nella pratica.

Che cosa non misura COSMIC?

Secondo la norma, non è stato pensato per misurare algoritmi matematici complessi e l'elaborazione di segnali continui (audio, immagini), e non esprime in CFP nemmeno i requisiti realmente non funzionali, ad esempio i vincoli di prestazione o tecnologici. Una buona offerta li indica come voci separate.

Chi esegue la misurazione, ed è verificabile?

La misurazione la esegue un misuratore che conosce il metodo; da noi il conteggio lo fa un flusso di lavoro assistito dall'IA, e il risultato lo rivede una persona. Le regole sono pubbliche e la misurazione è documentata processo per processo, perciò un altro specialista che conosce il metodo può verificarla partendo dalla stessa specifica.

Come si passa dalla dimensione all'offerta?

Il prezzo deriva dalla dimensione misurata, integrato da ciò che la dimensione non esprime: integrazioni, requisiti non funzionali, grafica personalizzata, più piattaforme, migrazione dei dati. La pianificazione si basa sulla dimensione per gruppo di funzioni, e le modifiche le misuriamo allo stesso modo. I dettagli sono nella pagina Prezzi.

Come possiamo aiutarLa?

Se sta progettando un software su misura, scriviamo insieme la specifica voce per voce, ne misuriamo la dimensione in punti funzione COSMIC e su questa base prepariamo l'offerta e la pianificazione. Su richiesta firmiamo un accordo di riservatezza (NDA) e dopo la consegna ci occupiamo anche della gestione e della manutenzione. Il codice sorgente e i diritti d'uso sono regolati dal contratto. La prima consulenza è gratuita: ci scriva ai recapiti indicati nella pagina Contatti.

Fonti