
- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •1.1 Необходимость дополнительной проверки на основе анализа структурного анализа кодов
- •1.2 Общая схема работы модулей инструментальной системы поиска плагиата
- •Теоретические основы поиска плагиата в исходных кодах программ
- •2.1 Классификация методов поиска плагиата в программировании
- •2.2 Атрибутные методы поиска плагиата
- •2.3 Структурные методы поиска плагиата
- •2.3.1 Строковое выравнивание
- •2.3.2 Метод поиска на xml-представлении
- •2.3.3 Использование приближения Колмогоровской сложности
- •2.3.4 Метод идентификационных меток
- •2.3.5 Нейросетевые методы обнаружения плагиата
- •2.4 Другие методы
- •Методы поиска плагиата в произвольных текстах
- •3.1 Локальные методы
- •3.1.2 Методы на основе меры tf
- •3.1.3 Методы, использующие понятия шинглов
- •3.1.4 Методы, использующие семантические сети
- •3.2 Глобальные методы
- •3.2.1 Методы на основе меры tf-idf
- •3.2.3 Метод «опорных» слов
- •3.3 Метод шинглов
- •Разбиение на шинглы;
- •Вычисление хешей шинглов;
- •3.3.1 Канонизация текстов
- •3.3.2 Разбиение на шинглы
- •3.3.3 Вычисление хешей шинглов
- •3.4 Дистанция (расстояние) Левенштейна
- •3.4.1 Алгоритм Вагнера — Фишера
- •3.5. Наибольшая общая последовательность (longest common subsequence, lcs)
- •3.6 Вычисление хеш-функции
- •3.6.1 Параметры вычисление хеш-функции: полином-генератор, разрядность и стартовое слово
- •3.6.2 Популярные и стандартизованные полиномы
- •3.7 Виды представления исходного кода
- •3.8 Представление исходного кода в виде токенов
- •Обзор инструментальных средств и сервисов анализа плагиата в программах и произвольных текстах
- •4.1 Обзор программ поиска плагиата в программировании
- •4.2 Обзор сервисов поиска плагиата
- •4.3 Обзор программ поиска плагиата в произвольных текстах
- •Описание используемых методов поиска плагиата в исходных кодах и произвольных текстах
- •5.1 Общая схема поиска
- •5.1.1 Cхема поиска для исходных кодов
- •5.1.2 Основной структурный метод для анализа исходных кодов
- •5.1.2.1 Достоинства и недостатки
- •5.1.3 Дополнительный атрибутный метод для исходных текстов
- •5.1.3.1 Достоинства и недостатки
- •5.2.1 Cхема поиска для произвольных текстов (в том числе и программ)
- •Программная реализация модуля поиска плагиата методами анализа исходных кодов программ
- •6.1 Интерфейс модуля поиска плагиата в исходных кодах программ
- •6.1.1 Главное окно модуля поиска плагиата методами анализа исходных кодов
- •6.1.2 Окно групповых режимов анализа
- •6.2 Взаимодействие модуля поиска плагиата методами анализа исходных кодов
- •6.2.1 Взаимодействие модуля с архивом работ и базой языков (добавление файла в базу)
- •6.2.2 Взаимодействие модуля с архивом работ и базой языков (частотный анализ, автоматический частотный анализ)
- •6.2.3 Взаимодействие модуля с архивом работ и базой языков (автоматический анализ последовательностей операторов)
- •6.2.4. Взаимодействие модуля с архивом работ и базой языков (анализ последовательностей операторов, просчет всех пиков)
- •6.2.5 Взаимодействие модуля с архивом работ и базой языков (удаление файла/языка из базы)
- •6.2.6 Взаимодействие модуля с базой языков (добавление языка в базу)
- •6.2.9 Поиск первоисточника и списка первоисточников
- •6.2.10 Некоторые особенности модуля
- •6.3 Описание отчетов по анализу плагиата
- •6.3.1 Критерии автоматического заключения о наличии плагиата при пакетном и полном анализе
- •6.3.2 Алгоритм поиска первоисточника для файла или списка первоисточников при полном анализе
- •6.3.3 Сводный отчет
- •6.3.4 Итоговый отчет
- •6.3.5 Экспорт итогового протокола в Excel
- •6.3.5.1 Исследование итогового протокола по полученным диаграммам Excel
- •6.3.6 Экспорт списка первоисточников в Excel
- •6.3.6.1 Исследование списка первоисточников в Excel
- •6.4 Пример работы модуля
- •6.4.1 Пример 1 анализа последовательности операторов
- •Режим работы модуля PlagiatSearch с произвольным текстом
- •Режим работы модуля PlagiatSearch с исходным кодом
- •7.1.2 Меню «Анализ» и его возможности для поиска плагиата в произвольных текстах
- •7.1.3 Информационное окно модуля PlagiatSearch поиска плагиата в произвольных текстах с результатами вычисления дистанции Левенштейна
- •7.1.4 Представление результатов нахождения наибольшей общей подпоследовательности (longest common subsequence, lcs)
- •7.1.5 Представление метода шинглов для сравнения произвольных текстов
- •7.1.6 Применение метода шинглов для сравнения исходных кодов
- •Заключение
- •Список использованных источников (библиографический список)
- •Приложение Доработанная блок-схема алгоритма анализа последовательности операторов (с показом наиболее длинного совпадающего фрагмента кода)
- •55. Мд.Иу.Мсавпсрит.Пз
5.1.3.1 Достоинства и недостатки
Основными достоинствами метода является высокая скорость вычислений частот, что позволяет практически мгновенно в автоматическом режиме отобрать «подозрительные» работы, а затем в режиме один против одного проверить их с помощью основного структурного метода. Возможность сравнения количества определенных операторов, например операторов присваивания.
Недостатки – возможность совпадения токенизированного представления программ, но отсутствия совпадения в исходных кодах программ. Второй недостаток – небольшая устойчивость алгоритма к изменениям операторов в небольших текстах программ.
5.2.1 Cхема поиска для произвольных текстов (в том числе и программ)
Для анализа заимствованных фрагментов в исходных кодах программ предлагается использовать методы шинглов и дистанции Левенштейна и Дамерау для анализа произвольных текстов, и в том числе программ. Пользователь может выбрать либо произвольный текст, либо загрузить исходный текст программ из базы данных. После этого могут применяться методы сравнения текстов на наличие одинаковых фрагментов (метод нахождения дистанции Левенштейна и наибольшей общей подпоследовательности (longest common subsequence, LCS) либо вычисление «похожести» текстов в процентах с помощью метода шинглов. Модуль, в котором реализована эта схема, рассмотрен в главе 8.
Программная реализация модуля поиска плагиата методами анализа исходных кодов программ
6.1 Интерфейс модуля поиска плагиата в исходных кодах программ
6.1.1 Главное окно модуля поиска плагиата методами анализа исходных кодов
Программа реализована на языке программирования – Delphi. В верхней части диалогового окна (рисунок 14) находятся кнопки для вызова функций добавления файла в базу, добавления языка в базу, удаления из базы файла/языка и компонент для выбора текущего языка.
Рисунок 14 Главное окно модуля поиска плагиата в исходных кодах программ
В средней части окна находятся кнопки основных функций для анализа кода программ. Кнопка «Частотный анализ» позволяет сравнить частоты появления операторов двух выбранных файлов (слева анализируемый файл, справа – выбранный файл из базы). Ниже расположена кнопка «Авто» для режима один против всех (сравнение файла, выбранного слева со всеми файлами в базе). Кнопки (появляются после выбора режима «Авто») «<<» и «>>» позволяют осуществлять навигацию по файлам в базе, выстроенным по возрастанию вероятности плагиата. Стоит напомнить, что тексты программ, написанные одним м тем же автором, даже при полном совпадении не считаются плагиатом, поэтому в автоматическом режиме поиска все работы автора выбранного текста программы, принудительно получают значение вероятности плагиата 1%, чтобы облегчить работу преподавателя. В любом из режимов можно просмотреть информацию о выбранных файлах, нажав соответствующую кнопку.
Кнопка «Анализ посл. опер.» позволяет выполнить анализ совпадений последовательностей операторов выбранных текстов программ. Если отмечено «Только непрерывн. посл.», то производится анализ только максимальной последовательности операторов, иначе учитываются все, в том числе и случайные совпадения этих последовательностей. Кнопка «Просчитать все пики» позволяет переходить от максимальной последовательности совпадений к любой другой, вывести соответствующие ей участки программ и сохранить отчет. Так же как и для частотного анализа, для анализа последовательности операторов предусмотрен автоматический режим.
В процесс доработки модуля была добавлена важная возможность: после выполнения анализа последовательности операторов показывается красным цветом наиболее длинный совпадающий участок исходного кода (рисунок 14).
Результаты анализа кода программы выводится в виде графика на стандартном компоненте Chart (для частотного анализа на двух) и относительная оценка вероятности плагиата на компонент ProgressBar.
Для целей диплома бакалавра были добавлены кнопки «Сводный анализ», «Итоговый отчет» и «Групповые режимы анализа». При нажатии кнопки «Групповые режимы анализа» открывается соответствующее новое окно (рисунок 15).