Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| mdd:design_metrics_proneness_prediction [2016/12/25 15:34] – created sukhoruchenkov | mdd:design_metrics_proneness_prediction [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | Изложение статьи | ||
| + | Yuming Zhou and Hareton Leung, | ||
| + | |||
| + | ====== Введение ====== | ||
| + | |||
| + | В статье рассматривается задача выявления дефектов (определение вероятности того, что в классе содержится дефект архитектурного решения). Для решения данной задачи используются метрики Чидамбера и Кемерера(было выбрано 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) - количество классов, | ||
| + | * Lack of Cohesion (LCOM) - усредненная по атрибутам доля методов, | ||
| + | * Source Lines Of Code (SLOC) - количество строк кода в классе | ||
| + | |||
| + | Для каждой метрики проверяется следующая гипотеза: | ||
| + | У класса с высоким значением метрики больше шансов иметь ошибку высокой/ | ||
| + | низкой сложности, | ||
| + | |||
| + | В качестве выборки используется датасет KC1 (NASA), в котором даны измерения по 21 метрике для классов и методов. Для анализа используются только 7 вышеперечисленных метрик. | ||
| + | Из него были удалены все случаи не связанные с ошибками в исходном коде. Так же все дефекты были разделены на две группы(ошибки высокой и низкой сложности), | ||
| + | |||
| + | ====== Вычислительный эксперимент ====== | ||
| + | |||
| + | В рамках вычислительного эксперимента для каждой из моделей оцениваются такие параметры, | ||
| + | |||
| + | Методика эксперимента следующая: | ||
| + | |||
| + | * С любыми дефектами(Ungraded severity faults) | ||
| + | * Только дефекты высокой сложности(High severity faults) | ||
| + | * Только дефекты низкой сложности(Low severity faults) | ||
| + | |||
| + | и измеряются необходимые характеристики. | ||
| + | |||
| + | Вначале была построена модель логистической регрессии с использованием одной метрики(т.е. изучались связи отдельных метрик с возникновением ошибок). Далее были построены модели для анализа зависимости от комбинации метрик проектирования(все кроме SLOC) и всех метрик с использованием различных методов машинного обучения. | ||
| + | |||
| + | ==== Результаты измерений ==== | ||
| + | |||
| + | Логистическая регрессия для отдельных метрик | ||
| + | [[mdd: | ||
| + | Логистическая регрессия для комбинаций метрик | ||
| + | [[mdd: | ||
| + | Методы ML для отдельных метрик и их комбинаций | ||
| + | [[mdd: | ||
| + | [[mdd: | ||
| + | |||
| + | Можно заметить, | ||
| + | неисправностей высокой сложности. | ||
| + | |||
| + | В итоге используя результаты измерений, | ||
| + | |||
| + | ==== Результаты проверки гипотез ==== | ||
| + | |||
| + | [[mdd: | ||
| + | |||
| + | ====== Заключение ====== | ||
| + | |||
| + | Основные полученные результаты: | ||
| + | |||
| + | * Метрики CBO, WMC, RFC и LCOM статистически связаны со склонностью кода к дефектам любой сложности, | ||
| + | * Возможности прогнозирования склонности к дефектам этих метрик сильно отличаются в зависимости от серьезности дефекта. Применительно к классификации классов на подверженные и не подверженные ошибкам для ошибок низкой сложности, | ||