Оглавление Введение........................................................................................................................................... 3 1 Постановка задачи и цели разработки .................................................................................... 3 1.1 Описание проблемы .......................................................................................................... 3 1.2 Условия функционирования ...........................................Error! Bookmark not defined. 2 Обзор аналогов.......................................................................................................................... 3 3 Роли пользователей .................................................................................................................. 3 4 5 6 7 3.1 Участник............................................................................................................................. 3 3.2 Представитель общеобразовательного учреждения ...................................................... 5 3.3 Методист ............................................................................................................................ 5 3.4 Администратор .................................................................................................................. 5 Структура системы ................................................................................................................... 5 4.1 Объектная модель.............................................................................................................. 5 4.2 Типы задач ....................................................................................................................... 10 4.3 Процесс проведения интернет-олимпиады................................................................... 10 Основные проблемы при разработке .................................................................................... 10 5.1 Проверка правильности введения задач ....................................................................... 10 5.2 Защита условий задач ..................................................................................................... 11 5.3 Проверка правильности ответа участников ...................Error! Bookmark not defined. 5.4 Обеспечение целостности результатов участников ..................................................... 15 5.5 Обеспечение стабильной работы системы при высоких нагрузках ........................... 15 Архитектура системы ............................................................................................................. 15 6.1 Используемое ПО ............................................................................................................ 15 6.2 Жизненный цикл обработки запроса ............................................................................. 15 Схема базы данных ................................................................................................................. 16 7.1 Системная модель ........................................................................................................... 17 7.2 Модель «Города»............................................................................................................. 19 1 7.3 Модель «Пользователи» ................................................................................................. 20 7.4 Модель «Олимпиады» .................................................................................................... 21 7.5 Модель «Задачи» ............................................................................................................. 22 7.6 Модель «Результаты» ..................................................................................................... 23 8 Технико-экономическое обоснование разработки дипломного проекта .......................... 23 9 Безопасность жизнедеятельности ......................................................................................... 23 10 Заключение .......................................................................................................................... 23 Список используемых источников .............................................................................................. 23 2 Введение 1 Постановка задачи и цели разработки 1.1 Описание проблемы 2 Обзор аналогов 3 Роли пользователей В системе существуют четыре роли пользователей: участник; представитель общеобразовательного учреждения (учитель); методист; администратор. Действия ролей пересекаются между собой. Например, действие «Просмотр отчетов» может осуществляться как администратором и методистом, так и учителем. Единственное различие – набор допустимых отчетов и применяемые фильтры. Учитель может посмотреть отчеты только своей школы, а Администратор – по всем школам. Рисунок N. Диаграмма вариантов использования ролей Рассмотрим основные интерфейсы пользователей и основные действия. 3.1 Участник Интерфейс участника становится доступен ученику после его аутентификации в системе. Участник может получить имя пользователя и пароль двумя способами: 3 Если зарегистрировался самостоятельно через сайт olymp.ifmo.ru; Если представитель ОУ добавил его через интерфейс учителя. Рисунок N. Интерфейс участника. Форма ввода имени пользователя и пароля После ввода имени пользователя и пароля участник видит список доступных ему туров интернет-олимпиад. Рисунок N. Интерфейс участника. Список доступных туров 4 В этом списке отображаются все туры, в которых участник мог принимать участие. 3.2 Представитель общеобразовательного учреждения 3.3 Методист 3.4 Администратор 4 Структура системы 4.1 Объектная модель Основными объектами в системе являются: Олимпиада; Тур; Вариант; Задача; Регион Город Район Школа; Участник; Тур участника. Объекты условно можно разделить на две группы: группа, необходимая для проведения олимпиады и группа, описывающая участников олимпиады. Олимпиада Тур Вариант Задача Рисунок N. Проведение олимпиады Участник Регион Город Школа Туры участника Регион Рисунок N. Участники олимпиады 5 У всех объектов есть свойство «Статус», которое может принимать значения: а) Опубликован – объект доступен во всех интерфейсах; б) Не опубликован – объект доступен только в интерфейсе администратора в) Удален – объект не доступен ни в одном интерфейсе. Рассмотрим подробнее свойства этих объектов. 4.1.1 Олимпиада Основной объект в группе «Проведение олимпиады». Свойства: Название олимпиады, например «Олимпиада по математике 2009/2010»; Коэффициент С – коэффициент для подсчета суммы конечных баллов в зависимости от индекса решаемости задачи; Показывать ответы – публикация правильных ответов к задачам в интерфейсе участника; В списке видимости для школ – разрешение представителю ОУ принимать участие в олимпиаде; Статус. 4.1.2 Тур Свойства: Олимпиада – ссылка на объект «Олимпиада»; Название тура, например «Первый тур (информатика, 11 класс); Дата начала – дата и время, начиная с которой участник может пройти тур; Дата окончания – дата и время, до которой участник может пройти тур; Коэффициент С – переопределение аналогичного свойства в объекте «Олимпиада»; Длительность – временной интервал, ограничивающий прохождение тура. Если интервал не задан, то участник может пройти тур до его даты окончания; Количество попыток, выдаваемое на тур. По умолчанию дается одна попытка. Показать ответы – переопределение аналогичного свойства в объекте «Олимпиада»; В списке видимости для школ – переопределение аналогичного свойства в объекте «Олимпиада»; Очный тур – специальный флаг, изменяющий работу системы при проведении очного тура; Разрешить апелляции – флаг, разрешающий подачу апелляций после опубликования результатов; 6 Статус; Список вариантов – определение возможных вариантов, которые получит участник. 4.1.3 Вариант Вариант представляет собой набор задач. У тура может быть несколько вариантов. Одна задача может находиться одновременно в нескольких вариантах. Свойства: Название варианта; Описание варианта; Список вопросов; Статус. 4.1.4 Задача Существует несколько типов задач, подробнее они будут рассмотрены в подразделе 4.1.5. Свойства: Тип задачи – тип, определяющий поведение задачи в системе; Содержание – условие задачи; Комментарии – текстовое поле, в котором можно указать комментарии к условию задачи или к формату ввода ответа; Баллы – вещественное число, определяющее вес задачи. В прошедших олимпиадах использовались значения 1, 2, 3, 4; Правильный ответ – текстовое поле для ввода правильного ответа к задаче. Если правильных ответов несколько, то они вводятся через две вертикальных линии «||»; Рубрика – местоположение задачи в системе; Статус – «опубликован», «не опубликован», «удален», «на рассмотрении»; Варианты ответов – массив строк, применяется только для заданий закрытой формы. 4.1.5 Регион Свойства: Название региона; Номер региона 4.1.6 Город Свойства: 7 Название города; Страна; Порядковый номер – номер, определяющий город в списке; Регион – ссылка на объект «Регион»; Статус. 4.1.7 Школа Свойства: Название школы или общеобразовательного учреждения, например «ФМЛ №239» или «ГОУ СОШ №1»; Город – ссылка на объект «Город»; Район города – ссылка на объект «Район»; Описание – почтовый адрес или дополнительная информация; Email – адрес электронной почты, на который отправляется имя пользователя и пароль; Телефон – контактный телефон; Контактное лицо представителя ОУ; Внешний идентификатор – текстовое поле, используется для интеграции с внешними системами; Имя пользователя – выдается автоматически на основе города; Пароль – выдается автоматически на основе имени пользователя; Дата создания – дата регистрации школы в системе; Статус. 4.1.8 Участник Участника олимпиады невозможно создать без школы. Свойства: Школа – ссылка на объект «Школа»; Фамилия участника; Имя участника; Отчество участника; Класс участника, для удобства находится в диапазоне от 7 до 11; Email – адрес электронной почты; Адрес – место жительства; Телефон – контактный телефон для связи; 8 Внешний идентификатор – текстовое поле, используется для интеграции с внешними системами; Имя пользователя – выдается автоматически на основе школы; Пароль – выдается автоматически на основе имени пользователя; Тип документа – паспорт, свидетельство о рождении или другой документ; Название документа – дополнительное название для другого типа документа; Номер документа; Дата рождения участника; Идентификатор создателя объекта – свойство, для определения типа регистрации (самостоятельной регистрация или регистрация школой); Дата создания – дата регистрации пользователя в системе; Статус. 4.1.9 Тур участника Участник может принимать участие в разных турах. Свойства: Участник – ссылка на объект «Участник»; Тур – ссылка на объект «Тур»; Вариант – ссылка на объект «Вариант»; Дата начала – дата начала прохождения тура; Дата окончания – дата окончания прохождения тура; Сервер – имя сервера, на котором проводится тур; Количество попыток, которое участник потратил на прохождение тура. 9 4.2 Типы задач 4.2.1 Задания закрытой формы 4.2.2 Задания открытой формы 4.2.3 Проверка правильности математического выражения 4.2.4 Задачи на программирование с автоматической проверкой решения 4.3 Процесс проведения интернет-олимпиады 5 Основные проблемы при разработке При разработке системы и первом запуске пилотной версии мы столкнулись с некоторыми проблемами: при введении задач в систему допускаются ошибки; условия задач – ценная информация, которая не должна попасть третьим лицам; участник вводит ответы не так, как требуется в комментариях к задачи (т.е. ответ его верный, но записан в другой форме); необходимо защитить результаты участников от несанкционированного исправления; при большом одновременном количестве участников система может начать медленно работать; Рассмотрим детальнее данные проблемы и способы их решения. 5.1 Проверка правильности введения задач Для решения данной проблемы в систему была введена роль «Методист». После заведения задач администратором, методисты начинают проверку условий задач. Если в задаче допущена ошибка, то методист оставляет комментарий к задаче и отправляет её на рассмотрение. Остальные методисты, имеющие доступ к этой задаче, видят её статус и комментарии. У администратора отображается на главной странице количество задач, отправленных на рассмотрение. После внесения изменений администратор изменяет статус задачи на «Опубликован». Создается соответствующий комментарий «Задача была опубликована» от имени администратора. У методистов, имеющих доступ к этой задаче, появляется новый непрочитанный комментарий. Как правило, задачи проверяют сразу несколько методистов. Если в задаче есть логическая ошибка, то методист также оставляет комментарий. Остальные методисты при входе в систему 10 видят количество новых комментариев. Таким образом, методисты взаимодействуют друг с другом и с администратором системы. Методисты могут комментировать задачи и отправлять их на рассмотрение в любое время, даже после начала и окончания тура. В процессе проведения тура у методиста есть два полезных инструмента: отчет «Индекс решаемости задач»; рейтинг ответов участников по определенной задаче. С помощью отчета «Индекс решаемости задач» (рис…) методист может обнаружить задачи с нулевым количеством правильных ответов. Это означает, что либо в задаче была допущена ошибка, либо уровень задачи слишком сложный для участников. С помощью рейтинга ответов участника методист может определить, существует ли ещё варианты правильных ответов на задачи, которые не были записаны в систему. Подводя итоги, мы можем выделить следующие принятые меры: проверка задач перед началом тура методистами; комментирование задач; отправка задач на рассмотрение; просмотр ответов участников; использование отчета «Индекс решаемости задач». 5.2 Защита условий задач Условия задач – ценная информация, которая не должна попасть третьим лицам. Только администратор и методисты обладают доступом к условиям задач до начала тура. В системе может одновременно проводится несколько туров, а условия к ним разрабатывают разные методисты, поэтому необходимо предусмотреть разграничение прав доступа по задачам. Банк задач представлен в виде дерева. На текущий момент структура выглядит следующим образом: Информатика 2009/2010 o 11 класс Первая тренировочная сессия Первая тренировочная сессия o 7-8 класс Первый тур o 9-10 класс Первый тур 11 Математика 2009/2010 o 11 класс Первый тур Задача 1 Задача 2 Первая тренировочная сессия o 7 класс Первый тур Было принято решение предоставлять доступ методистам для разных и вложенных рубрик. Так как условие задачи представляет собой HTML-код, то в нее можно вставлять разные картинки и ссылки на файлы (например, формулы и ссылки на PDF-документы). При использовании картинок в условиях задач файлы сохраняются на сервер в определенную папку по шаблону «<идентификатор_папки>_<идентификатор файла>.<расширение файла>». Таким образом, потенциальный злоумышленник может подобрать абсолютные пути до файлов. Было принято решение изменить шаблон пути хранения файлов на «<идентификатор_папки>_<идентификатор файла>_<случайные данные >.<расширение файла>». Доступ в систему осуществляется через web-интерфейс по протоколу HTTP1. Передача данных осуществляется в текстовом незашифрованном виде. Поэтому существует возможность прослушивания трафика третьими лицами. Для устранения данной проблемы был приобретен SSL2-сертификат сроком на пять лет. Теперь доступ в систему для методистов и администраторов осуществляется по протоколу HTTPS3 через защищенное соединение с шифрованием передачи данных. 1 HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). 2 SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером. 3 HTTPS (Hypertext Transfer Protocol Secure) — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTP, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443. 12 Рисунок N. SSL-сертификат сервера olymp.ifmo.ru Подводя итоги, мы можем выделить следующие принятые меры: разграничение прав доступа по задачам; случайные имена файлов изображений, используемые в задачах; использование безопасного соединения. 5.3 Проверка правильности ответа участников Прежде всего, участнику нужно сообщить о форме записи ответа. Ниже приведен пример комментария к одной из задач по математике: Примеры записи ответа: 3 -3; 7 1,25 10/3 -2; 1; 7 -3; sqrt(3) 2-sqrt(3); 2+sqrt(3) нет решений Если уравнение имеет несколько решений, то их следует записывать в порядке возрастания. Если в ответе получается дробное число, то оно записывается в виде 10/3 для простых дробей и 1,25 для десятичных. Если число отрицательное, его следует вводить со знаком "минус", например: -3. В приведенных примерах sqrt(n) означает квадратный корень из числа n. 13 Участник видит данный комментарий на странице ввода ответа. Но, в процессе проведения первых интернет-олимпиад было обнаружено, что участники не следуют принятой форме записи ответа. На основе анализа ответов участников были разработаны основные правила по нормализации ответа: приведение ответа к нижнему регистру; удаление всех пробелов; удаление специальных символов; удаление символа «*»; замена запятых на точки; замена тире и дефисов на минус; При сравнении ответа участника с правильным ответом процесс нормализации проходят оба ответа. К сожалению, такая нормализация подходит не для всех задач. Например, если мы будем проводить олимпиаду по русскому языку, то при вводе ответа не будут учитываться ни пробелы, ни строчные и прописные буквы. Решением данной проблемы служит создание специальных настроек у задачи, в которых можно выбрать, каким образом будет осуществляться проверка ответа пользователя. Поэтому такая нормализация больше всего подходит для задач открытой формы по математике и информатике. Очень часто возникает ситуация, когда ответ участника правильный, но записан в другой форме. Поэтому в системе была реализована возможность подачи апелляций (см…). Если у тура установлены флаги «Показывать ответы» и «Разрешить апелляции», то в интерфейсе участника напротив каждого неправильного ответа появляется ссылка «Мой ответ верный, но записан в другой форме. Отправить на рассмотрение». После того, как участник создал заявку, методист и администратор могут принять или отклонить её. Более того, если в системе существуют принятые апелляции, то возможно найти аналогичные ответы пользователей, не отправивших свой ответ на рассмотрение. Таким образом, в системе существует двухуровневая система проверки ответов участника – автоматическая и ручная. Подводя итоги, мы можем выделить следующие принятые меры: примеры ввода ответа; нормализация ответа участника; система апелляций. 14 5.4 Обеспечение целостности результатов участников При проведении олимпиады необходимо выполнить три главных условия: идентифицировать участника; сохранить его ответ при отправке (даже если после этого произошел обрыв связи); не допустить анонимное изменение его ответов; Идентификация участника происходит на основе имени пользователя и пароля. Данного действия достаточно для проведения тренировочных и основных сессий. Подводя итоги, мы можем выделить следующие принятые меры: использование внешних ключей; система аудита изменения результатов; разграничение доступа для принятия апелляций по задачам; альтернативный способ аутентификации для очного тура. 5.5 Обеспечение стабильной работы системы при высоких нагрузках 6 Архитектура системы 6.1 Используемое ПО 6.2 Жизненный цикл обработки запроса 15 7 Схема базы данных При проектировании БД мы использовали принцип «одна таблица – один объект». Схема базы данных состоит из 32 таблиц. Для удобства структура была разбита на несколько логических частей: Системная модель; Модель «Города»; Модель «Пользователи»; Модель «Олимпиады»; Модель «Задачи»; Модель «Результаты». Рисунок N. Схема базы данных Рассмотрим каждую часть более подробно. 16 7.1 Системная модель Рисунок N. Системная модель Краткое описание таблиц: users – информация об администраторах системы; daemonLocks – реализация блокировок для выполнения длительных задач; statuses – информация о статусах в системе; vfsFolders – структура папок виртуальной файловой системы; vfsFiles – структура файлов виртуальной файловой системы; 17 vfsFoldersTree – вспомогательная таблица для реализации деревьев в базе данных путем использования библиотеки ltree4;. 4 Ltree – модуль базы данных PostgreSQL для работы с иерархическими структурами данных. 18 7.2 Модель «Города» Рисунок N. Модель «Города» Краткое описание таблиц: districts – реализация объекта «Район» (пункт 4.1.5); cities – реализация объекта «Город» (пункт 4.1.6); regions – реализация объекта «Регион» (пункт 4.1.5); 19 7.3 Модель «Пользователи» Рисунок N. Модель «Пользователи» Краткое описание таблиц: methodists – информация о методистах; schools – реализация объекта «Школа» (пункт 4.1.7); participants – реализация объекта «Участник» (пункт 4.1.8); roundUsers – реализация объекта «Тур участника» (пункт 4.1.9). 20 7.4 Модель «Олимпиады» Рисунок N. Модель «Олимпиады» Краткое описание таблиц: olympiads – реализация объекта «Олимпиада» (пункт 4.1.1); rounds – реализация объекта «Тур» (пункт 4.1.2); roundVariants – информация о вариантах тура; variants – реализация объекта «Вариант» (пункт 4.1.3); autoAssigns – хранение данных об автоматическом назначении участников на тур. 21 7.5 Модель «Задачи» Рисунок N. Модель «Задачи» Краткое описание таблиц: questionTypes – типы вопросов (подраздел 4.2); questions – реализация объекта «Задача» (пункт 4.1.4); variantQuestions – список вопросов варианта; comments – комментарии методистов к задачам; viewedComments – просмотренные комментарии методистов; languageTypes – типы языков программирования; questionRubrics – банк задач, представленный в виде дерева; questionRubricsTree – вспомогательная таблица для реализации дерева рубрик; questionAttempts – информация о количестве попыток на задачи по каждому туру; ruQuestionPoints – переопределение баллов задач для каждого участника. 22 7.6 Модель «Результаты» Рисунок N. Модель «Результаты» Краткое описание таблиц: results – таблица с результатами участников; resultsQueue – очередь решений задач по программированию. 8 Технико-экономическое обоснование разработки дипломного проекта 9 Безопасность жизнедеятельности 10 Заключение Список используемых источников Teodor Sigaev (teodor@sigaev.ru) and Oleg Bartunov, http://www.sai.msu.su/~megera/postgres/gist/ltree/ 23