Потребность в автоматизации управленческих HR-задач возникла не так давно, поэтому данное направлении еще находится в развитии. К выбору систем для автоматизации управленческой деятельности стоит подходить с особой осторожностью потому, что управленческие функции специфичны в каждой организации, а значит необходимо ориентироваться на максимальное соответствие существующего в компании алгоритма анализа информации и заложенного в системе. Оценка персонала. В том или ином виде модуль оценки персонала сегодня присутствует практически во всех HR-системах, обладающих функционалом автоматизации управленческих процессов. При этом надо понимать, что на сегодняшний день его функциональные возможности, как правило, ограничиваются лишь фиксацией событий. Система позволяет зафиксировать результаты оценочных мероприятий, а вот инструменты их организации, планирования и анализа пока что развиты довольно слабо. Между тем, именно эти задачи сегодня выходят на первый план. Очевидно, что с разработкой программы оценки предприятия малого бизнеса вполне справится HR-подразделение. Однако для оценки 3000 сотрудников необходимо максимально эффективно спланировать использование временных и человеческих ресурсов. Перекрестный анализ данных из баз по обучению и оценке конкретных сотрудников, автоматическое создание плана обучения по итогам оценки – к сожалению дело будущего. Тщательная подготовка к выбору и внедрению системы, формализация процессов и задач, для решения которых она предназначена, оценка функциональных возможностей решений – такой подход позволяет гарантировать соответствие информационной системы HR-задачам предприятия, «защитить» инвестиции, не допустить ситуации, когда бизнес-процессы «подгоняются» под возможности системы, а также избежать «разочарования» пользователей во внедренной системе. Иными словами ожидания и полученный результат будут максимально соответствовать друг другу.
|
2.5 Итоги анализа и обзора
Наша цель была создание адаптивного и удобного программного обеспечения систем и автоматизации связанную с отбором, периодической оценкой, тестированием персонала и хранением знаний для сотрудников. Большинство разработанных ранее hr-систем реализованы под конкретные цели, решая определенные задачи. Универсальные системы имеют очень сложные структуры и ограничения по каким-либо критериям, что заставляет бизнес задачи подстраиваться под программу, а не наоборот.
Глава 3 Разработка программного обеспечения online-системы
Разработка программного обеспечения состояла из множества этапов. На этапе проектирования был проведен анализ возможных методов реализации поставленной задачи и выбраны оптимальные решения. Была спроектирована четкая архитектура системы, где наглядно представлены модули и их взаимосвязи. Структура базы данных развивалась в процессе работы, приобретая все более взаимосвязанный между таблицами вид. Особый акцент при разработке был сделан на удобстве сервиса, создавая дружественный и удобный интерфейс. На основе архитектуры были реализованы функциональные возможности каждого из пользователей.
3.1 Обоснование построения системы на основе web-технологий
Программное обеспечение многопользовательского online сервиса отбора и периодической оценки персонала реализовано на основе web технологий.
|
Web-технологии – это концепция работы с информацией. Она отличается следующими особенностями:
· техническая основа Web-технологий – локальные и глобальные сети
· применение особого типа тонких клиентов: web-браузеров. Практически все популярные браузеры распространяются бесплатно или включены в комплект с другим приложением: Internet Explorer (разработка компании MicroSoft, включен в пакет ПО Microsoft Windows), Mozilla Firefox (бесплатно распространяющееся ПО, разработанное в Netscape Communications), Opera (бесплатно распространяющееся ПО, разработанное в Opera Software), Safari (распространяется совместно с Mac OS или бесплатно для OS Windows), Chrome (веб-браузер с открытым исходным кодом, разрабатываемый компанией Google и использующий для отображения веб-страниц движок WebKit, разработанный для браузера Safari на основе KHTML). Веб-браузер включен в каждую операционную систему, что делает web приложения и разработки общедоступными и кросплатформенными.
· текстовая и статично-графическая и мультимедийная подача информации
· вся логика, все данные хранятся на сервере, в отличие от настольных приложений, которые сохраняют информацию на компьютере пользователя. При использовании web приложений, любая техническая неисправность, будь то банальное отключение электричества или полная потеря данных на компьютере клиента, никак не скажется на сохранности информации на сервере.
· изменения в информационных источниках мгновенно отражаются в публикациях;
· число потребителей информации практически не ограничено. публикатор сам может задать особые условия на доступ к публикуемой информации;
|
· в публикациях могут содержаться ссылки на другие публикации без ограничения на местоположение и источники материалов;
· активная работа поисковых машин;
3.1.1 Основные достоинства Web-технологий
Привлекательность Web-технологий как средства доставки информации во многом определяет универсальный интерфейс между человеком и компьютером. Каждому человеку понятны надписи, заголовки, ссылки, картинки. Веб-интерфейс как средство доступа к информации интуитивно понятен. Следствием простоты веб-интерфейса является широкая употребимость Интернета как канала коммуникации. Браузер – программа для просмотра веб-страниц и работы с информацией в веб-интерфейсе. Теоретически все браузеры должны отображать все сайты, сделанные по стандартам, одинаково. Практически имеется множество тонкостей и сложностей которые следует учитывать при разработке ПО. Наиболее популярные браузеры: Internet Explorer, Firefox, Opera, Safari, Chrome.
3.1.2 Безопасность и надёжность использования web-технологий
Уязвимость – ключевая проблема Web приложений.
Более высокая безопасность Web приложений определяется следующим:
· Данные хэшируются при записи в базу данных. Такой способ подходит для хранения паролей, логинов и другой важной информации, которая не должна попасть к злоумышленнику. Существует множество алгоритмов хеширования с различными характеристиками (разрядность, вычислительная сложность, криптостойкость и т. п.). Выбор той или иной хеш-функции определяется спецификой решаемой задачи.
· Для данных, которые необходимо хранить в зашифрованном виде, но при этом на экран пользователя выводить в нормальном, используются алгоритмы шифрования на основе ключей.
· Использование протокола SSl (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет. При его использовании создаётся защищённое соединение между клиентом и сервером.
· Основная нейтрализация угроз происходит за счет грамотного программного кода, который не позволяет злоумышленникам добраться до важных данных и не позволит запустить вредоносные скрипты.
3.2 Анализ современных web-технологий, задействованных при разработке ПО системы
В качестве основного языка программирования на стороне сервера выбран язык PHP (Hypertext Preprocessor — «препроцессор гипертекста»). PHP — один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии. PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать своё собственное расширение и подключить его. Существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Интерпретатор PHP подключается к веб-серверу либо через модуль, созданный специально для этого сервера (например, для Apache или IIS), либо в качестве CGI-приложения.
3.2.1 Преимущества языка программирования PHP
Главным фактором языка РНР является практичность. РНР должен предоставить программисту средства для быстрого и эффективного решения поставленных задач. Практический характер РНР обусловлен пятью важными характеристиками:
Традиционный подход. Язык РНР будет казаться знакомым программистам, работающим в разных областях. Многие конструкции языка позаимствованы из Си, Perl. Код РНР очень похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР.
Удачный набор функций. PHP предоставляет WEB-разработчику большое количество функций для решения типовых задач. Создатели php хорошо знают, какие задачи чаще всего решает разработчик WEB-приложений.
Эффективность «движка». Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и Web. «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.
Средства безопасности. РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.
В стандартный набор функций РНР входит ряд надежных механизмов шифрования. Другое преимущество заключается в том, что исходный текст сценариев РНР нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя.
Гибкость во всем. Поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости.
Нет проблем и с зависимостью от браузеров, поскольку перед отправкой клиенту сценарии РНР полностью компилируются на стороне сервера. В сущности, сценарии РНР могут передаваться любым устройствам с браузерами, включая сотовые телефоны, электронные записные книжки, пейджеры и портативные компьютеры, не говоря уже о традиционных ПК.
Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus — РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT/2000/XP/8.1 /10.
Распространяется бесплатно. Принятие стратегии Open Source и бесплатное распространение исходных текстов РНР оказало неоценимую услугу пользователям. Вдобавок, отзывчивое сообщество пользователей РНР является своего рода «коллективной службой поддержки», и в популярных электронных конференциях можно найти ответы даже на самые сложные вопросы.
3.2.2 Технология MySQL
MySQL является наиболее приспособленной для применения в среде web СУБД (системой управления базами данных). MySQL является собственностью компании MySQL AB, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор.
MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Основные преимущества MySQL:
· Многопоточность, поддержка нескольких одновременных запросов;
· Оптимизация связей с присоединением многих данных за один проход;
· Записи фиксированной и переменной длины;
· Гибкая система привилегий и паролей;
· Гибкая поддержка форматов чисел, строк переменной длины и меток времени;
· Интерфейс с языками C и Perl, PHP;
· Быстрая работа, масштабируемость;
· Хорошая поддержка со стороны провайдеров услуг хостинг.
3.2.4 CSS
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) — технология описания внешнего вида документа, написанного языком разметки. Преимущественно используется как средство оформления веб-страниц в формате HTML, XHTML и DHTML, но может применяться с любыми видами документов в формате XML.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов представления документа. Основной целью разработки CSS являлось разделение содержимого и представления документа (написанного на CSS). Это разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом.CSS также позволяет представлять один документ в различных стилях или методах вывода, таких как экранное представление, печать, чтение голосом или при выводе устройствами, использующими Шрифт Брайля.
3.2.5 JavaScript
JavaScript предназначен для написания сценариев для языка разметки HTML-страниц. JavaScript не предназначен для создания автономных приложений. Программа на JavaScript встраивается непосредственно в исходный текст HTML-документа и интерпретируется брaузером по мере загрузки искомого документа. С помощью JavaScript можно динамически изменять текст загружаемого HTML-документа и реагировать на события, связанные с действиями посетителя или изменениями состоятия документа или окна. Важная особенность JavaScript - объектная ориентированность. Программисту доступны многочисленные объекты, такие, как документы, гиперссылки, формы, фреймы и т.д. Объекты характеризуются описательной информацией (свойствами) и возможными действиями (методами).
3.2.6 AJAX
Ajax расшифровывается как Asynchronous Javascript And XML (Асинхронные Javascript И XML) и технологией в строгом смысле слова не является. Если в стандартном веб-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в Ajax-приложении между пользователем и сервером появляется еще один посредник – «движок» Ajax. Он определяет, какие запросы можно обработать "на месте", а за какими необходимо обращаться на сервер.
Преимущества AJAX:
· AJAX позволяет значительно сократить трафик при работе с веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, иногда довольно небольшую.
· AJAX- позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.
· Поскольку нужно загрузить только изменившуюся часть, то пользователь видит результат своих действий быстрее.
3.2 Архитектура online-системы отбора и оценки персонала
Рис. 2. Архитектура online-системы отбора и оценки персонала
Архитектура системы делится на четыре основных модуля, каждая из которых предопределяет функционал и возможности для каждого вида пользователя:
· Модуль руководителя;
· Модуль специалиста;
· Модуль Администратора;
· Модуль респондента (тестируемого пользователя).
3.3 Обоснование выбора структуры базы данных
База данных состоит из 30 таблиц. Из них 29 таблицы относятся к тестам разных методик. На рисунке 2 представлена схема таблиц со связями по id.
Рис. 3. Структура базы данных
Для примера рассмотрим подробнее несколько таблицы.
Таблица пользователей системы dipl_users:
· Id – идентификатор пользователя
· typeuser - тип пользователя (01 – тестируемый, 10 - психолог, 11 – администратор сервиса)
· login – логин пользователя (хранится в хэш виде)
· password - пароль пользователя (хранится в хэш виде)
· group - идентификатор группы, в которой состоит пользователь
· subgroup - идентификатор подгруппы, в которой состоит пользователь
· name - имя
· name2 - отчество
· – фамилия
· email – электронная почта
Таблица групп dipl_group. К группам относятся организации. Это могут быть компании, учебные заведения и другие возможные организации.
· Id – идентификатор группы
· flag - флаг, ответственный за подтверждение регистрации админом
· passlog - кодовое слово группы, используется при регистрации пользователей, которые относятся к этой группе.
· name– название организации
· kl_id - идентификатор пользователя, который является психологом (администратором данной группы)
· email – электронная почта
· contact – дополнительная информация
Для всех видов тестов созданы идентичные таблицы (34 шт.), отличие которые в названии. Название является идентификатором таблицы и соотносит ее к определенному тесту. Пример таблицы test_1_1:
· Id – идентификатор результата тестирования
· date – дата прохождения теста
· user - идентификатор пользователя, который проходит тест
· group - идентификатор группы, к которой относится тестируемый
· subgroup - идентификатор подгруппы, к которой относится тестируемый
· rez– строка результата
· desc – дополнительная графа с результатом
Связи между таблицами продемонстрированы на рисунке 2. Каждая таблица спроектирована таким образом, чтобы максимально уменьшить нагрузку на сервер баз данных при работе определенных скриптов. Это удалось достигнуть за счет связей по id между записями в таблицах.
3.4 Разработка пользовательского интерфейса
Дизайн – это область художественно-технического творчества, сочетающая в себе принципы красоты и удобства.
Очень важно при разработке большое внимание уделить расстановке акцентов на страницах. Необходимо держать внимание тестируемого, создать мотивацию дальнейшего общения с web приложением.
Пользовательский интерфейс часто понимают только как внешний вид программы. Однако на деле пользователь воспринимает через него всю программу следовательно такое понимание является слишком узким.
В действительности пользовательский интерфейс объединяет в себе все элементы и компоненты программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением.
К этим элементам относятся:
· набор задач пользователя, которые он решает при помощи системы;
· элементы управления системой;
· навигация между блоками системы;
· визуальный (и не только) дизайн экранов программы;
· средства отображения информации, отображаемая информация и форматы;
· устройства и технологии ввода данных;
· диалоги, взаимодействие и транзакции между пользователем и компьютером;
· обратная связь с пользователем;
· поддержка принятия решений в конкретной предметной области;
· порядок использования программы и документация на нее.
Первое, на что необходимо обратить внимание, это удобство пользования. Пользователь системы не должен искать необходимый ему раздел или тест, все должно быть «под рукой». Несколько важных характеристик пользовательского интерфейса:
Доступность — наиболее важный элемент дизайна! Вся цель пользовательского интерфейса состоит в том, чтобы дать возможность пользователям взаимодействовать с системой. Если человек не сможет понять, как приложение работает, он будет только запутан и в итоге разочарован. Разрабатывая интерфейс web приложения, необходимо протестировать интерфейс на удобство использования. Большая загруженность часто встречающиеся ошибки, чтобы бороться с ними необходимо использовать библиотеки сторонних языков. Пользователь будет вынужден много читать, чтобы понять что, где и для чего располагается.
Интерфейс web приложения должен работать очень быстро. Длительное ожидание загрузки страницы раздражает. Отзывчивость означает некоторую постоянную форму взаимодействия с пользователем. Интерфейс должен информировать пользователя о происходящем.
Концепция и дизайн
Дизайн-макет был нарисован с учетом правил минимализма. На заднем фоне представлены яркие и интересные рисунки. В основе концепции главным достоинствоим является простота и удобство. В дальнейшем, при развитии дизайн возможно потребуется обновить. Реализовать обновление должен web-дизайнер.
Рис. 3 Концепция дизайна сервиса.
3.4.2 Верстка макетов и стили CSS
Версткой веб-страниц называют создание такого html-кода, с помощью которого можно размещать элементы веб-страницы, например, графические изображения, там, где следует, и воспроизводить их в окне браузера, согласно имеющемуся макету. Необходимо учитывать ограничения и нюансы, которые присутствуют у html, знать особенности различных браузеров и, естественно, сами виды верстки. Здесь огромную роль играет веб-дизайн, поскольку первоначально дизайнер готовит макет основных документов веб-сайта в виде рисунков и отдает их на верстку. После чего верстальщик анализирует и синтезирует графические изображения, выбирая наиболее оптимальный вид верстки с учетом затрат времени и примеров, как будет выглядеть конечный результат в том или ином браузере. Результат работы— макет, сделанный в виде html-кодов.
Для верстки макетов был выбран блочной тип на слоях <div></div>.
Преимущества блочной верстки при создании web проекта:
· соответствие стандартам. Корректная блочная верстка соответствует всем стандартам html;
· правильное отображение страниц разными устройствами (например, КПК);
· легкость верстки;
· компактный код, элементы «весят» меньше, следовательно, страница веб-сайта загружается быстрее.
Недостатки блочной верстки при создании web проекта:
· если у монитора пользователя низкое разрешение экрана, то вполне возможно, что блоки верстки будут менять свою длину и ширину из-за внешних факторов, например, при изменении размера шрифта;
· при использовании разных браузеров, верстка может «поплыть».
Преимущества табличной верстки в создании web проекта:
· возможность создавать колонки;
· элементы таблицы можно изменять и выравнивать единовременно по длине и ширине, что позволяет размещать эти элементы на странице, практически, как душе угодно;
· таблицы выглядят во всех браузерах почти что одинаково.
Недостатки табличной верстки при создании web проекта:
· неохотная индексация веб-сайта поисковыми машинами;
· долго загружается;
· обладает чересчур большим кодом;
Схема-макет представлен на рисунке 4.
Div id =”Header” | |
Div id =”content” | |
Div id =”footer” |
Рис. 5. Схема основных слоев макета
Для каждого блока задан список стилей. Все основные стили верстки описываются в файле с расширением.css. Для подключения необходимого файла используется команда, которая описывается в тегах <header>:
<link href="../style.css" rel="stylesheet" type="text/less" />
К примеру, css-стили для одного из основных слоев макета выглядит так:
. main_section {background-image: url ("../images/background1.jpg");
color: white;
text-align: center;
. title {
text-shadow: 0 0 10 px #CCC;
В файле описано большое количество стилей. (Объем файла стилей оценивается порядка 289 строк). Среди них в обязательном порядке описаны заголовки, ссылки и другие элементы верстки. К примеру, стили url ссылок на странице:
a:link { font-family: Tahoma, Times, serif; font-size: 14px;color: grey; }
a:hover { font-family: Tahoma, Times, serif; font-size: 14px;color: white; }
a:visited { font-family: Tahoma, Times, serif; font-size: 14px;color: black;}
Hover определяет стиль отображения ссылки при наведении на нее курсором мыши. Visited – стиль ссылки на посещенную ранее страницу.
3.5 Регистрация групп пользователей (организаций)
Зарегистрироваться имеет возможность любая организация, у которой целью является автоматизация процесса отбора и периодической оценки персонала. Для этого необходимо отправить заявку администратору сервиса.
Рис. 7. Форма-заявка на регистрацию организации
Все поля, обязательные к заполнению, имеют графический статус значок, который информирует пользователя о необходимости ввести данные. Функция также не позволит пользователю вводить пробелы вместо текста.
Элемент JavaScript функции опроса полей:
password: {validators: {
stringLength: {
min: 6,
max: 30,
message: "Пароль может быть длиною от 6 до 30 символов"
ч regexp: {
regexp: /^[^а-яёА-ЯЁ]+$/,
message: "В пароле не может быть кириллицы"
}
}
},
confirm_password: {
validators: {
identical: {
field: "password",
message: "Пароли не совпадают"
}
}
}
}
});
Для правильности введения пароля со стороны пользователя работает javascript (function CheckPswd(pswdid,repswdid,containerid)) функция сравнения данных поля пароль и подтверждения пароля.
Для данной формы регистрации была написана дополнительная javascript функция, которая отображает кнопку «Отправить заявку» только после заполнения всех обязательных полей. Реализация функции довольно проста, мы проверяем все поля на наличие введенных данных. Функция опроса по всем полям вызывается каждую секунду:
setInterval("CheckForm1(\'passgroup\', \'family\', \'name_or\', \'name1\', \'name2\', \'login\', \'ps_wq\', \'re_ps_wq\', \'id_button_place\')", 1000);
После отправки заявки на регистрацию администратор системы проверяет заполненные данные и подтверждает регистрацию.
Заявка и подтверждение регистрации сопровождается письмами на электронную почту пользователя. Реализация за счет php функции mail($to, $subject, $body, $headers).
Все дополнительные функции максимально сокращают вероятность ошибки со стороны пользователя и делают сервис намного удобнее.
перенести полученные данные в таблицу dipl_users проста в исполнении:
$sql='INSERT INTO dipl_users (`id`,`typeuser`,`login`,`password`,`group`,`subgroup`,`name`,`name2`,`family`,`email`,`info`,`info1`,`info2`,`info3`,`info4`)
VALUES (NULL, "01", "'.$login.'", "'.$pass.'","'.$grouphid.'", "'.$subgroup.'", "'.$name1.'", "'.$name2.'", "'.$family.'", "'.$email.'", "", "", "", "","")';
$result=mysql_query($sql);
3.6 Регистрация пользователей
Каждый пользователь системы привязан к организации, в которой он работает или учится. Чтобы чужие пользователи не могли записаться в ряды чужой организации, был введен кодовый логин для каждой группы. Процесс заполнения формы регистрации пользователем связан с общением браузера и web сервера посредствам Ajax технологии. Это позволило проинформировать пользователей об оригинальности введенного логина и предоставить информацию об организации и ее подразделениях на основе введенного кодового слова. На рисунке 6 схематично представлен процесс общения браузера, web сервера и mysql сервера в процессе регистрации пользователя. А самым главным преимуществом данного подхода является статичность страницы. Браузеру не требуется перезагружать страницу для дополнительного общения с web сервером. Весь процесс основан на ajax запросах. А пользователь при этом просто заполняет поля регистрационных данных.
Рис. 8. Процесс общения клиента(браузера), web сервера и mysql сервера в процессе регистрации пользователя
Рассмотрим пример javascript функции с Ajax запросом. Это функция callServer(), вызов которой связан с изменениями в поле «pasgroup», куда пользователь вводит кодовое слово организации.
Если браузер интернет эксплорер переменная запроса иницилизируется таким образом:
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
Для других браузеров:
xmlHttp = new XMLHttpRequest();
Создать URL для подключения:
var url = "./reg1.php?passgroup=" + escape(passgroup);
Открыть соединение с сервером:
xmlHttp.open("GET", url, true);
Установить функцию для сервера, которая выполнится после его ответа:
xmlHttp.onreadystatechange = updatePage;
Передать запрос:
xmlHttp.send(null);
Опрос состояния:
if (xmlHttp.readyState == 4)
{
var response = xmlHttp.responseText;
var statusElem = document.getElementById('group_status');
statusElem.innerHTML = response;
}
Запрос xmlhttp регулярно отчитывается о своем состоянии через вызов функции xmlhttp.onreadystatechange. Состояние под номером 4 означает конец выполнения, поэтому функция-обработчик при каждом вызове проверяет - не настало ли это состояние: if (xmlHttp.readyState == 4)
Вообще, список состояний readyState такой:
0 - Unitialized
1 - Loading
2 - Loaded
3 - Interactive
4 - Complete
Состояния 0-2 вообще используются редко. Как вариант вставки анимационных статус баров в процессе обработки Ajax запроса.
Вызов функции с состоянием Interactive в теории должен происходить каждый раз при получении очередной порции данных от сервера. Это могло бы быть удобным для обработки ответа по частям, но Internet Explorer не дает доступа к уже полученной части ответа. Firefox дает такой доступ, но для обработки запроса по частям состояние Interactive все равно неудобно из-за сложностей обнаружения ошибок соединения. Поэтому Interactive тоже используется редко. На практике чаще используется последнее, Complete.
Возвращаясь к регистрации пользователей, стоит отметить, что данные функции обеспечивают безопасность и удобство пользования сервисом. Клиент сможет зарегистрироваться только в списки своей компании и выбрать подгруппу, к которой он относится. Введенный логин будет оригинальным, так как происходит сверка с имеющимися в базе логинами. Как и в форме регистрации групп (организаций) для пользователя отмечены все поля, обязательные к заполнению. Дополнительные javascript функции подтвердят введенный пароль и проверят заполнения всех обязательных полей перед обработкой информации.
Для осуществления более надёжной защиты пароль и логин подвергнут необратимому шифрованию при помощи функции md5() и sha1(). Функции обеспечивают хэширование данных по разным алгоритмам, что позволит исключить возможность кражи логина и пароля.
3.7 Аутентификация и авторизация
Авторизация (англ. authorization) — процесс предоставления определенному лицу прав на выполнение некоторых действий. Аутентификация (англ. Authentication) — это установление подлинности лица, а авторизация — предоставление этому лицу некоторых прав.
Основные действующие лица сервиса это тестируемый, психолог и администратор. Для каждого из них предусмотрен свой интерфейс со своим функционалом и возможностями. Обязанность разграничить доступ к каждому из интерфейсов берет на себя авторизация.
Пользователь указывает логин и пароль. Все логины и пароли хранятся в базе данных в хэш виде, что обеспечивает безопасность, исключает варианты кражи логинов и паролей. Для начала процесса аутентификации поступившие от пользователя данные хэшируются и сравниваются с имеющимися из таблицы dipl_user, происходит установление подлинности лица. Если такая пара логина и пароля не обнаружены в базе данных, система информирует пользователя о неверности введенных данных.
В том случае, если логин и пароль соответствуют записи в таблице базы данных, мы получаем данные об этом пользователе. В поле «usertype» указан тип пользователя:
01 – тестируемый (далее будет перенаправлен в mail_user.php)
10 – психолог (далее будет перенаправлен в mail_group.php)
11 – администратор (далее будет перенаправлен в mail_admin.php)
Дальнейшее перенаправление пользователя будет связано с его типом.
Авторизация основана на сессиях. В php для этого предусмотрен глобальны массив $_SESSION, где хранятся переменные записанные в сессию. Частым случаем при авторизации является хранение переменных в Куках браузера, но этот подход был исключен по двум параметрам. При использовании сессий хранение данных происходит на стороне сервера и это считается более безопасным вариантом. Тестирование проходит в течение долгого промежутка времени, и сессия не должна завершиться до получения результатов от пользователя, что может произойти при хранении переменных сессии в Куках.
Старт сессии и запись необходимых переменных:
session_start();
$_SESSION['user_id'] = $row['id'];
$_SESSION['name'] = $row['name'];
Далее при каждом посещении страниц происходит процесс аутентификации пользователя по параметрам, записанным в переменные сессии. Пример аутентификации психолога:
session_start();
if (isset($_SESSION['name']) && isset($_SESSION['name2']) && ($_SESSION['typeuser']=="10")) { //код страницы}
Рис. 9. Алгоритм авторизации и аутентификации
Глава 4. Реализация интерфейсов для всех пользователей системы
К составу ролей относятся такие пользователи как администратор системы, психолог (администратор своей организации) и тестируемый (обычный пользователь). Для каждого вида предусмотрен свой функционал, множество возможностей и соответственно уникальный интерфейс.
4.1 Реализация интерфейса для тестируемого пользователя. Разработка тестов разных методик. Алгоритмы обработки результатов
После успешной авторизации обычный пользователь (не администратор и не психолог) попадает на страницу main_user.php На странице представлена общая информация о возможностях и дальнейших действиях.
Рис. 10. Модуль респондента (тестируемого пользователя)
Интерактивное меню, представленное пользователю, состоит из следующих разделов:
· Профиль пользователя
· Профессиональные способности
· Управленческие способности
· Психологические характеристики
· Модели компетентности
· Модели поведения
Каждый раздел состоит из пунктов меню (подразделов). В профиле пользователя у клиента сервиса есть возможность сменить регистрационные данные, включая логин и пароль доступа.
Остальные разделы делят на группы 34 теста, реализованных в системе. Пользователь видит только те тесты, которые назначил психолог для группы, в которую он входит. Рассмотрим подробнее реализацию разных видов тестов с точки зрения алгоритмов и анализа поступивших данных. Разбирать реализацию всех тестов надобности нет, так как многие из них очень похожи между собой.
Процесс тестирования, а именно процесс ответов на вопросы со стороны пользователя, реализуется на языке javascript. Преимуществом данного подхода является статичность страницы. Система «не перезагружает» страницу после ответа на вопрос, что в противном случае является раздражающим фактором для пользователя. Тест полностью загружается при посещении страницы теста, а посредствам функций javasc пользователь получает вопрос за вопросом. В процессе тестирования клиент (браузер) не общается с web сервером, что снижает нагрузку на сервер.
Обработка результатов описана на языке php. После прохождения того или иного теста javascript формирует числовую последовательность, которую в дальнейшем обрабатывается php функцией.
Все тесты хранятся отдельно от php файлов обработчиков. Подключение javascript файла происходит таким образом:
<script type="text/javascript" src="./jscript/1_4.js"></script>