Ширина иерархии наследования (BIH)



The breadth of the inheritance hierarchy (BIH). Максимальное число вершин на одном уровне в простейшей модели наследования классов. Шкала значений: абсолютная. Эта метрика применима только в том случае, когда иерархия наследования представлена деревом.

Глубина класса в графе наследования (NL)

По существу, на практике используют две различные по смыслу метрики с этим названием.

· сумма длин всех путей в простейшей модели наследования от корневых вершин до рассматриваемой вершины;

· длина максимального пути в простейшей модели наследования от корневых вершин до рассматриваемой вершины.

 Nesting level (class-to-root-depth) is 1) the number of ancestors of a class) 2) the maximum length from the node to a root of the tree. Кроме этих определений метрики существуют и другие. Например, приводится пример вычисления глубины класса в графе наследования как среднего арифметического значений глубины класса всех вершин – непосредственных предков (parents) данной вершины. (Шкала значений интервальная.).

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

Связанность между классами объектов (CBO)

Связанность между классами объектов (Coupling Between Object classes-CBO) позволяет определить количество классов, с которыми связан данный класс. Это означает, что один класс использует методы или экземпляры другого класса.

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

· Слишком большая связанность классов отрицательно влияет на модульность проекта и не позволяет повторно использовать классы.

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

· Сильно взаимосвязанная система требует большего количества тестов и времени на тестирование.

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

Заметим, что причины связанности классов в данной метрике значения не имеют.

Пример:

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

class View {};class Node : public View { Rect area;};class Edge : public View { Node getNode1(); Node getNode2(); bool has(Point p);};

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

· CBO(View) = 2, поскольку он связан отношением наследования с двумя классами-потомками Node и Edge.

· CBO(Node) = 3, поскольку он связан отношением наследования с классом View и отношением ассоциации с классом Rect. Кроме того, класс Node используется классом Edge как результат вызова функций getNode 1()и getNode 2().

· CBO(Edge) = 3, поскольку он связан отношением наследования с классом View, использует класс Node как результат вызова функций getNode 1() и getNode 2(), а такжеиспользует класс Point как параметр функции has (Point p ).

Количество реакций на класс (RFC)

Количество реакций на класс (Responce For Class - RFC) позволяет определить количество методов, которое может быть выполнено в ответ на получение сообщения данным классом. В этой метрике учитываются не только выполняемые методы данного класса, но и методы других классов. Таким образом с помощью этой метрики можно оценить и степень потенциального "общения" этого класса с другими классами.

Другими словами, если класс C имеет n методов Mi (т.е. {Mi}), а каждый метод Mi из этого множества может обратиться к множеству {Rji} методов, расположенных как внутри класса C, так и вне его (в каждом множестве Rji содержится ji элементов), то объединение всех этих множеств называется множеством реакций (response set – RS) класса C:

Число элементов в множестве реакций класса называется реакцией класса C:

На практике чаще принято вычислять значение метрики RFC для класса следующим образом:

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

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

· Значения с наихудшим значением этой метрики требуют наибольшего времени тестирования.

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

Пример:

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

class Edge : public View { Node *node1, *node2; void setArea(Point p1, Point p2); void draw(Graphics *g){   Point c1 = node1->getCenter();   Point c2 = node2->getCenter();   g->drawLine(p1, p2);   setArea(p1, p2); }

};

 

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

RFC(Edge) = 3, поскольку он вызывает метод getCenter () класса Node, метод drawLine (p 1, p 2) класса Graphics и собственный метод setArea (p 1, p 2).


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

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






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