Метрические особенности ООП систем, страница 2
Описание файла
PDF-файл из архива "Метрические особенности ООП систем", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Склеенные лексемы не требуют связывания всех секцийданных, поэтому данная метрика определяет более слабый тип связности. Слабая связность поданным вычисляется по формуле:G (CSA (C )),WDC(C ) =лексемы(C )где G(CSA(C)) — объединение склеенных лексем каждого из методов класса. Класс без склеенныхлексем не имеет слабой связности по данным. Наиболее точной метрикой связности междусекциями данных является клейкость данных (Data Adhesiveness). Клейкость данных определяетсякак отношение суммы из количеств секций, содержащих каждую склеенную лексему, кпроизведению количества лексем данных в классе на количество секций данных.
Метрикавычисляется по формуле:∑ d ∈ G(CSA(C )" d ∈ Секции .DA(C ) =лексемы(C ) × CSA (C )Метрики связности по методамД. Биемен и Б. Кенг предложили метрики связности класса, которые основаны на прямых икосвенных соединениях между парами методов [15]. Если существуют общие экземплярные3переменные (одна или несколько), используемые в паре методов, то говорят, что эти методысоединены прямо. Пара методов может быть соединена косвенно, через другие прямосоединенные методы.Обычно конструктору доступны все экземплярные переменные класса, он использует этипеременные совместно со всеми другими методами.
Следовательно, конструкторы создаютсоединения и между такими методами, которые никак не связаны друг с другом. Поэтому никонструкторы, ни деструкторы здесь не учитываются.Для формализации модели вводятся понятия абстрактного метода и абстрактного класса.Абстрактный метод АМ(М) — это представление реального метода М в виде множестваэкземплярных переменных, которые прямо или косвенно используются методом.Экземплярная переменная прямо используется методом М, если она появляется в методе каклексема данных.
Экземплярная переменная может быть определена в том же классе, что и М, илиже в родительском классе этого класса. Множество экземплярных переменных, прямоиспользуемых методом М, обозначим как 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) — множество всех видимых методов, определенных в классе С.Абстрактный класс для стека, приведенного в табл.
14.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. Обозначим: NDC(C) — количество прямых соединений AC(Q; NIC(C) — количество косвенных соединений в АС(С).Тогда метрики связности класса можно представить в следующем виде: сильная связность класса (Tight Class Cohesion (ТСС)) определяется относительнымколичеством прямо соединенных методов:ТСС (С) = NDC (С) / NP (С); слабая связность класса (Loose Class Cohesion (LCC)) определяется относительнымколичеством прямо или косвенно соединенных методов:LCC (С) = (NDC (С) + NIC (С)) / NP (С).Очевидно, что всегда справедливо следующее неравенство:LCC(C)>=TCC(C).4Метрики ТСС и LCC индицируют степень связанности между видимыми методами класса.Видимые методы либо определены в классе, либо унаследованы им.
Конечно, очень полезныметрики связности для видимых методов, которые определены только внутри класса — ведь здесьисключается влияние связности суперкласса. Очевидно, что метрики локальной связности классаопределяются на основе локального абстрактного класса. Отметим, что для локальной связностиэкземплярные переменные и вызываемые методы могут включать унаследованные переменные.Сцепление объектовВ классическом методе Л. Констентайна и Э.
Йордана определены шесть типов сцепления,которые ориентированы на процедурное проектирование [77].Принципиальное преимущество объектно-ориентированного проектирования в том, чтоприрода объектов приводит к созданию слабо сцепленных систем. Фундаментальное свойствообъектно-ориентированного проектирования заключается в скрытости содержания объекта. Какправило, содержание объекта невидимо внешним элементам. Степень автономности объектадостаточно высока. Любой объект может быть замещен другим объектом с таким же интерфейсом.Тем не менее наследование в объектно-ориентированных системах приводит к другой формесцепления.
Объекты, которые наследуют свойства и операции, сцеплены с их суперклассами.Изменения в суперклассах должны проводиться осторожно, так как эти измененияраспространяются во все классы, которые наследуют их характеристики.Таким образом, сами по себе объектно-ориентированные механизмы не гарантируютминимального сцепления. Конечно, классы — мощное средство абстракции данных. Их введениеуменьшило поток данных между модулями и, следовательно, снизило общее сцепление внутрисистемы. Однако количество типов зависимостей между модулями выросло. Появилисьотношения наследования, делегирования, реализации и т.
д. Более разнообразным стал составмодулей в системе (классы, объекты, свободные функции и процедуры, пакеты). Отсюда вывод:необходимость измерения и регулирования сцепления в объектно-ориентированных системахобострилась.Рассмотрим объектно-ориентированные метрики сцепления, предложенные М. Хитцем и Б.Монтазери [38].Зависимость изменения между классамиЗависимость изменения между классами CDBC (Change Dependency Between Classes)определяет потенциальный объем изменений, необходимых после модификации класса-сервераSC (server class) на этапе сопровождения.
До тех пор, пока реальное количество необходимыхизменений класса-клиента СС (client class) неизвестно, CDBC указывает количество методов, накоторые влияет изменение SC.CDBC зависит от: области видимости изменяемого класса-сервера внутри класса-клиента (определяется типомотношения между CS и СС); вида доступа СС к CS (интерфейсный доступ или доступ реализации).Возможные типы отношений приведены в табл. 14.3, где п — количество методов класса СС,α — количество методов СС, потенциально затрагиваемых изменением.Таблица 14.3. Вклад отношений между клиентом и сервером в зависимость измененияТип отношенияSC не используется классом ССSC — класс экземплярной переменной в классе ССЛокальные переменные типа SC используются внутри /-методов класса ССSC является суперклассом ССSC является типом параметра для/-методов класса СССС имеет доступ к глобальной переменной класса SCα0njnjnКонечно, здесь предполагается, что те элементы класса-сервера SC, которые доступны классу5клиенту СС, являются предметом изменений.
Авторы исходят из следующей точки зрения: есликласс SC является «зрелой» абстракцией, то предполагается, что его интерфейс более стабилен,чем его реализация. Таким образом, многие изменения в реализации SC могут выполняться безвлияния на его интерфейс. Поэтому вводится фактор стабильности интерфейса для класса-сервера,он обозначается как к (0 < k < 1). Вклад доступа к интерфейсу в зависимость изменения можноучесть умножением на (1 - k).Метрика для вычисления степени CDBC имеет вид:A=∑ α+ (1 − k ) × ∑ α;iiДоступ iк интерфейсуДоступ iк реализацииCDBC(CC, SC) = min(n, A).Пути минимизации CDBC:1) ограничение доступа к интерфейсу класса-сервера;2) ограничение видимости классов-серверов (спецификаторами доступа public, protected,private).Локальность данныхЛокальность данных LD (Locality of Data) — метрика, отражающая качество абстракции,реализуемой классом.
Чем выше локальность данных, тем выше самодостаточность класса. Этахарактеристика оказывает сильное влияние на такие внешние характеристики, как повторнаяиспользуемость и тестируемость класса.Метрика LD представляется как отношение количества локальных данных в классе к общемуколичеству данных, используемых этим классом.Будем использовать терминологию языка C++. Обозначим как Mi(1 ≤ i ≤ n) методы класса. В ихчисло не будем включать методы чтения/записи экземплярных переменных.
Тогда формулу длявычисления локальности данных можно записать в виде:aLD =∑Li =1ai∑Ti =1,iгде: Li(1 ≤ i ≤ n) — множество локальных переменных, к которым имеют доступ методы Mi(прямо или с помощью методов чтения/записи). Такими переменными являются:непубличные экземплярныё переменные класса; унаследованные защищенныеэкземплярныё переменные их суперклассов; статические переменные, локальноопределенные в Mi ; Ti(1 ≤ i ≤ n) — множество всех переменных, используемых в Mi, кроме динамическихлокальных переменных, определенных в Mi.Для обеспечения надежности оценки здесь исключены все вспомогательные переменные,определенные в Mi , — они не играют важной роли в проектировании.Защищенная экземплярная переменная, которая унаследована классом С, является локальнойпеременной для его экземпляра (и следовательно, является элементом Li), даже если она необъявлена в классе С.
Использование такой переменной методами класса не вредит локальностиданных, однако нежелательно, если мы заинтересованы уменьшить значение CDBC.Набор метрик Чидамбера и КемерераВ 1994 году С. Чидамбер и К. Кемерер (Chidamber и Кетегег) предложили шесть проектныхметрик, ориентированных на классы [24]. Класс — фундаментальный элемент объектноориентированной (ОО) системы. Поэтому измерения и метрики для отдельного класса, иерархииклассов и сотрудничества классов бесценны для программного инженера, который долженоценить качество проекта.Набор Чидамбера-Кемерера наиболее часто цитируется в программной индустрии и научных6исследованиях.