Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст диплома магистра - 12 июня 2014.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
4.87 Mб
Скачать

1.2 Общая схема работы модулей инструментальной системы поиска плагиата

Как показано во введении, общая схема работы инструментальной системы поиска плагиата состоит из двух взаимодополняющих модулей. Первый модуль анализирует исходный код методами анализа исходных кодов (частотного анализа и анализа токенизированной последовательности операторов) в программных модулях студентов на основе пополняемой текстовой базы данных (БД), а второй модуль позволяет анализировать этот же исходный код методами анализа произвольных текстов, интегрирующего структурный анализ кодов (на основе исходного либо токенизированного представления), метода шинглов, дистанции Левенштейна и нахождения наибольшей общей подпоследовательности (longest common subsequence, LCS) для произвольных текстов. Если второй модуль рассматривает произвольный текст как исходный код программы (в модуле не установлен флажок «Текст»), то он использует ту же самую пополняемую БД работ студентов, которую формирует первый модуль.

  1. Теоретические основы поиска плагиата в исходных кодах программ

2.1 Классификация методов поиска плагиата в программировании

Для поиска плагиата на практике некоторым образом задаётся функция близости («метрика») и некоторый порог, по которому можно определить насколько вероятно, что часть программного кода была заимствована. Поиск плагиата в программировании может основываться на анализе характеристик кодов программ. Любая программа имеет определенную иерархию структур, которые могут быть выявлены, измерены и использованы в качестве таких характеристик. Применительно к доказательству факта заимствования, эти характеристики должны слабо меняться в случае модификации программы или включения фрагментов одной программы в другую.

Обычно с программой сопоставляют исходный код и исполняемый код, а также объектный код, как промежуточный этап. Материалом для анализа, может являться программа в каком-то из ее представлений. В частности, существенно разные подходы используются при анализе исходного и исполняемого кода программы. Исходный код программы анализировать легче, поскольку в нем сохраняется больше характеристик свойственных конкретному автору (в основном это касается стилистических особенностей автора, которые при компиляции в основном утрачиваются). Тем не менее, и по исполняемому коду тоже можно искать, много индивидуальной информации хранится и там (используемые алгоритмы, специфические ошибки, способ организации данных).

Принято выделять два основных подхода к оценке близости программ (и соответственно разработке алгоритмов поиска плагиата): атрибутный (attribute-counting) и структурный. Впрочем, такое деление несколько условно. Существуют также методы, сочетающие в себе оба подхода [11].

2.2 Атрибутные методы поиска плагиата

Исторически первыми появились атрибутные методы. Смысл их заключался в численном выражении каких-то признаков (атрибутов) программы и сравнении полученных чисел для разных программ. Программы с близкими численными характеристиками атрибутов (attribute counts) потенциально похожи. В простейшем случае можно использовать, например, размер программы или количество переменных.

Можно комбинировать несколько признаков, так чтобы программа была представлена не одним числом, а некоторым набором. Две программы могут считаться похожими, если соответствующие числа из их наборов совпадают или близки. В разное время для описания программ были предложены такие атрибуты, как количество операторов и операндов и другие. Таким образом, оценка близости программ сводится к сравнению чисел или векторов, которые получаются путем несложного анализа непосредственно исходного кода. Основным недостатком атрибутных техник является то, что несвязанные между собой параметры программы плохо описывают ее в целом, и при таком подходе разные программы получают близкие характеристики. Атрибутные методы активно развивались в 80-х годах XX столетия, но постепенно отошли на второй план.