Разработка математического обеспечения информационной системы проведения олимпиад по информатике
Анализ современного состояния проблемы организации и проведения олимпиад по естественным наукам. Построение функциональной модели, проектирование архитектуры данных. Пользовательский интерфейс, обоснование выбора средств разработки и системы управления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 30.07.2016 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
На рисунке 9 представлена ER-диаграмма проектируемой базы данных.
Рисунок 9. ER-диаграмма базы данных для проектируемой системы
Базовой сущностью для хранения данных обо всех пользователях системы, за исключением администраторов, является таблица "user_tab1", содержащая личную информацию пользователя. Таблицы "user_tab2" и "user_tab3" содержат временные характеристики и контактную информацию пользователя.
Таблица 5
Атрибуты таблиц для сущности Пользователь
Поле |
Тип данных |
Источник (таблица) |
Значение |
Примечание |
|
Id_user |
Int |
User_tab1 |
Идентификатор |
Первичный ключ, уникальное |
|
Login |
Varchar(45) |
User_tab1 |
Логин пользователя |
Обязательное |
|
Password |
Varchar(45) |
User_tab1 |
Пароль пользователя |
Обязательное |
|
Active |
Binary(1) |
User_tab1 |
Идентификатор активности |
1 - активен 0 - неактивен |
|
Result |
Int(11) |
User_tab1 |
Результат в баллах |
||
Pre |
Varchar(45) |
User_tab1 |
Префикс олимпиады |
||
Role |
Int(11) |
Roles |
Роль пользователя в системе |
||
Time_login |
Datetime |
User_tab2 |
Время входа в системе |
||
Time_logout |
Datetime |
User_tab2 |
Время выхода из системы |
||
Time_start |
Datetime |
User_tab2 |
Время начала олимпиады |
||
Time_finish |
Datetime |
User_tab2 |
Время окончания олимпиады |
||
Date_create |
Datetime |
User_tab2 |
Дата создания профиля |
||
Date_edit |
Datetime |
User_tab2 |
Дата последнего редактирования |
||
Name |
Varchar(255) |
User_tab3 |
Имя |
||
Secondname |
Varchar(255) |
User_tab3 |
Отчество |
||
Surname |
Varchar(255) |
User_tab3 |
Фамилия |
||
Class |
Int(11) |
User_tab3 |
Класс |
||
Sex |
Binary(1) |
User_tab3 |
Пол |
||
Country |
Varchar(255) |
User_tab3 |
Страна |
||
City |
Varchar(255) |
User_tab3 |
Город |
||
Region |
Varchar(255) |
User_tab3 |
Регион |
||
|
Varchar(255) |
User_tab3 |
Электронный ящик пользователя |
По приведенной выше ER-диаграмме и указанным атрибутам можно сгенерировать SQL-код для созданий таблиц "user_tab1", "user_tab2", "user_tab3" в базе данных "olymp".
CREATE TABLE IF NOT EXISTS `user_tab1` (
`id_user` int(11) NOT NULL,
`login` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`active` binary(1) NOT NULL DEFAULT '1',
`result` int(11) DEFAULT NULL,
`pre` varchar(45) DEFAULT NULL,
`role` int(11) DEFAULT NULL,
ADD PRIMARY KEY (`id_user`), ADD UNIQUE KEY `id_user_UNIQUE` (`id_user`);
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `user_tab2` (
`id_user` int(11) NOT NULL,
`time_login` datetime DEFAULT NULL,
`time_logout` datetime DEFAULT NULL,
`time_start` datetime DEFAULT NULL,
`time_finish` datetime DEFAULT NULL,
`date_create` datetime DEFAULT NULL,
`date_edit` datetime DEFAULT NULL,
ADD PRIMARY KEY (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `user_tab3` (
`id_user` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`surname` varchar(255) DEFAULT NULL,
`class` int(11) DEFAULT NULL,
`sex` binary(1) DEFAULT NULL,
`country` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`region` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
ADD PRIMARY KEY (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Таблицы для остальных элементов базы данных представлены ниже:
Таблица 6
Атрибуты сущности Олимпиада
Поле |
Тип данных |
Источник (таблица) |
Значение |
Примечание |
|
Id |
Int |
Olymp_base |
Идентификатор |
Первичный ключ, уникальное |
|
Pre |
Varchar(45) |
Olymp_base |
Префикс |
Обязательное поле |
|
Name |
Varchar(255) |
Olymp_base |
Название олимпиады |
Обязательное поле |
|
Duration |
Int |
Olymp_base |
Продолжительность олимпиады |
||
Randomize |
Int |
Olymp_base |
Количество заданий для каждого участника |
CREATE TABLE IF NOT EXISTS `olymp_base` (
`id` int(11) NOT NULL,
`pre` varchar(45) NOT NULL,
`name` varchar(255) NOT NULL,
`duration` int(11) DEFAULT NULL,
`randomize` int(11) DEFAULT NULL,
ADD PRIMARY KEY (`id`);
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Таблица "admin_tab" аналогична "user_tab1", но содержит только уникальный идентификатор, логин и пароль администратора.
CREATE TABLE IF NOT EXISTS `admin_tab` (
`id_admin` int(11) NOT NULL,
`login` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
ADD PRIMARY KEY (`id_admin`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Таблица "role_tab" содержит информацию о возможных ролях пользователя в системе тестирования, которые были описаны в технической задании.
CREATE TABLE IF NOT EXISTS `role_tab` (
`role_id` int(11) NOT NULL,
`role` varchar(45) DEFAULT NULL
ADD PRIMARY KEY (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Отдельное внимание стоит уделить таблице "note_tab". Это таблица всех сущностей, в которую копируются идентификаторы всех имеющихся в системе наборов данных. Так как связи между таблицами не предусматриваются на уровне СУБД, целостность данных должна поддерживаться некоторым другим путем, в роли такой связи выступает таблица "note_tab". Дублирование данных оправдывается дополнительным уровнем безопасности содержащейся в БД информации, поскольку планируется, что при каждом запросе необходимые таблицы будут связываться с таблицей всех сущностей. Это позволит избежать нежелательной подмены данных, тем самым обеспечивая их безопасность.
Таблица 7
Описание таблицы объединения типовых сущностей
Поле |
Тип данных |
Источник (таблица) |
Значение |
Примечание |
|
Note_tab |
Bigint(20) |
Все остальные таблицы |
Идентификатор |
Первичный ключ, уникальное |
|
Note_name |
Varchar(45) |
User_tab1 |
Название сущности |
Обязательное поле |
|
Deleted |
Binary(1) |
User_tab1 |
Маркер |
1 - данные неактуальны, 0 - данные актуальны |
CREATE TABLE IF NOT EXISTS `note_tab` (
`note_id` bigint(20) NOT NULL,
`note_name` varchar(45) NOT NULL,
`deleted` Binary(1) DEFAULT NULL,
ADD PRIMARY KEY (`note_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
Остальные таблицы для сущностей "вопрос", "ответ", "результат" создаются динамически либо при создании новой олимпиады, либо при добавлении нового пользователя в систему. В каждой из этих таблиц используется префикс или идентификатор, который хранится в базе и позволяет связывать таблицы на уровне запросов.
Например, создание новой олимпиады происходит следующим образом:
Сначала в таблицу "note_tab" добавляется запись о вводимой в систему сущности, например, "olymp". По дефолту в столбец "deleted" записывается 0, автоинкрементный идентификатор сам сохраняет необходимое значение. Этот же идентификатор сообщается нужной таблице, "olymp_base". Далее, в таблицу "olymp_base" записываются все остальные параметры "pre", "duration" и "randomize".
После создаются таблицы с указанным префиксом, которые будут содержать вопросы и ответы, а так же таблица, в которой указано соответствие идентификаторов вопросов и ответов.
CREATE TABLE IF NOT EXISTS `info_answ_tab` (
`answ_id` int(11) NOT NULL,
`answ_text` text NOT NULL,
ADD PRIMARY KEY (`answ_id`), ADD UNIQUE KEY `answ_id_UNIQUE` (`answ_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `info_quest_tab` (
`quest_id` int(11) NOT NULL,
`quest_text` text NOT NULL,
`quest_istext` text,
ADD PRIMARY KEY (`quest_id`), ADD UNIQUE KEY `quest_id_UNIQUE` (`quest_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `info_quest_to_answ_tab` (
`quest_id` int(11) NOT NULL,
`answ_id` int(11) NOT NULL,
`iscorrect` int(11) NOT NULL,
ADD PRIMARY KEY (`quest_id`,`answ_id`);
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
При необходимости заведения нового пользователя происходит похожая операция:
Сначала в таблицу "note_tab" добавляется запись о новой строке с названием сущности "user", ей присваивается идентификатор, следующий за последним в таблице объединения всех сущностей. Далее в таблицы "user_tab1", "user_tab2", "user_tab3" записываются нужные данные о пользователях, с идентификатором, который равен только что присвоенному в таблице "note_tab". При заведении нового пользователя, для него создается новая таблица, которая будет хранить результаты прохождения олимпиады. Шаблон названия таблицы: "result_tab_for"+"id" пользователя. Таким образом, получаем некоторую иерархическую модель.
Отталкиваясь от такого динамического расширения базы данных, было решено отойти от традиционной реляционной модели данных.
Базы данных, которые основаны на нереляционной модели, как правило, называют "NoSQL", что означает Not Only SQL или No SQL. Термин был придумал Эриком Эвансом. Надо понимать, что "NoSQL" отнюдь не означает замену или полный отказ от использования реляционных СУБД. Это понятие получило известность в 2009 году, когда развитие социальных сетей, различных web-технологий подготовило почву для изобретения множества других способов хранения и обработки данных. NoSQL - это большое количество различных технологий баз данных, которые позволяют решать ряд специфических задач с реализацией которых традиционные СУБД не справляются в желаемой степени: они оказываются либо слишком дорогими, либо недостаточно производительными. При конструировании реляционных баз данных не поднималось вопросов масштабирования, гибкости и других, которые сейчас поставили современные приложения.
Говоря о NoSQL, как правило, подразумевают следующие преимущества:
1 Гибкость и динамичность
Как известно, для реляционных баз данных необходимо, чтобы схемы были определены до того, как в них можно будет добавлять данные. Реляционной базе данных необходимо знать, что именно будет в ней храниться заранее. Это плохо соотносится с подходами гибкой разработки, потому что каждый раз, при необходимости добавления новых характеристик, схема БД потребует изменений (например, при добавлении колонки к БД, придется перенести всю БД в новую схему). Создание базы данных для проведения олимпиад подразумевает, что она будет быстро разрастающейся и объемной, поэтому какой-либо процесс модификации будет занимать большой промежуток времени. Также нет способа, использовать реляционные базы данных для эффективной адресации к данным, которые не структурированы или неизвестны заранее. Предложенная модель позволяет вводить данные без предопределённой схемы. Это делает простым значительные изменения в приложении в реальном времени, не беспокоясь о прерываниях сервиса, что делает разработку быстрее, интеграцию кода более надёжной, и занимает меньше времени у администратора баз данных.
2 Скорость работы
Базы реляционного типа способны обслужить примерно до тысячи запросов в секунду. Учитывая специфику архитектуры предложенной модели, ее скорость выполнения запросов значительно превышает реляционные аналоги.
3 Масштабируемость
Такое хранилище без особых проблем может быть разнесено на несколько серверов, то есть, горизонтально масштабировано.
Для обеспечения надежности и сохранности реляционных баз данных, под всю базу выделен один сервер. По причине того, что реляционные БД структурированы, безопасным является только вертикальное масштабирование. Вертикальное масштабирование означает, что для повышения производительности системы, покупается новое "железо". Это приводит к быстрому удорожанию, появлению ограничений масштабирования.
4 Надежность работы
Из приведенных выше преимуществ имеем простоту администрирования БД. Так же существенным фактом является создание таблицы со сквозной нумерацией всех типовых сущностей "note_tab". Сквозная нумерация данных позволяет без затруднений производить при необходимости удаление неиспользуемых либо устаревших данных. При помощи несложных SQL запросов можно перенумеровывать данные, выстраивая связь через таблицу объединения типовых сущностей. Также необходимо сказать, что, помимо удаления, данные можно и легко восстановить.
2.3 Архитектура приложения
Для того чтобы определиться с выбором программного обеспечения, нужно выбрать подходящую архитектуру информационной системы. В настоящее время наиболее популярными являются две модели - трёхзвенная архитектура ("Three-tier", или "Multitier architecture") и концепция MVC ("Model-View-Controller"). Выбор архитектуры основывается на идеях повторного использования кода, применения шаблонов и высокой скорости разработки, за счет распараллеливания процесса работы.
Модель предоставляет остальным компонентам приложения объектно-ориентированное представление данных. Объекты модели осуществляют загрузку и сохранение данных в базе данных, а так же реализуют бизнес-логику. Представление обеспечивает различные способы отображения данных, полученных от контроллера, реализуют пользовательский интерфейс. Также представление управляет запросами пользователя и передает на работу с данными в контроллер. Его основная функция - координировать действие необходимых ресурсов и объектов, нужных для выполнения действий.
Рисунок 10. Архитектура модели MVC
Трехзвенная архитектура является примером многоуровневой архитектуры, включающей клиентское приложение (браузер), сервер приложений и сервер базы данных. Классическая архитектура информационных систем, которая включает в себя интерфейс пользователя и хранения данных называется трехуровневой архитектурой. При такой архитектуре приложение делится по вертикали на три уровня:
1 Уровень данных;
2 Уровень логики;
3 Уровень представления.
Первый слой содержит и обеспечивает доступ к данным, которые хранятся в базе данных. Здесь данные собираются, сохраняются, изменяются, извлекаются и переходят на следующий слой. Второй слой называется логическим. Он управляет всей бизнес-логикой, содержит задачи и правила управления процессами. Заключительный уровень - веб-клиент, который служит для представления интерфейса пользователя: ввода и отображения информации.
Рисунок 11. Архитектура трехуровневой модели приложения
Стоит отметить, что трехзвенная архитектура и модель MVC имеют достаточно много общего, их основным различием является топология. Если в трехзвенной архитектуре топология является линейной, то концепция MVC использует треугольную топологию. Уровень представления в трехзвенной архитектуре не может взаимодействовать с уровнем данных, минуя уровень бизнес-логики, тогда как каждый из компонентов MVC может обратиться к другому. Преимущества треугольной топологии проявляются, например, в возможности внесения изменений в пользовательский интерфейс, не затрагивая бизнес-логику.
Чтобы справиться со сложностью проектирования, разработки и функционирования такой системы, следует произвести разбиение системы на подсистемы и создать схему общей архитектуры системы на основе некоторых критериев декомпозиции. Такой процесс позволит впоследствии разрабатывать каждую подсистему независимо от остальных. Каждая выделенная подсистема должна минимально зависеть от других систем и их функциональности. Такая модель внутренней архитектуры информационно-управляющей системы называется компонентной. Первым преимуществом данного подхода является то, что разные компоненты могут быть реализованы различными программистами, и при соблюдении спецификации всех интерфейсов итоговая система будет успешна в работе. Вторым преимуществом отмечается простота расширения программного продукта на те сферы, на которые он изначально не был рассчитан. Например, при необходимости обеспечения кроссплатформенности и включения очередной операционной системы в список поддерживаемых, не нужно будет переписывать систему, будет достаточно дописать только одну новую компоненту.
Полноценная современная информационная система для своего нормального функционирования должна включать в себя как минимум 6 главных подсистем:
1 хранения данных;
2 классов методов работы с сущностями (сервер);
3 взаимодействия с классами через функционал (сервер);
4 взаимодействия с функционалом (сервер);
5 визуальной структуры для административной панели (клиент);
6 визуальной структуры для пользовательской панели (клиент).
Кроме описанных выше подсистем, система может обладать рядом дополнительных модулей, которые позволят повысить эффективность и удобство работы пользователей в системе, предоставить дополнительные механизмы по контролю и мониторингу, а также анализу данных, хранящихся в системе.
2.4 Проектирование технологической архитектуры
Для полноты физического представления распределённой системы необходимо наличие информации о том, на какой платформе и на каких средствах реализованы компоненты системы.
Физические взаимосвязи между программными и аппаратными компонентами системы позволяет отобразить диаграмма развертывания. Каждый узел на диаграмме размещения представляет собой некоторый тип вычислительного устройства - в большинстве случаев часть аппаратуры.
Рисунок 12. Диаграмма развертывания
Выводы ко 2 главе
1 В данной главе построена функциональная модель информационно-управляющей системы, построены диаграммы вариантов использования системы с точки зрения каждой из ролей пользователей.
2 Спроектирована архитектура данных: построена ER-диаграмма, описаны атрибуты сущностей. С учетом поставленной задачи, предложено использование специфической организации хранимых данный, описаны преимущества данного подхода.
3 Выбрана модель MVC для организации архитектуры приложения. Для полного функционирования информационно-управляющей системы выделены необходимые подсистемы.
4
Глава 3. Разработка системы
3.1 Обоснование выбора средств разработки
В данной главе дается обзор средств, которые будут использоваться при разработке информационно-управляющей системы с обоснованием выбора.
3.2 Система управления базами данных
Система управления базами данных или СУБД - совокупность программных средств и языковых средств, предназначенная для создания, ведения и совместного использования базы данных многими пользователями.
Выбор СУБД является одним из самых важных этапов в проектировании информационно-управляющей системы. Основными критическими моментами значатся обеспечение высокого уровня надежности и производительности системы управления базами данных, поскольку ожидается, что проектируемая БД будет содержать большое количество записей и пользователей, чьи действия будут направлены на манипулирование информацией, содержащейся в БД.
MySQL
На данный момент в мире существует множество СУБД. В работе будут рассмотрены только популярные свободно распространяемые системы, имеющие многолетнюю историю разработки и поддержки: MySQL, Firebird, PostegreSQL, SQLite.
Сравнение с самой простой функции - созданию таблицы, структура которой состоит из уникального автоинкрементированного поля и текстового поля уже выдает существенные отличия. А именно, первичное автоинкрементированное поле везде объявляется по-разному. Например, в FireBird такого поля даже нет, вместо него используется генератор, применение которого может привести к серьезным последствиям. В остальных СУБД данному полю внимание уделено: в PostgreSQL реализован специальный тип SERIAL, SQLite полагает, что целый первичный ключ и является автоинкрементируемым значением.
Идея работы с SQLite была сразу отброшена в силу того, что в данной СУБД отсутствует возможность разграничения прав доступа для различных пользователей, а также операция записи имеет существенные ограничения - в один промежуток времени разрешен только один процесс записи, что не подходит под вышеуказанные требования к системе.
СУБД FireBird и MySQL обладают похожей функциональностью. Однако FireBird не поддерживает кеширование запросов, что означает низкую скорость работы на чтение данных. Еще одним недостатком FireBird является меньшее по численности сообщество в сети Интернет, что означает увеличение времени поиска решений для возможных проблем.
Одним из факторов, на которые следует ориентироваться при выборе СУБД, является скорость работы. Тестирования показали, что в сравнении со своими конкурентами, данная система имеет меньшую производительность и при простых операциях чтения может значительно замедлить работу сервера. Кроме всего, PostegreSQL не обладает возможностью репликации данных.
Таким образом, выбор системы управления базами данных остановился на MySQL. Она прекрасно ориентирована на работу с сервером, успешно работает с сайтами и веб-приложениями, имеет высокую эффективность, обладает высокой надежностью и удовлетворяет всем вышеперечисленным требованиям. Благодаря популярности данной СУБД, существует большое количество всевозможных плагинов и расширений, позволяющих облегчить работу с системой.
Среди преимуществ данной системы можно выделить:
- Наличие дополнительных приложений;
- Функционал MySQL обеспечивает поддержку большинства функционала SQL;
- Поддержка нескольких одновременных запросов, многопоточности;
- Простота работы с большими объемами данных;
- Быстрая работа - упрощение некоторых стандартов SQL влечет за собой увеличение производительности и скорости выполнения работы;
- API для языков Delphi, C, C++,Java, Лисп, Perl, PHP, Python, Ruby и других;
- Самая популярная СУБД на данный момент [12].
Данная СУБД рекомендуется к использованию, когда необходимо реализовывать распределённые операции, а также необходимо обеспечить доступ к данным, не просто для нескольких пользователей, а с обязательным разграничением их по правам доступа. Благодаря широким возможностям в настройке и функционалу, MySQL предоставляет возможность реализовывать оригинальные решения при постановке специфической задачи.
3.3 Языки программирования и библиотеки языков
В системе необходимо реализовать "клиентскую" и "серверную" части. Возможно использование только одного языка программирования во всей системе, однако, такой вариант не является оптимальным, поэтому предлагается использование различных языков.
PHP
Выбор языка разработки также определялся по возможностям и инструментам для решения поставленных задач. Популярных и удобных технологий разработки веб-приложений не так уж и много - это PHP 5, Ruby, Python, ASP.NET, Java.
Во-первых, создание системы проведения олимпиад подразумевает ее поддержку и сопровождение, поэтому важно, чтобы язык программирования также имел поддержку от разработчиков. Все приведенные технологии продолжают поддерживаться и в разной степени развиваться. Во-вторых, при обработке большого количества информации серьёзным фактором выступает производительность системы - Ruby проигрывает в производительности другим языкам. Python не предназначен для реализации многопоточности, а также имеет некоторое ограничение средств для работы с базами данных, а это выступает одними из основных факторов при разработке системы автоматического тестирования.
Наиболее правильным, мне кажется, является выбор в сторону PHP 5. Данный язык является свободным и интенсивно применяется при разработке веб-приложений. Он обладает обширной поддержкой баз данных, имеет огромное количество библиотек и расширений. Значительно упросить процесс разработки можно за счёт использования специального расширения для выбранной СУБД MySQL.
PHP 5 выступает почти полноценной заменой проприетарной среды ASP от Microsoft и адаптирован для большинства операционных систем, включая Linux, многие модификации Unix (Solaris, OpenBSD), Microsoft Windows, Mac OS X и многие другие. Также в PHP включена поддержка большинства современных веб-серверов, таких как Apache, IIS и других, способных использовать бинарный файл FastCGI PHP.
Таким образом, выбор PHP 5 дает свободу выбора ОС и веб-сервера. Кроме того, PHP 5 может генерировать не только HTML, он способен осуществлять генерацию любых текстовых данных, например, XHTML и XML-файлов. Автоматическая генерация и сохранение таких файлов в файловой системе используемого веб-сервера позволяет организовывать серверный кэш для динамического содержимого.
PHP 5 позволяет применить шаблон MVC (модель-представление-контроллер), при котором управляющая логика поделена на три отдельных компонента таким образом, что модифицирование одного из них минимально влияет на остальные.
HTML + CSS
Классическим и наиболее популярным способом разработки веб-интерфейса является использование следующих технологий: языка разметки HTML с применением CSS, предназначенного для оформления внешнего вида веб-страниц.
JavaScript + jQuery
Пользователь взаимодействует с приложением через браузер, что обеспечивается с помощью веб-интерфейса.
На сегодняшний день современные веб-технологии активно развиваются, как следствие этому, веб-приложения становятся все более привлекательными с точки зрения пользовательского интерфейса и удобства использования конечными пользователями. В настоящее время популярны две технологии, которые позволяют вносить динамику в статические страницы: применение языка JavaScript и использование Flash технологии.
Как правило, Flash используется для создания небольших веб-приложений, представляющих собой больше дизайнерский продукт. А в случае создания информационно-тестирующей системы, Flash-технология является непригодной, поскольку имеет несколько недостатков, например:
- Обладает высокой требовательностью к ресурсам процессора;
- Готовое приложение имеет очень большой объем;
- Требует обязательной установки дополнительного программного обеспечения, для проигрывания flash-сценариев;
- Закрытость исходного кода.
Следует отметить, что создатели крупных информационных ресурсов стараются избегать работы с Flash, в силу перечисленных выше недостатков.
Главной и достаточно неплохой альтернативой Flash является JavaScript. Это скриптовый язык, зачастую применяющийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Однако за последние несколько лет появилось большое число сред, взявших за основу JavaScript и предлагающих более простую и удобную разработку. Одной из таких сред выступает специальная библиотека jQuery, которая фокусируется на взаимодействии JavaScript и HTML. Причины лидерства очевидны, ведь jQuery имеет достаточно преимуществ по сравнению с использованием стандартного JavaScript:
- Объем исходного кода jQuery намного меньше, чем объем стандартного кода JavaScript, что существенно сокращает временные затраты на разработку веб-элементов;
- Компоненты jQuery протестированы на всех популярных браузерах, что опять же уменьшает и упрощает создание и тестирование элементов;
- Библиотека jQuery постоянно обновляется, чтобы поддерживать совместимость с большинством браузеров;
- Огромное количество встраиваемых модулей, создаваемых сообществом пользователей библиотеки;
- За счет модульности и компактности функций, отладка продукта проходит быстрее.
- Хорошая документированность системы.
Библиотека позволяет создавать красивые выпадающие меню, плавные переходы, всплывающие подсказки и другие визуальные эффекты. Так же её большим преимуществом является реализация работы с AJAX.
AJAX
Обеспечению работы с AJAX следует уделить особое внимание. Это относительно новый подход к разработке интерфейсной части веб-приложений, заключающийся в "фоновом" обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложение становится более простым и удобным.
Стоит подчеркнуть преимущества данного подхода:
- Сокращение и экономия трафика, потому что при загрузке веб-страницы достаточно загрузить только изменившуюся ее часть, или вообще получить набор данных в формате XML, а затем изменить содержимое страницы с помощью JS;
- Снижение нагрузки на сервер;
- Динамически загружаемое содержимое недоступно поисковикам;
- Увеличение скорость работы интерфейса;
- Богатый функционал для интерактивной обработки (например, отображение меняющихся со временем данных).
Помимо достоинств у AJAX есть и недостатки, такие как:
- Отсутствие интеграция со стандартными инструментами браузера - динамически создаваемые страницы не регистрируются браузером в истории, поэтому не работает кнопка "назад";
- Низкая скорость работы при большом количестве AJAX-запросов на одной странице.
Анализ показал, что преимуществ у такого подхода больше, а недостатки являются несущественными при аккуратном программировании.
Рисунок 13. Модель классических приложений для сети (слева) в прямом сравнении с применением AJAX (справа)
Smarty
Smarty является кроссплатформенным программным обеспечением, одним из инструментов, позволяющих компилировать обработку шаблонов для PHP. Данная технология будет очень полезной, например, для шаблонной выгрузки вопросов пользователя.
3.4 Веб-сервер
Веб-сервер - сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными.
Apache
На данный момент существуют всего два веб-сервера, позволяющих реализовать совместную работу выбранных ранее технологий разработки информационно-управляющей системы: Apache [14] и Nginx [15].
Apache по праву является достаточно надежным, стабильным и гибким решением среди существующих свободно распространяемых веб-серверов. Нельзя не отметить популярность этого сервера. По данным международной компании NetCraft, занимающейся исследованием веб-сервисов, по состоянию на май 2014 года из на веб-сервере Apache работает больше половины всех активных сайтов интернета - 52,3 %, в то время как на nginx 14,4 %, а на Microsoft - 11,3 % [13].
Рисунок 14. Диаграмма наиболее популярных веб-сервисов по состоянию на май 2014 года.
Стоит отметить, что сам Apache не так уж и прост в настройке, и неподготовленный пользователь может испытать некоторые затруднения. Однако на данный момент за счет огромной популярности веб-сервера существует множество статей в интернете и на форумах, позволяющих значительно упростить настройку и зачастую свести ее к простому копированию информации из статьи в файлы конфигурации.
Nginx (Engine X) - свободный высокопроизводительный веб-сервер, предназначенный для раздачи клиентам статического контента. Его большим преимуществом является асинхронная система ввода-вывода, что на практике означает существенную экономию ресурсов системы и выгодно сказывается в случае больших нагрузок. Конечно, для Apache есть решения, позволяющие справится с большим числом одновременных запросов, но их необходимо добавлять в систему, а в nginx это заложено изначально.
Нередко можно встретить конфигурацию nginx+Apache: nginx обрабатывает запросы на раздачу статичного контента, в то время как apache занимается выполнением серверных скриптов. Но, стоит заметить, что выигрыш в экономии ресурсов будет заметен только при достаточно высокой посещаемости сервера. Поэтому для работы в качестве веб-сервера выбирается Apache HTTP-сервер.
3.5 Разработка пользовательского интерфейса АРМ "Администратор олимпиады"
Основываясь на предложенных во второй главе способах и средствах разработки, была разработана одна из административных панелей для работы с информационно-управляющей системой поддержки олимпиад. Пользовательский интерфейс АРМ "Администратор олимпиады" является самым объемным по количеству включающих в себя рабочих функций. На данном этапе разработки административная панель предусматривает следующие возможности:
- Вход в административную панель;
- Управление олимпиадами;
- Управление пользователями;
- Управление олимпиадными заданиями;
- Назначение на олимпиаду;
- Проверка работ.
В дальнейшем, функциональность этого модуля будет расширена.
Административная панель - модуль для обеспечения авторизованного доступа к административным функциям системы. Она состоит из двух частей: открытой и закрытой. Открытая часть содержит панель авторизации (рис. 15.). Закрытая часть содержит меню для навигации по административным функциям других модулей (рис. 16-рис. 19).
При входе в систему администратору необходимо ввести логин и пароль, чтобы авторизоваться в системе. При успешном вводе уникальных данных, администратор получает доступ ко всей функциональной панели, иначе на экран выводится сообщение об ошибке, о неверно введенном логине или пароле, и предлагается произвести ввод данных повторно.
Рисунок 15. Панель авторизации для администратора олимпиады
После авторизации, система приветствует пользователя, который, в свою очередь, попадает в настройки приложения.
Рисунок 16. Панель настроек административной панели
В центральной части панели администратору предлагается возможность сменить текущий пароль входа в систему, а также изменить префикс для автоматического создания пользователей.
Слева представлена панель с активными элементами. При наведении на каждую из кнопок появляется подсказка, описывающая возможности выделенного объекта: "создание олимпиады", "создание пользователя", "создание олимпиадных заданий", "назначение на олимпиаду" и "проверка заданий".
Для начала работы администратору требуется создать олимпиаду. Нажав на соответствующую кнопку, он увидит следующее окно под названием "Работа с олимпиадами", где автоматически открывается вкладка "Создание олимпиады":
Рисунок 17. Панель управления олимпиадами
В верхней части экрана расположены четыре кнопки: "Создание олимпиады", "Список олимпиад", "Назначенные пользователи", "Олимпиадные задания". проектирование архитектура интерфейс олимпиада
В центральной части представлены строки для ввода префикса олимпиады (только латинскими буквами) и названия самой олимпиады. Также можно указать необходимую длительность олимпиады в минутах. Время указывается только в том случае, когда на проведение олимпиады накладывается соответствующее ограничение. С функциональной точки зрения данная опция реализована для того, чтобы участник олимпиады не смог нарушить установленный регламент олимпиады. По истечению времени, доступ к заданиям для участника закрывается. Участник больше не имеет возможности отвечать на вопросы и редактировать уже введенные данные. Кроме этого, при создании олимпиады можно поставить или снять галочку напротив пункта "Перемешать вопросы", что, в свою очередь, будет означать, что порядок вопросов для каждого участника будет индивидуальным.
Например, администратору необходимо создать новую олимпиаду, она планируется проводиться по информатике, поэтому в систему он вводит соответствующие данные:
Рисунок 18. Панель создания новой олимпиады
Посмотреть список всех олимпиад, хранящихся в системе можно при нажатии на кнопку "Список олимпиад". Центральная часть экрана теперь будет содержать таблицу четырьмя полями: префикс, название олимпиады, длительность, выгрузка заданий, а так же кнопку редактирования напротив каждой строки. Редактирование олимпиады позволяет изменить все параметры соревнования, кроме префикса таблиц. Кроме этого, предоставлена возможность поиска олимпиады по названию. Поиск контекстный, чем очень удобен в работе.
Рисунок 19. Панель со списком олимпиад
Кнопка "Назначенные пользователи" позволяет просмотреть список всех участников выбранной олимпиады. А по обращению к кнопке "Олимпиадные задания", будет выгружен, соответственно, список вопросов текущей олимпиады.
3.6 Тестирование системы
Тестирование - один из важных этапов разработки программных продуктов. Тестирование - проверка соответствия программного продукта требованиям, осуществляемая путем наблюдения за ее работой в специальных ситуациях, выбранных определенным образом. Тестирование проводится с целью поиска и исправления ошибок, допущенных в процессе разработки спроектированной системы. После завершения процесса тестирования, повышается надежность, улучшается функциональность протестированной системы. Но нельзя полностью протестировать систему, особенно в сжатые сроки с ограниченными ресурсами. Поэтому существует несколько видов тестирования, каждый из которых предлагает разные методики для построения тестов для максимальной вероятности обнаружения ошибки в системе. При разумном выборе такого подхода работу по тестированию можно сделать с максимальной эффективностью.
Видов тестирования невероятное множество, в зависимости от преследуемых целей, можно условно классифицировать на следующие группы:
1 Функциональные;
2 Нефункциональные;
3 Связанные с изменениями.
Функциональные виды тестирования основаны на функциях и их особенностях, такие тесты рассматривают внешнее поведение системы.
Тесты нефункционального тестирования позволяют определить характеристики программного обеспечения, которые могут быть измерены различными величинами. Основные типы:
1 Тестирование производительности:
1.1 Нагрузочное тестирование
1.2 Стрессовое тестирование
1.3 Тестирование надежности
1.4 Объемное тестирование
2 Тестирование установки;
3 Тестирование удобства использования;
4 Тестирование на отказ и восстановление;
5 Конфигурационное тестирование;
Виды тестирования, связанные с изменениями, производятся после устранения ошибки системы, на проверку того факта, что проблема действительно решена. Тесты, которые производятся после установки программного обеспечения, для подтверждения работоспособности приложения или верного исправления бага:
1 Дымовое тестирование;
2 Регрессионное тестирование;
3 Тестирование сборки;
4 Санитарное тестирование или проверка согласованности.
ИС "Инфотест" предназначена для многопользовательской работы. Для того чтобы проанализировать, как система будет функционировать при разном уровне нагрузки, следует произвести нагрузочное тестирование. Целью такого тестирования является определение граничных нагрузок на систему, при которой она продолжает поддерживать стабильную работу. Также данные тесты могут помочь оценить способность системы к функционированию в том случае, когда допустимые или планируемые уровень нагрузок будет превышен.
Ключевое понятие данного типа тестирования - "виртуальный пользователь". Виртуальный пользователь имитирует работу реального пользователя с системой, он выполняет типичные операции путем воспроизведения трафика, который отправляется клиентским приложением на веб-сервер. Управляя количеством виртуальных пользователей, можно изменять нагрузку на систему.
Основные показатели производительности информационной системы, которые измеряются в ходе тестирования:
- Времена отклика (время выполнения операции);
- Число операций выполняемых в единицу времени;
Для измерения данных критериев нагрузоустойчиваости относительно ИС "Инфотест" может быть предложено использование следующих сервисов:
- Специализированного онлайн сервиса loadimpact.com;
- Специализированного ПО Apache JMeter.
В основу измерения производительности ложится принцип - зависимость времени отклика веб-приложения от количества одновременно взаимодействующий с сервером пользователей.
Бесплатная версия сервиса loadimpact.com посылает множественные запросы на сервер, позволяет строить некую визуализацию процесса и результатов тестирования. Это, на мой взгляд, наиболее простой и быстрый способ проведения нагрузочного тестирования. Он удобен в том случае, когда обращаемость к серверу не так велика, и нет времени на настройку и испытание системы полноценным нагрузочным тестом.
Второй сервис - Apache JMeter по праву называется профессиональным программным комплексом проведения нагрузочного тестирования. В его функционале содержится большое количество инструментов и методов для реализации всевозможных сценариев прохождения теста. Также сервисом предлагается большой выбор инструментов визуализации и сбора результатов, полученных в ходе тестирования.
Примерное проведение нагрузочного тестирования с помощью бесплатного сервиса loadimpact.com:
Сервис автоматически производит 5 тестов при нагрузке на сервер эквивалентной одновременной работе 10, 20, 30, 40 или 50 пользователей. Демонстрирует среднее время отклика приложения при каждом уровне нагрузки и строит соответствующий график. Из полученных данных можно сделать вывод о тенденциях падения или поддержания одного уровня производительности.
Примерное проведение нагрузочного тестирования с помощью специального программного обеспечения Apache JMeter:
В основе JMeter лежит система тестовых планов. У каждого плана может быть несколько сценариев проведения тестирования.
Сначала необходимо создать новый план тестирования и добавить к нему сценарий. Наиболее правдоподобный сценарий пользовательских действий необязательно писать вручную -- можно воспользоваться логами посещения веб-сайта, который ведет веб-сервер.
Сделав импорт файла с логами в программу, получается готовый сценарий прохождения пользовательских запросов для одного клиента. Далее, необходимо добавить способы сбора данных. Например, графический и табличный.
Затем составляется план работы: создается определенное количество пользователей, которые будут добавляться в равные промежутки времени. Эти пользователи выполняют определенное количество различных запросов, взятых из логов. Выполнив нужное число запросов, программа останавливает процесс.
Если сервер перестает отвечать на запросы, значит, полноценный тест не закончен. Чтобы измерить рабочие показатели сервера при высокой нагрузке изменяются сценарии прохождения теста, а именно, уменьшаются установленные показатели о числе виртуальных пользователей и запросов.
Используя полученные данные, можно определить предельное число пользователей, которые могут одновременно взаимодействовать с системой. Считаю, что данный параметр очень полезен и важен для разрабатываемой системы, поскольку он позволит оценить возможности сервиса и расширить их при необходимости.
Выводы к 3 главе
1 В данной главе произведено обоснование выбора средств разработки информационно-управляющей системы "Инфотест". Представлены и проанализированы возможности тех средств, которые в полной мере могут решить все поставленные перед системой задачи. Для разработки системы предполагается использование MySQL в роли механизма управления базами данных, применение языков программирования: PHP, HTML, CSS, JavaScript, а также их библиотек - jQuery, AJAX, Smarty. В роли веб-сервера предложено использование Apache.
2 Разработан интерфейс пользовательской панели АРМ "Администратор олимпиады".
3 Описаны некоторые категории тестирования программного обеспечения. Предложено провести нагрузочное тестирование с помощью двух сервисов для определения максимально допустимой пропускной способности веб-приложения.
1.
Заключение
Олимпиады являются важным инструментом системы образования, они выступают в роли эффективного механизма отбора и поддержки талантливой молодежи. Поэтому необходимо, чтобы происходило постоянное совершенствование и улучшение проводимых соревнований.
В ходе работы были исследованы основы организации проведения олимпиад школьников, выявлены и проанализированы некоторые проблемы проведения Всероссийской олимпиады. Также были рассмотрены существующие на данный момент системы поддержки олимпиад, выявлены их достоинства и недостатки. На основе этого было принято решение о разработке собственной информационно-управляющей системы "Инфотест".
С учетом составленных требований к системе проведения олимпиад, было составлено техническое задание, определены основные модули, выбраны средства разработки системы. В соответствии с информационными потребностями пользователей информационной системы была спроектирована база данных.
На основе спроектированных моделей была разработана и частично реализована модель информационно-управляющей системы поддержки проведения олимпиад по информатике.
Список литературы
1. Министерство образования и науки Российской Федерации. Приказ Министерства образования и науки Российской Федерации (Минобрнауки России) от 18 ноября 2013 г. N 1252 г. Москва "Об утверждении Порядка проведения всероссийской олимпиады школьников" URL: http://минобрнауки.рф/пресс-центр/3994/файл/2990/Приказ 20No.1252 20от 2018.11.2013.pdf (дата обращения 21.05.2015)
2. Ejudge. Документация (wiki) URL: https://ejudge.ru/wiki/index.php/Другие_тестирующие_системы (дата обращения 21.05.2015)
3. Мартин Грабер. Mastering SQL.М: Лори, 2009.
4. https://ejudge.ru/ (дата обращения 21.05.2015)
5. http://www.contester.ru/ (дата обращения 21.05.2015)
6. RuGost - разработка документации по ГОСТ 34, 19, РД-50. ГОСТ 34.601-90. Автоматизированные системы. Стадии создания. URL: http://www.rugost.com/index.php?option=com_content&view=article&id=95:gost-34-601-90-avtomatizirovannye-sistemy-stadii-sozdaniya&catid=22&Itemid=53 (дата обращения 21.05.2015)
7. RuGost - разработка документации по ГОСТ 34, 19, РД-50. ГОСТ 34.602-89. Техническое задание на создание автоматизированной системы. URL: http://www.rugost.com/index.php?option=com_content&view=article&id=91:34201-89&catid=22&Itemid=53 (дата обращения 21.05.2015)
8. Интернет университет информационных технологий. URL: http://www.intuit.ru/
9. Тамре Л. Введение в тестирование программного обеспечения: Пер. с англ. - М.: Издательский дом "Вильямс", 2003.
10. Грэди Буч, Джеймс Рамбо, Айвар Якобсон. UML. Руководство пользователя. ДМК, 2001.
11. SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems. URL: https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems (дата обращения 21.05.2015)
12. Knowledge Base of Relational and NoSQL Database Management Systems. URL: http://db-engines.com/en/ranking (дата обращения 21.05.2015)
13. Internet Security and Data Mining. URL: http://news.netcraft.com/archives/2014/05/07/may-2014-web-server-survey.html
14. The Apache Software Foundation. URL: http://www.apache.org/
15. Nginx: отказоустойчивый сервер для ресурсов с высоким трафиком. URL: http://www.wikireality.ru/wiki/Nginx (дата обращения 21.05.2015)
16. Wampserver, веб-разработка под Windows. URL: http://www.wampserver.com/ru/ (дата обращения 21.05.2015)
Размещено на Allbest.ru
...Подобные документы
Анализ системы дистанционного практикума по программированию. Модернизация ядра системы для работы с новым конфигурационным файлом. Программная реализация изменений в базе данных и веб-интерфейсе пользователя. Разработка инструкции для участника олимпиад.
дипломная работа [1,1 M], добавлен 09.11.2016Технико-экономическое обоснование разработки информационной системы "План-меню". Выбор технических средств и стандартного программного обеспечения. Проектирование структуры базы данных. Разработка и структура пользовательского интерфейса и ER-модели.
курсовая работа [817,6 K], добавлен 07.05.2009Характеристика предприятия и его деятельности. Описание основных сущностей и их функций. Обоснование выбора системы управления БД и анализ имеющихся программных средств. Проектирование базы данных. Разработка интерфейса и алгоритмов реализации системы.
дипломная работа [1,4 M], добавлен 18.10.2015Выбор, обоснование и особенности работы СУБД. Характеристика языков программирования. Разработка структурной и функциональной модели информационной системы аптеки. Проектирование программной среды АИС и ее интерфейса. Построение модели базы данных.
курсовая работа [442,3 K], добавлен 21.04.2012Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.
курсовая работа [1,1 M], добавлен 09.12.2014Характеристика основных потоков данных, существующих на предприятии. Способы и средства для разработки программного обеспечения. Проектирование пользовательского интерфейса. Разработка слоя взаимодействия с базой данных. Разработка слоя бизнес сервисов.
дипломная работа [750,8 K], добавлен 10.07.2017Анализ подходов к концепции дистанционного образования. Разработка рейтинговой системы оценки внеклассной работы школьников. Проектирование программы с использованием CASE-средств. Реализация структуры интерфейса. Построение информационной модели данных.
дипломная работа [2,4 M], добавлен 12.08.2017Моделирование вариантов объектно-ориентированных программных систем. Проектирование статический структуры, интерфейса, диаграмм компонентов и архитектуры приложения для разработки имитационной модели информационной системы "Центр обслуживания абонентов".
дипломная работа [951,4 K], добавлен 24.10.2010Средства разработки серверной части системы создания и управления сайтами в сети Интернет. Contester и STAGer - системы для проведения турниров и индивидуального решения задач по олимпиадному (спортивному) программированию. Архитектура "файл-сервер".
курсовая работа [1007,3 K], добавлен 21.05.2014Построение, исследование описательных и формальных информационных моделей. Применение электронных обучающих средств в современной системе образования. Обусловленность выбора средств разработки и языков программирования. Обзор пользовательского интерфейса.
дипломная работа [7,3 M], добавлен 09.02.2017Создание оргкомитета. Положение о проведении турнира. Рекомендации по выбору систем проведения. Языки программирования на соревнованиях. Проведение турнира в учреждении образования. Подготовка школьников и правила проведения олимпиад по информатике.
курсовая работа [658,3 K], добавлен 16.06.2015Характеристика информационной среды предприятия и ее назначения. Разработка макета программного модуля для разработки функциональной модели деятельности предприятия. Обоснование выбора программных средств для реализации модуля. Работа с базами данных.
отчет по практике [1,5 M], добавлен 12.10.2022Анализ области автоматизации. Проектирование пользовательского интерфейса и баз данных. Выбор платформы создания информационной системы. Взаимодействие приложения с источниками данных. Оценка длительности и стоимости разработки программного обеспечения.
дипломная работа [2,2 M], добавлен 09.08.2011Построение модели деятельности организации в IDEF0. Описание средств размещения данных в Интернет (форум, e-mail, web-site, хостинг). Выбор инструментальной среды разработки, логическое проектирование, установка и тестирование информационной системы.
дипломная работа [1,9 M], добавлен 13.01.2014Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".
дипломная работа [5,4 M], добавлен 06.06.2013Анализ подходов к системе дистанционного образования. Разработка принципов и структуры программы для внеклассной работы школьников по информатике. Проектирование системы с использованием CASE-средств. Построение автоматизированной модели данных.
дипломная работа [2,6 M], добавлен 27.10.2017Анализ предметной области, этапы проектирования автоматизированных информационных систем. Инструментальные системы разработки программного обеспечения. Роль CASE-средств в проектировании информационной модели. Логическая модель проектируемой базы данных.
курсовая работа [410,6 K], добавлен 21.03.2011Проведение структурного системного анализа предметной области и разработка информационной системы "Клиника". Описание диаграмм потоков данных в информационной базе. Построение инфологической модели информационной системы. Основной интерфейс баз данных.
курсовая работа [2,1 M], добавлен 11.07.2013Роль инструментальных средств проектирования в создании информационной системы. Преимущества CASE-средств разработки Bpwin и Erwin, системы поиска, исправления ошибок модели данных Model Validator. Разработка модели процессов документооборота предприятия.
контрольная работа [2,2 M], добавлен 24.06.2012