Число классов – получателей сообщений данного класса (Fan-out, Fan-in)



Число классов – получателей сообщений данного класса (Fan -out, the number of other collaborating classes irrespective of the number of references) - число дуг в простейшей модели передачи сообщений, выходящих из вершины, соответствующей классу, т.е. число классов, к методам которых есть обращения в методах данного класса.

Для заданного модуля А, метрика Fan-out покажет количество классов которые используют модуль А, тогда как метрика Fan-in покажет количество модулей которое использует модуль А. Определение Fan-in - число вершин, из которых входят дуги в данную вершину в простейшей модели взаимодействия компонентов

2.5 Количество "взвешенных" методов на класс (WMC)

Количество взвешенных методов на класс (Weighted Methods Per Class - WMC) позволяет измерять сложность классов с учетом сложности его методов. Весом метода в этом случае называется количественная характеристика (метрика) сложности метода.

Рассмотрим простейший случай, когда сложность метода определяется количеством строк текста этого метода в программе. Пусть L[i] - это количество строк текста у метода с номером i, а всего в классе n методов. Тогда для этой метрики измерения методов сложность класса Point вычисляется следующим образом:

 

WMC(Point) = L[0] + ... + L[n]

 

Как можно заметить, метрика WMC для измерения сложности класса зависит от способа измерения сложности методов этого класса.

Часто используется разновидность метрики WMC, когда все методы имеют одинаковый вес. Она называется "Количество методов на класс" (Number of Methods - NM). Используется метрика NM для измерения сложности классов на ранних этапах разработки системы, когда еще нет детальной информации о методах. Возможно, что класс со слишком большим количеством методов на этапе проектирования системы следует разделить на несколько классов.

Вероятное влияние метрики на характеристики системы:

· С помощью метрики WMC можно оценить сложность класса. Это позволит оценить, сколько времени и усилий необходимо будет затратить его на разработку и сопровождение учитывая сложность его методов.

· Большое количество методов базового класса потенциально распространяет свое влияние и на потомков этого класса. Поскольку все потомки наследуют все методы этого класса, то усложнение методов базового класса может отразится на потомках класса.

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

 

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

Глубина дерева наследования (DIT)

Глубина дерева наследования (Depth of Inheritance Tree - DIT) позволяет определить количество классов-предков, которые потенциально оказывают влияние на данный класс.

Вероятное влияние метрики DIT на характеристики системы:

· Большое количество предков делает поведение класса менее предсказуемым.

· Глубокие деревья наследования усложняют проект, поскольку включают большее число атрибутов и методов в классах-потомках.

· Чем глубже положение класса в дереве иерархии, тем больше повторное использование его методов.

Глубина класса в дереве наследования – длина пути в простейшей модели иерархии наследования классов от корня до вершины, соответствующей рассматриваемому классу. Шкала значений абсолютная.

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

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

Пример:

Рассмотрим программу:

class GrandFather {};

class Father : public GrandFather {};

class Son : public Father {}

 

В этом случае:

· DIT(GrandFather) = 0

· DIT(Father) = 1

· DIT(Son) = 2.

Количество потомков (NOC)

Количество потомков (Number Of Children - NOC) позволяет определить количество непосредственных потомков данного класса. Число дуг в простейшей модели иерархии наследования классов, выходящих из вершины, соответствующей классу.

Шкала значений: абсолютная.

Вероятное влияние метрики на характеристики системы:

· Чем больше потомков у класса, тем больше повторное использование его методов. Это положительное свойство.

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

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

Пример:

Рассмотрим программу:

class GrandFather {};

class Father : public GrandFather {};

class Mother : public GrandFather {};

class Son : public Father, Mother{}

 

В этом случае:

· NOC(GrandFather) = 2

· NOC(Father) = 1

· NOC(Mother) = 1

· NOC(Son) =0.


Дата добавления: 2021-03-18; просмотров: 99; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!