Wykład 15 Przykłady metryk
PoniŜej podano pewien zestaw metryk, które umoŜliwiają właściwą ocenę jakości i funkcjonalności oprogramowania na etapie budowy statycznego modelu obiektowego
1. ZłoŜoność połączeniowa: liczba połączeń między obiektami RFC =| Mi ∪ wszystkie j {Rij}|,
gdzie Mi jest zbiorem wszystkich operacji klasy, natomiast {Rij} jest zbiorem operacji innych klas wywoływanych przez operację Mi.
2. Spójność semantyczna
Klasy powinny znajdować swoje odwzorowanie w UoD, stąd sztucznie połączone wprawdzie ograniczają liczbę połączeń między klasami, lecz naruszają zasady modelowania dotyczące wielokrotnego wykorzystania klasy.
3. Metryki określające złoŜoność proceduralną, 3.1. Liczba klas abstrakcyjnych DAC
3.2. Liczba atrybutów (rozmiar)
NOA = NIV + DAC, gdzie NIV - atrybuty proste,
DAC - atrybuty typu klasy.
3.3. Liczba metod (rozmiar)
NOM = NHM+ NEM = NIM + NCM gdzie
NHM – metody prywatne NEM – metody publiczne NCM – metody statyczne NIM – metody niestatyczne
3.4. Łączenie metod i atrybutów (rozmiar) Sc = NOA + NOM
3.5. Suma złoŜoności metod w klasie (struktura logiczna i rozmiar)
W M C c
i i=
n=
∑
1 ,
gdzie ci jest statyczną złoŜonością kaŜdej z i - metod (złoŜoność cyklomatyczna). JeŜeli ci jest równe 1, wtedy WMC jest równe liczbie metod n. WMC maleje przy wykorzystaniu polimorfizmu i dziedziczenia
3.6. Spójność klasy (połączenia atrybutów i metod )
L C O M a A m
m
j j
a
=
−
−
=
∑
(1 ( ))
1
1
µ
,
gdzie
{Mi} (i = 1,..,m) - zbiór metod w klasie oraz {Aj} - zbiór atrybutów (j = 1,..,a),
µ( Aj) - liczba metod związanych z danym atrybutem.
3.7. Stopień specjalizacji (rozmiar)- S oraz wielokrotne uŜycie klas (rozmiar)- U
U = liczba NadTypów całkowita liczba klas
,
S liczba PodTypów
=
liczba NadTypów
,Wartości U bliska 1 oraz S bliską 0 określają liniowy model dziedziczenia. Wartości U<<1 oraz S >>1 oznaczają poŜądaną wartość.
3.8. Liczba NadTypów (rozmiar) w drzewie dziedziczenia, czyli NOC.
3.9. Głębokość dziedziczenia, czyli liczba poziomów w drzewie dziedziczenia odniesiona do liczby klas, określająca zakres dziedziczenia (rozmiar)
.
calkowita liczba klas
=
∑
glebokosc dziedziczenia DIT1) 2)
3)
Metryka
Przykład
S (specialization) U (reuse) DIT
1* 1/3 → 0 3/4 → 1 (0+1+2+3)/4=1.5
2* 1/4 → 0 4/5 → 1 (0+0+0+0+(1+1+1+1)/4)/5=0.2 3 4/1 → ∝ 1/5 → 0 (0+1+1+1+1)/5=0.8
4 3/3 3/6 (0+1+1+2+3+3)/6=1.5
5 2/3 3/5 (0+0+1+(1+2)/2+1)/5=0.7
S liczba PodTypów
= liczba NadTypów
U = liczba NadTypów całkowita liczba klas
Przykłady 1 i 2 reprezentują ubogi schemat dziedziczenia.
calkowita liczba klas
=
∑
glebokosc dziedziczenia DIT4)
5)