Domanda

Di recente ho usato NDepend e ha prodotto un buon rapporto sui miei assembly .net e relativi pdbs.

La cosa più interessante che ho trovato nel rapporto è stata il grafico astrattezza contro instabilità. Volevo capirlo in dettaglio, ho letto i loro documenti e i metrici online, ma potrebbe aiutare solo fino a un certo punto.

Innanzitutto desidero capire come valutare correttamente il grafico e le tecniche per controllare l'astrattezza con stabilità.

C'è un ottimo articolo qui che parla di questo ma in aggiunta a ciò di cui ho bisogno è 'come posso controllarlo? [controllo dell'astratticità con stabilità] '

alt text

È stato utile?

Soluzione

L'astrattezza è una misura della rigidità di un sistema software. Maggiore l'astrazione, minore rigidità (o maggiore flessibilità) e viceversa. Se i componenti del sistema dipendono da classi o interfacce astratte, un tale sistema è più facile da estendere e modificare rispetto a se dipendesse direttamente da classi concrete.

La stabilità è una misura della tolleranza nei confronti del modo in cui il sistema software consente di modificarlo senza romperlo. Ciò viene determinato analizzando le interdipendenze dei componenti del sistema.

L'articolo di Robert C. Martin sulle metriche OO descrive questi concetti in modo più quantitativo condizioni d'uso.

Estratto dall'articolo:

La responsabilità, l'indipendenza e la stabilità di una categoria possono essere misurate contando il dipendenze che interagiscono con quella categoria. Sono state identificate tre metriche:

Ca: Afferent Couplings: il numero di classi esterne a questa categoria che dipendono dalle classi all'interno di questa categoria.

Ce: Efferent Couplings: il numero di classi all'interno di questa categoria che dipendono da classi esterne a queste categorie.

I: Instabilità: (Ce & # 247; (Ca + Ce)): questa metrica ha un intervallo [0,1]. I = 0 indica una categoria massimamente stabile. I = 1 indica una categoria al massimo instabile.

A: Astrattezza: (# classi astratte nella categoria & # 247; numero totale di classi nella categoria). Questo intervallo metrico è [0,1]. 0 significa concreto e 1 significa completamente astratto.

In qualsiasi sistema software particolarmente grande, l'equilibrio è fondamentale. In questo caso, un sistema dovrebbe bilanciare l'astrattezza con la stabilità per essere "buono". La posizione sul grafico A-I mostra questo. Si prega di leggere l'articolo per la spiegazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top