Зависимость изменения между классами

 

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

CDBC зависит от:

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

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

Возможные типы отношений приведены в табл. 14.3, где п – количество методов класса СС, – количество методов СС, потенциально затрагиваемых изменением.

Таблица 14.3.Вклад отношений между клиентом и сервером в зависимость изменения

Тип отношения
SC не используется классом СС
SC – класс экземплярной переменной в классе СС n
Локальные переменные типа SC используются внутри /-методов класса СС j
SC является суперклассом СС n
SC является типом параметра для/-методов класса СС j
СС имеет доступ к глобальной переменной класса SC n

 

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

Метрика для вычисления степени CDBC имеет вид:

;

CDBC(CC, SC) = min(n, A).

Пути минимизации CDBC:

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

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

Локальность данных

 

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

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

Будем использовать терминологию языка C++. Обозначим как Mi(1 i n) методы класса. В их число не будем включать методы чтения/записи экземплярных переменных. Тогда формулу для вычисления локальности данных можно записать в виде:

,

где:

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

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

Для обеспечения надежности оценки здесь исключены все вспомогательные переменные, определенные в Mi , – они не играют важной роли в проектировании.

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








Дата добавления: 2019-02-07; просмотров: 351;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.