Разработка подсистемы статистического учёта успеваемости студентов для сетевой системы поддержки дистанционного обучения ОРОКС

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

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

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

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

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

На pис. 17 показан эскиз формы, на котором выполняются все вышеперечисленные действия:

Рис. 17. Эскиз формы №1 «Текущая успеваемость»

6. Определить, какую дополнительную информацию включить в отчёт:

· Код модуля в ОРОКС, соответствующего контрольному мероприятию;

· Фактическую дату выполнения контрольного мероприятия (если будет отставание от графика, то отобразить особым цветом или пометить определённым знаком);

· Количество попыток прохождения контрольного мероприятия;

· Состояние прохождения.

· Оценка последнего выполнения.

Выбор этой дополнительной информации удобно производить с помощью элементов ввода «флажок».

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

· ФИО студента;

· наименование контрольного мероприятия;

· выбранная учебным администратором дополнительная информация.

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

На pис. 18 изображён эскиз экрана, на котором осуществляется просмотр текущих результатов обучения.

Рис. 18. Эскиз формы. Просмотр результатов обучения

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

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

Рис. 19. Эскиз формы. Просмотр подробных результатов выбранного контрольного мероприятия

На pис. 20 приведена диаграмма деятельности, описывающая последовательность процессов при работе с процедурой «Текущая успеваемость».

Рис. 20. Диаграмма деятельности «Текущая успеваемость»

На pис. 21 показана диаграмма последовательностей для вариантов использования, реализуемых процедурой «Текущая успеваемость».

Рис. 21. Диаграмма последовательностей «Текущая успеваемость»

Схема алгоритма работы данной процедуры представлена на pис. 22

Рис. 22. Схема алгоритма работы процедуры «Текущая успеваемость»

1.2.4.4 Статистика по студентам

Процедура «Статистика по студентам» предназначена для просмотра и подготовки к печати различной статистической информации:

· списки студентов, отстающих от графика выполнения учебного плана;

· списки студентов, получивших оценки в заданном диапазоне за заданный период;

· списки студентов, обучающихся по конкретному учебному плану;

· списки студентов, обучающихся по конкретной дисциплине.

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

· ФИО студента;

· учебная группа;

· название дисциплины;

· наименование контрольного мероприятия;

· дата выполнения по графику.

Требуется обеспечить возможность сортировки таблицы по любому её столбцу.

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

Рис. 23. Эскиз формы. Просмотр списка студентов, отстающих от графика выполнения учебного плана

На pис. 24 показана диаграмма последовательностей для варианта использования «Просмотр списка студентов, отстающих от графика учебного плана».

Рис. 24. Диаграмма последовательностей «Просмотр списка студентов, отстающих от графика учебного плана»

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

1. Выбор учебной группы. Реализовать этот выбор из выпадающего списка, в который занесены названия всех имеющихся в базе данных ОРОКС учебных групп.

2. Выбор диапазона оценок. Выбор можно оформить в виде пары выпадающих списков с оценками от 1 до 5.

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

После настройки вышеперечисленных параметров в таблицу отчёта заносится следующая информация:

· ФИО студента;

· учебная группа;

· наименование контрольного мероприятия;

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

· полученная оценка;

· дата выполнения.

Требуется обеспечить возможность сортировки таблицы по любому её столбцу.

На pис. 25 показан эскиз экрана, на котором администратор учебного процесса просматривает список студентов, получивших оценки в заданном диапазоне за определённый временной промежуток.

Рис. 25. Эскиз формы. Просмотр списка студентов, получивших оценки в заданном диапазоне

На pис. 26 изображена диаграмма последовательностей для варианта использования «Просмотр списка студентов, получивших оценки в заданном диапазоне».

Рис. 26. Диаграмма последовательностей «Просмотр списка студентов, получивших оценки в заданном диапазоне»

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

1. Выбор учебной группы из списка всех учебных групп. Выбор следует организовать из выпадающего списка.

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

В таблицу отчёта следует занести следующую информацию:

· ФИО студента;

· учебную группу;

· название учебного плана (если конкретный учебный план не выбран);

· дату начала и окончания обучения.

Требуется обеспечить возможность сортировки таблицы по любому её столбцу.

На pис. 27 приведён эскиз экрана, на котором администратор учебного процесса просматривает список студентов, обучающихся по конкретному учебному плану.

Рис. 27. Эскиз формы. Просмотр списка студентов, обучающихся по конкретному учебному плану

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

Рис. 28. Диаграмма последовательностей «Просмотр списка студентов, обучающихся по конкретному учебному плану»

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

1. Выбрать учебную группу из списка всех учебных групп. Выбор следует организовать из выпадающего списка.

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

В таблицу отчёта следует занести следующую информацию:

· ФИО студента;

· учебную группу;

· наименование дисциплины;

· дату начала и окончания обучения;

· ФИО преподавателя, курирующего студента по данной дисциплине.

Требуется обеспечить возможность сортировки таблицы по любому её столбцу.

Эскиз экрана, на котором администратор учебного процесса будет просматривать список студентов, обучающихся по конкретной дисциплине изображён на pис. 29.

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

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

Рис. 30. Диаграмма последовательностей «Просмотр списка студентов, обучающихся по конкретной дисциплине»

На pис. 31 приведена диаграмма деятельности, описывающая последовательность основных вычислительных процессов при работе с процедурой «Статистика по студентам».

Рис. 31. Диаграмма деятельности «Статистика по студентам»

Схема алгоритма работы данной процедуры представлена на pис. 32

Рис. 32. Схема алгоритма работы процедуры «Статистика по студентам»

1.3 Особенности реализации подсистемы

1.3.1 Взаимодействие с базой данных

Для взаимодействия Perl-скриптов с СУБД MySQL система ОРОКС использует модуль DBI.

Общий алгоритм работы с базой данных можно представить в следующем виде:

· Подключение к базе данных с помощью функции connect;

· Подготовка запроса к выполнению с помощью функции prepare;

· Выполнение запроса с помощью функции execute;

· Выборка данных (для запросов содержащих команду SQL select) с помощью функций fetch;

· Завершение работы с базой данных: функции finish и disconnect.

Подключение к базе данных производится системой ОРОКС автоматически при входе пользователя в систему.

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

В результате для работы с БД имеются следующие функции:

ExecSQL($sql) - выполняет выражение $sql;

Assign2var - присваивает результат, возвращённый функцией ExecSQL переменной(ым);

Assign2list - присваивает результат, возращённый функцией ExecSQL массиву(ам) значений.

Приведём фрагмент программы, реализующий выборку из таблицы USERS идентификаторов записей ID, фамилий ufam и имён uname студентов, занимающихся в группе $FORM{group}. Результаты запроса с помощью функции Assign2list заносятся в соответствующие массивы данных:

$sql="SELECT ID, ufam, uname FROM users WHERE uflags='stand' AND ugroup='$FORM{group}'

$sth=ExecSQL($sql);

Assign2list($sth, \@ID, \@fams, \@names);

1.3.2 Передача значений между формами

При передаче данных из одной формы в другую используются хэш %Hidden и скрытый элемент ввода «hidden».

Для передачи значения переменной $var сначала необходимо занести его в специальный ассоциативный массив %Hidden: $Hidden{name}=$var. Перед отправкой формы элементы этого массива шифруются функцией ОРОКС CodeHiddens() и передаются с использованием скрытого элемента ввода «hidden» на следующий экран, где они будут доступны как обычные элементы хэша %FORM. Т.е. значение переменной $var, записанное в хэш %Hiddens будет доступно через $FORM{name}.

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

Допустим, нужно передать на следующую форму массив идентификаторов @ID. Для этого с помощью функции join() языка Perl объединим все значения массива @ID в переменную $ID_array. В качестве разделителя выступит точка с запятой: $ID_array = join(";", @ID). Затем заносим эту переменную в хэш %Hiddens: $Hidden{ID_array}=$ID_array.

После кодирования хэша с помощью функции CodeHiddens() и отправки формы на следующем экране при обращении к элементу $FORMS{ID_array} получим искомый массив в виде строки, элементы которого разделены точкой с запятой. Для разбора этой строки и занесения элементов обратно в массив используется функция split:

my (@ID)=split(';', $FORM{'ID_array'});

1.3.3 Особенности, связанные с подготовкой отчётов для печати

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

Для этих целей можно воспользоваться временными файлами, куда записывается HTML-документ и затем открывается средствами языка JavaScript. Но в таком случае требуется обеспечить уникальность имён файлов при каждом вызове приложения и удаление ненужных временных файлов.

Для устранения этих недостатков был выбран другой способ. При нажатии на кнопку «Создать документ» заполненная форма отправляется на сервер, где в создаваемый HTML-документ записывается функция window.open() языка JavaScript, исполняемая при загрузке пользователем HTML-документа. Эта функция инициирует создание нового окна, в котором производится вызов того же приложения с передачей ему всех необходимых значений с помощью метода GET в виде «имя=значение&имя2=значение2...»

Поскольку передача значений с помощью метода GET происходит через URL документа, то во избежание проблем с пониманием символов кириллицы некоторыми типами Интернет-браузеров, необходимо обеспечить преобразование всех передаваемых значений, содержащих русские буквы к виду, понимаемому всеми браузерами, т.е. «%»+ «шестнадцатеричный код символа».

Это осуществляется с использованием шаблонов и функции unpack языка Perl.

Ниже приведён фрагмент кода, в котором осуществляется такое преобразование имени учебной группы $group и производится вызов функции open языка JavaScript для открытия нового окна с передачей туда всех необходимых значений:

$group=~s{(.|\n)}{'%'.unpack('H2',$1)}eg;

t_print qq(

<SCRIPT language=\"JavaScript\">

<!--

var aWinObj;

aWinObj=window.open('$CGIname?hv=$forms::hv&$str&show_nv=$FORM{show_nv}&short_form=$FORM{short_form}&group_by=$FORM{group_by}&s_plan=$s_plan&selected=$FORM{selected}&gr_plans=$FORM{gr_plans}&group=$group&zaversh=$FORM{zaversh}&plans=$FORM{plans}&selected=$FORM{selected}&diss=$diss&tests=$tests&inf=$in','Result',"toolbar=yes,directories=0,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=0");

// -->

</SCRIPT>);

}

1.3.4 Сортировка массивов

При отображении результатов на экране в виде таблицы и создании отчётов часто возникала необходимость сортировки выводимых значений по какому-либо столбцу таблицы. Т.е. фактически необходимо было переставить элементы всех массивов в соответствии с перестановкой элементов в сортируемом массиве. Поскольку массивов с данными, которые необходимо отразить на экране может быть несколько, и количество элементов массива довольно большое (количество элементов одинаково во всех массивах), требовалось максимально ускорить данную процедуру.

Эта задача решалась следующим образом:

1. Создавался новый массив элементов, содержащий элементы от нуля до количества элементов сортируемого массива.

2. Производилась сортировка элементов массива с помощью функции быстрой сортировки 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». В связи с особенностями передачи с использованием этих элементов, данные передаются только на следующий экран (форму), и, для передачи этих данных, допустим, с первого экрана на третий требуется повторно заносить данные в скрытый элемент ввода. Поэтому при разработке подсистемы проверялась проверка на корректность передачи данных их формированию (например, при передаче массивов данных) и последующей интерпретации (разбору элементов массива).

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

Затем с участием экспертов с факультета дополнительного и дистанционного обучения выполнялось тестирование методом «чёрного ящика». Проводилась проверка на соответствие функциональности подсистемы техническому заданию.

В процессе тестирования обращалось внимание на пользовательский интерфейс, эксперты высказывали свои замечания и пожелания.

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

Все ошибки и недочёты, выявленные в процессе реальной эксплуатации, были успешно локализованы и устранены.

2. Технологическая часть. Особенности разработки программ на скриптовом языке Perl с использованием интерфейса CGI

Во второй главе описываются вопросы взаимодействия пользователя с информационным сервером типа HTTP, интерфейса CGI и вопросы взаимодействия трехуровневой схемы: HTTP-сервер - приложение - база данных. Проведён анализ особенностей отладки CGI-приложений.

Также рассмотрены диаграммы UML, использовавшиеся при проектировании подсистемы.

2.1 Интерфейс CGI. Вопросы взаимодействия внешних прикладных программ с информационным сервером HTTP

2.1.1 Введение в технологию WWW

WWW (World Wide Web) представляет собой клиент-серверную технологию, основанную на прикладном протоколе HTTP (HyperText Transfer Protocol). HTTP - это протокол высокого уровня (а именно, уровня приложений), обеспечивающий необходимую скорость передачи данных, требующуюся для распределенных информационных систем гипермедиа. HTTP используется проектом World Wide Web с 1990 года.

В HTTP имеются два типа сообщений: запросы от клиента (браузера) к серверу и ответы сервера клиенту. Для передачи сообщений используется протокол TCP (Transfer Control Protocol) и стандартный порт HTTP-сервера - 80. Запрос содержит URL (Uniform Resource Locator)- идентификатор ресурса (документа), который хотел бы получить клиент и несколько вспомогательных заголовков.

Предполагается, что в ответ на запрос, сервер, проанализировав требуемый URL, предоставит клиенту искомую информацию, называемую контентом. В простейшем случае это документ HTML (HyperText Markup Language) или файл в другом формате, однако контент может генерироваться сервером «на лету», например может быть вызвана сторонняя программа и ее вывод принят в качестве контента. Чтобы браузер правильно определил тип информации, содержащейся в контенте, и, соответственно, применил адекватный способ представления этой информации пользователю, контент сопровождается заголовком Content Туре, в котором указывается MIME-тип данных.

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

Пользователь задает параметры запроса путем заполнения и отправки HTML-форм. Формы содержат поля ввода текстовой информации, радиокнопки, выпадающие списки и т.п.

Никакой HTTP-сервер не может предусмотреть всего разнообразия интерактивных WWW приложений. Вместо этого HTTP-сервер предлагает разработчику интерфейс CGI, используя который сторонняя программа может получить от HTTP-сервера все необходимые для обработки запроса данные, а в ответ сгенерировать контент, который будет возвращен сервером браузеру [5]. Таким образом, задача генерации контента возлагается на приложения, разрабатываемые для конкретной задачи.

2.1.2 Common Gateway Interface как средство расширения возможностей World Wide Web технологии

Главное назначение Common Gateway Interface - обеспечение единообразного потока данных между сервером и прикладной программой, работающей на стороне сервера.

При использовании интерфейса CGI HTTP-сервер запускает приложение, называемое CGI-программой или шлюзом. Это приложение должно обработать запрос. Для передачи данных об информационном запросе от сервера к шлюзу сервер использует командную строку и переменные окружения. Эти переменные окружения устанавливаются в тот момент, когда сервер выполняет программу шлюза. Существует два способа передачи данных шлюзу: GET и POST. Выбор метода определяется при создании формы.

При отправке запроса методом GET данные, введенные в форму, присоединяются к URL после вопросительного знака. В этом случае URL может выглядеть например так: «http:/www.server.ru/cgi-bin/dir/stat2.pl?group=МП-55&fam=Krishan&age=20», т.е. информация передается в следующей форме: имя=значение&имя1=значение1&…, где имя - имя переменной (например, название выпадающего списка), и значение - реальное значение (выбранное значение в выпадающем списке).

При отправке методом POST та же самая строка «group=МП-55&fam=Krishan&age=20» помещается после заголовков запроса, отделяясь от них пустой строкой. В этом случае к URL ничего не добавляется.

Отметим, что сами данные, их наличие или отсутствие, размещение в теле запроса или в URL или сразу в обоих местах HTTP-сервером никак не интерпретируются и не декодируются, а передаются приложению как есть. Все задачи по интерпретации и преобразованию данных возложены на CGI-приложение. Обработав запрос, приложение передает сгенерированный контент на свой стандартный вывод, где он перехватывается HTTP-сервером и пересылается клиенту. Единственный заголовок, который обязано выставить само CGI-приложение, - Content-Type.

На pис. 33 показаны взаимосвязи между Web-браузером, Web-сервером и CGI-программой.

Рис. 33. Заполнение формы с привлечением интерфейса CGI

2.2 Особенности языка Perl

2.2.1 История создания языка

Слово Perl является аббревиатурой выражения Practical Extraction and Report Language, что в переводе с английского языка означает «практический язык извлечений и отчетов». Это название принадлежит Ларри Уоллу, создателю и главному архитектору Perl. Ларри создал этот язык, когда пытался формировать отчеты из иерархии файлов системы оповещения об ошибках, а возможности применявшегося в то время обработчика потоков данных awk оказались исчерпанными. В результате появилась первая версия языка Perl. С тех пор возможности языка существенно выросли.

Задуманный первоначально как язык для операционной системы UNIX, Perl сейчас работает практически во всех операционных системах, включая MS-DOS, VMS, OS/2, Plan 9, Macintosh и все известные разновидности Windows. Это один из наиболее переносимых языков программирования, известных на сегодняшний день.

Большую популярность язык Perl завоевал благодаря возможностям использования в Интернет в качестве языка CGI-сценариев и благодаря интеграции со средствами генерации динамических html-страниц.

2.2.2 Синтаксис языка

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

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

Perl-программа состоит из всех операторов Perl, имеющихся в файле и рассматриваемых в совокупности как одна большая программа, подлежащая выполнению. Понятия «основной» (main) программы, как в С, здесь нет.

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

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

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

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

2.3 Особенности отладки CGI-программ

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

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

Рис. 34. Потенциальные источники ошибок

2.2.1 Ошибки в Perl-программе

Если скрипт по каким-либо причинам не исполняется, то на скорее всего появится экран, сообщающий о внутренней ошибке сервера, изображённый на pис. 35. Такое сообщение может появиться как при синтаксических ошибках в самой Perl-программе, так и при неправильной конфигурации Web-сервера.

Рис. 35. Сообщение о внутренней ошибке сервера

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

Приведём участок файла http-лога, возникающий в случае, если программист забыл поставить точку с запятой после некоторого оператора в строке 1104 скрипта dossier.pl:

[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] Premature end of script headers: c:/home/www/oroks22/scripts/dean_office/dossier.pl

[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] syntax error at c:/home/www/oroks22/scripts/dean_office/dossier.pl line 1105, near ") {"

[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] syntax error at c:/home/www/oroks22/scripts/dean_office/dossier.pl line 1170, near "else"

[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] Execution of c:/home/www/oroks22/scripts/dean_office/dossier.pl aborted due to compilation errors.

Видим, что файл http-лога имеет следующий формат:

Дата и время записи

тип сообщения

IP-адрес клиента

Сообщение

Проведя анализ приведённого участка лога видим, что источник ошибок находится в районе строки 1105 файла dossier.pl. Остальные ошибки могут возникать в результате возникновения первой ошибки. Как правило, после исправления некоторой синтаксической ошибки сообщения об остальных найденных до исправления ошибках появляться не будут.

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

Отчасти это происходит благодаря несколько причудливым правилам построения идентификаторов. Кроме стандартного набора букв, цифр и символа «_» в пользовательских идентификаторах допускается использование символа «'», в том числе в качестве первого. Данная особенность приводит к появлению дополнительного (среди бесчисленного множества других) потенциального источника ошибок. Например, следующий код будет компилироваться и выполняться без ошибок, но результат, скорее всего, будет отличным от ожидаемого:

$Owner = "John";

print("That's $Owner's house.");

На терминале в таком случае будет напечатано: «That's house.»

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

123 # целое

123.123 # вещественное

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

.5E-10 # экспоненциальная форма

0xABCD # шестнадцатеричные числа записываются как в C

0377 # если первая цифра - ноль, то это восьмеричное число

Perl поддерживает и такую:

9_123_456 # это, видимо, для "удобства чтения"

и даже, как показывает практика, такую:

9_1__2_3___456_____

Также возможны ошибки, если поставить символ «_» в начале числа, например:

$f = _1;

print($f + 2); # будет напечатано 2 вместо ожидаемых 3

print(_1 + 2); # а так вообще ничего не будет напечатано

2.2.2 Отладка шаблонов

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

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

Например, нижеприведённый фрагмент программы проверяет соответствие даты $FORM{'date1'} общепринятому формату даты через точку. Данная проверка используется при проверке ввода дат начала и окончания временного промежутка при выводе результатов текущего семестра и получения списка студентов, получивших оценки в заданном диапазоне за заданный период

Сразу понять, как работает данная конструкция, понять сложно. Для этого требуется непростой синтаксический разбор шаблона.

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

2.2.3 Использование ModPerl

ModPerl - это расширение Web-сервера Apache, обеспечивающее интеграцию с Perl для ускорения выполнения CGI-скриптов. Данное расширение даёт выигрыш по скорости выполнения Perl-скриптов более чем в 2 раза, также позволяет экономить время на создание/закрытие подключения к серверу БД. Система ОРОКС начиная с версии 2.1 включает поддержку ModPerl. Использование данного расширения вносит свои особые требования к Perl- скриптам: всем используемым в программе переменным (скалярным, списковым (массивам) и хэшам (ассоциативным массивам)) перед использованием должны быть присвоены начальные значения. В противном случае они будут содержать последние присвоенные значения, что может привести к большим сложностям при отладке ввиду того, что никаких сообщений об ошибках в программе при использовании таких переменных не возникнет.

2.2.4 Ошибки при настройке WWW-сервера

Большое число ошибок возникает в связи с разграничением доступа к файлам при настройке WWW-сервера. Как правило, WWW-сервера работают под управлением операционной системы Unix (например, Linux, FreeBSD или Solaris). В этом случае достигается максимальная производительность и безопасность, в отличие от Web-серверов под управлением операционных систем семейства Windows.

В операционной системе Unix с файлом связано много характеристик. В системе нет «ничьих» файлов, все файлы имеют владельца-пользователя и владельца-группу.

Права доступа задаются обычно числом в восьмеричной записи и разбиты на 3 части по 3 бита: Каждая часть задает права доступа для конкретной группы:

1я - права доступа для пользователя, которому принадлежит файл;

2я - для группы, которой принадлежит файл;

3я - для всех остальных.

В каждой такой категории выделяются 3 права: право на чтение, право на запись и право на исполнение.

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

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

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

2.2.5 Ошибки при выполнении SQL-выражений

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

Синтаксические ошибки при составлении запроса к БД, как правило, возникают в результате логических ошибок в Perl-программе. Так, например, в SQL-выражении могут использоваться переменные, получаемые в результате предыдущих запросов. Если по какой-либо причине такая переменная будет содержать нулевое значение (например, при выполнении предыдущего запроса был возвращён пустой результат), возникнет сообщение об ошибке. Поэтому необходимо тщательно анализировать результаты, возвращённые после выполнения каждого выражения во избежание ошибок такого рода.

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

2.4 Диаграммы UML, используемые при проектировании подсистемы

2.4.1 Введение

Свою историю унифицированный язык объектно-ориентированного моделирования ведет с конца 80х - начала 90х годов. Собственно создание UML началось в 1994 году под руководством сотрудников Rational Software Гради Буча (Grady Booch) и Джима Рамбаха (Jim Rumbaugh). Первая версия UML была принята консорциумом OMG (Object Management Group) в январе 1997 года. Утвержденная версия UML 1.1 была принята на вооружение основными компаниями - производителями программного обеспечения, такими, как Microsoft, IBM, Hewlett-Packard и производителями CASE-средств, которые реализовали поддержку UML в своих программных продуктах (Paradigm Plus, Microsoft Visual Modeler for Visual Basic, Delphi и др.)

Авторы и разработчики UML представляют его как язык для определения, представления, проектирования и документирования программных систем, бизнес-систем и других систем различной природы. UML определяет нотацию и метамодель. Нотация представляет собой совокупность графических объектов, которые используются в моделях; она является синтаксисом языка моделирования.

Значительное достоинство при проектировании систем с использованием инструментов языка UML - упрощение общения заказчика и разработчика. Это связано как с повышенной наглядностью модели, так и с ее гибкостью и динамичностью [3].

Язык UML содержит большое число различных диаграмм, в которых может содержаться огромное количество различных графических элементов.

Опишем основные типы диаграмм, используемые при проектировании подсистемы статистического учёта успеваемости студентов:

ь Диаграммы вариантов использования;

ь Диаграммы деятельности;

ь Диаграммы последовательностей.

2.4.2 Диаграммы вариантов использования

Диаграммы использования (use case diagram) предназначены для отображения внешнего функционирования проектируемой системы и ее взаимодействия с пользователями.

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

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

Диаграмма состоит из следующих элементов:

· Внешние пользователи или актёры (actors) - это такие воздействия, которые передают или получают информацию для системы. Актёрами могут быть физические объекты разной природы от людей и механизмов до программных систем, один физический объект может описываться несколькими пользователями, если он взаимодействует с разными функциями.

· Блоки использования (use case) - это такие группы функций системы, которые объединяются в единое целое для внешнего пользователя.

· Связи между блоками использования и внешними пользователям.

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

Блоки использования обозначаются эллипсами с указанием имени внутри эллипса или рядом с ним.

Связи обозначаются сплошными линиями.

Пример диаграммы использования, содержащий все её основные элементы, изображён на pис. 36.

Рис. 36. Основные элементы диаграммы использования

2.4.3 Диаграммы деятельности

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

Основным элементом диаграммы деятельностей является состояние действия (action state). Оно представляет собой состояние, в котором определено внутреннее действие, и имеется хотя бы один выходящий из него переход, включающий в себя неявное событие завершения данного внутреннего действия. В зависимости от различных условий, переходов может быть несколько. За одним состоянием действия следует другое состояние, вместе они образуют простую последовательность действий. Переходы, выходящие из состояния действия, неявно вызываются завершением некого события в состоянии. Переходы могут включать в себя условия перехода и действия. Выполняемое действие может быть описано как на естественном языке, так и на любом языке программирования.

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

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

Таблица 4. Основные элементы диаграммы состояний

Наименование

Графическое обозначение

Назначение

Состояние деятельности

Описывает состояние деятельности

Ветвление диаграммы

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

Поток управления

Показывает направления переходов между состояниями деятельности

Начальное состояние

С него начинается выполнение автомата

Конечное состояние

На нём заканчивается выполнение автомата

2.4.4 Диаграммы последовательностей

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

Диаграмма последовательностей состоит из следующих элементов:

· Объекты. Обозначается прямоугольником с записанным в нём именем объекта.

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

· Активация - обозначает период активной жизни объекта. Изображается в виде тонкого вертикального прямоугольника, расположенный вдоль оси времени объекта.

· Вызов метода поведения объекта (сообщение). Обозначается стрелкой между активациями объектов с именем действия. Направление стрелки задает направление передачи данных.

· Текстовые метки (отметки времени, описание действий и т.п.).

Основные графические элементы, используемые при построении диаграмм последовательностей, изображены на pис. 37.

Рис. 37. Основные элементы диаграммы последовательностей

3. Особенности сегментации рынка программного продукта

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

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

Главными доводами в пользу проведения сегментации являются следующие:

1. Обеспечивается лучшее понимание не только нужд потребителей, но и того, что они собой представляют (их личностные характеристики, характер поведения на рынке и т.п.).

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

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

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

3.1 Принципы сегментации с учётом специфики продукта

Особенностью рынка программного продукта (ПП) является постоянное расширение товарной массы (числа пакетов), что определяется следующими причинами:

- индустрией производятся и выпускаются на рынок все новые и новые ПП;

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

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

ь географическое положение потребителей (регион, страна);

ь тип потребителей (величина предприятия, интенсивность потребления, отрасль, место в производственном процессе);

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

Перечисленные признаки сегментации применимы при сегментации рынка ПП. Однако признак «географическое положение» предприятия для ПП как товара имеет меньшее значение. Для этого типа товара главное - совместимость с вычислительной средой, с которой ПП будет взаимодействовать. Но современное состояние наполненности рынка ПП таково, что для решения практически любой проблемы предлагается, как правило, несколько различных по идеологии в степени сложности ПП. Перед пользователем встает вопрос, какой ПП выбрать? Ответ на него теснейшим образом связан с уровнем подготовленности и квалификацией пользователя. Чем они выше, том более совершенный и профессиональный продукт при других равных параметрах осознанно будет выбран. И наоборот, чем менее подготовлен пользователь, тем наиболее простую в использовании версию ПП (в ущерб другим качествам) следует применять.

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

...

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

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