Использование метрик Чидамбера-Кемерера
Поскольку основу логического представления ПО образует структура классов, для оценки ее качества удобно использовать метрики Чидамбера-Кемерера. Пример расчета метрик для структуры, показанной на рис. 14.4, представлен в табл. 14.4.
Рис. 14.4.Структура классов для расчета метрик Чидамбера-Кемерера
Прокомментируем результаты расчета. Класс Class А имеет три метода (op_al(), ор_а2(), ор_аЗ()), трех детей (Class В, Class С, Class D) и является корневым классом. Поэтому метрики WMC, NOC и DIT имеют, соответственно, значения 3, 3 и 0.
Метрика СВО для класса Class А равна 1, так как он использует один метод из другого класса (метод ор_е() из класса Class E, он вызывается из метода ор_аЗ()). Метрика RFC для класса Class А равна 4, так как в ответ на прибытие в этот класс сообщений возможно выполнение четырех методов (три объявлены в этом классе, а четвертый метод ор_е() вызывается из ор_аЗ()).
Таблица 14.4.Пример расчета метрик Чидамбера-Кемерера
Имя класса | WMC | DIT | NOC | СВО | RFC | LCOM |
Class A | ||||||
Class В | ||||||
Class С | ||||||
Class D |
Для вычисления метрики LCOM надо определить количество пар методов класса. Оно рассчитывается по формуле
,
где т — количество методов класса.
Поскольку в классе три метода, возможны три пары: op_al( )&ор_а2(), op_al( )&ор_а3() и ор_а2( )&ор_а3(). Первая и вторая пары не имеют общих свойств, третья пара имеет общее свойство (pal). Таким образом, количество несвязанных пар равно 2, количество связанных пар равно 1, и LCOM = 2-1 = 1.
Отметим также, что для класса Class D метрика СВО равна 2, так как здесь используются свойство pal и метод op_f() из других классов. Метрика LCOM в этом классе равна 0, поскольку методы op_dl() и op_d2() связаны по свойству pdl, а отрицательное значение запрещено.