Димков А.Ю., Широкопетлева М.С.

Харьковский национальный университет радиоэлектроники, Украина

Программное обеспечение определения уровня знаний по стандарту языка запросов SQL99.

 

В настоящее время тестирующие системы для различных предметных областей получили широкое применение, но большинство из них направлены на проверку теоретических знаний обучаемых, т.к. для проверки практических навыков в каждой, даже самой узкой, предметной области требуется достаточно специфическое оборудование или программное обеспечение. Для разработки и ведения программного обеспечения, основанного на базах данных (БД), общепризнанным является язык SQL, в частности стандарт SQL99.

Для тестирования знаний в области БД могут быть применены стандартные тесты, в которых используется сравнение с образцом ответа, но такой метод недостаточно эффективен, т.к. невозможно предусмотреть все возможные варианты построения запросов, с помощью которых получается одинаковая выборка данных. Тестирование удаленных пользователей может быть применено как в стандартных обучающих системах, так и при дистанционном обучении.

Целью данной работы является разработка тестирующего приложения по языку SQL. Приложение должно иметь Web-интерфейс с группами пользователей – студентами и преподавателями.

Роль преподавателя включает в себя следующие функции: ведение БД-образца, составление и редактирование задач и заданий, и задание  режимов тестирования (определение времени проведения тестирования и его содержания, т.е. какое задание будет доступно для прохождения и на какой период). Преподаватель должен получать отчеты по результатам тестирования, которые можно группировать и фильтровать по некоторым параметрам (результату – отношение корректно выполненных задач и общего числа задач, по датам тестирования, фамилии студента и т.п.).

Роль студента включает в себя следующие функции: доступ к задачам (просмотр) и возможность прохождения тестов. По результатам тестирования  должна быть выставлена оценка, которую студент и преподаватель могут просмотреть. Решая отдельную задачу, студент составляет свой запрос, а приложение должно квалифицировать его как верный или неверный.

Под задачей будем понимать словесную формулировку запроса, например: «Выбрать всех покупателей, которые делали закупки более, чем одного товара», и эталонный запрос на стандартном SQL. Отдельные задачи могут быть объединены в последовательности – задания, которые выполняются как единое целое и отдельно оцениваются.

Для разработки системы предлагается использовать образцовую БД, которую ведет пользователь с ролью преподавателя. В качестве примера приведена образцовая  БД , которая содержит 5 заполненных связанных таблиц, реализованных с поддержанием ссылочной целостности, которые не изменяются при выполнении эталонных и пользовательских запросов. Оконная форма тестирования со схемой образцовой БД приведена на рисунке.

Помимо запросов, не изменяющих базу данных, необходимо обеспечить тестирование знаний команд, модифицирующих содержимое таблицы, а также ограниченного подмножества команд DDL, используя которые можно изменять структуру таблицы (без учета поддержания ограничений на данные и ключи). Модификация структуры таблицы приводит  к определенным сложностям реализации, т.к. при выполнении команд DDL фиксируются все изменения в БД, что может повлечь некорректности в многопользовательском режиме.

Система представляется в виде Web-приложения с использованием AJAX-технологии для возможности тестирования удаленных пользователей.

Для обеспечения санкционированного доступа каждой группе пользователей предоставляется определенное множество прав. Авторизация пользователей происходит при вводе пары «Имя-пароль». На уровне источника данных также происходит идентификация ролей, т.к группа пользователей имеет разный уровень доступа к разным источникам данных.

Группа пользователей

Описание

Анонимный

Не авторизированный пользователь. Может самостоятельно войти в группу «Студент».

Студент

Зарегистрированный пользователь, может пройти тестирование и получить результаты.

Преподаватель

Зарегистрированный пользователь, у которого есть права на редактирование тестов и создания новых пользователей.

Администратор

Зарегистрированный пользователь, у которого есть права ведения БД с возможностью создания новых ролей.

Рассмотрим архитектуру системы.

Вся система разделена на отдельные компоненты. Таким образом, достигается абстракция от реализации компонентов. Можно выделить 4 основных компонента: доступ к данным (DataAccess); контроль выполнения запросов тестируемого (QueryManager); управление системой и пользователями(SystemManager); обеспечения безопасности (Security)

Каждый из этих компонентов независим и может содержать различные версии реализации. Это требуется в связи с тем, что можно изменить источник данных, при этом не придется изменять всю систему, а всего лишь подставить другой компонент доступа к данным. Так же можно изменить правила проведения тестирования, добавить или убрать возможности изменения структур таблиц. Такой подход к архитектуре программного обеспечения делает систему гибкой и простой в поддержке.

Приведем описание компонентов системы

Через компонент DataAcess производится работа с БД, которая включает чтение и запись в БД, передачу и отмену привилегий на одну из БД или ролей в зависимости от пользователя. Для изменения источника данных необходимо реализовать интерфейс базового класса для всех таблиц. В данном классе находятся общие методы для доступа/записи данных. Таблицы представлены в виде объектов (Entity), в которых поддерживается целостность данных.

Компонент QueryManager контролирует запросы тестируемого в базу данных. Т.к. программное обеспечение реализовано с использованием клиент-серверной технологии, опишем основные функции, выполняемые на стороне клиента и сервера. На стороне клиента производится проверки синтаксиса. Запросы на изменение данных и структур таблиц производятся в транзакции с максимальным уровнем изоляции, которая при завершении запроса возвращает данные в эталонное состояние, благодаря чему можно гарантировать получение тестируемым всегда одинакового исходного набора данных.

Для проверки правильности выполнения тестовой задачи, сначала выполняется эталонный запрос (запрос, составленный преподавателем), затем запрос тестируемого. Если запрос тестируемого был разобран без ошибок, сравнивается результирующее множество строк, полученное этим запросом и эталонным. Задача считается выполненной, если оба результата запросов идентичны. Кроме содержимого результирующего множества, сравнивается и  порядок следования полей и записей. Это сделано для более глубокого анализа знаний и проверки такой возможности работы с информацией как сортировки. Данный факт требуется учитывать при написании задач и эталонных запросов.

При выполнении запроса на изменение данных или структур таблиц, программа автоматически определяет исходную таблицу и выбирает из нее все значения для последующего сравнения. При сравнении результатов не учитываются поля с различными ограничениями типов данных и ссылочной целостности, сравниваются лишь данные.

SystemManagerкомпонент для управления системой и пользователями. Данный компонент доступен лишь пользователям системы с ролями «преподаватель» и «администратор». В нем происходит контроль системы, просмотр результатов тестирования и управление, как группами, так и отдельными нижестоящими по иерархии пользователями. Данный компонент инкапсулирует всю логику по созданию тестов и тестовых заданий.

Обеспечение безопасности переносится на сервер БД в компонент Security, для ограничения доступа тестируемого к запрещенной информации.

Для обеспечения удобного и надежного тестирования знаний в систему включен модуль обработки ошибок, т.к. корректная обработка ошибок является важной частью любого программного продукта. Обработка ошибок делится на два вида: локальная и глобальная. В обоих случаях все ошибки записываются в системный журнал Windows. Ошибки на локальном уровне по возможности исправляются или производится предупреждение пользователя о невозможности каких-либо операции и/или действий без выхода из текущего сеанса. После устранения локальных ошибок пользователь может продолжать работу. Если решение проблемы не найдено, ошибка переходит на глобальный уровень. Глобальные ошибки неисправимы, о них всего лишь уведомляют пользователя и они фиксируются в журнале. При возникновении ошибок такого рода, пользователь не может дальше продолжать работу, о чем администратору автоматически отправляется соответствующее письмо.

В результате разработано программное обеспечение определения уровня знаний по стандарту языка SQL для локальных и удаленных пользователей. В системе представлены решения многопользовательского изменения данных и возврат их в первоначальное состояние.