Метрики связности по методам

Д. Биемен и Б. Кенг предложили метрики связности класса, которые основаны на прямых и косвенных соединениях между парами методов. Если существуют общие экземплярные переменные (одна или несколько), используемые в паре методов, то говорят, что эти методы соединены прямо. Пара методов может быть соединена косвенно, через другие прямо соединенные методы. Для формализации модели вводятся понятия абстрактного метода и абстрактного класса.

Абстрактный метод АМ(М) — это представление реального метода М ввиде множества экземплярных переменных, которые прямо или косвенно используются методом. Экземплярная переменная прямо используется методом М, если она появляется в методе как лексема данных. Экземплярная переменная косвенно используется методом М, если: экземплярная переменная прямо используется другим методом М', который вызывается (прямо или косвенно) из метода М; или экземплярная переменная, прямо используемая методом М', находится в том же объекте, что и М.

Абстрактный класс АС(С) — это представление реального класса С в виде совокупности абстрактных методов, причем каждый абстрактный метод соответствует видимому методу класса С. Отметим, что АМ-представления различных методов могут совпадать, поэтому в АС могут быть дублированные элементы. В силу этого АС записывается в форме мультимножества (двойные квадратные скобки рассматриваются как его обозначение).

Локальный абстрактный класс LAC(C) — это совокупность абстрактных методов, где каждый абстрактный метод соответствует видимому методу, определенному только внутри класса С. Пусть NP (C) — общее количество пар абстрактных методов в AC (C). NP определяет максимально возможное количество прямых или косвенных соединений в классе. Если в классе С имеются N методов, тогда NP (C) = N*(N- l)/2. Обозначим:

· NDC (C) — количество прямых соединений AC(Q;

· NIC (C) — количество косвенных соединений в АС(С).

Тогда метрики связности класса можно представить в следующем виде:

o сильная связность класса (Tight Class Cohesion (ТСС)) определяется относительным количеством прямо соединенных методов:

ТСС (С) = NDC (С) / NP (С);

o слабая связность класса (Loose Class Cohesion (LCC)) определяется относительным количеством прямо или косвенно соединенных методов:

LCC (С) = (NDC (С) + NIC (С)) / NP (С).

Очевидно, что всегда справедливо следующее неравенство:

LCC (C) >=TCC (C).

Метрики ТСС и LCC индицируют степень связанности между видимыми методами класса. Видимые методы либо определены в классе, либо унаследованы им. Конечно, очень полезны метрики связности для видимых методов, которые определены только внутри класса — ведь здесь исключается влияние связности суперкласса. Очевидно, что метрики локальной связности класса определяются на основе локального абстрактного класса. Отметим, что для локальной связности экземплярные переменные и вызываемые методы могут включать унаследованные переменные.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: