лекция. Сборник лекций по МДК _Технология разработки программного обеспе. Курс лекций для специальности спо базовой подготовки
Скачать 4.41 Mb.
|
Количество унаследованных методов (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) + количество методов в самом классе. С помощью этой метрики вычисляется степень функциональности, которую данный класс предоставляет своим потомкам. Пример: Рассмотрим программу: с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); }; PMI(View) = 2, PMI(Node) = 3, PMI(ClassNode) = 4. Пропорция методов наследуемых подклассом (PMIS)Пропорция методов, унаследованных классом от предков (Proportion of Methods Inherited by a Subclass-PMIS). Эта метрика вычисляется по формуле: PMIS = NMI /PMI С помощью этой метрики вычисляется мера специализации класса по отношению к его предкам. Пример: Рассмотрим программу: с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(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). Степень методологической сцепленности (DMC)Степень методологического сцепления (Density of Methodological Cohensiveness - DMC). Эта метрика вычисляется как отношение количества пар методов, которые используют общие атрибуты класса, к общему числу пар методов. В отличие от метрики LCOM, эта метрика вычисляется более просто. Пример: Рассмотрим программу: class Edge : public View { Point *start, *end; Node *node1, *node2; Node getNode1() { return node1; } Node getNode2() { return node2; } void setArea(Point p1, Point p2){ start = p1; end = p2; }; void draw(Graphics *g){ Point c1 = node1->getCenter(); Point c2 = node2->getCenter(); g->drawLine(p1, p2); setArea(p1, p2); } }; Подсчитаем сцепление пар методов: N(getNode1, getNode2) = 0 N(getNode1, setArea) = 0 N(getNode1, draw) = 1, общий атрибут node1. N(getNode2, draw) = 1, общий атрибут node2. N(getNode2, setArea) = 0. N(setArea, draw) = 2, общие атрибуты node1 и node2 . Использующих общие атрибуты 3. Всего пар 6. В результате DMC = 0.5 |