Perché KLOC è ancora in uso?
KLOC è una misura neutrale della dimensione del codice, proprio come i chilometri sono una misura neutrale della distanza.
E proprio come KLOC, i chilometri non sono molto utili: un numero maggiore di km non garantisce che il viaggio sia più piacevole, più piacevole o più turistico. Anche i chilometri sono un cattivo predittore: non ti dicono quanto tempo ci vorrà per raggiungere l'obiettivo, né la quantità di carburante necessaria.
Tuttavia, i chilometri sono ancora l'unità di misura principale per la distanza. E certamente per ragioni simili, KLOC è ancora in uso per la misurazione delle dimensioni.
Che cosa vuoi misurare con KLOC?
KLOC è un (molto) cattivo indicatore di produttività : la scrittura di una bella classe / funzione riutilizzabile e manutenibile può portare a un codice molto più piccolo, che a copiare / incollare / modificare e ripetere per sempre. Ma il codice più breve nello stesso tempo può sembrare meno produttivo, anche se a lungo andare è il contrario, dal momento che è necessario codificare meno grazie al riutilizzo, e sarà necessario testare di meno, come si può fare affidamento su già testati componenti.
Ma KLOC è una misura valida delle dimensioni . Come ogni unità di misura, presenta alcune carenze: non tutte le linee hanno la stessa complessità, e il layout e lo stile possono influenzare la quantità. Ma con un po 'di normalizzazione (come ignorare le linee vuote e le righe di commento, o applicare qualche bella stampa per neutralizzare le differenze di stile), su una base di codice estesa, avrà un significato statistico.
La dimensione misura solo una quantità. Può influenzare il tempo di compilazione o la revisione del tempo. È utilizzato nelle controversie sulla proprietà intellettuale, per misurare il grado di somiglianza tra due diversi codici sorgente. Ma non aspettatevi che sia un buon predittore di tempo, sforzo o complessità (10 privilegi di codice ricorsivo sono ancora più complessi di 50 linee di sillabazioni sequenziali).
Quali sono le alternative?
I punti storia sono soggettivi per la squadra che ha fatto la valutazione: non puoi sapere per certo se questa metrica corrisponde alle dimensioni o allo sforzo.
Ci sono anche punti funzione che mirano a una maggiore obiettività. Ma questi non sono prontamente disponibili dal codice e richiedono un'analisi costosa con anche qualche spazio per l'interpretazione (anche se meno che con i punti della trama). Non sono nemmeno sicuro che siano ancora rilevanti in un mondo OO con GUI.
I punti storia e i punti funzione sono comunque stime dei requisiti e delle caratteristiche previste. Vengono valutati prima della scrittura del codice e, in generale, non verranno aggiornati se appaiono imprecisi. Possono dare un'idea della complessità, ma non della dimensione del codice che verrà prodotto.