Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



 

Д. Биемен и Б. Кенг предложили метрики связности класса, которые основаны на прямых и косвенных соединениях между парами методов [15].

Если существуют общие экземплярные переменные (одна или несколько), используемые в паре методов, то говорят, что эти методы соединены прямо.

Пара методов может быть соединена косвенно, через другие прямо соединенные методы.

На рис. 3.2 представлены отношения между элементами класса Stack. Прямоугольниками обозначены методы класса, а овалами — экземплярные переменные. Связи показывают отношения использования между методами и переменными.

Рис. 3. 2. Отношения между элементами класса Stack

 

методы Stack, Push, Pop, Vtop и IsEmpty- попарно прямо соединены.

методы Size и Pop соединены косвенно: Size соединен прямо с Push, который, в свою очередь, прямо соединен с Pop.

Метод Stack является конструктором класса, то есть функцией инициализации. Обычно конструктору доступны все экземплярные переменные класса, он использует эти переменные совместно со всеми другими методами. Следовательно, конструкторы создают соединения и между такими методами, которые никак не связаны друг с другом. Поэтому ни конструкторы, ни деструкторы здесь не учитываются. Связи между конструктором и экземплярными переменными на рис. 3.2 показаны пунктирными линиями.

Для формализации модели вводятся понятия абстрактного метода и абстрактного класса.

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

Экземплярная переменная прямо используется методом М , если она появляется в методе как лексема данных. Экземплярная переменная может быть определена в том же классе, что и М, или же в родительском классе этого класса.

DU(M) - множество экземплярных переменных, прямо используемых методом М

Экземплярная переменная косвенно используется методом М, если:

1)экземплярная переменная прямо исполь-зуется другим методом М', который вы-зывается (прямо или косвенно) из метода М;

2) экземплярная переменная, прямо используемая методом М', находится в том же объекте, что и М.

IU(М) - множество экземплярных переменных, косвенно используемых методом М

Количественно абстрактный метод формируется по выражению:

AM (М) = DU (М) IU (М).

Абстрактный класс АС(С) это представление реального класса С в виде совокупности абстрактных методов, причем каждый абстрактный метод соответствует видимому методу класса С.

Количественно абстрактный класс формируется по выражению:

АС (С) = [[AM (M) | M V (С)]],

где V(C) множество всех видимых методов в классе С и в классах — предках для С.

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

Локальный абстрактный класс LAC(C) это совокупность абстрактных методов, где каждый абстрактный метод соответствует видимому методу, определенному только внутри класса С.

Количественно абстрактный класс формируется по выражению:

LAC(C)=[[AM(M)|M LV(C)]],

где LV(C) — множество всех видимых методов, определенных в классе С.

 

Пример: Абстрактный класс для стека, приведенного в табл. 3.2, имеет вид:

AC (Stack) = [[{top}, {size}, {array, top}, {array, top, size}, {pop}]].

Поскольку класс Stack не имеет суперкласса, то справедливо:

AC (Stack) = LAC (Stack)

 

 

Пусть NP(C) — общее количество пар абстрактных методов в AC(C). (Количественно абстрактном классе)

NP определяет максимально возможное количество прямых или косвенных соединений в классе.

Если в классе С имеются N методов, тогда NP(C) = N*(N- l)/2.

Обозначим:

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

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

 

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

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

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

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

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

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

LCC(C)> =TCC(C).

Пример: Для класса Stack метрики связности имеют следующие значения:

(видят методы 4*3/2+1(POP зывает

IcT…)

TCC(Stack)=7/10=0, 7

LCC(Stack)=10/10=l

Метрика ТСС показывает, что 70% видимых методов класса Stack соединены прямо, а метрика LCC показывает, что все видимые методы класса Stack соединены прямо или косвенно.

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

Сцепление объектов

 

Рассмотрим объектно-ориентированные метрики сцепления, предложенные М. Хитцем и Б. Монтазери [38].


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 719; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь