- •Министерство образования Российской Федерации
- •Содержание
- •1. Специальная часть 6
- •2. Технологическая часть. Особенности разработки программ на скриптовом языке Perl с использованием интерфейса cgi 60
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта 76
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм 88
- •Введение
- •1. Специальная часть
- •2002 Г. Введение
- •1.1. Анализ системы орокс
- •1.1.1. Организация обучения на базе системы орокс
- •1.1.2. Состав индивидуального учебного плана пользователя
- •1.1.3. Процесс взаимодействия обучаемого с учебным заведением
- •1.1.4. Анализ существующих функций администрирования процесса обучения
- •1.1.5. Постановка задачи
- •1.1.5.1. Требования к информационной и программной совместимости
- •1.1.5.2. Основные элементы интерфейса, предоставляемые технологией www
- •1.2. Проектирование подсистемы статистического учёта успеваемости студентов
- •1.2.1. Язык моделирования, используемый при проектировании подсистемы
- •1.2.2. Разработка общей структурной схемы подсистемы.
- •1.2.3. Структура данных, используемых подсистемой
- •1.2.4. Проектирование и реализация компонентов подсистемы
- •1.2.4.1. Учебная карточка студента
- •1.2.4.2. Передача работ преподавателю
- •1.2.4.3. Текущая успеваемость
- •1.2.4.4. Статистика по студентам
- •1.3. Особенности реализации подсистемы
- •1.3.1. Взаимодействие с базой данных
- •1.3.2. Передача значений между формами
- •1.3.3. Особенности, связанные с подготовкой отчётов для печати
- •1.3.4. Сортировка массивов
- •1.4. Методика испытаний
- •2. Технологическая часть. Особенности разработки программ на скриптовом языкеPerlс использованием интерфейсаCgi
- •2.1.2. CommonGatewayInterfaceкак средство расширения возможностейWorldWideWebтехнологии
- •2.2. Особенности языка Perl
- •2.2.1. История создания языка
- •2.2.2. Синтаксис языка
- •2.3. Особенности отладки cgi-программ
- •2.2.1. Ошибки в Perl-программе
- •2.2.2. Отладка шаблонов
- •2.2.3. Использование ModPerl
- •2.2.4. Ошибки при настройке www-сервера
- •2.2.5. Ошибки при выполнении sql-выражений
- •2.4. Диаграммы uml, используемые при проектировании подсистемы
- •2.4.1. Введение
- •2.4.2. Диаграммы вариантов использования
- •2.4.3. Диаграммы деятельности
- •2.4.4. Диаграммы последовательностей
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта
- •2002 Г. Введение
- •3.1. Принципы сегментации с учётом специфики продукта
- •3.2. Методика расчёта сегментации рынка
- •3.3. Поиск сегментов рынка для подсистемы статистического учёта успеваемости студентов
- •3.5. Оценка затрат на создание программного продукта и определение точки безубыточности
- •3.6. Вывод
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм
- •2002 Г. Введение
- •4.1. Вредные факторы на рабочем месте программиста и пользователя эвм
- •4.1.1. Излучения экрана монитора
- •4.1.2. Микроклимат помещения
- •4.1.3. Требования к уровням шума
- •4.1.4. Психофизиологические факторы
- •4.1.4.1. Физические перегрузки (статические)
- •4.1.4.2. Монотонность труда
- •4.1.4.3. Описание зрительной работы оператора
- •Заключение
- •Список литературы
- •Приложения Фрагмент текста программы
1.3.4. Сортировка массивов
При отображении результатов на экране в виде таблицы и создании отчётов часто возникала необходимость сортировки выводимых значений по какому-либо столбцу таблицы. Т.е. фактически необходимо было переставить элементы всех массивов в соответствии с перестановкой элементов в сортируемом массиве. Поскольку массивов с данными, которые необходимо отразить на экране может быть несколько, и количество элементов массива довольно большое (количество элементов одинаково во всех массивах), требовалось максимально ускорить данную процедуру.
Эта задача решалась следующим образом:
Создавался новый массив элементов, содержащий элементы от нуля до количества элементов сортируемого массива.
Производилась сортировка элементов массива с помощью функции быстрой сортировки sort() языкаPerl, причём результаты сортировки записывались в созданный на предыдущем шаге массив: индексы массива располагались в соответствии с расположением элементов в отсортированном массиве.
При выводе результатов на экран обращение ко всем элементам массивов, выводимых на экран, осуществлялось с использованием отсортированного массива индексов.
Далее приведён фрагмент программы, в котором приведена сортировка массивов @studs, @groupsи @rs_datesв соответствии с выбором пользователя ($FORM{'sort'}) с использованием массива индексов и вывод отсортированных элементов на экран:
my @ind=(); # Это массив индексов
for ($i=0; $i<scalar(@studs); $i++)
{
push(@ind,$i);
}
if ($FORM{'sort'} eq 'student') # ЕслисортируемпоФИОстудента
{
@ind=sort{$studs[$a] cmp $studs[$b]}@ind;
}
elsif ($FORM{'sort'} eq 'group') # Еслисортируемпоуч.группе
{
@ind=sort{$groups[$a] cmp $groups[$b]}@ind;
}
elsif ($FORM{'sort'} eq 'rs_date') # Если сортируем по Дате
{
@ind=sort
{
cmp_dates(str_to_date($rs_dates[$b]), str_to_date($rs_dates[$a]))
}@ind;
}
# Вывод на экран
for ($i=0; $i<scalar(@studs); $i++)
{
t_print qq(
Студент: $studs[$ind[$i]],Группа: $groups[$ind[$i]],Дата: $rs_dates[$ind[$i]]
);
}
1.4. Методика испытаний
Тестирование является одним из ключевых элементов обеспечения качества программного продукта.
Среди методов, с помощью которых проводилось тестирование подсистемы, можно выделить два основных:
метод «стеклянного ящика»;
метод «чёрного ящика».
Тестирование методом «стеклянного ящика» - это тестирование на этапе реализации. Данный метод можно отнести к процессу программирования, т.к. программисты выполняют тестирование на протяжении всего процесса создания ПО. Поскольку программист разрабатывает тесты, зная исходный код программы, он имеет определённые преимущества: направленность тестирования, полный охват кода, управление потоком, отслеживание целостности данных, внутренние граничные точки, тестирование, определяемое выбранным алгоритмом
Написание и отладка подсистемы осуществлялась с использованием специальной тестовой базы данных, максимально охватывающей предметную область. Для этих целей была скопирована база данных, работа с которой осуществлялась на факультете дополнительного и дистанционного обучения МИЭТ. Данная база содержит все используемые в настоящее время категории пользователей, базовые и производные учебные планы, назначенные как индивидуально студентам, так и учебной группе. Также в базе имеются результаты выполнения студентами контрольных мероприятий.
Была произведена проверка корректности работы подсистемы при использовании базы данных, таблицы которой не содержат никаких записей. Данная ситуация может возникнуть при первоначальной установке системы ОРОКС на сервер образовательного учреждения.
Особое внимание было уделено работе подсистемы при использовании пользователем различных современных Интернет-браузеров, поскольку они по-разному могут интерпретировать элементы JavaScript, содержащиеся вHTML-документе, являющимся результатом исполненияPerl-программы. Также могли возникнуть проблемы при передаче данных на русском языке с помощью методаGET, использовавшимся при генерации отчётов для печати.
При тестировании методом «стеклянного ящика» особое внимание уделялась следующим вопросам:
ошибки, связанные с обработкой граничных условий;
ошибки сценария при работе с программой;
ошибки передачи и интерпретации данных.
Для максимального исключения ошибок ввода и обработки граничных условий, в подсистеме использовался выбор из фиксированного списка значений. Единственным используемым элементом текстового ввода является пара элементов для ввода начальной и конечной даты временного промежутка. Для проверки правильности ввода даты использовались шаблоны языка Perl, проверяющие соответствие введённой пользователем даты общепринятому в России формату даты через точку. Также производится проверка, чтобы дата начала временного промежутка не превосходила дату его окончания.
Ситуациям, связанным с ошибками сценария при работе с программой было уделено особое внимание. Поскольку при работе с некоторыми компонентами подсистемы пользователь проходит через несколько экранов, на каждом из которых выполняет определённые действия, то необходимо было обеспечить проверку на соответствие условиям перехода от экрана к экрану.
При передаче данных с экрана на экран или при обновлении какого-либо экрана используется хэш %Hiddenи скрытый элемент ввода «hidden». В связи с особенностями передачи с использованием этих элементов, данные передаются только на следующий экран (форму), и, для передачи этих данных, допустим, с первого экрана на третий требуется повторно заносить данные в скрытый элемент ввода. Поэтому при разработке подсистемы проверялась проверка на корректность передачи данных их формированию (например, при передаче массивов данных) и последующей интерпретации (разбору элементов массива).
После локализации и устранения обнаруженных ошибок применялось контрольное тестирование, задача которого состояла в подтверждении правильности выполненной корректировки программы и в отсутствии проявления ранее обнаруженных ошибок.
Затем с участием экспертов с факультета дополнительного и дистанционного обучения выполнялось тестирование методом «чёрного ящика». Проводилась проверка на соответствие функциональности подсистемы техническому заданию.
В процессе тестирования обращалось внимание на пользовательский интерфейс, эксперты высказывали свои замечания и пожелания.
После устранения всех выявленных недостатков подсистема была установлена на сервер факультета дополнительного и дистанционного обучения МИЭТ, где проходила опытную эксплуатацию. Данная стадия является самой ответственной, поскольку даже самое полное тестирование не всегда позволяет выявить все нюансы, которые обнаруживаются при реальной эксплуатации.
Все ошибки и недочёты, выявленные в процессе реальной эксплуатации, были успешно локализованы и устранены.
МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ
ФАКУЛЬТЕТ МП и ТК
КАФЕДРА ИПОВС