Черновикx

advertisement
Оглавление
Введение........................................................................................................................................... 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
Download