ВВЕДЕНИЕ 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, разработан интерфейс для интеграции в систему «Цифровой след студента».