Метрики программного обеспечения Программная инженерия посвятила много исследований разработке и изучению эффективных метрик программного обеспечения, которые характеризуют сложность программной системы. Исследователи и практики в области программной инженерии предложили несколько метрик сложности программного обеспечения, большинство из которых используют программный код для выражения сложности программного обеспечения. Наиболее известными метриками программного обеспечения являются метрики программного обеспечения Мориса Х. Холстеда и метрики сложности Томаса Дж. Маккейба. Халстед определил ряд метрик на основе синтаксических элементов программы (операторов и операндов); цикломатическая метрика сложности Маккейба получена из графа потока управления программы и равна количеству линейно независимых исполняемых путей в программе. Эти метрики программного обеспечения широко и успешно используются, хотя некоторые вопросы, связанные с их эффективностью, остаются открытыми исследовательскими проблемами.
В таблице 1 приведены 13 программных метрик, которые мы использовали на наборах данных в наших экспериментах. Они включают (в порядке их появления в таблице 1) один счетчик ветвей, пять счетчиков строк, четыре метрики Холстеда и три метрики Маккейба. Кроме этих метрик программного обеспечения, имеется измерение дефектов программного обеспечения (также называемое метрикой или измерением качества программного обеспечения) в виде коэффициента ошибок, который показывает количество дефектов (или дефектов программного обеспечения) в каждом программном модуле. Его можно использовать (на основе порогового значения) для классификации каждого программного модуля как подверженного или не подверженного ошибкам. В наших исследованиях мы также называем принадлежность модуля к тому или иному классу его меткой дефекта.
Методы обработки шумов В целом, существует три различных подхода к эффективной обработке шумов при анализе данных - разработка надежных алгоритмов, нечувствительных к шумам, фильтрация шумов,3 и коррекция шумов.4 Сравнительные исследования в соответствующих научных работах показали, что то, какой подход к обработке шумов работает лучше, зависит от конкретных приложений и заданных наборов данных.
Большинство робастных алгоритмов имеют механизм контроля сложности, чтобы результирующие модели не слишком подходили к обучающим данным и хорошо обобщались на будущие невидимые данные. Перекрестная проверка, минимальная длина описания и минимизация структурного риска - вот некоторые широко используемые принципы отбора моделей.
Методы фильтрации или удаления шумов выявляют и устраняют потенциальные выбросы и неправильно помеченные экземпляры в наборе данных. Одним из типичных методов машинного обучения в этой категории является использование ансамбля из нескольких классификаторов и рассмотрение в качестве потенциального шума экземпляров данных, неправильно классифицированных заданным большинством классификаторов. В нашем исследовании модули, неправильно классифицированные с помощью кластеризации и экспертного подхода к оценке качества, сравниваются с шумными модулями, идентифицированными ансамблем из 25 классификаторов.
Методы коррекции шума или полировки предполагают, что каждый атрибут или признак в данных коррелирует с другими и может быть надежно предсказан. Процесс коррекции начинается с прогнозирования значения каждого признака для каждого экземпляра данных на основе других признаков. Затем используется эвристика для определения того, следует ли изменить (или исправить) исходное значение признака для экземпляра на заранее предсказанное значение. Этот подход обычно требует больших вычислительных затрат, чем первые два. В большинстве предыдущих исследовательских работ основное внимание уделялось алгоритмам обработки данных от шума, а не реальным приложениям, с использованием искусственно вводимого шума для оценки эффективности предлагаемых алгоритмов. Сложность работы с реальными данными, с которой мы столкнулись в наших экспериментах, заключается в том, что для выявленных экземпляров шума не существует базовой истины. Мы обосновываем эффективность нашего подхода, основанного на кластеризации, с нескольких практических точек зрения, включая точность маркировки на основе кластеризации и преимущества для разработки реального программного обеспечения - обнаружение потенциально неправильно маркированных модулей и сокращение объема данных, необходимых для принятия решений.