Автоматизированая система тестирования знаний по программированию

Выбор инструментальной среды разработки программного обеспечения системы. Алгоритм создания теста и ввода его исходных данных. Анализ экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию".

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 11.09.2014
Размер файла 3,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

  • Содержание
  • Введение
  • 1. Предпроектные исследования
    • 1.1 Описание предметной области задачи автоматизации
    • 1.2 Анализ прототипов системы
    • 1.3 Обоснование выбора инструментальной среды разработки программного обеспечения системы
    • 1.4 Обоснование выбора технической платформы разрабатываемой системы
    • 1.5 Задачи выпускной работы
  • 2. Детализация задачи автоматизации
    • 2.1 Анализ первого уровня детализации
    • 2.2 Анализ второго уровня детализации
  • 3. Алгоритмы решения задачи автоматизации
    • 3.1 Алгоритм создания теста и ввода его исходных данных
    • 3.2 Алгоритм создания и добавления вопроса
    • 3.3 Алгоритм записи теста в файл
    • 3.4 Алгоритм генерации тестового билета
    • 3.5 Алгоритм отправки билета
    • 3.6 Алгоритм ввода личной информации
    • 3.7 Алгоритм отправки запроса на новый билет
    • 3.8 Алгоритм получения билета
    • 3.9 Алгоритм тестирования
    • 3.10 Алгоритм отправки ответов
    • 3.11 Алгоритм получения ответов
    • 3.12 Алгоритм проверки ответов
    • 3.13 Алгоритм добавления результатов в таблицу базы данных
  • 4. Конструирование программного обеспечения
    • 4.1 Архитектура программного обеспечения
    • 4.2 Информационное пространство системы
    • 4.3 Интерфейс пользователя
  • 5. Тестирование системы
  • 6. Экономическая часть
    • 6.1 Порядок расчета и анализа экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию"
    • 6.2 Расчет экономической эффективности применения программного обеспечения и определение его цены
  • 7. Охрана труда
    • 7.1 Выявление и анализ опасных и вредных производственных факторов, действующих в рабочей зоне проектируемого объекта
    • 7.2 Разработка мероприятий по предотвращению или ослабления возможного воздействия опасных и вредных производственных факторов на работающих
    • 7.3 Обеспечение экологической безопасности функционирования проектируемого объекта при воздействии опасных и вредных производственных факторов
  • Выводы
  • Список использованной литературы

Введение

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

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

- обеспечение развития информационного общества;

- расширение сферы образовательных услуг с помощью применения информационных технологий;

- развитие самой образовательной системы на основе ИТ.

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

Компьютерное тестирование имеет ряд преимуществ:

- быстрое получение результатов испытания и освобождение от трудоемкой работы по обработке результатов тестирования;

- объективность в оценке;

- тестирование на компьютере более интересно по сравнению с традиционными формами опроса, что создает положительную мотивацию.

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

1. Предпроектные исследования

1.1 Описание предметной области задачи автоматизации

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

Традиционно выделяют следующие методы контроля знаний:

- устная проверка - позволяет выяснить качество подготовки учащегося к занятию, проверить выполнение ним домашнего задания, а также знание материала курса; состоит из составления преподавателем вопросов и ответа на эти вопросы учащимся; качество тестирования во многом зависит от правильности составления и количества вопросов, а также от знания предмета самым преподавателем;

- проверка контрольно-графических работ - является более объективным по сравнению с устной проверкой знаний, позволяет проверить возможность применения теоритических знаний на практике, а также позволяет проконтролировать сформировавшиеся навыки; этот метод является более трудоемким по сравнению с устной проверкой знаний, так как состоит из 4 этапов: подготовка, организация, проведение, анализ результатов;

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

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

С развитием научно-технического прогресса человечеством было придумано более качественный и менее трудоемкий способ проведения контроля знаний - тестирование. И совсем недавно этот способ применяется с использованием ЭВМ. Это дает возможность повысить качество контроля, уменьшить его трудоемкость, а также себестоимость. Максимально возможно убирается из процесса тестирования человеческий фактор. Большая степень его влияния остается только на этапе составления тестов, но путем проведения нескольких итераций их составления и здесь этот фактор значительно уменьшается. Это позволяет повысить качество. ЭВМ самостоятельно проводит этапы организации, проведения и анализа результатов. Это позволяет сократить затраты времени на подготовку, а также освободить человека от этих обязанностей. Это уменьшает трудоемкость, а также снизить себестоимость контроля знаний. Обобщенная схема компьютерного тестирования знаний приведена на рисунке 1.1.

Рисунок 1.1 - Обобщенная схема проведения компьютерного тестирования

Несмотря на все очевидные достоинства данного вида тестирования, он также обладает и рядом недостатков, среди которых:

- минимальная уникальность тестовых заданий - тестовых заданий столько, сколько их добавил преподаватель;

- однотипность заданий - одинаковые типы заданий для разных направлений обучения;

- разрыв связи обучающийся - педагог и незнание преподавателем знаний студента;

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

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

1.2 Анализ прототипов системы

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

Система тестирования знаний "Конструктор тестов"

"Конструктор тестов"[1] (рисунок 1.2) - это универсальная система проверки знаний. Данную программу можно использовать как в домашних условиях, так и для проведения тестирования в любых учебных заведениях. Программа позволяет использовать неограниченное количество тем, вопросов и ответов. Программа поддерживает пять типов вопросов, что позволяет проводить любые тесты. В тестах имеется возможность использовать музыку, звуки, изображения и видеоролики. Любые данные можно распечатать на принтере. На одном компьютере тестирование независимо могут проходить несколько человек, входя в программу под своими именами. Программа проста в использовании.

Среди недостатков этой системы относительно поставленной задачи является отсутствие необходимых типов заданий, а также закрытый исходный код системы.

Рисунок 1.2 - Окно редактирования вопроса в "Конструкторе тестов"

Система тестирования знаний MyTest X

MyTest X[2] (рисунок 1.3) это система программ (программа тестирования учащихся, редактор тестов и журнал результатов) для создания и проведения компьютерного тестирования, сбора и анализа результатов, выставления оценки по указанной в тесте шкале.

Программа MyTest X работает с девятью типами заданий: одиночный выбор, множественный выбор, установление порядка следования, установление соответствия, указание истинности или ложности утверждений, ручной ввод числа (чисел), ручной ввод текста, выбор места на изображении, перестановка букв. Задание типа да/нет легко можно получить, используя тип с одиночным выбором. В тесте можно использовать любое количество любых типов, можно только один, можно и все сразу.

Среди недостатков этой системы относительно поставленной задачи является отсутствие необходимых типов заданий, а также закрытый исходный код системы.

Рисунок 1.3 - Окно тестируемого в системе "MyTestX"

Система тестирования знаний Moodle

Moodle [3] (рисунок 1.4)-- система управления курсами (электронное обучение), также известная как система управления обучением или виртуальная обучающая среда (англ.). Представляет собой свободное (распространяющееся по лицензии GNU GPL) веб-приложение, предоставляющее возможность создавать сайты для онлайн-обучения.

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

Moodle переведена на десятки языков, в том числе и русский и используется почти в 50 тысячах организаций из более чем 200 стран мира. В РФ зарегистрировано более 1000 инсталляций. Количество пользователей Moodle в некоторых инсталляциях достигает 500 тысяч человек.

Лидером и идеологом системы является Martin Dougiamas из Австралии. Проект является открытым и в нём участвует и множество других разработчиков. Русификацию Moodle осуществляет команда добровольцев из России, Белоруссии и Украины.

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

Рисунок 1.4 - Демонстрационный сайт системы Moodle

1.3 Обоснование выбора инструментальной среды разработки программного обеспечения системы

Основной задачей данной работы является автоматизация тестирования знаний обучающихся программированию. Для выполнения этой цели будет разработана программная система для тестирования знаний. Чтобы это сделать необходимо выбрать язык программирования и среду программирования максимально поддерживающих разработку программных приложений с дружелюбным и современным интерфейсом пользователя. Вследствие этого были отброшены языки низкого уровня, такие как Assembler и C. Среди языков высокого уровня был выбран язык C++, так как он обладает необходимым набором средств для реализации данной задачи, имеет большое количество справочной информации, а также присутствует большое количество библиотек классов для работы с ним. Среди сред программирования были варианты Borland C++ Builder, Visual Studio, Qt Creator (рисунок 1.5).

Рисунок 1.5 - Графическая среда разработки Qt Creator

Была выбрана среда Qt Creator версии 2.8.1 и библиотека Qt 4.8.5, так как она обладает следующими преимуществами:

- большая библиотека классов Qt для работы на языке C++;

- большая справочная система;

- большое сообщество Qt-project, которое поддерживает и развивает библиотеку Qt;

- бесплатность использования библиотеки Qt версии 4.8.5;

- кроссплатформенность приложений написанных с использованием библиотеки Qt.

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

1.4 Обоснование выбора технической платформы разрабатываемой системы

Эффективность разрабатываемой системы обеспечивается при наличии таких технических условий эксплуатации:

- Процессор 2.2 GHz;

- ОЗУ 512 МБ;

- 200 МБ свободного пространства на жестком диске;

- Монитор (разрешение 1024х768);

- Мышь;

- Клавиатура.

1.5 Задачи выпускной работы

Цель работы: снижение сроков и повышение качества тестирования знаний обучающихся программированию.

Задачи выпускной работы:

1. Проанализировать предметную область тестирования знаний.

2. Разработать требования к разрабатываемой системе и выделить задачи, которые будет решать система.

3. Провести декомпозицию задач автоматизированной системы тестирования знаний.

4. Разработать алгоритм решения декомпозированных задач.

5. Разработать автоматизированную систему тестирования знаний.

6. Провести тестирование системы.

В данной работе необходимо разработать автоматизированную систему тестирования знаний учащихся программированию.

Автоматизированная подсистема тестирования знаний учащихся программированию должна решать следующие задачи:

- максимальная автоматизация формирования списка тестовых заданий по дисциплине;

- сохранение списка тестовых заданий по дисциплине в файл;

- генерация билета и отправка его студенту;

- непосредственно сам процесс тестирования;

- анализ результатов;

- сохранение результатов в базе данных.

Программная система поддерживает следующие типы заданий:

- написать программу - студенту будет необходимо написать программу, которая соответствует требования задания, описанным преподавателем;

- проанализировать вывод программы - студенту будет необходимо проанализировать текст программы и ввести в ответ то значение, которое, по его мнению, выведет программа;

- вычислить генерируемые выражения с операциями - тестируемому будет выведено на экран выражение с несколькими операциями и ему будет необходимо вычислить значение этого выражения;

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

Вследствие этого было решено разбить программную систему на 2 независимые программные единицы: программу - сервер и программу - клиент. Далее необходимо провести тестирование системы и исправить найденные ошибки.

2. Детализация задачи автоматизации

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

На данном этапе необходимо описать базовые понятия, которые будут применяться в работе: тест, тема, билет (тестовый билет), вопрос.

Вопрос - это базовое понятие для данной работы - некоторая структура, которая хранит непосредственно вопрос, ответ и варианты ответа, если это закрытая форма вопроса.

Тема - структура данных, которая хранит некоторый набор вопросов по одному направлению некоторой дисциплины.

Тест - структура данных, которая хранит некоторый набор тем по одной дисциплине, а также настройки тестирования.

Билет - структура данных, которая хранит некоторое количество (указанное в настройках теста) вопросов из тем одного теста.

2.1 Анализ первого уровня детализации

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

Рисунок 2.1 - Первый уровень детализации

Таблица 2.1 - Описание входных данных

Назначение входного данного

Формат

Ограничения

Кем предоставляется

ФИО студента

Строка

100 символов

Тестируемый

Группа студента

Строка

10 символов

Тестируемый

Количество вопросов в тестовом билете

целое число

1..100

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

Время для теста, минут

целое число

1..100

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

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

Таблица 2.2 - Описание данных теста

Назначение входного данного

Формат

Ограничения

Название теста

Строка

100 символов

Тип вопроса - вычислить выражение с операторами

Количество входных параметров

целое число

2..20

Тип вопроса - написать программу

Количество входных параметров

целое число

0..10

Количество выходных параметров

целое число

0..10

Количество тестов написанной программы

целое число

1..10

Тип вопроса - описать вывод программы

Количество входных параметров

целое число

1..10

Тип вопроса - определить исход работы инициализирующего выражения

Количество параметров в инициализаторе

целое число

1..10

Таблица 2.3 - Описание данных результата

Назначение выходного параметра

Формат

Ограничения

ФИО студента

Строка

100 символов

Группа студента

строка

10 символов

Количество правильных ответов

целое число

0..количество вопросов в тесте

Время прохождения

целое число

0..время для теста

Дата прохождения

строка

10 символов

2.2 Анализ второго уровня детализации

На втором уровне детализации (рисунок 2.2) будет логично подразделить систему тестирования на функциональные подзадачи: создание тестов, непосредственно тестирование и обработка результатов.

Рисунок 2.2 - Второй уровень детализации

Изначально выполняется задача создания тестов, а также их редактирования. Данной задачей занимается преподаватель. Результатом работы данной задачи является тест. Далее посредством генерирования тестового билета выполняется тестирование, которым занимается студент. Результатом этого этапа является пройденный билет. Далее выполняется обработка и сохранение результатов.

Тестовый билет представляет собой структуру данных, внутри которой хранится вопросы из теста, количество которых указанно в настройках теста и варианты ответов, если они подразумеваются вопросом. Пройденный билет представляет собой структуру данных подобную тестовому билету, но уже с выбранными вариантами, либо введенными ответами.

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

Создание тестов

Функциональную подзадачу создания теста (рисунок 2.3) выполняет система под влиянием исключительно преподавателя.

Рисунок 2.3 - Детализация создания тестов

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

Тестирование

Функциональная подзадача тестирования (рисунок 2.4) выполняется системой с влиянием на нее студента.

Первым этапом этой задачи является запрос системой списка возможных тестов в системе преподавателя и выбор необходимого теста. Далее тестируемый вводит свои данные, а именно ФИО и номер группы. После этого программа студента отправляет системе преподавателя запрос на получение тестового билета. Следующим шагом является получение билета. Далее идет этап непосредственно тестирования. Результатом этого этапа является пройденный билет, который отправляется в систему преподавателя на этапе отправки результата.

Рисунок 2.4 - Детализация задачи тестирования

Обработка и сохранение результатов

Этап обработки и сохранения результатов (рисунок 2.5) выполняет система преподавателя в автоматическом режиме.

На первом этапе система получает результат с системы студента, а именно пройденный билет.

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

Рисунок 2.5 - Детализация этапа обработки и сохранения результатов

3. Алгоритмы решения задачи автоматизации

3.1 Алгоритм создания теста и ввода его исходных данных

Алгоритм подзадачи создания теста (рисунок 3.1) и ввода его исходных данных (таблица 2.1), предоставляемых преподавателем, необходим для ввода и контроля настроек теста. Далее эти настройки проверяются на корректность. После этого создается объект теста, который добавляется в список доступных для тестирования.

Рисунок 3.1 - Алгоритм создания теста и ввода его исходных данных

3.2 Алгоритм создания и добавления вопроса

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

Рисунок 3.2 - Алгоритм создания и добавления вопроса

3.3 Алгоритм записи теста в файл

В алгоритме записи объекта теста в файл (рисунок 3.3) изначально идет цикл от 0 до количества тем в тесте. Внутри этого цикла в файл записывается количество вопросов в теме. Далее начинается внутренний цикл от 0 до количества вопросов в теме. В нем сначала записывается название типа вопроса, а затем сам вопрос в файл. После этого внутренний цикл закрывается, а после него закрывается внешний цикл. После чего продолжается работа.

Рисунок 3.3 - Алгоритм записи теста в файл

3.4 Алгоритм генерации тестового билета

В алгоритме генерации тестового билета (рисунок 3.4) изначально создается объект билета и ему присваивается уникальный номер. Далее открывается цикл от 0 до количества вопросов в билете. Внутри этого цикла проверяется размер множества на равность количеству тем в выбранном тесте. Если равно, то множество выбранных тем обнуляется, если нет, то без обнуления этого множества происходит следующее действие, а именно генерация случайного числа в диапазоне от 0 до количества тем в выбранном тесте. Далее происходит проверка этого числа на наличие его во множестве выбранных тем, если оно там есть, то генерация происходит снова. Если его там нет, то оно добавляется в это множество и выбирается эта тема для дальнейшего выбора вопроса из нее. На следующем этапе происходит проверка на равенство размера множества выбранных вопросов из ранее выбранной темы и общего количества вопросов в данной теме. Если они равны, то множество выбранных вопросов обнуляется. Если нет, то без обнуления этого множества происходит следующее действие - генерация случайного числа в диапазоне от 0 до количества вопросов в данной теме. Если это число есть во множестве выбранных вопросов, то выполняется повторная генерация этого числа. Если его нет в этом множестве, то оно добавляется в это множество. Далее проверяется, является ли вопрос под этим номеров открытого типа, если да, то он просто добавляется в объект билета. Если вопрос закрытого типа, то для него генерируются варианты ответа и он также добавляется в объект билета. Далее цикл заканчивается и продолжается работа.

Рисунок 3.4 - Алгоритм генерации тестового билета

3.5 Алгоритм отправки билета

В алгоритме отправки билета (рисунок 3.5) вначале выполняется отправка количества вопросов в билете и уникального идентификатора билета. Далее начинается цикл от 0 до количества вопросов в билете-1, в котором сначала выполняется отправка типа вопроса. Далее отправляется вопрос. Далее проверяется, отправился ли вопрос, если да, то цикл заканчивается и продолжается работа. Если вопрос не был отправлен, то выдаётся запрос на повторную отправку. Если пользователь выбирает не отправлять, то удаляются личная информация студента и сгенерированный билет.

Рисунок 3.5 - Алгоритм отправки билета

3.6 Алгоритм ввода личной информации

В алгоритме ввода личных данных (рисунок 3.6) изначально происходит непосредственно ввод этих данных (описание и диапазоны представлено в таблице 2.1, предоставляемые студентом). Далее происходит проверка этих данных. Если они корректны, то происходит их сохранение и продолжение работы. В случае несоответствия требованиям выдаётся запрос на повторный ввод.

Рисунок 3.6 - Алгоритм ввода личной информации

3.7 Алгоритм отправки запроса на новый билет

В алгоритме отправки запроса на билет (рисунок 3.7) сначала отправляется запрос с личной информацией. Если эта информация не отправилась, то выполняется запрос на повторную отправку.

Рисунок 3.7 - Алгоритм отправки запроса на новый билет

3.8 Алгоритм получения билета

В начале алгоритма приёма билета (рисунок 3.8) выполняется получение количества вопросов в билете и уникального идентификатора билета. Далее начинается цикл от 0 до количества вопросов в билете-1. Внутри него выполняется приём типа вопроса, а затем самого вопроса. После этого вопрос сохраняется в объекте билета. После этого заканчивается цикл и продолжается работа.

Рисунок 3.8 - Алгоритм получения билета

3.9 Алгоритм тестирования

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

Рисунок 3.9 - Алгоритм тестирования

3.10 Алгоритм отправки ответов

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

Рисунок 3.10 - Алгоритм отправки ответов

3.11 Алгоритм получения ответов

В алгоритме получения ответов (рисунок 3.11) сначала выполняется прием признака окончания тестирования и уникального идентификатора билета. Далее выполняется прием времени и даты прохождения. После этого идет цикл от 0 до количества вопросов в билете. В нем мы получаем ответы и сохраняем их во внутренние структуры данных. После окончания цикла работа продолжается.

Рисунок 3.11 - Алгоритм получения ответов

3.12 Алгоритм проверки ответов

В алгоритме проверки ответов (рисунок 3.12) идет цикл от 0 до количества вопросов в билете. В нем сравнивается ответ студента с правильным ответом, если они равны, то студенту добавляется один бал к результату. Далее идет окончание цикла, после чего продолжается работа.

Рисунок 3.12 - Алгоритм проверки ответов

3.13 Алгоритм добавления результатов в таблицу базы данных

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

Если такая таблица создана, то формируется запись их выходных данных (описание выходных данных и их диапазоны представлены в таблице 2.3) и она добавляется в таблицу. Если же ее нет, то она создается и запись добавляется в нее. Далее продолжается работа.

Рисунок 3.13 - Алгоритм добавления результатов в таблицу базы данных

4. Конструирование программного обеспечения

4.1 Архитектура программного обеспечения

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

Ниже приведены описание и диаграммы классов спроектированных в рамках создания данной программной системы.

Рисунок 4.1 - Диаграмма иерархии классов представляющих собой вопросы

На рисунке 4.1 представлена диаграмма классов представляющих собой вопросы, созданных в рамках написания программной системы.

Базовым классом для 4 типов вопросов является класс QQuestion. Он содержит данные: answer - ответ (строковый тип), question - вопрос (строковый тип), isOpen - признак того, что вопрос является тестом открытого типа (булевский тип), variants - контейнер для хранения вариантов ответом, если вопрос является тестом закрытого типа. Так же класс содержит для записи соответствующих данных (setQuestion,setVariants,setAnswer) и методы для чтения этих данных (getQuestion,getVariants,getAnswer).

Производными от класса QQuestion являются классы QOutputQuestion, QWriteProgramQuestion, QInitQuestion.

Класс QOutputQuestion является классом - вопросом типа определить вывод программы. Он содержит данные program - программа (строковый тип), perameters - диапазоны для входных параметров программы (контейнер с пар целочисленных значений), types - контейнер для хранения типов входных параметров. Также класс предоставляет методы для установки и чтения его данных.

Класс QWriteProgramQuestion является классом - вопросом типа написать программу. Он предоставляет следующие контейнеры строкового типа: inputTypes - набор типов входных параметром, outputTypes - набор типов выходных параметров, exampleInput - пример набора входных данных для предоставления студенту, exampleOutput - пример набора выходных данных ждя предоставления студенту. Также класс содержит двухмерные строковые контейнеры для описания тестов для задания: testInput и testOutput. Класс предоставляет методы для установки и чтения данных.

Класс QGeneratedQuestion является классом - вопросом типа вычислить сгенерированное выражение. Он содержит следующие данные: parameters - контейнер для хранения диапазонов параметров выражения и expression - контейнер для хранения операторов выражения и положения параметров в выражении. Класс предоставляет методы для установки и считывания данных.

Класс QInitQuestion является классом - вопросом типа определить исход инициализации выражения. В данных содержится двухмерный строковый контейнер для хранения параметров инициализирующего выражения. Класс предоставляет метод для установки и считывания этого контейнера.

Рисунок 4.2 - Диаграмма классов предоставляющих графическое оформление программной системы сервера

На рисунке 4.2 представлены классы, предоставляющие графическое оформление программной системы.

Все классы являются наследниками класс QWidget - базового класса для описания классов - окон графического представления библиотеки Qt. Более подробное описание этого класса возможно найти в справочной системе библиотеки Qt.

Классы QWriteProgramDialog, QOutputDialog, QInitDialog, QGeneratedDialog предоставляют графическое представление четырех типов вопросов производных от QQuestion представленных на рисунке 4.1.

Класс QWriteProgramDialog содержит в данных следующие элементы delegate - делегат для представления в таблицах выпадающего списка возможных типов для выбора, inTypesModel, outTypesModel - модели для преставления входных и выходных типов программы, inExample, outExample - модели для представления примеров выходных и входных параметров. inTest, outTest - модели, для представления тестов для написанной программы. Класс предоставляет метод clearWidget для очистки окна, а также setParam для установки его настроек.

Класс QOutputDialog содержит в данных делегат, аналогично QWriteProgramDialog, а также две модели представления данных typesModel - для хранения типов выходных параметров и rangesModel - для хранения диапазонов этих параметров. Класс также предоставляет методы clearWidget - для очистки окна и методы для установки и считывания данных и параметров.

Класс QGeneratedDialog содержит в данных строковый контейнер expression для хранения операторов и положения параметров, и контейнер из целочисленных пар parameters для хранения диапазонов входных параметров. Также класс предоставляет методы для установки и чтения своих данных, а также метод addCloseBkt - для добавления в выражение закрывающей скобки, addOpenBkt - для добавления в выражение открывающей скобки, addOperator - для добавления в выражение оператора и addParameter - для добавления в выражение параметра.

Класс QInitDialog содержит в данных модель expressionModel для хранения параметров инициализирующего выражения. Класс предоставляет методы для чтения и установки этой модели, а также метод clearWidget - для очистки окна.

Класс QSettingsDialog представляет собой окно настоек теста. В данных этого окна присутствуют file - строковое поле для хранения названия файла теста и isFileSelected - булевская переменная, которая хранит значение, выбран ли файл для открытия или начинать новый тест. Класс предоставляет методы для чтения значений полей ввода окна, а именно времени тестирования - getTime, количества вопросов - getQuestionAmount и чтения названия теста getCaption. Также класс предоставляет метод для установки этих полей - setParameters и метод - слот для обработки нажатия на кнопку "Далее".

Класс QTestWindow представляет собой окно для редактирования тем и заданий (вопросов) теста. Он содержит следующие данные: themesModel - модель данных для представления набора тем в окне, questionsModel - контейнер моделей данных для предоставления множества наборов вопросов по темам в окне и addThemeDialog - окно для добавления темы. Также класс предоставляет методы для установки и считывания своих данных. А также методы - слоты: setAdd - при нажатии на кнопку добавления вопроса, setEdit - при нажатии на кнопку редактирования вопроса, setDelete - при нажатии на кнопку удаления вопроса, setAddTheme - при нажатии на кнопку добавления темы, setDeleteTheme - при нажатии на кнопку удаления темы, setBack - при нажатии на кнопку возвращения в окно настроек, setFinish - при нажатии на кнопку завершения редактирования вопросов теста, а также setThemeChanged - при изменении темы для отображения вопросов темы, которая была выбрана.

Класс QQuestionDialog представляет собой окно для создания вопроса. В своих данных он хранит вопросы всех четырех типов и окна для их представления. Он отображает одно из этих окон в одно время внутри некоторого контейнера окон внутри себя - layout типа QVBoxLayout. Класс предоставляет методы clearWidget - для очистки окна, setCurrentWidget - для установки конкретного окна вопроса в контейнере окон, createQuestion - метод для создания вопроса при нажатии на кнопку "Ок", метод setQuestion для установки полей окна из существующего вопроса.

Класс MainWindow является классом главного окна программного приложения - сервера. В нем отображается список добавленных тестов и кнопки для добавления, редактирования или удаления теста, а также просмотра результатов. В данных этого класса содержатся следующие элементы: setDlg - окно настроек теста, queDlg - окно добавления вопроса, testDlg - окно редактирования вопросов теста, tests - контейнер тестов, testModel - модель представления тестов возможных для тестирования, и флаги isEditQuestion и isEditTest - для установки признака редактирования или добавления нового теста или вопроса. Класс предоставляет методы setNewTest - слот для обработки нажатия на кнопку создания нового теста, setTestWindows - слот для отображения окна редактирования вопросов, setFinish - слот для обработки окончания редактирования, setBackToSet - слот для возвращения к редактированию настроек, setEditQue - слот для редактирования вопроса, setAddQue - слот для обработки добавления нового вопроса, setAddToList - слот для добавления нового вопроса в контейнер тестов, setAddTheme - слот для добавления темы, setDeleteTheme - слот для удаления темы, setChangeTheme - слот для изменения выбранной темы, setEditTest - слот для обработки нажатия кнопки редактирования теста.

На рисунке 4.3 изображена диаграмма классов QTest и QTestingTask. QTest является хранилищем вопросов по одному предмету, а QTestingTask - тестовым билетом для студента. QTest имеет следующие данные: caption - название теста, questions - контейнер для хранения вопросов, quantityOfQuestions - количество вопросов в одном тестовом билете, time - время для прохождения теста, usedQuestions - контейнер для хранения вопросов, которые уже были выбраны в тестовые билеты, usedThemes - то же самое для тем. Методы : addQuestion - для добавления вопроса в тест, delQuestion - для удаления вопроса, addTheme - для добавления темы, delTheme - удаление темы, editQuestions - для редактирования вопросов, createTask - для создания тестового билета, getQuestion - для получения билета, getThemes - для получения названия всех тем теста, setCaption - для установки названия, getCaption - для получения названия теста. Класс QTestingTask имеет следующие данные: questions - контейнер для хранения вопросов, index - уникальный номер тестируемого, time - время прохождения теста, date - дата прохождения теста, fio - ФИО студента, group - группа студента, mark - оценка. Методы: addQuestion - добавление вопроса в билет, getMark - проверка ответов и выставление оценки.

Рисунок 4.4 - Диаграмма классов предоставляющих графическое оформление программной системы клиента

На рисунке 4.4 представлена диаграмма классов предоставляющих графическое оформление программной системы клиента.

Класс QNetworkDialog представляет окно ввода IP адреса и порта серввера. Данный класс не имеет данных, его методы: getIP - получение IP адреса из окна, getPort - получение порта из окна, setNextClicked - обработка нажатия на кнопку Next.

Класс QExitDialog предоставляет графическое оформление окна для предупреждения перед выходом. Методы: setOkClicked - обработка нажатия на кнопку Ok, setCancelClicked - обработка нажатия на кнопку Cancel.

Класс MainWindow является главным окном приложения клиента. Его данные: tstDlg, exitDlg, nameDlg - экземпляры классов описанных выше, tcpSocket - объект для работы с tcp соединением, uniqueID - уникальный номер тестируемого, questionNumbers - модель для навигации по номерам вопросов, questions - контейнер с вопросами, answers - контейнер с ответами. Методы: readData - чтение данных по сети, requestTestList - отправка запроса на список тестов, requestTask - отправка запроса на новое задание, sendToServer - отправка результатов на сервер, setNextClicked - обработка нажатия на кнопку Next, setBackClicked - обработка нажатия на кнопку Back, setExitClicked - обработка нажатия на кнопку Exit, setQuestionChanged - обработка изменения номера вопроса в окне навигации.

4.2 Информационное пространство системы

На рисунке 4.5 изображено информационно пространство программной системы. Из окна типа QSettingsDialog в MainWindow передаются время прохождения теста и количество вопросов в билете. Из окна типа QQuestionDialog передается объект - наследник класса QQuestion в окно QTestWindow. Далее из этого окна передается объект класса QTest в MainWindow сервера. Также из сервера клиенту передаются вопросы в виде списка типа QQuestion. В клиенте из окна типа QSettingsWindow передается информация о студенте, а именно его имя и группа. Далее происходит тестирование по полученным вопросам и ответы передаются серверу в виде списка строкового типа, а также передается имя и группа студента.

Рисунок 4.5 - Информационное пространство программной системы

4.3 Интерфейс пользователя

Инсталляция

Программный продукт имеет название SkillTest. Он состоит из двух приложений SkillTestServer - сервер и SkillTestClient - клиент.

Интерфейс программы написан на английском языке из-за того, что именно этот язык является наиболее распространённым в данной предметной области.

Для запуска сервера необходимо открыть приложение с названием SkillTestServer.exe, а для открытия клиента необходимо запустить SkillTestClient.exe. Для их установки необходимо скопировать необходимый exe-файл на жесткий диск в любую папку (для сервера SkillTestServer, для клиента - SkillTestClient). Также в этой папке с необходимым приложением должны находится следующие файлы:

- Qt4Core.dll - динамическая библиотека для работы основных функций библиотеки Qt;

- Qt4Network.dll - динамическая библиотека для работы с сетью;

- Qt4GUI.dll - динамическая библиотека для работы оконного окружения библиотеки Qt;

- Libgcc_s_dw2-1.dll - динамическая библиотека для работы компилятора языка С++ mingw;

- Mingwm10.dll - динамическая библиотека для работы компилятора mingw C++.

Для работы сервера также необходимо, чтобы в папке "С:\mingw\" был установлен компилятор языка C++ MinGW версии не ниже 4.0.

Работа с серверным приложением

На рисунке 4.6 представлен внешний вид главного окна сервера. В нем присутствует главное меню, состоящие из следующих пунктов: Test, Results и Help. Также там присутствуют кнопки Add, Edit, Delete, Results, Exit. Также в левой верхней части присутствуют метки с IP адресом и портом сервера.

При нажатии на кнопку Add или Edit открывается окно настроек теста.

Рисунок 4.6 - Главное окно программы

Рисунок 4.7 - Окно настроек нового теста

В окне настроек теста возможно ввести его название, максимальное время для прохождения, количество вопросов и выбрать файл с уже созданными вопросами. Далее при нажатии на кнопку Next откроется окно добавления вопросов и тем (рисунок 4.8). Если в окне настроек был выбран файл с ранее созданными вопросами, то эти вопросы изначально будут присутствовать в окне добавления при его появлении.

Рисунок 4.8 - Окно добавление вопросов и тем в тест

При нажатии на кнопки Add в левой нижней части окна возможно добавить тему. А при нажатии на кнопку Add или Edit в правой части экрана открывается окно добавления / редактирования вопроса (рисунок 4.9). После нажатия ОК в окне добавления вопросов вопросы добавляются в тест и окно закрывается.

Тип вопроса выбирается в верхнем правом углу в выпадающем списке. На рисунке 4.10 представлено окно добавления вопроса типа "написать программу". Для настройки этого вопроса необходимо ввести вопрос, далее указать количество входных и выходных параметров и количество тестов в соответствующих полях ввода и далее в табличках ввести: типы входных параметров, примеры входных параметров, и тесты для программы, которую напишет студент. На рисунке 4.11 Представлено окно добавления вопроса типа "вычислить выражение". После ввода вопроса необходимо будет составить выражение путем добавление параметров, операторов и скобок. Для добавления этих атомов выражения необходимо нажимать на соответствующие кнопки. На рисунке 4.12 представлено окно добавления вопроса типа "определить вывод программы". После ввода вопроса будет необходимо ввести программу. Далее указать количество входных параметров. После чего в табличке указать типы этих параметров и их диапазоны. На рисунке 4.13 представлено окно ввода вопроса типа "определить исход инициализации". После ввода вопроса в этом окне будет необходимо указать количество строчек и столбиков в табличке и ввести эти параметры для генерации инициализирующего выражения.

Рисунок 4.10 - Окно создания вопроса типа "вычислить выражение"

Рисунок 4.11 - Окно создания вопроса типа "определить вывод программы"

Рисунок 4.12 - Окно создания вопроса типа "определить исход инициализации"

Работа с клиентским приложением

При открытии программы клиента SkillTestClient откроется окно ввода IP адреса и порта сервера (рисунок 4.13). После ввода этих данных необходимо нажать на кнопку Next, после чего появится окно ввода личных данных и выбора доступного теста (рисунок 4.14).

Рисунок 4.14 - Окно ввода личных данных клиента

После ввода этих данных необходимо нажать на кнопку Next. Далее появится окно тестирования, которое развернется на весь экран (рисунок 4.15).

Рисунок 4.15 - Окно тестирования приложения клиента

В левой части окна тестирования находится навигатор по вопросам для свободного перехода между ними. Ввод совершается в центральное поле. Оно имеет большую высоту, так как предназначено и для ввода программ. Навигация между вопросами происходит так же посредством кнопок Back и Next. Выход из программы возможен посредством нажатия на кнопку Exit в правой верхней части экрана.

5. Тестирование системы

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

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

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

Окно результатов работы программы представлено на рисунке 5.1.

В программе также присутствуют контроль на ввод данных. На их наличие (рисунок 5.2) а так же на их корректность (рисунок 5.3). Так же осуществляется проверка диапазонов значений в соответствии с таблицами 2.1 - 2.3.

6. Экономическая часть

6.1 Порядок расчета и анализа экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию"

В составе комплекса средств автоматизации особое место занимает программное обеспечение автоматизированных систем (АСНИ, САПР, АСУ). Особая важность данного вида обеспечения определяется тем, что именно в программное обеспечение закладываются и реализуются функции автоматизированных систем. В состав программного обеспечения могут включаться пакеты программ и отдельные программные модули, созданные для широкого применения или специального назначения. Однако оригинальные или специальные программы имеют возможность найти в дальнейшем широкое применение, если они созданы и оформлены в соответствии с определенными требованиями, предъявляемыми к созданию программ как к продукции производственно-технического назначения, то есть как к программным изделиям.

В связи с этим целесообразно выделять процесс создания программного обеспечения из общего процесса создания автоматизированных систем (АС) и рассматривать его с двух позиций:


Подобные документы

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

    курсовая работа [365,0 K], добавлен 18.05.2013

  • Выбор среды разработки программного обеспечения. Компьютерная система тестирования знаний в дистанционном обучении OpenTEST. Написание встроенного текстового редактора для расширенного форматирования текста. Руководство пользователя, структура программы.

    дипломная работа [7,1 M], добавлен 20.05.2013

  • История развития и виды тестирования программного обеспечения. Инсталляционное, регрессионное, конфигурационное, интеграционное, локализационное, модульное тестирование. Методы сокращения трудоемкости модульного тестирования разрабатываемого приложения.

    курсовая работа [309,5 K], добавлен 16.12.2015

  • Методика и основные этапы разработки системы тестирования для оценки уровня знаний студентов с применением технологии "Клиент-сервер". Проектирование клиентской, серверной части данной системы тестирования, порядок составления финальных отчетов.

    дипломная работа [587,6 K], добавлен 08.11.2010

  • Изучение различных видов тестирования программного обеспечения. Выявление в программной системе скрытых дефектов до того, как она будет сдана заказчику. Тестирование методом черного ящика. Требования, предъявляемые к процессу тестирования больших систем.

    курсовая работа [3,0 M], добавлен 19.11.2009

  • Неразрешимость проблемы тестирования программного обеспечения. Виды и уровни тестирования. Стратегии восходящего и нисходящего тестирования. Методы "белого" и "черного" ящика. Автоматизированное и ручное тестирование. Разработка через тестирование.

    курсовая работа [112,2 K], добавлен 22.03.2015

  • Проектирование логической схемы данных для предметной области, физической модели базы данных. Разработка алгоритмов функциональных модулей программного приложения. Принципы тестирования спроектированного программного обеспечения, анализ эффективности.

    курсовая работа [926,7 K], добавлен 20.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.