Программа автоматической проверки заданий по программированию - Дипломная работа

бесплатно 0
4.5 117
Определение сущности компиляции – транслирования исходного кода программы в более низкоуровневый код. Исследование процесса взаимодействия с программой через командную строку и файлы. Ознакомление с принципами безопасности выполнения стороннего кода.


Аннотация к работе
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ Программа автоматической проверки заданий по программированию По направлению подготовки 09.03.04 «Программная инженерия» Научный руководитель: доцент департамента программной инженерии, к.т.н.Работа посвящена автоматизации процессов проверки заданий по программированию. В работе представлены критерии, по которым может быть осуществлена проверка заданий, рассмотрены различные подходы к анализу исходного текста программы, тестированию поведения программы, включающему помимо запуска программы ее сборку из исходного кода. На основе анализа различных подходов верификации программного обеспечения, а также автоматизации сборки и тестирования программ с помощью практики непрерывной интеграции был разработан подход осуществления автоматизированной проверки заданий по программированию. Объектом разработки является программа, поддерживающая множество критериев оценки работ, осуществляющая автоматизированную проверку этих критериев. Программа призвана уменьшить время проверки заданий, а также снизить задержку между сдачей работы и ее оцениванием.Автоматизация процессов проверки заданий по программированию актуальная и обширная задача, затрагивающая многие сферы программной инженерии. Более того, количество таких курсов со временем только растет, а также появляются платформы дистанционного обучения, увеличивается количество материала, требующего проверки. Помимо временных затрат при «ручной» проверке возникает целый ряд проблем: · Продолжительный период между сдачей работы и ее оцениванием может негативно сказаться на процессе обучения, так как обучающийся не получает своевременно обратную связь. · В связи с большим количеством работ увеличивается риск появления плагиата в работах. В рамках данной выпускной квалификационной работы была поставлена цель - разработать программу для автоматизации проверки работ по программированию.Проверка заданий по программированию представляет собой задачу анализа программ на предмет соответствию ряду критериев. Программы, в свою очередь, могут быть написаны с использованием компилируемых или интерпретируемых [1] языков программирования. Наличие двух разных типов языков предполагает, что программы могут быть представлены как минимум в двух видах: · В виде исходного кода программы. В случае компилируемого языка, для проверки работоспособности такой программы требуется провести этап компиляции исходного кода для получения запускаемого приложения. В случае же интерпретируемого языка программа уже может быть запущена в том виде, в котором и представлена.При проверке заданий по программированию предполагается, что решения данного задания будут представлены во множественном количестве, и их необходимо проверять по одинаковому набору критериев. компиляция программа файл Тем не менее, существует ряд инструментов, которые решают похожие задачи, среди которых можно выделить три наиболее подходящих и популярных инструмента: ejudge [4], Peach3 [5] и Web-CAT [6]. 1. ejudge является системой проведения онлайн соревнований по программированию и представляет собой мощный инструмент, позволяющий компилировать и запускать программы на исходном коде большинства популярных языков программирования. ejudge также способен осуществлять проверку правильности программы, используя для ввода-вывода данных командную строку. Некоторые версии Peach3 предоставляют возможность проверки исходного кода на плагиат, однако такие версии продукта не являются свободно распространяемыми.Как уже упоминалось ранее, выделенные критерии проверки задания по программированию сильно пересекаются с распространенными проблемами в индустрии, по этой причине стоит рассмотреть подходы и инструменты, решающие данные проблемы.Чтобы провести анализ подходов поиска плагиата в наборе документов, необходимо выделить ряд изменений исходного текста программы, к которым должен быть устойчив эффективный алгоритм [9]: 1. изменение комментариев кода; Среди наиболее распространенных подходов обнаружения плагиата можно выделить следующие [10]: · Анализ строковых представлений программного кода (поиск точных строковых совпадений между программными кодами). Данный подход позволяет избавиться от проблем, которые связаны с простыми изменениями изначальных документов, например, изменение количества пробелов, комментариев и т.д.; Данный подход является эффективным для обнаружения участков кода, которые не изменяют своей структуры в различных файлах, что наблюдается довольно редко; Метод является простым для реализации, но может содержать большое количество случайных совпадений, когда количественные значения метрик совпадают, но при этом функциональный смысл участков кода является совершенно разным.Проверка синтаксиса программ, написанных на компилируемых языках программирования, может быть легко проведена с помощью попытки компиляции данной программы.

План
Оглавление

Реферат

Основные определения, термины и понятия

Введение

1. Предметная область

1.1 Критерии проверки задания

1.2 Существующие решения

1.3 Обзор подходов и инструментов

1.3.1 Проверка исходного кода на плагиат

1.3.2 Проверка исходного кода на возможность компиляции и проверка синтаксиса на корректность

1.3.3 Проверка исходного кода на соответствие стандартам оформления

1.3.4 Компиляция исходного кода

1.3.5 Юнит тестирование

1.3.6 Взаимодействие с программой через командную строку и файлы

1.3.7 Ограничение используемых ресурсов

1.3.8 Инструменты непрерывной интеграции

2. Алгоритмы проверки заданий по программированию

2.1 Алгоритм работы статических анализаторов кода

2.2 Алгоритм поиска плагиата в наборе документов

2.2.1 Генерализация исходного кода

2.2.2 Алгоритм поиска и сравнения отпечатков

2.2.3 Поиск отпечатков

2.2.4 Сравнение отпечатков документов

2.2.5 Поиск совпавших областей в парах документов

2.2.6 Описание параметров алгоритма

2.3 Критерии оцениваемой работы

2.4 Роли

2.5 Файлы заданий

2.6 Результаты проверки

2.6.1 Результат проверки критерия

2.6.2 Разграничение доступа к результатам

2.6.3 Формирование итоговой оценки

2.7 Этапы выполнения проверки задания

3. Программная реализация

3.1 Модель данных

3.2 Архитектура приложения

3.3 Сервер оценки

3.3.1 REST интерфейс

3.3.2 Формат данных

3.3.3 База данных

3.3.4 Система учетных записей

3.3.5 Аутентификация

3.3.6 Роли

3.3.7 Регистрация на курсе

3.3.8 Сохранение пароля пользователя

3.4 Оценка работы

3.4.1 Поддерживаемые критерии

3.4.2 Концепция оценщиков

3.4.3 Взаимодействие с Jenkins

3.4.4 Файловая структура

3.4.5 Безопасность выполнения стороннего кода

3.4.6 Оценщик для поиска плагиата

3.5 Хранение файлов

3.6 Веб интерфейс программы

3.6.1 Взаимодействие с сервером оценки

3.6.2 Система шаблонов

Заключение

Список источников
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?