Ha senso calcolare la complessità ciclomatica / linee del rapporto di codice?

8

In generale, l'indice di manutenibilità dipende da molti fattori. Ad esempio, in Visual Studio, si basa sulla complessità ciclomatica, la profondità dell'ereditarietà, l'accoppiamento di classi e le linee di codice; quei quattro valori devono essere il più bassi possibile.

Allo stesso tempo, non ho mai visto, né negli strumenti di metrica del codice, né nei libri, il confronto tra la sola complessità ciclomatica (CC) e le linee di codice (LC).

Ha senso calcolare tale rapporto? Quali informazioni fornisce sul codice? In altre parole, è meglio diminuire più CC rispetto a LC per avere un rapporto inferiore?

Quello che noto è che per i progetti di piccole dimensioni, il rapporto CC / LC è basso (⅓ e inferiore). In altre parole, LC è alto e CC è basso. Nei progetti di grandi dimensioni, CC / LC è in molti casi più grande di ½. Perché?

    
posta Arseni Mourzenko 08.03.2011 - 20:20
fonte

4 risposte

5

Da link

Les Hatton claimed recently (Keynote at TAIC-PART 2008, Windsor, UK, Sept 2008) that McCabe Cyclomatic Complexity has the same prediction ability as lines of code.[11]

Il rapporto ha all'incirca la stessa capacità di previsione di uno usato separatamente.

    
risposta data 08.03.2011 - 21:04
fonte
6

Esiste una metrica di complessità ciclomatica per dichiarazioni di origine - si chiama densità di complessità ciclomatica . Questa metrica può essere utilizzata per stimare i tempi di manutenzione e gli sforzi richiesti per i progetti software.

    
risposta data 15.09.2011 - 03:33
fonte
2

Come indicato in una precedente risposta, questa affermazione nella risposta accettata è chiaramente errata.

The ratio has about the same prediction ability as either used separately.

La densità CC è stata trovata avere un senso da vari ricercatori, anche se non sembra aver guadagnato una notevole popolarità tra i professionisti. Ci sono prove da parte di due noti studiosi nell'area delle metriche del software che il rapporto (densità della complessità ciclomatica = CC / KLOC) è un fattore predittivo molto migliore della produttività di mantenimento rispetto al solo CC o KLOC.

G. K. Gill e C. F. Kemerer, "Densità della complessità ciclomatica e produttività della manutenzione del software", in IEEE Transactions on Software Engineering, vol. 17, no. 12, pp. 1284-1288, dicembre 1991. doi: 10.1109 / 32.106988

Ci sono molti altri che hanno sviluppato questo lavoro per perfezionare le metriche basate sulla densità CC. Due esempi:

  1. T. Andersson, K. Enholm e A. Törn. Misura indipendente dalla lunghezza della complessità del software. In M. Ross, C.A. Brebbia, C. Staples e J. Stapleton (a cura di) Seconda conferenza internazionale sulla gestione della qualità del software, Vol 1, Gestione dei sistemi di qualità, 1994.

  2. J. P. Mittal, Pradeep Bhatia e Harish Mittal. 2009. Valutazione della produttività della manutenzione del software utilizzando la logica fuzzy. SIGSOFT Softw. Ing. Note 34, 5 (ottobre 2009), 1-4. DOI = link

risposta data 29.04.2018 - 22:48
fonte
1

Scusa ma non sono d'accordo con questa affermazione:

The ratio has about the same prediction ability as either used separately.

Un rapporto non è chiaramente la stessa di una singola metrica. Sulla base di dati empirici, Hatton afferma che CC è proporzionale a XLOC con un rapporto costante di circa 0,25 (vedi diapositiva 17) per il suo set di dati specifico. Quindi se il tuo XLOC è 60 o 400, il tuo rapporto CC: XLOC sarà di circa 0,25 (ignorando le deviazioni statistiche a numeri più alti). Quindi il rapporto non è predittivo di sorta.

    
risposta data 19.03.2011 - 18:41
fonte