Esiste una correlazione tra complessità e raggiungibilità?

18

Ho studiato recentemente la complessità ciclomatica (McCabe) e la raggiungibilità del software all'università. Oggi il mio docente ha detto che non c'è alcuna correlazione tra le due metriche, ma è davvero così?

Penso che ci sarebbe sicuramente qualche correlazione, in quanto i programmi meno complessi (dai pochi che abbiamo visto) sembrano avere risultati "migliori" in termini di raggiungibilità.

Qualcuno sa di ogni tentativo di guardare insieme le due metriche, e in caso contrario, quale sarebbe il posto giusto per trovare i dati sia sulla complessità sia sulla raggiungibilità per un grande numero (ish) di programmi?

    
posta Saladin Akara 17.11.2011 - 18:44
fonte

3 risposte

2

I've been studying cyclomatic complexity (McCabe) and reachability of software at uni recently. Today my lecturer said that there's no correlation between the two metrics, but is this really the case?

In realtà sia sì che no.

Prima di tutto, solo per ricordarti, la metrica di McCabe per la complessità ciclomatica è calcolata sul grafico del flusso di controllo in cui si astraggono il codice sorgente in un grafico diretto con blocchi o istruzioni di base che sono i nodi e le transizioni tra loro controllo del flusso verso il basso o in caso di salti e loop condizionati) essendo bordi. La complessità ciclomatica qui può essere approssimativa (se consideri che il tuo intero programma non ha codice isolato, cioè il tuo grafico è collegato) visto come la differenza tra il numero di fronti e il numero di nodi.

CC = E - N

Il problema della raggiungibilità è un problema comune nella teoria dei grafi che può essere espresso nel modo seguente: dati due nodi A e B, è il nodo B raggiungibile dal nodo A, cioè si può raggiungere B partendo da A e seguendo i bordi del grafico nella direzione corretta? Quindi, è di nuovo la metrica applicabile al grafico del flusso di controllo e non al codice.

Esistono diversi modi per applicare questo problema al grafico del flusso di controllo . Un modo è la cosiddetta "analisi della raggiungibilità variabile", nel senso che per la variabile data l'analisi determina se il suo valore è ancora disponibile in determinati punti del programma (questa tecnica viene anche chiamata slicing nell'analisi del software). Ho anche trovato solo alcuni articoli che usano questo termine (e generalmente il problema di raggiungibilità) per multi- applicazioni con thread .

Fondamentalmente si può vedere una sorta di correlazione tra CC e raggiungibilità: con l'aumento di CC aumenta anche il rapporto tra gli spigoli sui nodi e anche nel caso di un grafico diretto in cui anche la direzione del bordo è importante, si può ipotizzano che l'aumento del numero di spigoli porti infine all'aumento dei percorsi disponibili nel grafico e quindi ad aumentare la raggiungibilità tramite connessioni dirette o indirette tra i nodi. Quindi, la risposta è Sì qui.

Dall'altro lato, la nozione di raggiungibilità nell'ambiente multi-thread richiede l'analisi del cosiddetto supergraph - e questo non è così banale. L'aumento di CC (chiamato qui " complessità di sincronizzazione ") potrebbe portare alla maggiore probabilità di deadlocking nel software e quindi a ridurre la raggiungibilità di determinati nodi / segmenti di codice. Pertanto "No" è una risposta valida anche qui .

    
risposta data 26.11.2011 - 21:54
fonte
1

Non ho familiarità con la raggiungibilità, ma se è una misura di percorsi di codice che non possono mai essere eseguiti, la complessità ciclomatica dovrebbe essere una specie di limite superiore di quello.

    
risposta data 21.11.2011 - 11:17
fonte
0

Potrebbero esserci delle statistiche su questo, ma direi che non c'è alcuna correlazione perché non si dipende dall'altra e c'è anche la possibilità di scegliere un progetto nel sistema di un software in modo da poterlo eliminare.

In termini di dati del mondo reale, potrebbe essere una strong correlazione, ma ciò potrebbe essere dovuto a sistemi software mal progettati che non eliminano questa correlazione. Potrebbe essere una correlazione accidentale a causa della mancanza di conoscenza della teoria dei grafi.

    
risposta data 19.11.2011 - 05:08
fonte

Leggi altre domande sui tag