Тип работы:
Предмет:
Язык работы:


Ступенчатый метод проверки исходного кода программы на плагиат

Работа №141270

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы39
Год сдачи2016
Стоимость4215 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
26
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 3
ПОСТАНОВКА ЗАДАЧИ 6
ГЛАВА 1. ТИПЫ СОВПАДЕНИЙ ИСХОДНОГО КОДА 8
1.1. СОВПАДЕНИЯ ТИПА I 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. Работать на любой системе с установленным JavaRuntimeокружением
Одной из особенностей приложения является возможность проверки кода программы, даже если требуемый язык отсутствует в базе. Точность выявления при этом несколько снизится, но результат все равно будет удовлетворять заявленным требованиям и может значительно сократить время ручной проверки кода.
Программный продукт хорошо справляется с поставленной задачей, примененные алгоритмы достоверно работают при различных типах изменений исходных текстов.
Таким образом, данная программа может быть использована на практике в учебных заведениях и других организациях нуждающихся в подобном инструменте выявления заимствований.



1. Roy C. K. andCordy J. R.. A surveyonsoftwareclonedetectionresearch, Tech. Rep. 2007-541, SchoolofComputing, Queen'sUniversity, Kingston, Ontario, Canada, 2007., pages 43-59.
2. Chanchal K. Roy, James R. Cordy, RainerKoschke, ComparisonandEvaluationofCodeCloneDetectionTechniquesandTools: A QualitativeApproach. ScienceofComputerProgrammingVolume 74, Issue 7, 1 May 2009, pages 470–495.
3. А. В. Лаздин, О.Ф. Немолочнов. Метод построения графа функциональной программы для решения задач верификации и тестирования.
4. Mohand-SaidHacid, Zbigniew W Ras, ShusakuTsumoto. FoundationsofIntelligentSystems – 15th InternationalSymposium ISMIS 2005, SaratogaSprings, NY, USA, May 25-28, 2005, Proceedings, pages 641-656.
5. Желудков А. В., Макаров Д. В., Фадеев П. В. Особенности алгоритмов нечёткого поиска, электронный научно-технический журнал "Инженерный вестник". Издатель ФГБОУ ВПО МГТУ им. Н.Э. Баумана, декабрь 2014, c. 501-510.
6. Merlo E., DetectionofPlagiarisminUniversityProjectsUsingMetrics-basedSpectralSimilarity, 2007, pages 3-10
7. Г.В. Стрельчёнок, Т.А. Лепихин, К.С. Лабзо Использование различных способов выявления плагиата исходных кодов в учебном процессе // Современные информационные технологии и ИТ-образование, 2015. — T. 1, — № 11. — С. 211-214.


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ