На стадии проектирования система была разбита на пять модулей, представленных на следующей диаграмме:
Рис.1 Компоненты системы
Все модули программно независимы друг от друга, то есть представляют собой пять независимых приложений, а их взамодействие регулируется протоколом клиент-серверного общения.
Функции, выполняемые каждым из модулей, следующие:
Сервер
Связующее звено, обслуживающее запросы ото всех клиентов. Координирует работу всей системы и осуществялет жизненный цикл процесса тестирования. Основные функции:
- регистрирует клиентов в системе;
- принимает и сохраняет решения в базе данных;
- сообщает результаты тестирования клиенту;
- распределяет задачи между тестерами;
- следит за корректной работой тестеров;
- принимает и обрабатывает администраторские запросы (запуск, остановка, перезагрузка системы);
- формирует и выдает текущий рейтинг;
- замораживает рейтинг.
Тестер
Осуществляет тестирование присланных решений. Именно от этого модуля зависит поведение всей системы в целом. Изменение поведения системы осуществляется заменой одного тестера на другой. Функции, выполняемые в текущей реализации:
- загружает с сервера набор задач и тестов;
- принимает от сервера задачи, компилирует их и тестирует;
- возвращает результат серверу;
Клиент
Приложение, с которым неспосредственно работает пользователь. Функциональность клиента в общем случае зависит от задачи, выполняемой системой. Функции, выполняемые в текущей реализации:
- загружает с сервера список задач и доступных компиляторов;
- отправляет серверу решение на проверку;
- принимает от сервера результат и предоставляет его пользователю.
Рейтинг-сервер
Содержит локальную копию рейтинга, которую он передает любому клиенту извне. Форма, в которой он предоставляет рейтинг, произвольна. Рейтинг-сервер необходим для того, чтобы защитить сервер от сетевых атак. В текущей реализации рейтинг-сервера нет.
Администратор
Приложение, позволяющее администрировать сервер. Функции, выполняемые в текущей реализации:
- создание и редактирование профиля олимпиады (см. 1.2);
- запуск и изменение статуса олимпиады;
- дисквалификация команды;
- перезагрузка сервера.
Каналы связи
Большое внимание при разработке сервера было уделено вопросам безопасности. В результате, было решено обезопасить процесс общения клиентов с сервером путем введения виртуальных каналов передачи данных.
Сетевое соединение открывается только в том случае, если IP адрес клиента зарегистрирован в системе, поэтому подключение к серверу с посторонних IP адресов невозможно. Все общение между клиентом и сервером происходит через виртуальный канал связи, который устанавливается после открытия сетевого соединения по инициативе клиента.
Каналы связи бывают следующих типов:
- виртуальный канал для общения клиента-участника и сервера КУ-канал;
- виртуальный канал для общения тестера и сервера Т-канал;
- виртуальный канал для общения администратора и сервера А-канал.
Существует еще виртуальный канал передачи данных, по которому могут обрабатываться только запросы на выдачу рейтинга Р-канал. Данный канал открывается либо автоматически при открытии любого из остальных каналов, либо после соответствующего запроса (LOGIN rating).
Более подробное описание каналов передачи данных приведено в протоколе клиент-серверного общения.
Назад | На главную | Вперед
|