Автоматизированная система для проведения практических занятий по программированию - page 3

Автоматизированная система для проведения практических занятий…
3
нит всю информацию за весь период эксплуатации системы, т. е. сту-
дент четвертого курса имеет возможность решать задачи, которые он
не успел решить, например, на первом курсе, а сервер обнаружения
некорректных заимствований может выявлять решения, списанные
студентами у своих старших товарищей.
Развертывание web-сервера T-BMSTU на новом компьютере, ра-
ботающем под управлением операционной системы Linux, не требует
больших усилий благодаря тому, что web-сервер не зависит от уста-
новленного на компьютере программного обеспечения, а его конфи-
гурирование сводится к указанию путей к базе данных и каталогу
условий задач с наборами тестов. Можно предположить, что исход-
ный код web-сервера можно откомпилировать и запустить в любой
современной UNIX-системе, для которой существуют компилятор
языка Go и библиотека sqlite3 для управления базами данных.
Например, нет никаких сомнений, что web-сервер будет работать в
системах FreeBSD и MacOS X, хотя соответствующих экспериментов
не проводили. Что касается запуска web-сервера в операционной си-
стеме Windows, то для этого потребуется внести в его исходный код
незначительные изменения, связанные с обработкой системных сиг-
налов.
Проверку решений, отправляемых студентом в систему T-BMSTU,
осуществляет
сервер тестирования
. Сервер тестирования реализован
в виде скрипта на языке Ruby. Он аутентифицируется на web-сервере
как преподаватель, имеющий право просматривать решения студен-
тов, отклонять неправильные решения и добавлять к ним коммента-
рии.
Одновременно могут работать несколько серверов тестирования.
Балансировка нагрузки между ними осуществляется путем «голосо-
вания»: через определенный интервал времени каждый свободный
сервер тестирования опрашивает web-сервер, пытаясь получить ис-
ходный текст решения, которое нужно проверить. Таким образом,
серверы тестирования, занятые проверкой, автоматически исключа-
ются на время проверки из процесса распределения отправленных
решений.
В настоящий момент сервер тестирования поддерживает семь
языков программирования: C, C++, Pascal, Java, Go, Ruby и Scheme.
Если полученное решение написано на языке, требующем компиля-
ции, сервер тестирования вызывает соответствующий компилятор и
получает либо исполняемый файл, либо набор сообщений об ошиб-
ках. В случае интерпретируемых языков Ruby и Scheme сервер те-
стирования вызывает интерпретатор языка в режиме поиска синтак-
сических ошибок. В любом случае решение, содержащее
синтаксические ошибки, сразу отклоняется, и web-серверу посылает-
1,2 4,5,6,7,8,9,10
Powered by FlippingBook