Modeling Class Cohesion as Mixtures of Latent Topics

Ниже прилагается изложение статьи: Modeling Class Cohesion as Mixtures of Latent Topics, bibliography notes выглядит следующим образом:

Yixun Liu, Denys Poshyvanyk, Rudolf Ferenc at el. 2009. Modeling Class Cohesion as Mixtures of Latent Topics. Software Maintenance, 2009. IEEE International Conference on Software Maintenance, 233 - 242. DOI=10.1109/ICSM.2009.5306318 https://doi.org/10.1109/ICSM.2009.5306318

Рассматривается метрика Maximal Weighted Entropy (MWE) для определения зацепленности классов (cohesion) в системах, построенных на принципах ООП. Построение данной метрики основывается на методе Latent Dirichlet Allocation (LDA), проводится сравнительный анализ с известными ранее метриками, оценивающими зацепленность, на датасете Mozilla (open-source проект).

Одной из эвристик GRASP является High Cohesion, которая позволяет обеспечить такие нефункциональные качества, как сопровождаемость, тестируемость и понимание логики выполнения программы.

Метрики, связанные с оцениванием зацепленности, оцениваются через структурную составляющую исходного кода (связь аттрибутов и методов класса), при этом не предоставляют информации о концепции классов (с точки зрения предметной области) или не говорят о понимаемости кода. Метрика MWE, которая основывается на выдлении скрытых тем (Latent Topics), позволяет оценить степень полносты и связности методов в определенном классе, используя распределение документов по темам (что позволяет не только оценить, как сильно связаны методы класса с точки зрения предметной области).

Для исследования проводится анализ с cтруктурными метриками LCOM(1,2,3,4,5), Co (connectivity), Coh, TCC (tight class cohesion), LCC (loose class cohesion) (описание метрик), ICH (information-flow-based cohesion). В качестве метрик, оценивающих связь с предметной областью, используются метрики LORM (Logical Relatedness of Methods), LCSM (Lack of Conceptual Cohesion in Methods), Conceptual Cohesion of Classes (C3, ссылка на оригинальную статью). Дополнительно рассматривается метрика LOC, поскольку она хорошо зарекомендовала себя в задаче выявления дефектов в системе.

Далее будет изложен метод построения метрики MWE и её сравненительный анализ с выше перечисленными метриками.

В модели LDA определяются следующие термины:

  • Слово - набор элементов из словаря (в постановке задачи - идентификаторы (переменные и названия операции), разбитые по styleguide, слова из комментариев, ключевые слова языка программирования исключаются)
  • Документ - последовательность слов (метод класса, содержащий слова, определенные выше)
  • Набор документов (класс, содержащий метода)
  • Корпус - коллекция наборов документов (система, содержащая набор классов)

Метод LDA позволяет построить распределение слов по скрытым темам, используя априорное распределение тем по документу (по сути, строится матричное разложение). Важным преимуществом метода LDA среди методов тематического моделирования (к примеру, PLSA) состоит в том, что темы выбираются из мультиномиального распределения от набора документов, а затем строится распределение слов по темам.

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

  • Распределяемость <latex>D</latex>(distribution) - взвешенная энтропия распределения фиксированной темы по документу (выбирается тема, нормируются вероятности выбранной темы, считается энтропия).
  • Заполняемость <latex>O</latex>(occupancy) - средняя вероятность появления темы в документе

Тогда MWE класса <latex>C</latex> можно определить как <latex>MWE(C) = \max_{t: T}(O(t) \times D(t))</latex>, где через <latex>T</latex> обозначено множество скрытых тем. В итоге, учитываются сразу два фактора: если тема выражена явно, то заполняемость высока, а высокая энтропия говорит об одинаковой вовлеченности документа в тему.

В качестве примера в статье приведено построение MWE для класса CircleArea, где хорошо видно, что класс имеет четко выраженную тему “Функции отрисовки”, при этом все методы освещают эту тему. Данный пример подтверждает выделение высоко зацепленных классов при помощи метрики

На проведение вычислительного эксперимента выносятся две гипотезы о MWE:

  • Может ли MWE выделить зацепленности классов, которые не выделяют другие метрики?
  • Позволяет ли комбинация методов с MWE повысить точность решения задачи выявления дефектов?

Для вычисления MWE, строится модель LDA с 100 темами на датасете Mozilla. Более того, измеряются метрики, перечисленные в разделе “Введение”, после чего выполняется анализ компонент (PCA), после которого можно выявить следующие компоненты:

  • LCOM-компоненты, выделят структурную связность модели
  • TCC, LCC - доля пар методов, использующих общие переменные
  • MWE - отдельная компонента
  • C3, LCSM и ICH образуют отдельные компоненты соответственно (метрики, учитывающие связь предметной области)

Таким образом, можно сделать вывод о непротиворечивости первой гипотезы.

Для ответа на второй вопрос, обучаются модели логистической регрессии с разметкой выявленных дефектов, размещенных в Bugzilla. В качестве оценки модели используются показатели Accuracy (доля правильно отнесенных ответов), Precision(доля правильных отрицатальных ответов) и Recall(доля выявленных дефектов). Несмотря на то, что отдельно MWE даёт далеко не лучший результат, модель MWE + LOC дает существенное улучшение результата (лучший результат среди всевозможных пар метрик). Более того, почти во всех случаях замечено улучшение Accuracy модели при добавлении MWE.

Таким образом, вторую гипотезу можно считать проверенной.

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