Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. Изложение статьи 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) и всех метрик с использованием различных методов машинного обучения. ==== Результаты измерений ==== Логистическая регрессия для отдельных метрик [[mdd:_detail:mdd:логистическая_регрессия.png|]] Логистическая регрессия для комбинаций метрик [[mdd:_detail:mdd:логистическая_регрессия_комбинации_.png|]] Методы ML для отдельных метрик и их комбинаций [[mdd:_detail:mdd:ml1.png|]] [[mdd:_detail:mdd:ml2.png|]] Можно заметить, что для ошибок высокой сложности, как одномерные так и многомерные модели логической регрессии имеют достаточно низкую корректность и полноту, хотя они и имеют высокую точность. В частности, из всех метрик, SLOC является лучшим предсказателем. Многомерная модель построенная только с метриками проектирования не опережает даже простую модель, с зависимостью от размера класса. Точность, корректность и полнота моделей машинного обучения также хуже, чем у регрессионной модели. Эти результаты указывают на то, что возможности этих метрик проектирования для предсказания ошибок высокой сложности ограничены, хотя большинство из них статистически связаны с возникновением дефектов высокой сложности.Точность, корректность и полнота для моделей машинного обучения более или менее равны таковым в модели логистической регрессии. Эти результаты свидетельствуют о том, что метрики проектирования работают намного лучше в прогнозировании неисправностей низкой сложности, чем при прогнозировании неисправностей высокой сложности. В итоге используя результаты измерений, были проверены сформированные в начале эксперимента гипотезы. ==== Результаты проверки гипотез ==== [[mdd:_detail:mdd:проверка_гипотез.png|]] ====== Заключение ====== Основные полученные результаты: * Метрики CBO, WMC, RFC и LCOM статистически связаны со склонностью кода к дефектам любой сложности, в то время как DIT не связан с возникновением дефектов. Величина NOC связана с количеством дефектов низкой степени сложности обратной зависимостью(класс с большим значением NOC имеет меньшую вероятность быть дефектным) * Возможности прогнозирования склонности к дефектам этих метрик сильно отличаются в зависимости от серьезности дефекта. Применительно к классификации классов на подверженные и не подверженные ошибкам для ошибок низкой сложности, модели логистической регрессии и машинного обучения смогли достичь показателей производительности, сравнимых с предыдущими исследованиями. Однако, возможности предсказаний с помощью этих показателей для ошибок высокой сложности ограничено. mdd/design_metrics_proneness_prediction.txt Last modified: 2026/08/29 07:59by 127.0.0.1