3 какие свойства объектно ориентированных программ не учитывают метрики чидамбера и кемерера

При конструировании объектно-ориентированных программных систем значительная часть затрат приходится на создание визуальных моделей.

Решение данной задачи требует введения специального метрического аппарата.

Метрические особенности объектно-ориентированных программных систем

Объектно-ориентированные метрики вводятся с целью:

q улучшить понимание качества продукта;

q оценить эффективность процесса конструирования;

q улучшить качество работы на этапе проектирования.

выделяют пять характеристик объектно-ориентированных систем:

— способы абстрагирования объектов.

Эти характеристики оказывают максимальное влияние на объектно-ориентированные метрики.

Локализация

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

В классических методах, где используется функциональная декомпозиция, информация локализуется вокруг функций.

В объектно-ориентированной среде информация группируется внутри классов или объектов (инкапсуляцией как данных, так и процессов).

Лекция 3. Метрология, стандартизация и сертификация. 2021

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

Так как в объектно-ориентированной системе базовым элементом является класс, то локализация здесь основывается на объектах.

Метрики, отображающие способы взаимодействия классов, должны быть приспособлены к отношениям «один-к-одному». «один-ко-многим», «многие-ко-многим».

Инкапсуляция

Инкапсуляция — упаковка (связывание) совокупности элементов.

В объектно-ориентированных системах инкапсулируются обязанности класса, представляемые его свойствами (а для агрегатов — и свойствами других классов), операциями и состояниями.

Инкапсуляция переводит измерения на более высокий уровень абстракции (пример — метрика «количество операций на класс»).

Информационная закрытость

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

Метрики, измеряющие степень достигнутой закрытости, отображают качество объектно-ориентированного проекта.

Наследование

Наследование — механизм, обеспечивающий тиражирование обязанностей одного класса в другие классы. Наследование распространяется через все уровни иерархии классов.

Объектно-ориентированные метрики (количество детей — потомков класса, количество родителей, высота класса в иерархии наследования).

Абстракция

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

объектно-ориентированные метрики должны представлять абстракции в терминах измерений класса.

Примеры: количество экземпляров класса в приложении, количество родовых классов на приложение, отношение количества родовых к количеству неродовых классов.

Визуализация всех возможных пифагоровых троек [3Blue1Brown]

Эволюция мер связи для объектно-ориентированных программных систем

классической мерой сложности внутренних связей модуля является связность , а классической мерой сложности внешних связей — сцепление.

Рассмотрим развитие этих мер применительно к объектно-ориентированным системам.

Связность объектов

В классическом методе Л. Констентайна и Э. Йордана определены семь типов связности.

1. Связность по совпадению. В модуле отсутствуют явно выраженные внутренние связи.

2. Логическая связность. Части модуля объединены по принципу функционального подобия.

3. Временная связность. Части модуля не связаны, но необходимы в один и тот же период работы системы.

4. Процедурная связность. Части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения.

5. Коммуникативная связность. Части модуля связаны по данным (работают с одной и той же структурой данных).

6. Информационная (последовательная) связность. Выходные данные одной части используются как входные данные в другой части модуля.

7. Функциональная связность. Части модуля вместе реализуют одну функцию. (обладает наибольшей связностью)

8. Объектная связность. Каждая операция обеспечивает функциональность, которая предусматривает, что все свойства объекта будут модифицироваться, отображаться и использоваться как базис для предоставления услуг

Высокая связность — желательная характеристика, так как она означает, что объект представляет единую часть в проблемной области, существует в едином пространстве.

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

Метрики для вычисления связности классов.

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

Л. Отт и Б. Мехра разработали модель секционирования класса.

Секционирование основывается на экземплярных переменных класса.

Для каждого метода класса получают ряд секций, а затем производят объединение всех секций класса.

Измерение связности основывается на количестве лексем данных (data tokens), которые появляются в нескольких секциях и «склеивают» секции в модуль.

Читайте также:
Топ программ для сметчиков

Под лексемами данных здесь понимают определения констант и переменных или ссылки на константы и переменные.

Базовым понятием методики является секция данных. Она составляется для каждого выходного параметра метода.

Секция данных — это последовательность лексем данных в операторах, которые требуются для вычисления этого параметра.

Например, на рис. 3.1 представлен программный текст метода SumAndProduct. Все лексемы, входящие в секцию переменной SumN, выделены рамками. Сама секция для SumN записывается как следующая последовательность лексем:

Рис. 3.1. Секция данных для переменной SumN

индекс в «12» указывает на второе вхождение лексемы «1» в текст метода. Аналогичным образом определяется секция для переменной ProdN:

Для определения отношений между секциями данных можно показать профиль секций данных в методе. Для нашего примера профиль секций данных приведен в табл. 3.1.

Таблица 3.1. Профиль секций данных для метода SumAndProduct

SumN ProdN Оператор
procedure SumAndProduct
(N iinteger;
Var SumN, ProdN iinteger)
var
I: integer;
begin
SumN: =0
ProdN: =1
for I: =1 to N do begin
SumN: =SumN+l
ProdN: =ProdN*l
end
end;

в столбце переменной для каждой секции указывается количество лексем из i-й строки метода, которые включаются в секцию.

Еще одно базовое понятие методики — секционированная абстракция. Секционированная абстракция — это объединение всех секций данных метода. Например, секционированная абстракция метода SumAndProduct имеет вид

Введем главные определения.

Секционированной абстракцией класса (Class Slice Abstraction) CSA(C) называют объединение секций всех экземплярных переменных класса. Полный набор секций составляют путем обработки всех методов класса.

Склеенными лексемами называют те лексемы данных, которые являются элементами более чем одной секции данных.

Сильно склеенными лексемами называют те склеенные лексемы, которые являются элементами всех секций данных.

Сильная связность по данным ( StrongData Cohesion) — это метрика, основанная на количестве лексем данных, входящих во все секции данных для класса.

Иначе говоря, сильная связность по данным учитывает количество сильно склеенных лексем в классе С, она вычисляется по формуле:

SG(CSA(C)) — объединение сильно склеенных лексем каждого из методов класса С,

лексемы(С) — множество всех лексем данных класса С.

Т.о., класс без сильно склеенных лексем имеет нулевую сильную связность по данным.

Слабая связность по данным

(Weak Data Cohesion) — метрика, которая оценивает связность, базируясь на склеенных лексемах.

Склеенные лексемы не требуют связывания всех секций данных, поэтому данная метрика определяет более слабый тип связности.

Слабая связность по данным вычисляется по формуле:

где G(CSA(C)) — объединение склеенных лексем каждого из методов класса.

Класс без склеенных лексем не имеет слабой связности по данным.

Наиболее точной метрикой связности между секциями данных является клейкость данных (Data Adhesiveness) .

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

Приведем пример. Применим метрики к классу, профиль секций которого показан в табл. 3.2.

Таблица 3.2. Профиль секций данных для класса Stack

array top size Класс Stack
1 1 1 class Stack
public:
Stack(int s)
2 2 size=s;
2 2 array=new int [size];
top=0; >
int IsEmpty ()
return top==0>;
int Size ()
return size>;
intVtop()
3 3 return array [top-1]; >
void Push (int item)
2 2 2 if (top= =size)
printf (» Empty stack. n» );
else
3 3 3 array [top++]=item; >
int Pop ()
if (IsEmpty ())
printf (» Full stack. n» );
else
—top; >
>;

в столбце переменной для каждой секции указывается количество лексем из i-й строки метода, которые включаются в секцию.

Очевидно, что CSA(Stack) включает три секции с 19 лексемами, имеет 5 сильно склеенных лексем и 12 склеенных лексем.

Расчеты по рассмотренным метрикам дают следующие значения:

Читайте также:
Как называется программа для поиска человека

SDC(CSA(Stack)) = 5/19 = 0, 26

WDC(CSA(Stack)) = 12/19 = 0, 63

DA(CSA(Stack)) =(7*2 + 5*3)/(19*3) = 0, 51

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

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

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

Локальность данных 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.

Метрики Лоренца и Кидда

Коллекция метрик Лоренца и Кидда — результат практического, промышленного подхода к оценке ОО-проектов [45].

Метрики для ОО-проектов

Основными задачами менеджера проекта являются планирование, координация, отслеживание работ и управление программным проектом.

Одним из ключевых вопросов планирования является оценка размера программного продукта. Прогноз размера продукта обеспечивают следующие ОО-метрики.

Набор метрик Фернандо Абреу

Набор метрик MOOD (Metrics for Object Oriented Design), предложенный Ф. Абреу в 1994 году, — другой пример академического подхода к оценке качества ОО-проектирования [6]. Основными целями MOOD-набора являются:

1) покрытие базовых механизмов объектно-ориентированной парадигмы, таких как инкапсуляция, наследование, полиморфизм, посылка сообщений;

2) формальное определение метрик, позволяющее избежать субъективности измерения;

3) независимость от размера оцениваемого программного продукта;

4) независимость от языка программирования, на котором написан оцениваемый продукт.

Набор MOOD включает в себя следующие метрики:

1) фактор закрытости метода (МНF);

2) фактор закрытости свойства (AHF);

3) фактор наследования метода (MIF);

4) фактор наследования свойства (AIF);

5) фактор полиморфизма (POF);

6) фактор сцепления (СОF).

Каждая из этих метрик относится к основному механизму объектно-ориентированной парадигмы: инкапсуляции (МНF и АНF), наследованию (MIF и AIF), полиморфизму (POF) и посылке сообщений (СОF). В определениях MOOD не используются специфические конструкции языков программирования.

Метрики инкапсуляции

К метрикам инкапсуляции относятся: «Недостаток связности в методах LCOM», «Процент публичных и защищенных PAP (Percent Public and Protected)» и «Публичный доступ к компонентным данным PAD (Public Access to Data members)».

Метрики наследования

К метрикам наследования относятся «Количество корневых классов NOR (Number Of Root classes)», «Коэффициент объединения по входу FIN», «Количество детей NOC» и «Высота дерева наследования DIT».

Метрики полиморфизма

Рассмотрим следующие метрики полиморфизма: «Процентное количество не переопределенных запросов OVR», «Процентное количество динамических запросов DYN», «Скачок класса Bounce-С» и «Скачок системы Bounce-S».

Метрики объектно-ориентированных программных систем

При конструировании объектно-ориентированных программных систем значительная часть затрат приходится на создание визуальных моделей.

Решение данной задачи требует введения специального метрического аппарата.

Источник: lektsia.com

Использование метрик Чидамбера-Кемерера

Поскольку основу логического представления ПО образует структура классов, для оценки ее качества удобно использовать метрики Чидамбера-Кемерера. Пример расчета метрик для структуры, показанной на рис. 14.4, представлен в табл. 14.4.

Рис. 14.4. Структура классов для расчета метрик Чидамбера-Кемерера

Читайте также:
Какие программы нужны для создания игр на unity

Прокомментируем результаты расчета. Класс Class А имеет три метода (op_al(), ор_а2(), ор_аЗ()), трех детей (Class В, Class С, Class D) и является корневым классом. Поэтому метрики WMC, NOC и DIT имеют, соответственно, значения 3, 3 и 0.

Метрика СВО для класса Class А равна 1, так как он использует один метод из другого класса (метод ор_е() из класса Class E, он вызывается из метода ор_аЗ()). Метрика RFC для класса Class А равна 4, так как в ответ на прибытие в этот класс сообщений возможно выполнение четырех методов (три объявлены в этом классе, а четвертый метод ор_е() вызывается из ор_аЗ()).

Таблица 14.4. Пример расчета метрик Чидамбера-Кемерера

Имя класса WMC DIT NOC СВО RFC LCOM
Class A
Class В
Class С
Class D

Для вычисления метрики LCOM надо определить количество пар методов класса. Оно рассчитывается по формуле

где т — количество методов класса.

Поскольку в классе три метода, возможны три пары: op_al()ор_а3() и ор_а2()

q количество свойств (вместе с приватными и наследуемыми экземплярными свойствами), которые инкапсулируются классом.

Метрика WMC Чидамбера и Кемерера также является взвешенной метрикой размера класса.

Большие значения CS указывают, что класс имеет слишком много обязанностей. Они уменьшают возможность повторного использования класса, усложняют его реализацию и тестирование.

При определении размера класса унаследованным (публичным) операциям и свойствам придают больший удельный вес. Причина — приватные операции и свойства обеспечивают специализацию и более локализованы в проекте.

Могут вычисляться средние количества свойств и операций класса. Чем меньше среднее значение размера, тем больше вероятность повторного использования класса.

Рекомендуемое значение CS 20 методов.

Источник: megalektsii.ru

Метрики для объектно-ориентированного тестирования

Рассмотрим проектные метрики, которые, по мнению Р. Байндера (Binder), прямо влияют на тестируемость ОО-систем [17]. Р. Байндер сгруппировал эти метрики в три категории, отражающие важнейшие проектные характеристики.

Метрики инкапсуляции

К метрикам инкапсуляции относятся: «Недостаток связности в методах LCOM», «Процент публичных и защищенных PAP (Percent Public and Protected)» и «Публичный доступ к компонентным данным PAD (Public Access to Data members)».

Метрика 1: Недостаток связности в методах LCOM

Чем выше значение LCOM, тем больше состояний надо тестировать, чтобы гарантировать отсутствие побочных эффектов при работе методов.

Метрика 2: Процент публичных и защищенных PAP (Percent Public and Protected)

Публичные свойства наследуются от других классов и поэтому видимы для этих классов. Защищенные свойства являются специализацией и приватны для определенного подкласса. Эта метрика показывает процент публичных свойств класса. Высокие значения РАР увеличивают вероятность побочных эффектов в классах. Тесты должны гарантировать обнаружение побочных эффектов.

Метрика 3: Публичный доступ к компонентным данным PAD (Public Access to Data members)

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

Метрики наследования

К метрикам наследования относятся «Количество корневых классов NOR (Number Of Root classes)», «Коэффициент объединения по входу FIN», «Количество детей NOC» и «Высота дерева наследования DIT».

Метрика 4: Количество корневых классов NOR (Number Of Root classes)

Эта метрика подсчитывает количество деревьев наследования в проектной модели. Для каждого корневого класса и дерева наследования должен разрабатываться набор тестов. С увеличением NOR возрастают затраты на тестирование.

Метрика 5: Коэффициент объединения по входу FIN

В контексте О-О-смистем FIN фиксирует множественное наследование. Значение FIN > 1 указывает, что класс наследует свои свойства и операции от нескольких корневых классов. Следует избегать FIN > 1 везде, где это возможно.

Метрика 6: Количество детей NOC

Название говорит само за себя. Метрика заимствована из набора Чидамбера-Кемерера.

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

Источник: studopedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru