Введение
Глава 1. АНАЛОГИЧНЫЕ РЕШЕНИЯ 5
1.1. Система “Антиплагиат” 5
1.2. Проект “NoCrib” 6
Глава 2. АРХИТЕКТУРА РАЗРАБАТЫВАЕМОЙ СИСТЕМЫ 7
2.1. Язык программирования Java 7
2.2. Maven 9
2.3. Фреймворк Spring 11
2.4. Структура приложения 15
2.5. Функционал приложения 21
2.6. Алгоритм и логика сравнения проектов 24
ЗАКЛЮЧЕНИЕ 25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 26
ПРИЛОЖЕНИЕ
На сегодняшний день проблема плагиата получила широкое распространение в образовании. В результате плагиата в образовательном процессе происходит нарушение авторских прав и ухудшение качества образования. Преподаватель лишается возможности объективно оценить уровень знаний студентов. В ВУЗах, подготавливающих будущих IT- специалистов, результатом самостоятельной работы студентов является готовый программный продукт.
Целью настоящей работы является решение проблемы плагиата исходного кода посредством разработки сервиса анализа разработанных студентами программ. Получив исходный код, система выполняет сборку проекта с использованием компилятора javac, а также инструмента Maven. Загрузка исходного кода возможна посредством обращения к системе контроля версий github. Отличительной особенностью разработанной системы является анализ байт-кода, полученного в результате компиляции программ на Java. Это позволит эффективно анализировать программы, где были изменены названия переменных, методов и классов.
Для разработки необходимо решить следующие задачи:
1. Проанализировать существующие решения;
2. Построить архитектуру приложения, реализовать серверную часть приложения с последующим размещением на удаленном сервере;
3. Вывести и протестировать приложение, проанализировать полученные результаты;
Анализ степени заимствования происходит по алгоритму “Расстояние Левенштейна” [3]. Файлы, загруженные в систему, сравниваются по вышеуказанному алгоритму с уже загруженными кодами.
Таким образом, разработанный сервис предоставит возможность оценить степень заимствования исходного кода программ, написанных на языке программирования Java, в самостоятельных работах учащихся.
Результатом настоящей работы стал онлайн-сервис проверки заимствований исходного кода программного обеспечения.
Разработанное решение позволяет преподавателю получить информацию о результатах анализа Java-кода в двух режимах - стандартная файловая загрузка и взаимодействие с системами контроля версий.
В настоящий момент такое решение может быть применено в высших учебных заведениях.
В дальнейшем предполагается усовершенствование данного программного обеспечения, в частности, увеличение количества поддерживаемых языков программирования, а также использование механизмов машинного обучения.
1. Miller F. P., Vandome A. F., McBrewster J. Apache Maven. - Alpha Press, 2017.
2. Russell M. A. Mining the Social Web: Data Mining Facebook, Twitter, LinkedIn, Google+, GitHub, and More. - " O'Reilly Media, Inc.", 2013.
3. В. И. Левенштейн. Двоичные коды с исправлением выпадений, вставок и замещений символов. Доклады Академий Наук СССР, 1965.
4. Романов М. Ю., Житлухин Д. А. Внедрение системы «Антиплагиат» в Российской государственной библиотеке //Сб. трудов. - 2009.
5. Шинкаренко В. И., Куропятник Е. С. Проблемы выявления плагиата и анализ инструментального программного обеспечения для их решения // Наука и прогресс транспорта. Вестник Днепропетровского национального университета железнодорожного транспорта. - 2017. - №. 1 (67).
6. Хаустов П. А., Кацман Ю. Я. Система обнаружения использования чужого программного кода «NoCrib» //Вестник науки Сибири. - 2011. - №. 1 (1).
7. Кнут Д. Искусство программирования. Том 3. Сортировка и поиск. - Litres, 2018.
8. Hoffman A. Java: The Best Guide to Master Java Programming Fast-Volume 2. - CreateSpace Independent Publishing Platform, 2016.
9. Man P. Java-VIRTUAL MACHINE. - mehra, 2018.
10. Mikhail K. Developer assistant for IntelliJ IDEA. - 2018.
11. Fowler M. Inversion of Control Containers and the Dependency Injection pattern [Электронный ресурс] //Режим доступу: https://www. martinfowler. com/articles/injection. html. Дата звернення-10.05. - 2019.
12.Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design
Patterns: Elements of Reusable Object-Oriented Software. — СПб: «Питер». 2007
13. Armbrust M. et al. Spark sql: Relational data processing in spark //Proceedings of the 2015 ACM SIGMOD international conference on management of data. - ACM, 2015. - p. 1383-1394.
14. Wolfengagen V. E., Ismailova L. Y., Kosikov S. V. Model of conversion of data objects for defining the object-relation mapping //Procedia computer science. - 2018. - Т. 123. - p. 541-546.
15. Keith M., Schincariol M., Nardone M. Pro JPA 2 in Java EE 8: An In-Depth Guide to Java Persistence APIs. - Apress, 2018.
16.Ottinger J. B., Linwood J., Minter D. Beginning Hibernate: For Hibernate 5. - Apress, 2016.
17. Cosmina I. et al. Data Access in Spring with JPA2 //Pro Spring 5. - Apress, Berkeley, CA, 2017. - p. 393-466.