Ilekroć słyszę o próbach powiązania pewnego rodzaju metryki opartej na kodzie z defektami oprogramowania, pierwszą rzeczą, o której myślę, jest cykliczność złożoności McCabe . Różne badania wykazały, że istnieje związek między wysoką złożonością cykliczną a liczbą wad. Jednak inne badania, w których analizowano moduły o podobnej wielkości (pod względem linii kodu), wykazały, że może nie istnieć korelacja.
Dla mnie zarówno liczba linii w module, jak i złożoność cykliczna mogą służyć jako dobre wskaźniki możliwych defektów, a może większe prawdopodobieństwo, że defekty zostaną wstrzyknięte, jeśli zostaną dokonane modyfikacje modułu. Moduł (szczególnie na poziomie klasy lub metody) o dużej złożoności cyklicznej jest trudniejszy do zrozumienia, ponieważ w kodzie znajduje się duża liczba niezależnych ścieżek. Moduł (ponownie, zwłaszcza na poziomie klasy lub metody) z dużą liczbą linii jest również trudny do zrozumienia, ponieważ wzrost linii oznacza, że dzieje się więcej rzeczy. Istnieje wiele narzędzi do analizy statycznej, które obsługują obliczanie obu linii kodu źródłowego w oparciu o określone reguły i złożoność cykliczną, wydaje się, że uchwycenie ich pochwyciłoby nisko wiszący owoc.
Te środki złożoność Halstead może również być interesujące. Niestety ich ważność wydaje się nieco dyskutowana, więc nie musiałbym na nich polegać. Jednym z mierników Halsteada jest oszacowanie defektów na podstawie nakładu pracy lub objętości (związek między długością programu pod względem całkowitej liczby operatorów i operandów a słownictwem programu pod względem różnych operatorów i operatorów).
Istnieje również grupa metryk znanych jako Metryki CK. Pierwsza definicja tego pakietu metryk wydaje się być w dokumencie zatytułowanym A Metrics Suite for Object Oriented Design autorstwa Chidamber i Kemerer. Definiują metody ważone według klasy, głębokość drzewa dziedziczenia, liczbę dzieci, sprzężenie między klasami obiektów, reakcję na klasę i brak spójności metod. Ich praca zawiera metody obliczeniowe, a także opis sposobu ich analizy.
Jeśli chodzi o literaturę akademicką analizującą te metryki, być może zainteresuje Cię analiza empiryczna metryk CK dla złożoności projektowania obiektowego: implikacje defektów oprogramowania, autor: Ramanath Subramanyam i MS Krishna. Przeanalizowali trzy z sześciu wskaźników CK (metody ważone na klasę, sprzężenie między sklasyfikowanym obiektem i głębokość drzewa dziedziczenia). Przeglądając gazetę, wydaje się, że okazało się, że są to potencjalnie prawidłowe wskaźniki, ale należy je interpretować ostrożnie jako „poprawę”, która może prowadzić do innych zmian, które również prowadzą do większego prawdopodobieństwa wystąpienia wad.
Analiza empiryczna zorientowanych obiektowo wskaźników projektowych do prognozowania błędów o wysokim i niskim poziomie ważności, opracowana przez Yuminga Zhou i Haretona Leunga, również analizuje wskaźniki CK. Ich podejście polegało na ustaleniu, czy potrafią przewidzieć defekty na podstawie tych wskaźników. Odkryli, że wiele wskaźników CK, z wyjątkiem głębokości drzewa dziedziczenia i liczby dzieci) miało pewien poziom istotności statystycznej w przewidywaniu obszarów, w których można zlokalizować defekty.
Jeśli masz członkostwo w IEEE, polecam wyszukiwanie w Transakcjach IEEE dotyczących inżynierii oprogramowania w celu uzyskania dalszych publikacji naukowych i oprogramowania IEEE w celu uzyskania bardziej realistycznych i stosowanych raportów. ACM może również mieć odpowiednie publikacje w swojej bibliotece cyfrowej .