Тема: Ступенчатый метод проверки исходного кода программы на плагиат
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
ПОСТАНОВКА ЗАДАЧИ 6
ГЛАВА 1. ТИПЫ СОВПАДЕНИЙ ИСХОДНОГО КОДА 8
1.1. Совпадения типа 1 8
1.2. Совпадения типа II 9
1.3. Совпадения типа III 10
1.4. Совпадения типа IV 11
ГЛАВА 2. ПРЕДСТАВЛЕНИЕ ИСХОДНОГО КОДА ПРОГРАММ 13
2.1. TEXT-BASED МЕТОД 14
2.2. Metrics-based метод 15
2.3. Token-based 15
ГЛАВА 3. РЕАЛИЗАЦИЯ ПРОГРАММНОЙ ЧАСТИ 18
3.1. НОРМАЛИЗАЦИЯ 18
3.2. ТОКЕНИЗАЦИЯ 18
3.3 W-SHINGLING 20
3.4. АЛГОРИТМ ВАГНЕРА — ФИШЕРА 21
3.5. Анализ характеристик программы 24
3.5.1. Частота появления операторов 24
3.5.2. Взаимная корреляция двух программ 25
3.6. Анализ комментариев 26
3.7. ПРИМЕР РАБОТЫ ПРОГРАММЫ 27
ГЛАВА 4. СТРУКТУРА ПРОГРАММНОГО КОДА 33
4.1. ПАКЕТ DATABASE 33
4.2. ПАКЕТ GUI 34
4.3. ПАКЕТ METHODS 34
4.4. ПАКЕТ UTIL 35
ЗАКЛЮЧЕНИЕ 37
СПИСОК ЛИТЕРАТУРЫ 39
📖 Введение
Случаи заимствования в исходном коде приложений встречаются так же часто как в обычных текстах, статьях, рефератах и прочих письменных работах. Но при проверке заимствований частей программ необходимо применять совсем другие инструменты - отличные от тех, которые используются при выявлении плагиата в текстовых блоках.
Плагиат в программном коде можно определить как копирование исходного кода или отдельных его частей без внесения каких-либо изменений или с незначительной его обработкой. Следует немного детальнее рассмотреть какие варианты изменения исходного кода существуют.
Выделяют четыре типа дублирующих фрагментов кода [1]:
1 тип - два фрагмента кода являются полностью идентичными, могут изменяться комментарии, пробельные символы и отступы.
2 тип - структурно/синтаксически два фрагмента кода идентичны, за исключением имён идентификаторов, строковых литералов, типов переменных. Так же допускаются все изменения из пункта 1.
3 тип - один фрагмент кода был получен путём копирования другого фрагмента кода, но последующим добавлением и/или удалением операторов языка. При этом сохраняются все изменения свойственные типу 2.
4 тип - два фрагмента синтаксически реализованы по-разному, но выполняют одинаковые действия.
Подведя итог, можно сказать, что только 1 и 2 тип относится к незначительным изменениям. Третий тип распознать сложнее, обычно к этому типу можно отнести участки кода, которые специально пытались замаскировать, внося дополнительный «шум». Четвёртый тип больше свойственен промышленному коду и практически никогда не встречается в студенческих работах в силу сложности своей реализации. Обычно, для того чтобы реализовать участок кода иначе с точки зрения синтаксиса в нем необходимо хорошо разобраться. Поэтому этот тип видоизменения кода не обязателен для выявления.
Если студент, который заимствовал код, изменил названия переменных, констант, процедур, классов и др., будем считать, что работа полностью «списана», так как это не требует выдающихся знаний языка программирования и является плагиатом. Но если студентами реализован одинаковый метод решения поставленной задачи, это вовсе не означает, что работа является плагиатом, ведь, прежде всего, оценивается знание предмета, а не оригинальность решения.
Исходя из сказанного, система выявления плагиата не может быть полностью автоматической. Система должна замыкаться на преподавателя - лицо принимающее решение (ЛПР). Но в тоже время она должна максимально облегчить задачу поиска дубликатов кода, автоматизируя
процесс проверки...
✅ Заключение
1. Выявить основные типы видоизменений исходного кода, которые позволяют скрыть факт заимствования.
2. Выделить основные преимущества и недостатки различных способов представления исходных кодов и способов их выявления
3. Собрать лучшие из них и реализовать программный продукт, который позволяет произвести комплексный анализ программ и выявлять заимствования в программном коде приложений
4. Разработанное приложение позволяет:
a. Преобразовывать исходный код в универсальный формат, удобный для проведения анализа
b. Производить исследование кода, используя расстояние Левенштейна и метод Шинглов
c. Анализировать комментарии и различные характеристики - количество переменных, количество условных конструкций и циклов
d. Осуществлять проверки «один-к-одному» и «один-ко- многим».
e. Работать по базе данных и представлять результаты анализа в удобочитаемом формате с HTML разметкой.
f. Работать на любой системе с установленным Java Runtime окружением
Одной из особенностей приложения является возможность проверки кода программы, даже если требуемый язык отсутствует в базе. Точность выявления при этом несколько снизится, но результат все равно будет удовлетворять заявленным требованиям и может значительно сократить время ручной проверки кода.
Программный продукт хорошо справляется с поставленной задачей, примененные алгоритмы достоверно работают при различных типах изменений исходных текстов.
Таким образом, данная программа может быть использована на практике в учебных заведениях и других организациях нуждающихся в подобном инструменте выявления заимствований.





