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


РАЗРАБОТКА СИСТЕМЫ ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ИСХОДНОГО КОДА ПРОГРАММ

Работа №72255

Тип работы

Магистерская диссертация

Предмет

программирование

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

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


ВВЕДЕНИЕ 4
ГЛАВА 1. ОБЗОР СВЯЗАННЫХ РАБОТ И РЕШЕНИЙ 6
1.1. Программные пакеты анализа кода 6
1.2. Подходы к решению задачи анализа программного кода в научных
работах 10
ГЛАВА 2. МЕТРИКИ ПРОГРАММНОГО КОДА 14
2.1. Стилометрические признаки для решения задачи классификации 14
2.2. Использование признаков кода для качественной оценки 17
ГЛАВА 3. ИНСТРУМЕНТАЛЬНЫЕ И ПРОГРАММНЫЕ СРЕДСТВА, ИСПОЛЬЗОВАНЬЕ В РАЗРАБОТКЕ СИСТЕМЫ 21
ГЛАВА 4. ПРОГРАМНАЯ РЕАЛИЗАЦИЯ СИСТЕМЫ АНАЛИЗА
ПРОГРАММНОГО КОДА 25
4.1. Источники данных и их обработка 25
4.2. Хранение данных 28
4.3. Веб-интерфейс 33
ГЛАВА 5. РАБОТА С ВЕБ-ПРИЛОЖЕНИЕМ 34
5.1. Просмотр данных отдельного студента 34
5.2. Просмотр данных по всей группе и подгруппам 38
5.3. Анализ корреляции признаков 40
ГЛАВА 6. ИНТЕГРАЦИЯ ПРИЛОЖЕНИЯ В СИСТЕМУ «ЦИФРОВОЙ
СЛЕД СТУДЕНТА» 43
ЗАКЛЮЧЕНИЕ 46
СПИСОК ЛИТЕРАТУРЫ 48
Приложение

Для улучшения качества образования всё чаще используются различные информационные технологии, в том числе для анализа работ студентов. В то время, как программные средства анализа не могут заменить квалифицированного преподавателя, наличие сервиса для анализа сбора и кода может помочь преподавателю в поиске типичных недочетов, а также помочь учитывать большое количество работ [1].
Особенно актуально это может быть, когда проверка работ производится несколькими преподавателями в независимых группах. С применением автоматизированных систем в таком случае появляется возможность рассматривать и сравнивать работы всех студентов.
Наличие сервиса для сбора и анализа работ позволит преподавателю быстро находить предыдущие работы того же студента и сравнивать работу студента по определенному заданию с решениями других студентов по тому же заданию (попарно сравнивать файлы построчно или сравнивать большие наборы используя различные метрики — длину кода, количество методов, количество комментариев, длины идентификаторов, количество аргументов функций и др.).
Одним из возможных применений анализа кода является проверка на плагиат. По причине простоты замены имен переменных и других идентификаторов в коде программы традиционный текстовый поиск и сравнение не позволяют выявлять случаи плагиата. Поэтому, качественная проверка должна опираться на структуру кода, для чего требуется анализ кода.
В рамках выпускной квалификационной работы была поставлена цель — разработка системы интеллектуального анализа исходного кода программ.
Для достижения цели были выделены следующие задачи:
• Рассмотреть возможности существующих инструментов анализа
программного кода.
• Рассмотреть научные статьи, рассматривающие вопросы анализа программного кода.
• Рассмотреть стандарты и рекомендации по написанию программного кода.
• Провести анализ методов и технологий, направленных на оценку качества программного кода и проверки кода на плагиат.
• Разработать web-сервис для анализа кода программ на примере решений лабораторных работ по курсам «Языки программирования» и «Объектно-ориентированное программирование».
• Произвести интеграцию сервиса в систему «Цифровой след студента», разрабатываемой для помощи в организации и анализе работ студентов в течение учебного процесса.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В результате проведенного исследования были изучены инструменты для анализа программного кода: как статического анализа, так и динамического. Приведены примеры инструментов анализа для отдельных разработчиков и для командных проектов. Изучены сферы и цели применения средств анализа кода.
Рассмотрены статьи, посвященные анализу программного кода с использованием стилометрии кода. Рассмотрены стандарты и рекомендации, позволяющие давать качественную оценку программного кода используя количественные признаки.
В результате работы было разработана система хранения и анализа программных кодов студентов для улучшения образовательного процесса. Разработанное веб-приложение для анализа программных кодов было протестировано на примере более 600 работ, написанных на языках C++ и C# студентами 1 курса направлений «Компьютерная безопасность» и «Математическое обеспечение и администрирование информационных систем» Института математики и компьютерных наук ТюмГУ
Проверено предположение о корреляции результатов ЕГЭ студента по информатике со стилем кода студента.
Рассмотрены потенциальные возможности по расширению функционала: классификация неразмеченных работ, и сравнение образцов кода в целях борьбы с плагиатом.
Результаты работы были представлены на Всероссийской конференции «МАТЕМАТИЧЕСКОЕ И ИНФОРМАЦИОННОЕ МОДЕЛИРОВАНИЕ» (МиИМ-2020) на секции «Разработка технологий Интернета вещей и больших данных» (июнь 2020). Статья «АНАЛИЗ КОЛИЧЕСТВЕННЫХ ПРИЗНАКОВ ПРОГРАММНОГО КОДА» принята к печати.
Разработанное приложение дополнительно реализовано в виде REST- API сервиса. Web-страницы перенесены на язык разметки Jinja, разработан интерфейс для интеграции в систему «Цифровой след студента».



1. Воробьева, М.С., Павлова Е.А. Разработка конструктора вариантов индивидуальных заданий на основе шаблонов/ М. С. Воробьева, Е.А. Павлова // Современные исследования социальных проблем. - 2017. №8. - С. 214-217.
2. S. C. Johnson. Lint, a C Program. Bell Laboratories, Murray Hill. 1978.
3. Flowers, T. & Carver, Curtis & Jackson, J. Empowering students and building confidence in novice programmers through Gauntlet. 2004 T3H/10 - T3H/13 Vol. 1. 10.1109/FIE.2004.1408551.
4. Schleimer, Saul & Wilkerson, Daniel & Aiken, Alex. (2003). Winnowing: Local Algorithms for Document Fingerprinting. Proceedings of the ACM SIGMOD International Conference on Management of Data.
10. 10.1145/872757.872770.
5. Карпов А.Н. Как уменьшить вероятность ошибки на этапе
написания кода. Заметка N2. ООО "СиПроВер". 2011 // URL:
https://www.viva64.com/ru/a/0072/ (дата обращения: 22.04.2020).
6. Куртукова А.В., Романов А.С. Идентификация автора исходного кода методами машинного обучения // Труды СПИИРАН. 2019. № 3 (18). C. 742-766.
7. Wang, Ningfei; Ji, Shouling; Wang, Ting. Integration of static and dynamic code stylometry analysis for programmer de-anonymization / AISec 2018 — Proceedings of the 11th ACM Workshop on Artificial Intelligence and Security, co-located with CCS 2018. Association for Computing Machinery, 2018. С. 74-84.
8. Стрельчёнок, Г.В. Ступенчатый метод проверки исходного кода
программы на плагиат / Санкт-Петербургский государственный университет, 2016 // URL: https://nauchkor.ru/pubs/stupenchatyy-
metod-proverki-ishodnogo-koda-programmy-na-plagiat- 587d36555f1be77c40d58cf6 (дата обращения: 15.03.2020).
9. Aylin Caliskan-Islam, Richard Harang, Andrew Liu, Arvind Narayanan, Clare Voss, Fabian Yamaguchi, and Rachel Greenstadt. De-anonymizing programmers via code stylometry / 24th USENIX Security Symposium (USENIX Security), Washington, DC. 2015.
10.IvanKrsul, Eugene H.Spafford. Authorship Analysis: Identifying The Author of a Program / The COAST Project, Department of Computer Sciences, Purdue University, West Lafayette. 1995.
11. Аврискин М.В., Павлова Е.А. Разработка приложения для
определения авторства программного кода / М.В. Аврискин, Е.А. Павлова // Математическое и информационное моделирование. Издательство
ТюмГУ, 2019. С. 54-60.
12.Sudipta Mukherjee. 2017. Source Code Analytics with Roslyn and Javascript Data Visualization (1 издание). Apress, Berkely, CA, USA
13. ГОСТ 28195 - 89 "Оценка качества программных средств".
14. Guidelines for the Use of the C Language in Critical Systems, Motor Industry Software Research Association, 2004 ISBN 0-9524156-4-X.
15. Gerard J. Holzmann, The power of 10: rules for developing safety- critical code, Computer Magazine, 39 том, 6 номер, июнь 2006, С. 95¬99.
16. Guido van Rossum, Barry Warsaw, Nick Coghlan. PEP 8 — Style Guide
for Python Code / Python Software Foundation. 2001 // URL:
https://www. python. org/dev/peps/pep-0008/ (дата обращения:
23.03.2020).
17. Lifecycle FAQ - .NET Framework, Microsoft / 18 июля 2016г // URL:
https://docs.microsoft.com/en-us/lifecycle/faq/dotnet-framework (дата
обращения: 12.05.2020).
PostgreSQL 12.3 // The PostgreSQL
Global Development Group, 2020 // URL:
https://postgrespro.ru/media/docs/postgresql/12/ru/postgres-A4.pdf (дата обращения: 19.04.2020).


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



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


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