Abstrakcyjność jest miarą sztywności układu oprogramowania. Im wyższa abstrakcja, tym mniejsza sztywność (lub większa elastyczność) i na odwrót. Jeśli komponenty systemu zależą od abstrakcyjnych klas lub interfejsów, to taki system jest łatwiejszy do rozszerzenia i zmiany, niż gdyby zależał bezpośrednio od konkretnych klas.
Stabilność to miara tolerancji dla zmian, ponieważ na ile system oprogramowania pozwala na wprowadzanie zmian bez jej łamania. Jest to określane na podstawie analizy współzależności komponentów systemu.
Dane Robert O Martin'a article na temat OO opisują te pojęcia w sposób bardziej ilościowy.
Fragment artykułu:
Odpowiedzialność, niezależność i stabilność kategorii może być mierzona poprzez liczenie zależnościami, które współdziałają z tej kategorii. Zidentyfikowano trzy wskaźniki:
Ca: Złącza aseptyczne: liczba klas poza tą kategorią, które zależą od klas w tej kategorii.
Ce: Efferentna Sprzęgło: liczba klas wewnątrz tej kategorii, które są zależne od klasy poza tą kategorie.
I: Niestabilność (Ce ÷ (Ca + SD)): te dane z przedziału [0,1]. I = 0 oznacza maksymalnie stabilną kategorię. I = 1 oznacza kategorię maksymalnie niestabilną.
A: Abstrakcyjność: (# klasy abstrakcyjne w kategorii ÷ Łączna liczba klas w kategorii). Ten zakres danych to [0,1]. 0 oznacza beton, a 1 oznacza całkowicie abstrakcyjny.
W każdym systemie oprogramowania, szczególnie dużym, równowaga ma kluczowe znaczenie. W takim przypadku system powinien balansować abstrakcyjność ze stabilnością, aby być "dobrym". Pokazuje to pozycja na wykresie A-I. Przeczytaj artykuł w celu wyjaśnienia.