1. Число новых методов в классе (nnm)

Число новых методов в классе (The number of new methods - NNM) - длина списка операций вершины в промежуточной модели наследования минус число входящих в вершину дуг со значением атрибута тип, равным наследование метода. Шкала значений абсолютная.

    1. Количество унаследованных методов (nmi)

Количество методов, унаследованных от предков (Numer of Methods Inherited - NMI) позволяет класса от его предков. В отличие от метрикиDIT, эта метрика оценивает не количество уровней в иерархии наследования, а именнозависимостьот предков. Возможно базовые классы не оказывают сильного влияния на потомков, если имеют небольшое количество методов.

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

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

Пример:

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

сlass View {

TRect getArea();

string getName();

};

сlass Node : public View {

Point* clipLine(Point p1, Point p2);

};

сlass ClassNode : public Node {

Point clipLine(Point p1, Point p2);

};

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

  • NMI(View) = 0

  • NMI(Node) = 2,

  • NMI(ClassNode) = 3.

    1. Количество потенциально наследуемых методов (pmi)

Количество методов, унаследованных классом от предков (Potencial Methods Inherited - PMI) + количество методов в самом классе.  С помощью этой метрики вычисляется степень функциональности, которую данный класс предоставляет своим потомкам.

Пример:

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

сlassView {

TRect getArea();

string getName();

};

сlass Node : public View {

Point* clipLine(Point p1, Point p2);

};

сlass ClassNode : public Node {

Point clipLine(Point p1, Point p2);

};

PMI(View) = 2, PMI(Node) = 3, PMI(ClassNode) = 4.

    1. Пропорция методов наследуемых подклассом (pmis)

Пропорция методов, унаследованных классом от предков (Proportion of Methods Inherited by a Subclass-PMIS). Эта метрика  вычисляется по формуле:

PMIS = NMI /PMI

С помощью этой метрики вычисляется мера специализации класса по отношению к его предкам.

Пример:

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

сlassView {

TRect getArea();

string getName();

};

сlass Node : public View {

Point* clipLine(Point p1, Point p2);

};

сlass ClassNode : public Node {

Point clipLine(Point p1, Point p2);

};

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

  • NMI(View) = 0

  • NMI(Node) = 2

  • NMI(ClassNode) = 3

  • PMI(View) = 2

  • PMI(Node) = 3

  • PMI(ClassNode) = 4

  • PMIS(View) = 0

  • PMIS(Node) = 0.666

  • PMIS(ClassNode) = 0.75.

    1. Число общедоступных методов в классе(npm)

Число общедоступных методов в классе (The number of public methods in a class - NPM) - число точек-методов с типом доступа “общедоступный” (public) в списке операций круга-вершины полной модели наследования.

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

Метрика связана с сопровождаемостью ОО программ. Чем больше значение метрики, тем выше затраты на сопровождение (maintenance effort in OO systems).