- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •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. Мд.Иу.Мсавпсрит.Пз
6.1.2 Окно групповых режимов анализа
Окно групповых режимов анализа (рисунок 15) используется при выполнении анализа одного файла сразу с несколькими файлами (группой при пакетном режиме) или всех файлов со всеми файлами (при полном анализе). Выделено четыре подраздела в этом окне:
«Выполнить» для осуществления операций анализа
«Показать» для показа отчетов и анализа результатов
«Служебные действия» для выполнения вспомогательных операций удаления отчетов
«Настроить критерии плагиата» для задания пороговых значений методов, при превышении которых выносится заключение о возможности плагиата
Рисунок 15 Окно групповых режимов анализа
6.2 Взаимодействие модуля поиска плагиата методами анализа исходных кодов
6.2.1 Взаимодействие модуля с архивом работ и базой языков (добавление файла в базу)
Взаимодействие модуля с архивом работ и базой языков (добавление файла в базу) показано на рисунке 16.
1) Копирование исследуемого кода в архив работ студентов.
2) Создание файла описания исследуемого файла.
3) Добавление имени файла в список файлов этого языка.
4) Нормализация исследуемого кода.
5) Составление файла последовательности операторов исследуемой работы из нормализованного кода по базе операторов языка.
Рисунок 16 Взаимодействие модуля с архивом работ и базой языков
6.2.2 Взаимодействие модуля с архивом работ и базой языков (частотный анализ, автоматический частотный анализ)
Взаимодействие программы с архивом работ и базой языков (частотный анализ, автоматический частотный анализ) показано на рисунке 17:
1) По файлу операторов исследуемой работы составление последовательности частот появления операторов.
2) Для всех файлов данного языка, кроме работ этого же автора, вычисление частот появления операторов и их сравнение.
3) Составление временного файла результатов сравнения частот появления операторов.
4) По запросам преподавателя восстановление исходных кодов для файлов с максимальным процентом совпадения частот появления операторов.
Рисунок 17 Взаимодействие модуля с архивом работ и базой языков
6.2.3 Взаимодействие модуля с архивом работ и базой языков (автоматический анализ последовательностей операторов)
1) По файлам операторов для всех файлов данного языка, кроме работ автора исследуемой работы, вычисление максимальной длины последовательности совпадающих операторов.
2) Составление временного файла, содержащего проценты отношений максимальной длины совпадений к количеству операторов исследуемого файла.
3) По запросам преподавателя восстановление исходных кодов файлов по полученному временному файлу.
6.2.4. Взаимодействие модуля с архивом работ и базой языков (анализ последовательностей операторов, просчет всех пиков)
1) По файлам операторов двух выбранных файлов данного языка, вычисление последовательностей совпадающих операторов и запись их в файл цепочек совпавших операторов.
2) Сортировка строчек в этом файле в порядке убывания.
3) По запросам преподавателя восстановление исходных кодов файлов с выделением строк, соответствующих пикам (цепочкам совпадений), по полученному временному файлу.
4) Создание отчета и сохранение его в файл.
6.2.5 Взаимодействие модуля с архивом работ и базой языков (удаление файла/языка из базы)
1) Если выбран файл для удаления, то из базы работ удаляется сам файл с исходным кодом, файл описания, файл последовательности операторов, а списка файлов этого языка удаляется его имя.
2) При удалении языка из базы, по списку файлов этого языка удаляются все файлы, файлы с их описанием и последовательностью операторов.
3) Удаляется файл операторов этого языка, список файлов и из файла известных языков стирается имя этого файла.
