Software Size Estimation by Integrating Functional Size and Functional Complexity Measures
Questo studio propone un modello di stima delle dimensioni del software che integra le Misure della Dimensione Funzionale (UFP e CFP) con le Misure della Complessità Funzionale (CC e YC) utilizzando l'analisi di regressione, dimostrando che la combinazione di queste metriche — in particolare l'UFP con le misure di complessità — riduce significativamente l'errore di stima e migliora l'accuratezza della previsione per applicazioni come COCOMO II.
Articolo originale sotto licenza CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Costruire software è un'impresa complessa, molto simile alla costruzione di un edificio, ma invece di mattoni e malta, i materiali sono righe di codice e requisiti funzionali. Per decenni, i project manager si sono affidati al conteggio di queste righe di codice per stimare quanto tempo e denaro richiederà un progetto. Tuttavia, questo metodo è difettoso perché due programmi possono fare esattamente la stessa cosa richiedendo al contempo quantità di codice vastamente diverse a seconda di come il programmatore lo scrive. Per risolvere questo problema, l'industria ha sviluppato un modo per misurare il software in base a ciò che esso effettivamente fa per l'utente — contando input, output e file di dati — piuttosto che in base a come viene scritto. Questo è noto come dimensione funzionale. Eppure, anche questo conteggio funzionale ha un punto cieco: misura la quantità di funzionalità, ma spesso ignora la difficoltà di costruirle. Una funzione semplice potrebbe essere facile da costruire, mentre una complessa con molti percorsi di ramificazione e condizioni potrebbe essere un incubo da codificare, anche se entrambe contano come una singola "funzionalità" nel senso tradizionale del termine.
Questo divario tra la dimensione di una funzionalità e la complessità della sua costruzione è il puzzle centrale affrontato da un team di ricercatori indonesiani. Si sono posti l'obiettivo di vedere se combinare una misura della dimensione funzionale con una misura della complessità strutturale potesse portare a previsioni più accurate della reale entità di un progetto software. Il loro lavoro si concentra sul perfezionamento del modo in cui stimiamo lo sforzo necessario per costruire il software, un compito critico che determina se un progetto rimarrà nel budget o se sfuggerà al controllo. Guardando sia al "cosa" che al "quanto è difficile il come", hanno mirato a creare un quadro più chiaro per le persone che pianificano e gestiscono questi sistemi digitali.
I ricercatori hanno iniziato raccogliendo dati da due progetti software reali: uno progettato per una cooperativa di dipendenti e un altro per un negozio al dettaglio. Non hanno utilizzato dataset pubblici perché spesso mancano dei dettagli specifici necessari per la loro analisi. Inveve, hanno preso i requisiti testuali di queste applicazioni e li hanno tradotti in diagrammi di flusso visivi, noti come diagrammi BPMN. Questi diagrammi hanno funto da ponte, permettendo al team di estrarre due diversi tipi di misurazioni per ogni parte del sistema. Per prima cosa, hanno calcolato la dimensione funzionale, che conta le interazioni dell'utente e i file di dati. Hanno utilizzato due metodi consolidati per questo: uno che conta i punti funzione non aggiustati basandosi su categorie standard come input e output, e un altro che conta i punti funzione cosmici tracciando come i dati si muovono dentro e fuori dal sistema.
Successivamente, hanno misurato la complessità strutturale di quelle stesse parti. Ciò ha comportato l'analisi della logica all'interno dei diagrammi di flusso per vedere quanti punti decisionali, cicli e percorsi di ramificazione esistevano. Hanno utilizzato due diverse metriche di complessità per questo: una che conta il numero di percorsi indipendenti attraverso il codice, e un'altra che pesa la difficoltà cognitiva di diversi tipi di rami e cicli. Infine, hanno confrontato queste misurazioni combinate con il numero effettivo di righe di codice scritte per i progetti. Questo conteggio finale ha servito come verità fondamentale, la dimensione reale del software finito che i ricercatori stavano cercando di prevedere.
I risultati hanno rivelato un modello distinto a seconda del metodo di dimensione funzionale utilizzato. Quando i ricercatori hanno utilizzato il primo metodo di dimensione funzionale, l'aggiunta delle misurazioni di complessità ha migliorato significativamente l'accuratezza delle loro previsioni. Nello specifico, il tasso di errore nelle loro stime è sceso dal ventiquattro per cento al ventidue per cento. Ciò suggerisce che, per questo tipo di conteggio funzionale, conoscere la complessità della logica aiuta a correggere la stima, avvicinandola alla realtà. Tuttavia, la storia era diversa per il secondo metodo di dimensione funzionale. Quando hanno usato i punti funzione cosmici, l'aggiunta delle misurazioni di complessità non ha abbassato il tasso di errore, che è rimasto stabile al quindici per cento. In questo caso, la misura della dimensione funzionale era già così precisa che i dati aggiuntivi sulla complessità non hanno reso il numero finale più accurato.
Nonostante la mancanza di miglioramenti nei tassi di errore per il secondo metodo, i dati sulla complessità si sono comunque rivelati preziosi. Quando i ricercatori hanno aggiunto le misure di complessità ai punti funzione cosmici, la qualità delle loro previsioni è migliorata in un modo diverso. La percentuale di stime che rientravano in un margine di errore molto stretto è aumentata dal settantasei per cento all'ottanta per cento. Ciò significa che, sebbene l'errore medio non sia cambiato, il team è diventato più affidabile nel fornire risposte molto vicine a quella corretta. Lo studio conclude che l'integrazione delle misure di complessità non è una soluzione universale; il suo valore dipende dal metodo di dimensione funzionale utilizzato. Per un metodo, essa affina l'accuratezza, mentre per l'altro, affina la coerenza. Questi risultati offrono un modo nuovo e più sfumato per alimentare i modelli di stima dello sforzo stabiliti, aiutando potenzialmente i team software a prendere decisioni più informate riguardo al tempo e alle risorse di cui i loro progetti avranno realmente bisogno.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.