Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kratkaya_versia_2.docx
Скачиваний:
40
Добавлен:
19.09.2019
Размер:
1.12 Mб
Скачать

59. Объектно-ориентированные метрики: связность по методам

Методику вычисления метрик связности по методам предложили Д. Биемен и Б. Кенг. Эта методика основывается на прямых и косвенных соединениях между парами методов: если существуют общие экземплярные переменные, используемые в паре методов, то эти методы соединены прямо; в противном случае пара методов может быть соединена косвенно, через другие прямо соединенные методы. Для формализации этой методики введены понятия абстрактного метода и абстрактного класса.

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

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

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

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

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

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

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

Абстрактный класс AC(C) – представление реального класса C в виде совокупности абстрактных методов, причем каждый абстрактный метод соответствует видимому методу класса С. Количественно абстрактный класс формируется по выражению:

Где V(C) – множество всех видимых методов в классе C (включая унаследованные методы).

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

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

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

Пусть NP(C) – общее количество пар абстрактных методов в AC(C). NP определяет максимально возможное количество прямых или косвенных соединений в классе. Если в классе С имеются N методов, тогда

.

60. Объектно-ориентированные метрики: сцепление объектов и локальность данных

Зависимость изменения между классами (Change dependency between classes – CDBC) определяет потенциальный объем изменений, необходимых после модификации класса-сервера (server class – SC) на этапе сопровождения. До тех пор, пока реальное количество необходимых изменений класса-клиента (client class – СС) неизвестно, CDBC указывает количество методов, на которые влияет изменение SC.

Значение этой метрики зависит от:

  • области видимости изменяемого класса-сервера внутри класса-клиента (определяется типом отношения между CS и СС);

  • вида доступа СС к CS (интерфейсный доступ или доступ реализации).

С точки зрения авторов: если класс SC является «зрелой» абстракцией, то предполагается, что его интерфейс более стабилен, чем его реализация. Таким образом, многие изменения в реализации SC могут выполняться без влияния на его интерфейс. Поэтому вводится фактор стабильности интерфейса для класса-сервера, он обозначается как k (0<k<1). Вклад доступа к интерфейсу в зависимость изменения можно учесть умножением на (1-k).

Вычисление метрики CDBC осуществляется по формулам:

Пути минимизации метрики CDBC:

  • ограничение доступа к интерфейсу класса-сервера;

  • ограничение видимости классов-серверов (спецификаторами доступа public, protected, private).

Локальность данных (Locality of data – LD) – метрика, отражающая качество абстракции, реализуемой классом. Чем выше локальность данных, тем выше самодостаточность класса. Эта характеристика оказывает сильное влияние на такие внешние характеристики, как повторная используемость и тестируемость класса. Метрика LD представляется как отношение количества локальных данных в классе к общему количеству данных, используемых этим классом.

Пусть Mi (1≤i≤n) – методы класса, в число которых не включаются методы чтения/записи экземплярных переменных. Тогда формула вычисления локальности имеет вид:

где Li - множество локальных переменных, к которым имеют доступ методы Mi (прямо или с помощью методов чтения/записи). Такими переменными являются: непубличные экземплярные переменные класса; унаследованные защищенные экземплярные переменные их суперклассов; статические переменные, локально определенные в Mi.

Ti – множество всех переменных, используемых в Mi, кроме динамических локальных переменных, определенных в Mi.

Для обеспечения надежности оценки здесь исключены все вспомогательные переменные, определенные в Mi, – они не играют важной роли в проектировании. Защищенная экземплярная переменная, которая унаследована классом С, является локальной переменной для его экземпляра (и следовательно, является элементом Li), даже если она не объявлена в классе С. Использование такой переменной методами класса не вредит локальности данных, однако нежелательно, если мы заинтересованы уменьшить значение CDBC.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]