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ù semplice da estendere e modificare rispetto a se dipendesse direttamente da classi concrete.
La stabilità è una misura della tolleranza da modificare come in quanto il sistema software consente di modificarlo senza romperlo. Questo è determinato analizzando le interdipendenze dei componenti del sistema.
Robert C. Martin's article su metriche OO descrive questi concetti in termini più quantitativi.
Estratto dall'articolo:
La responsabilità, l'indipendenza e la stabilità di una categoria può essere misurata contando le dipendenze che interagiscono con quella categoria. Sono state identificate tre metriche:
Ca: Accoppiamenti Afferent: il numero di classi esterne a questa categoria che dipendono dalle classi all'interno di questa categoria.
Ce: Giunti efferenti: Il numero di classi all'interno di questa categoria che dipendono da classi di fuori questi temi.
I: Instabilità: (Ce ÷ (Ca + Ce)): Questa metrica ha la gamma [0,1]. I = 0 indica una categoria massimamente stabile. I = 1 indica una categoria massimamente instabile.
A: astrattezza: (# classi astratte nella categoria ÷ # totale di classi nella categoria). Questo intervallo metrico è [0,1]. 0 significa concreto e 1 significa completamente astratto.
In qualsiasi sistema software particolarmente grandi, 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.