Изложение статьи

Yuming Zhou and Hareton Leung,Empirical analysis of object-oriented design metrics for predicting high and low severity faults, IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 32, NO. 10, OCTOBER 2006

Введение

В статье рассматривается задача выявления дефектов (определение вероятности того, что в классе содержится дефект архитектурного решения). Для решения данной задачи используются метрики Чидамбера и Кемерера(было выбрано 6 метрик), которые оценивают структурные характеристики классов. Для исследования используются четыре различных метода машинного обучения:

  • Логистическая регрессия
  • Наивный байесовский классификатор
  • Случайный лес
  • Метод ближайшего соседа

В статье рассматриваются следующие вопросы:

1. Как метрики, связанны с возникновением ошибок высокой и низкой сложности в классах?

2. Какие метрики сильнее связаны с возникновением ошибок высокой и низкой сложности в классах?

3. Насколько точно метрики предсказывают ошибки высокой степени тяжести?

4. Насколько точно метрики предсказывают ошибки низкой степени тяжести?

Используемые метрики и датасеты

В статье рассматриваются следующие метрики:

  • Weighted Methods per Class (WMC) - количество методов, имплементируемым классом
  • Depth of Inheritance (DIT) - расстояние от класса до корня в дереве насследования
  • Response for a Class (RFC) - WMC плюс количество наследованных методов
  • Number of Children (NOC) - число непосредственных детей в дереве насследования у данного класса
  • Coupling between Objects (CBO) - количество классов, с которым связан данный класс (fan-out)
  • Lack of Cohesion (LCOM) - усредненная по атрибутам доля методов, использующая этот атрибут (LCOM3)
  • Source Lines Of Code (SLOC) - количество строк кода в классе

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

В качестве выборки используется датасет KC1 (NASA), в котором даны измерения по 21 метрике для классов и методов. Для анализа используются только 7 вышеперечисленных метрик. Из него были удалены все случаи не связанные с ошибками в исходном коде. Так же все дефекты были разделены на две группы(ошибки высокой и низкой сложности), вместо 5-ти исходных.

Вычислительный эксперимент

В рамках вычислительного эксперимента для каждой из моделей оцениваются такие параметры, как полнота (доля отмеченных классов как дефект от общего числа дефективных классов)(Correctness), точность (доля правильно отмеченных дефектов) (Precision), и доля правильно данных предсказаний (Completeness).

Методика эксперимента следующая: для каждой модели проводятся измерения на трёх датасетах:

  • С любыми дефектами(Ungraded severity faults)
  • Только дефекты высокой сложности(High severity faults)
  • Только дефекты низкой сложности(Low severity faults)

и измеряются необходимые характеристики.

Вначале была построена модель логистической регрессии с использованием одной метрики(т.е. изучались связи отдельных метрик с возникновением ошибок). Далее были построены модели для анализа зависимости от комбинации метрик проектирования(все кроме SLOC) и всех метрик с использованием различных методов машинного обучения.

Логистическая регрессия для отдельных метрик Логистическая регрессия для комбинаций метрик Методы ML для отдельных метрик и их комбинаций

Можно заметить, что для ошибок высокой сложности, как одномерные так и многомерные модели логической регрессии имеют достаточно низкую корректность и полноту, хотя они и имеют высокую точность. В частности, из всех метрик, SLOC является лучшим предсказателем. Многомерная модель построенная только с метриками проектирования не опережает даже простую модель, с зависимостью от размера класса. Точность, корректность и полнота моделей машинного обучения также хуже, чем у регрессионной модели. Эти результаты указывают на то, что возможности этих метрик проектирования для предсказания ошибок высокой сложности ограничены, хотя большинство из них статистически связаны с возникновением дефектов высокой сложности.Точность, корректность и полнота для моделей машинного обучения более или менее равны таковым в модели логистической регрессии. Эти результаты свидетельствуют о том, что метрики проектирования работают намного лучше в прогнозировании неисправностей низкой сложности, чем при прогнозировании неисправностей высокой сложности.

В итоге используя результаты измерений, были проверены сформированные в начале эксперимента гипотезы.

Заключение

Основные полученные результаты:

  • Метрики CBO, WMC, RFC и LCOM статистически связаны со склонностью кода к дефектам любой сложности, в то время как DIT не связан с возникновением дефектов. Величина NOC связана с количеством дефектов низкой степени сложности обратной зависимостью(класс с большим значением NOC имеет меньшую вероятность быть дефектным)
  • Возможности прогнозирования склонности к дефектам этих метрик сильно отличаются в зависимости от серьезности дефекта. Применительно к классификации классов на подверженные и не подверженные ошибкам для ошибок низкой сложности, модели логистической регрессии и машинного обучения смогли достичь показателей производительности, сравнимых с предыдущими исследованиями. Однако, возможности предсказаний с помощью этих показателей для ошибок высокой сложности ограничено.