
- •Анализ программного обеспечения с использованием объектно-ориентированных метрик
- •Введение
- •Метрические особенности объектно-ориентированных программных систем
- •Локализация
- •Инкапсуляция
- •Информационная закрытость
- •Наследование
- •Абстракция
- •Объектно-ориентированные метрики для измерения характеристик систем
- •Количество строчек кода (loc)
- •Цикломатическая сложность Мак-Кейба (mvg)
- •Количество комментариев (com)
- •Число классов – получателей сообщений данного класса(Fan-out, Fan-in)
- •Количество "взвешенных" методов на класс (wmc)
- •Глубина дерева наследования (dit)
- •Количество потомков (noc)
- •Ширина иерархии наследования (bih)
- •Глубина класса в графе наследования (nl)
- •Связанность между классами объектов (cbo)
- •Количество реакций на класс (rfc)
- •Отсутствие сцепления в методах (lcom)
- •Количество строк текста на класс (kloc)
- •Число методов в классе (nm)
- •Число новых методов в классе (nnm)
- •Количество унаследованных методов (nmi)
- •Количество потенциально наследуемых методов (pmi)
- •Пропорция методов наследуемых подклассом (pmis)
- •Число общедоступных методов в классе(npm)
- •Степень методологической сцепленности (dmc)
- •Количество посылаемых методом сообщений (nms)
- •Сообщения и аргументы (maa)
- •Количество абстрактных классов (nac)
- •Степень абстрактности классов (dac)
- •Количество переопределеных методов в подклассе (nmo)
- •Пропорция переопределения методов в подклассе (pom)
- •Степень взаимосвязи между классами (dcbo)
- •Количество скрытых методов экземпляра (PrIm)
- •Мера Мак-Клура (mmk)
- •Литература
Число новых методов в классе (nnm)
Число новых методов в классе (The number of new methods - NNM) - длина списка операций вершины в промежуточной модели наследования минус число входящих в вершину дуг со значением атрибута тип, равным наследование метода. Шкала значений абсолютная.
Количество унаследованных методов (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.
Количество потенциально наследуемых методов (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.
Пропорция методов наследуемых подклассом (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.
Число общедоступных методов в классе(npm)
Число общедоступных методов в классе (The number of public methods in a class - NPM) - число точек-методов с типом доступа “общедоступный” (public) в списке операций круга-вершины полной модели наследования.
При вычислении данной метрики, рассматривают как определенные в классе, так и унаследованные методы. В некоторых случаях рассматривают пару метрик: число общедоступных методов, возвращающих значение некоторого типа, и число общедоступных методов, не возвращающих никакого значения.
Метрика связана с сопровождаемостью ОО программ. Чем больше значение метрики, тем выше затраты на сопровождение (maintenance effort in OO systems).