Создание клиент-серверного приложения

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

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

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

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

- void slot_attach_to_group(QTreeWidgetItem* item, QTreeWidgetItem* from, QTreeWidgetItem* to) - выполняет операцию перемещения сотрудника (группы), item - перемещаемый сотрудник (группа), from - группа, где item содержится, to - группа, куда он будет перемещен; данный слот вызывается при перетаскивании мышью;

- void slot_change_root_password(QString oldp, QString newp) - выполняет операцию смены пароля администратора, oldp - старый пароль, newp - новый пароль;

- void slot_new_uin(Contact p) - выполняет операцию создания нового сотрудника, в p содержатся данные создаваемого сотрудника;

- void slot_del_uin() - выполняет операцию удаления сотрудника;

- void slot_change_uin_passwd(QString UIN, QString new_pass) - выполняет операцию сброса пароля для сотрудника, UIN - идентификатор сотрудника, new_pass - пароль, который будет установлен;

- void slot_new_group() - выполняет операцию создания новой группы;

- void slot_rename_group() - выполняет операцию переименования группы;

- void slot_del_group() - выполняет операцию удаления группы;

- void slot_server_shutdown() - выполняет операцию выключения сервера;

- void slot_del_unread_messages() - выполняет операцию удаления непрочитанных сообщений.

Подробный код перечисленных функций содержится в приложении В (Исходный код администрирующего клиента).

3.4 Клиент: LIMone-client

Как и администрирующий клиент, этот клиент использует компонент network и класс QTcpSocket, с помощью которого клиент подключается к серверу, высылает и принимает пакеты.

Как и в администрирующем клиенте, большинство модулей проекта отвечают за графический интерфейс пользователя. Обменом пакетами в рамках протокола занимаются модули filestransferwidget и widget. Модуль filestransferwidget отвечает за обмен файлами, а widget - за все остальные операции.

Так как механизм установки соединения с сервером и передачи пакетов аналогичен такому механизму в администрирующем клиенте, рассмотренному в пункте 3.3, то имеет смысл сразу перейти к методу, осуществляющему аутентификацию, именуемому slot_login и находящемуся в модуле widget:

void Widget::slot_login(string user, string pass,

int enter_status,

QString enter_status_text)

{

TLV tlv;

int cnt;

if (!loginReadIteration(inpack,

HEADER_PACKAGE_TYPE::GENERAL::

SERVER_PUBLIC_KEY,

trUtf8("Сервер не высылает ключ!")))

return;

if (!inpack.decode_TLV(TLVS::PUBLIC_KEY, tlv))

{

disconnect_form_server();

return;

}

ByteQueue queue;

StringSource str_key(tlv.getString(), true /*pumpAll*/);

str_key.TransferTo(queue);

queue.MessageEnd();

try

{

serverPublicKey->Load(queue);

}

catch (BERDecodeErr e)

{

disconnect_form_server();

return;

}

if(!serverPublicKey->Validate(rng, 3))

{

disconnect_form_server();

return;

}

string cipher;

RSAES_OAEP_SHA_Encryptor e(*serverPublicKey);

StringSource(pass, true, new PK_EncryptorFilter(rng, e,

new

StringSink(cipher)));

outpack.clear();

outpack.write_TLV(TLVS::UIN, user);

outpack.write_TLV(TLVS::PASSWORD, cipher);

outpack.generate_header(HEADER_PACKAGE_TYPE::AUTHORIZATION::

AUTHORIZATION_UIN);

cnt = send_to_server(outpack,

"Ключ не может быть отправлен!");

if (cnt < 0) return;

if (!loginReadIteration(inpack,

HEADER_PACKAGE_TYPE::AUTHORIZATION::

AUTHORIZATION_UIN,

trUtf8("Сервер не отвечает на авторизацию!")))

return;

if (!inpack.decode_TLV(TLVS::OK, tlv))

{

disconnect_form_server();

if (inpack.decode_TLV(TLVS::ERRORS, tlv))

QMessageBox::critical(this,

QString::fromStdString(user),

QString::fromStdString(

tlv.getString()));

else

QMessageBox::critical(this,

QString::fromStdString(user),

trUtf8("Не обнаружены поля OK|ERR"));

return;

}

self_contact.UIN = user;

self_contact.Password = pass;

ByteQueue queue2;

clientPublicKey->Save(queue2);

string str_client_key;

StringSink str_key_sink(str_client_key);

queue2.CopyTo(str_key_sink);

str_key_sink.MessageEnd();

outpack.clear();

outpack.write_TLV(TLVS::PUBLIC_KEY, str_client_key);

outpack.generate_header(HEADER_PACKAGE_TYPE::MESSAGES::

GET_MESSAGE_KEY);

cnt = send_to_server(outpack,

"Ключ для сообщений не может быть запрошен!");

if (cnt < 0) return;

if (!loginReadIteration(inpack,

HEADER_PACKAGE_TYPE::MESSAGES::

GET_MESSAGE_KEY,

trUtf8("Сервер не высылает ключ для сообщений!")))

return;

if (!inpack.decode_TLV(TLVS::MESSAGE_KEY, tlv))

{

disconnect_form_server();

if (inpack.decode_TLV(TLVS::ERRORS, tlv))

QMessageBox::critical(this,

QString::fromStdString(user),

QString::fromStdString(

tlv.getString()));

else

QMessageBox::critical(this,

QString::fromStdString(user),

trUtf8("Не обнаружены поля "

"MESSAGE_KEY|ERR"));

return;

}

cipher = tlv.getString();

string recovered;

RSAES_OAEP_SHA_Decryptor d(*clientPrivateKey);

try

{

StringSource(cipher, true, new PK_DecryptorFilter(rng, d,

new StringSink(recovered)));

}

catch (...)

{

disconnect_form_server();

return;

}

if (recovered.length() < MESSAGE_KEY_SIZE)

{

disconnect_form_server();

return;

}

memcpy(message_key, (byte*)recovered.data(),

MESSAGE_KEY_SIZE);

}

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

В рассмотренном методе также присутствует вызов метода loginReadIteration, который выполняет считывание с сокета пакета, ожидаемого в рамках процедуры аутентификации. Если пакет не будет получен в течение времени ожидания (30 сек.), либо вместо него будет получен пакет, не соответствующий ожидаемому, метод выведет сообщение об ошибке и вернет false.

bool Widget::loginReadIteration(Package &pack, const PACKTYPE

need, QString error)

{

HEADER h;

int bytes_read;

while (sock->bytesAvailable() > 0 ||

sock->waitForReadyRead())

{

bytes_read = read_from_server(pack);

if (bytes_read < 0) return false;

if (bytes_read > 0) break;

}

if (bytes_read == 0)

{

disconnect_form_server();

QMessageBox::critical(this, trUtf8("Ошибка"), error);

return false;

}

if (!inpack.decode_header(h))

{

disconnect_form_server();

QMessageBox::critical(this, trUtf8("Ошибка"),

trUtf8("Заголовок испорчен. "

"Соединение сброшено!"));

return false;

}

if (h.packtype != need)

{

disconnect_form_server();

QMessageBox::critical(this, trUtf8("Ошибка"),

trUtf8("Неверный тип пакета. "

"Соединение сброшено!"));

return false;

}

return true;

}

Методы read_from_server, send_to_server и getNeededPack аналогичны рассмотренным в пункте 3.3. Разбором пакета занимается метод parsePack, который выделяет тип и подтип пакета, после чего выполняет соответствующие назначению пакета действия:

void Widget::parsePack(Package &inpack)

{

HEADER h;

if (!inpack.decode_header(h)) return;

if (h.packtype == HEADER_PACKAGE_TYPE::MESSAGES::

GET_UNREAD_MESSAGES || h.packtype ==

HEADER_PACKAGE_TYPE::MESSAGES::RECV_MESSAGE)

{

Message m;

m.clear();

if (inpack.read_unread_messages(m))

{

// дешифрация сообщения

byte iv[AES::BLOCKSIZE];

memset(iv, 0x00, AES::BLOCKSIZE);

string ciphertext = m.Text;

string recoveredtext;

AES::Decryption aesDecryption(message_key,

MESSAGE_KEY_SIZE);

CBC_Mode_ExternalCipher::Decryption

cbcDecryption(aesDecryption, iv);

try

{

StringSource(ciphertext, true,

new StreamTransformationFilter(cbcDecryption,

new StringSink(recoveredtext)));

}

catch (...)

{

return;

}

// сообщение получено

m.Text = recoveredtext;

if (!conv_wgt->isVisible())

{

conv_wgt->setVisible(true);

conv_wgt->setWindowState(Qt::WindowMinimized);

}

conv_wgt->printRecvMessage(m);

}

return;

}

switch (h.packtype)

{

case HEADER_PACKAGE_TYPE::MESSAGES::SEND_FILE_REQUEST: …

case HEADER_PACKAGE_TYPE::MESSAGES::SEND_FILE_ACCEPT: …

case HEADER_PACKAGE_TYPE::MESSAGES::SEND_FILE_PART: …

case HEADER_PACKAGE_TYPE::MESSAGES::FILE_RECEIVER_CHANNEL: …

case HEADER_PACKAGE_TYPE::MESSAGES::FILE_SENDER_CHANNEL: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::GET_GROUP_LIST: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::GET_CONTACT_LIST: …

case HEADER_PACKAGE_TYPE::AUTHORIZATION::GET_USER_INFO: …

case HEADER_PACKAGE_TYPE::AUTHORIZATION::CHANGE_USER_STATUS:…

case HEADER_PACKAGE_TYPE::AUTHORIZATION::CHANGE_USER_INFO: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::CREATE_USER: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::DELETE_USER: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::CREATE_GROUP: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::RENAME_GROUP: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::ATTACH_TO_GROUP: …

case HEADER_PACKAGE_TYPE::CONTACT_LIST::DELETE_GROUP: …

}

}

В модуле widget в классе Widget работу по протоколу обеспечивают следующие слоты, которые вызываются действиями пользователя из этого или других модулей:

- void slot_send_message(QString UIN, GROUP_ID gid, QString mess) - выполняет отправку текстового сообщения mess получателю UIN или группе получателей gid (при условии, что UIN пуст);

- void slot_change_user_info(Contact p) - выполняет операцию по смене пользовательской информации; новая информация находится в структуре p;

- void slot_change_passwd(QString oldp, QString newp) - выполняет операцию по смене пароля пользователя; oldp - старый пароль, newp - новый пароль;

- void setContactStatus(int pos) - меняет статус сотрудника на выбранный из списка.

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

В модуле filestransferwidget в классе FilesTransferWidget работу по протоколу обеспечивают следующие слоты, которые вызываются либо сигналами из модуля conversationwidget, либо прямым вызовом из метода parsePack в модуле widget:

- int send_to_server(Package &pack) - отправляет пакет, содержащийся в pack, серверу; в случае удачи возвращает размер отправленного пакета, в случае неудачи возвращает минус 1;

- void fileTransferAssignID(Package &pack) - назначает идентификатор отправляемому файлу, полученный от сервера;

- void send_cancel(QList<File2> &FileCollection, int index, PACKTYPE channel) - отправляет CANCEL в отношении файла, определенного в коллекции FileCollection по номеру index на канал channel. В качестве канала целесообразно использовать FILE_SENDER_CHANNEL для отправляемых файлов и FILE_RECEIVER_CHANNEL - для загружаемых;

- void newFilePart(Package &pack) - записывает в файл полученную от сервера очередную порцию;

- void newFileRequest(Package &pack) - обрабатывает поступивший от другого сотрудника запрос на передачу файла;

- void fileTransferAccepted(Package &pack) - обрабатывает ответ получателя на запрос передачи файла (OK - получатель готов принять файл, ERRORS - получатель отклонил запрос по причине...);

- void sender_channel(Package &pack) - обрабатывает управляющий пакет, поступивший по каналу отправителя;

- void receiver_channel(Package &pack) - обрабатывает управляющий пакет, поступивший по каналу получателя.

Подробный код перечисленных функций содержится в приложении Г (Исходный код клиента).

4. Руководство пользователя

4.1 Сервер

Запуск сервера возможен в двух режимах:

- обычный режим;

- режим отладки.

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

После установки сервер можно запустить следующим образом:

- перейти в папку установки (для Linux это /opt/LIMone/LIMone-server) и выполнить:

LIMone-server [--ip=<ip>] [--port=<port>] [--show-server-state]

--ip=<ip> - адрес, с которого сервер будет принимать соединения.

Возможно использование: localhost - эта машина, any -

любой адрес. При отсутствии параметра будет выбран: any.

--port=<port> - порт, используемый сервером [1024..65535].

При отсутствии параметра будет выбран порт: 6190.

--show-server-state - ключ, необходимый для запуска сервера в

режиме отладки. По-умолчанию сервер будет запущен в обычном режиме.

- запустить соответствующий ярлык из меню «Пуск» в секции «LIMone» (для Windows) или из главного меню DE в секции «Интернет» (Linux); при этом сервер будет запущен без ключей с параметрами по-умолчанию.

4.2 Администрирующий клиент

Для запуска администрирующего клиента предназначен соответствующий ярлык из меню «Пуск» в секции «LIMone» (для Windows) или из главного меню DE в секции «Интернет» (Linux).

Процедура аутентификации

После запуска программы на экране появится окно «Параметры соединения», изображенное на рисунке 4.1, в котором нужно указать адрес сервера и порт подключения, а также пароль администратора. Если это первый запуск системы LIMone, то пароль администратора - «root» и после аутентификации на сервере рекомендуется сменить его на другой.

Рисунок 4.1 - Приглашение к аутентификации

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

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

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

Смена пароля администратора

Для того чтобы сменить пароль администратора, необходимо нажать кнопку «Сменить пароль администратора» на панели инструментов, либо нажать комбинацию клавиш Ctrl+P. На экране появится диалог, изображенный на рисунке 4.3, в котром нужно ввести старый пароль администратора, новый пароль и подтверждение, после чего нажать на кнопку «Ok». Длина нового пароля не может быть меньше, чем 8 символов.

Создание новой группы

Для того чтобы создать новую группу, необходимо выбрать группу-родителя в контакт-листе и нажать кнопку «Создать группу» на панели инструментов, либо нажать комбинацию клавиш Shift+Ctrl+N. На экране появится диалог, в котром нужно указать имя создаваемой группы и нажать на кнопку «Ok».

Если при создании группы в контакт-листе был выбран сотрудник, то новая группа будет создана внутри родительской группы выбранного сотрудника. После нажатия на кнопку «Ok» новая группа появится в контакт-листе.

Рисунок 4.3 - Смена пароля администратора

Переименование группы

Для того чтобы переименовать группу, необходимо выбрать группу в контакт-листе и нажать кнопку «Переименовать группу» на панели инструментов, либо нажать комбинацию клавиш Shift+Ctrl+R. На экране появится диалог, в котром нужно указать новое имя выбранной группы и нажать на кнопку «Ok».

Удаление группы

Для того чтобы удалить группу, необходимо выбрать удаляемую группу в контакт-листе и нажать кнопку «Удалить группу» на панели инструментов, либо нажать клавишу Del. На экране появится диалог, в котром нужно выбрать группу, в которую будут перемещены сотрудники из удаляемой группы, и нажать на кнопку «Ok».

Создание нового сотрудника

Для того чтобы создать нового сотрудника, необходимо выбрать группу-родителя в контакт-листе и нажать кнопку «Создать сотрудника» на панели инструментов, либо нажать комбинацию клавиш Ctrl+N. На экране появится диалог, изображенный на рисунке 4.4, в котром нужно указать информацию о создаваемом сотруднике (обязательные поля отмечены *) и нажать на кнопку «Ok». Новый сотрудник при необходимости сможет самостоятельно изменить указанную информацию.

Рисунок 4.4 - Создание нового сотрудника

Если при создании сотрудника в контакт-листе был выбран сотрудник, то новый сотрудник будет создан внутри родительской группы выбранного сотрудника (окажется в одной группе с выбранным сотрудником). После нажатия на кнопку «Ok» новый сотрудник появится в контакт-листе остальных сотрудников и сможет войти под своим UIN и указанным при создании паролем.

Перемещение группы/сотрудника в другую группу

Для того чтобы переместить группу/сотрудника в другую группу, необходимо захватить его левой кнопкой мыши и перетащить в группу-назаначение. На рисунке 4.5 изображен процесс перемещения группы «Материальная группа» в метагруппу «Сотрудники», а на рисунке 4.6 изображен процесс перемещения сотрудника «Сидоров Петр Федорович» в группу «Бухгалтерия».

Рисунок 4.5 - Перемещение группы

Рисунок 4.6 - Перемещение сотрудника

При этом необходимо учитывать, что при перемещении группы также будут перемещены все ее дочерние группы и входящие в нее сотрудники в той же иерархии (т.е. останутся принадлежать перемещаемой группе). Также следует учесть, что нельзя переместить группу в группу, являющуюся дочерней к перемещаемой. Метагруппа «Сотрудники» является абстрактной и не будет отображена у сотрудников в контакт-листе. Все группы, являющиеся дочерними к этой группе, будут отображены как основные; все сотрудники, находящиеся непосредственно в группе «Сотрудники», будут отображаться к контакт-листах других сотрудников, как не имеющие группы.

Сброс пароля для сотрудника

Для того чтобы сбросить пароль для сотрудника, необходимо выбрать его в контакт-листе и нажать кнопку «Разблокировать сотрудника» на панели инструментов, либо нажать клавишу Ctrl+P. На экране появится диалог, в котром нужно указать новый пароль, подтвердить его и нажать на кнопку «Ok».

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

Удаление сотрудника

Для того чтобы удалить сотрудника, необходимо выбрать его в контакт-листе и нажать кнопку «Удалить сотрудника» на панели инструментов, либо нажать клавишу Del. На экране появится диалог подтверждения, в котром нужно нажать на кнопку «Удалить».

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

Удаление непрочитанных сообщений

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

Для того чтобы удалить непрочитанные сообщения, необходимо выбрать сотрудника/группу в контакт-листе и нажать кнопку «Удалить непрочитанные сообщения» на панели инструментов, либо нажать клавишу Ctrl+M. На экране появится диалог подтверждения, в котром нужно нажать на кнопку «Да».

При выборе группы будут удалены сообщения для всех сотрудников, входящих в эту группу, а также дочерние группы. Чтобы удалить абсолютно все непрочитанные сообщения, нужно выбрать абстрактную группу «Сотрудники» в контакт-листе.

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

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

Для того чтобы просмотреть историю пакетов, необходимо нажать кнопку «Показать историю пакетов» на панели инструментов. На экране появится окно «История пакетов», изображенное на рисунке 4.7.

Рисунок 4.7 - История пакетов

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

Переподключение к серверу

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

Для того чтобы переподключиться к серверу, необходимо нажать кнопку «Переподключится» на панели инструментов. На экране появится диалог, изображенный на рисунке 4.1, в котром нужно указать адрес сервера, порт подключения (по умолчанию 6190), ввести пароль администратора и нажать на кнопку «Аутентификация».

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

Выключение сервера

Для того чтобы выключить сервер, необходимо нажать кнопку «Выключить сервер» на панели инструментов, либо нажать комбинацию клавиш Ctrl+S. На экране появится диалог подтверждения, в котром нужно нажать на кнопку «Выключить».

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

Горячие клавиши

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

Таблица 4.1 - Комбинации клавиш администрирующего клиента

Комбинация клавиш

Назначение

Shift+Ctrl+N

Создание новой группы

Del

Удаление выбранной группы/выбранного сотрудника

Shift+Ctrl+R

Переименование группы

Ctrl+N

Создание нового сотрудника

Ctrl+P

Разблокировка сотрудника (сброс пароля)

Ctrl+M

Удаление непрочитанных сообщений

Shift+Ctrl+P

Смена пароля администратора

Ctrl+S

Выключение сервера

F1

Руководство пользователя

Клиент

Процедура аутентификации

После запуска программы на экране появится окно «Параметры соединения», изображенное на рисунке 4.8, в котором нужно указать UIN и пароль пользователя, а также статус и статус-текст, которые будут установлены после входа. Если это первый вход пользователя в систему под указанным UIN, то после аутентификации на сервере рекомендуется сменить пароль на другой и отредактировать информацию о сотруднике.

Рисунок 4.8 - Приглашение к аутентификации

После успешной аутентификации на экране появится главное окно программы, изображенное на рисунке 4.9, содержащее контакт-лист, над которым расположена статус-строка, содержащая информацию о сотруднике (надпись «UIN:..», при наведении мышью на которую выводится подробная информация); а также текущий статус и статус-текст, которые можно изменить. Клиент запущен и готов к отправке сообщений и файлов.

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

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

Для того чтобы отправить сообщение сотруднику, нужно выбрать его в контакт-листе, щелкнуть по нему дважды левой кнопкой мыши, либо нажать Enter, либо щелкнуть левой кнопкой мыши по конверту , расположенному справа от имени сотрудника (см. на рисунке 4.10).

Рисунок 4.10 - Кнопка для перехода в окно «Переписка»

Откроется окно «Переписка», изображенное на рисунке 4.11, содержащее вкладку с ФИО сотрудника, которому будет отправлено сообщение. В поле ввода, находящееся внизу окна, следует ввести сообщение и нажать Enter для отправки. Чтобы перейти на другую строку в этом поле, следует нажать Ctrl+Enter. При необходимости сообщение можно отформатировать.

Рисунок 4.11 - Окно «Переписка»

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

Переключение между вкладками осуществляется левой кнопкой мыши, либо комбинациями клавиш Ctrl+Tab (вперед) и Ctrl+Shift+Tab (назад). Активная вкладка закрывается кнопкой на ней, либо нажатием Esc.

Рисунок 4.12 - Сообщение об ошибке доставки

Форматирование отправляемого текста

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

Рисунок 4.13 - Панель форматирования отправляемого текста

Для изменения фрагмента текста необходимо выделить его левой кнопкой мыши, либо с помощью клавиатуры и нажать необходимую кнопку на панели инструментов. Если фрагмент не выделен, то форматирование будет применено к свойствам текста в текущей позиции курсора и будет иметь эффект при дальнейшем наборе текста в этой позиции. Кнопка «Полужирный» (Ctrl+B) делает выделенный фрагмент полужирным, кнопка «Курсив» (Ctrl+I) выделяет фрагмент курсивом, кнопка «Подчеркнутый» (Ctrl+U) подчеркивает фрагмент текста снизу. Кнопки «Цвет текста» и «Цвет фона» меняют цвет текста и цвет фона в выделенном фрагменте текста соответственно. Кнопка с именем выбранного шрифта вызывает стандартный диалог выбора шрифта; а поле, находящееся рядом с этой кнопкой, позволяет задать размер шрифта.

Отправка сообщений группе сотрудников

Для того чтобы отправить сообщение группе сотруднику, нужно выбрать группу в контакт-листе, нажать Ctrl+Enter, либо щелкнуть левой кнопкой мыши по конверту , расположенному справа от имени группы.

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

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

Чтобы отправить сообщение всем сотрудникам из контакт-листа, нужно выбрать пункт «Сообщить всем» главного меню программы, либо контекстного меню значка системного трея, либо нажать Ctrl+M.

Отправка и прием файлов, управление процессом передачи

Для того чтобы отправить файл другому сотруднику, нужно выделить этого сотрудника в списке контактов, щелкнуть левой кнопкой мыши по значку рядом с именем собеседника (см. на рисунке 4.14), либо нажать Ctrl+Enter, либо перейти к переписке с сотрудником и нажать на кнопку «Отправить документ». Пользователю будет предложен диалог, в котором нужно будет выбрать отправляемый файл и нажать на кнопку «Ok».

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

Если получатель готов принять файл, то он должен нажать на кнопку «Принять» и выбрать место, куда файл будет сохранен. После этого на экранах отправителя и получателя появится окно «Передача файлов» с записью о передаваемом файле и статусе его отправки, как показано на рисунках 4.15 и 4.16.

а) б)

Рисунок 4.14 - Кнопки для отправки файла:

а - в контакт-листе; б - в окне «Переписка»

Рисунок 4.15 - Окно «Передача файлов» с записью об отправляемом файле

Значок означает, что это отправляемый файл, значок - загружаемый файл. Если файл будет отправлен полностью и без ошибок, то в окне «Передача файлов» отправителя в строке с именем отправляемого файла появится статус «<Готово>», а в окне получателя - кнопка «Открыть документ», щелкнув на которую, получатель сможет открыть полученный файл.

Рисунок 4.16 - Окно «Передача файлов» с записью о загружаемом файле

Если необходимо прервать отправку файла, необходимо в окне "Передача файлов" нажать на кнопку «Отменить передачу файла» в строке с именем файла, после чего напротив появится статус «<Отменено>».

Не дожидаясь завершения процесса отправки/получения файла окно «Передача файлов» можно закрыть. Открыть его снова можно выбрав пункт в главном меню (либо контекстном меню иконки системного трея) - «Передача файлов» или нажать Ctrl+F.

Установка статуса и статус-текста

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

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

Настройки программы

Окно «Настройки» вызывается выбором пункта «Настройки» в главном меню программы или контекстном меню иконки системного трея. Вкладка «Программа» выглядит, как показано на рисунке 4.17.

Рисунок 4.17 - Окно «Настройки», вкладка «Программа»

В первых двух полях указываются настройки подключения к серверу - адрес сервера и порт.

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

Флажки «Подключаться автоматически» и «Запускаться свернутым в трей» полезны при автоматическом запуске клиента при старте системы. Если эти флажки установлены, то программа после запуска автоматически попытается подключиться к серверу, используя ранее используемые адрес, порт, UIN и пароль; после чего закроет окно и останется запущенной, о чем будет свидетельствовать значок в системном трее.

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

Вкладка «Сотрудник» выглядит, как показано на рисунке 4.18.

Рисунок 4.18 - Окно «Настройки», вкладка «Сотрудник»

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

Управление всплывающими уведомлениями

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

Внешний вид всплывающих уведомлений может различаться в зависимости от используемой системы (Windows/Linux), от используемой оболочки, настроек системы и применяемой темы оформления. В Клиенте LIMone различаются следующие виды уведомлений:

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

- файловые операции - выводятся при удачной загрузке/отправке файла, либо при возникших при передаче ошибках;

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

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

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

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

Переподключение к серверу

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

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

Выход из программы

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

Горячие клавиши

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

Таблица 4.2 - Комбинации клавиш клиента

Комбинация клавиш

Назначение

Главное окно

Enter

Открывает окно переписки с сотрудником (если в контакт-листе выбран сотрудник)

Ctrl+Enter

Открывает окно для отправки сообщений группе сотрудников (если в контакт-листе выбрана группа), или открывает диалог отправки файла (если в контакт-листе выбран сотрудник)

Ctrl+F

Открывает окно "Передача файлов"

Ctrl+M

Открывает вкладку "Сотрудники" в окне "Переписка" - для отправки сообщений всем сотрудникам

F1

Руководство пользователя

Окно "Переписка"

Enter

Отправка набранного сообщения

Esc

Закрывает текущую вкладку

Ctrl+Tab

Переход к следующей вкладке (вперед)

Shift+Ctrl+Tab

Переход к предыдущей вкладке (назад)

Ctrl+B

Выделить фрагмент текста жирным шрифтом

Ctrl+I

Выделить фрагмент текста курсивом

Ctrl+U

Подчеркнуть фрагмент текста снизу

5. Расчет экономических показателей программного продукта

5.1 Расчет себестоимости и цены программного продукта

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

- наименее возможная величина затрат ai, дни;

- наиболее возможная величина затрат bi, дни;

- наиболее вероятная величина затрат mi, дни.

Процесс разработки программного продукта состоял из 5 этапов:

- анализ поставленной задачи;

- проектирование;

- написание программы;

- тестирование и отладка;

- написание справочной документации.

Для каждого из этапов на основании экспертных оценок определяется средняя величина для ai, bi и mi по следующей формуле:

, (5.1)

где ? среднее время, полученное на основе экспертных оценок;

? оценка времени, данная руководителем проекта;

? оценка времени, данная разработчиком.

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

Таблица 5.1 - Оценка затрат времени на разработку программного продукта

Этапы разработки программного продукта

Наименее возможная величина затрат ai, дни

Наиболее возможная величина затрат bi, дни

Наиболее вероятная величина затрат mi, дни

Анализ поставленной задачи

1,0

2,0

1,4

3,0

4,0

3,4

2,0

3,0

2,4

Проектирование

3,0

3,0

3,0

4,0

5,0

4,4

3,5

4,0

3,7

Написание программы

15,0

17,0

15,8

18,0

20,0

18,8

16,5

18,5

17,3

Тестирование и отладка

3,0

5,0

3,8

5,0

7,0

5,8

4,0

6,0

4,8

Написание справочной документации

3,0

3,0

3,0

4,0

4,0

4,0

3,5

3,5

3,5

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

Формула расчета математического ожидания для i-го этапа приведена ниже:

, (5.2)

где MOi ? математическое ожидание затрат времени для i-го этапа;

ai, bi, mi ? средние оценки, найденные ранее.

Далее определяется стандартное отклонение Gi для каждого этапа по формуле:

, (5.3)

где Gi ? стандартное отклонение для i-го этапа;

bi, ai ? средние оценки, найденные ранее.

Зная математическое ожидание по каждому этапу, рассчитывается общая величина математического ожидания в целом по программному продукту:

, (5.4)

где MO ? общая оценка затрат;

MOi ? математическое ожидание затрат времени для i-го этапа.

Стандартное отклонение G в целом по программному продукту рассчитывается по следующей формуле:

, (5.5)

где G ? стандартное отклонение общей оценки затрат;

Gi ? стандартное отклонение оценки затрат для i-го этапа.

На основе расчетов математического ожидания (5.4) и стандартного отклонения (5.5) рассчитывается коэффициент вариации - коэффициент согласованности мнения экспертов.

Коэффициент вариации рассчитывается по формуле:

, (5.6)

где Vi ? коэффициент вариации для i-го этапа.

Если коэффициент вариации V (среднее арифметическое из Vi) меньше либо равен 0,33, то мнения экспертов считаются согласованными.

Теперь можно произвести расчеты на основе таблицы 5.1 и формул (5.1 - 5.6) и свести эти расчеты в таблицу 5.2.

Таблица 5.2 - Затраты времени на разработку программного продукта

Этапы разработки программного продукта

Средняя величина затрат времени по этапам, дни

Математи-ческое ожидание MOi, дни

Стандартное отклонение Gi, дни

Коэффициент вариации Vi, дни

Наименее возможная величина затрат ai

Наиболее возможная величина затрат bi

Наиболее вероятная величина затрат mi

Анализ поставленной задачи

1,400

3,400

2,400

2,400

0,333

0,139

Проектирование

3,000

4,400

3,700

3,700

0,233

0,063

Написание программы

15,800

18,800

17,300

17,300

0,500

0,029

Тестирование и отладка

3,800

5,800

4,800

4,800

0,333

0,069

Написание справочной документации

3,000

4,000

3,500

3,500

0,167

0,048

Итого

27,000

36,400

31,700

31,700

0,554

0,070

Итоговый коэффициент вариации равен V = 0,070, не превосходит 0,33, следовательно, мнения экспертов считаются согласованными.

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

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

, (5.7)

где C ? себестоимость программного продукта;

З ? среднемесячная заработная плата программиста с учетом районного коэффициента, (принято З = 30000 рублей);

М ? количество рабочих дней в месяце, (принято М = 22 дня);

К ? коэффициент, учитывающий отчисления в виде страховых взносов, (принято K = 1,302);

МO ? трудозатраты, (МO = 31,7 дней);

Кн ? коэффициент, учитывающий накладные расходы

(принято Кн = 0,10);

Тмаш ? время работы машины (компьютера). Складывается из времени на реализацию 3, 4, 5 этапов, т.е. Тмаш = 25,6 дней;

Смаш ? стоимость одного часа машинного времени;

Tинт ? количество дней работы в Интернете, складывается из времени на реализацию 1, 2, 3, 4, 5 этапов, т.е.

Tинт = 31,7 дней;

Cинт ? стоимость одного часа работы в Интернете.

Так как стоимость интернета 290 рублей в месяц, то стоимость одного часа работы в Интернете рассчитывается по формуле (5.8).

руб. (5.8)

Для расчёта стоимости одного часа машинного времени рассчитываются затраты на эксплуатацию персонального компьютера за год по формуле (5.9).

, (5.9)

где Cмаш ? стоимость одного часа машинного времени;

Зэл ? затраты на электроэнергию за год работы;

Зкомпл ? затраты на комплектующие материалы;

Зпр ? прочие расходы;

Тобщ ? общее время работы компьютера за год.

Приведем формулы для расчета вышеперечисленных видов затрат.

Затраты на электроэнергию зависят от тарифа на электроэнергию и потребляемой мощности персонального компьютера, а также от времени работы персонального компьютера. Формула (5.10) для расчета затрат на электроэнергию приведена ниже:

, (5.10)

где Зэл ? затраты на электроэнергию за год работы;

Тобщ ? общее время работы компьютера за год,

Тобщ = 22 * 12 * 8 = 2112 часов;

Сэл ? тариф электроэнергии за 1кВт, (принято Сэл = 1,86 руб);

Р ? мощность, потребляемая персональным компьютером, по паспортным данным (принято Р = 360 Вт/ч).

Тогда по формуле (5.10) находим затраты на электроэнергию в год:

Зэл = 2112 * 1,86 * 0,36 = 1414,2 руб.

Затраты на комплектующие материалы составляют: Зкомпл = 0 руб.

Прочие расходы составляют 5% от общей суммы затрат и рассчитываются по формуле (5.11):

руб. (5.11)

Зная все данные, подсчитаем стоимость одного часа машинного времени по формуле (5.8):

руб.

Себестоимость программного продукта рассчитывается по формуле (5.7):

руб.

Найдем цену программного продукта по формуле:

Ц = С * (1 + R), (5.12)

где Ц ? цена программного продукта;

С ? себестоимость программного продукта;

R ? рентабельность программного продукта, (принято R = 20%).

Тогда по формуле (5.12) найдем:

Ц = 62154,9 * (1 + 0,2) = 74585,88 руб.

Найдем цену с НДС по формуле:

Цсндс = Ц + НДС, (5.13)

где Цсндс ? цена программного продукта с НДС;

Ц ? цена программного продукта;

НДС ? 18% от цены программного продукта.

В результате расчета получим:

Цсндс = 74585,88 + 74585,88 * 0,18 = 88011,34 руб.

5.2 Оценка эффекта программного продукта

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

Экономия трудозатрат рассчитывается по формуле (5.14):

(5.14)

где Дtк ? экономия трудозатрат k-ой выполняемой операции;

tруч k ? трудоемкость выполнения операций без программы;

tавт k ? трудоемкость выполнения операций с программой.

, (5.15)

где г - степень автоматизации, %.

Затраты времени, приходящиеся на выполнение работ и экономия затрат времени приводятся в форме таблицы 5.3. Для расчета единицу измерения времени, затрачиваемую на решение одной операции, принимается час. Степень автоматизации оценивается в 90%.

Таблица 5.3 - Затраты времени, приходящиеся на выполнение работ и экономия затрат времени

Задача (к)

Затраты времени

tруч к,

часы

Затраты времени

tавт к,

часы

Экономия трудозатрат Дtк,

часы

п.3-п.2

Частота выполнения операции в месяц,

S

Общая экономия

с учетом частоты выполнения операции

п.4*п.5

1 Деловая переписка

0,5

0,05

0,45

110,00

49,50

2 Пересылка файлов

0,5

0,05

0,45

50,00

22,50

Итого

-

-

-

-

72,00

В результате внедрения программы высвобождается дополнительное рабочее время в месяц. Условная экономия численности характеризует уменьшение потребности в трудовых ресурсах. Рассчитывается по формуле:

, (5.16)

где Дt ? экономия трудозатрат;

ФРВ ? фонд рабочего времени, равный 1970 часам в год;

Kот ? коэффициент отпусков (1,08).

ед.

Зная условную экономию численности, рассчитывается экономия по оплате труда в сфере потребления с учетом отчислений во внебюджетные фонды:

, (5.17)

где ДЭот ? условная экономия по оплате труда, руб.;

ДЧусл ? условная экономия численности, ед.;

З ? среднемесячная заработная плата, равная 20000 руб.;

Ксн - коэффициент, учитывающий отчисления во внебюджетные фонды (1,302).

Кр - районный коэффициент (1,2).

руб.

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

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

Таблица 5.4 - Сравнительная таблица существующих аналогов

Возможности

Вес показа-теля, Wi

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

OSCAR (ICQ)

Jabber (XMPP)

IRC

OBIMP

Разрабо-танный протокол - LIMone

Наличие собственного сервера

0,20

1,00

5,00

5,00

5,00

5,00

Наличие кросс-платформенной реализации

0,15

3,00

5,00

5,00

0,00

4,00

Эффективность использования трафика

0,10

4,00

1,00

3,00

4,00

4,00

Эффективность передачи бинарных данных

0,05

4,00

1,00

4,00

4,00

4,00

Наличие единого списка контактов

0,10

1,00

1,00

1,00

1,00

5,00

Безопасная аутентификация

0,20

3,00

3,00

3,00

3,00

5,00

Шифрование сообщений

0,20

3,00

3,00

3,00

3,00

5,00

Итого

1,00

2,55

3,20

3,55

2,90

4,70

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

OSCAR (ICQ):

Z1 = 0,2 * 1 + 0,15 * 3 + 0,1 * 4 + 0,05 * 4 + 0,1 * 1 + 0,2 * 3 + 0,2 * 3 = 2,55 балла

Jabber (XMPP):

Z2 = 0,2 * 5 + 0,15 * 5 + 0,1 * 1 + 0,05 * 1 + 0,1 * 1 + 0,2 * 3 + 0,2 * 3 = 3,2 балла

IRC:

Z3 = 0,2 * 5 + 0,15 * 5 + 0,1 * 3 + 0,05 * 4 + 0,1 * 1 + 0,2 * 3 + 0,2 * 3 = 3,55 балла

OBIMP:

Z4 = 0,2 * 5 + 0,15 * 0 + 0,1 * 4 + 0,05 * 4 + 0,1 * 1 + 0,2 * 3 + 0,2 * 3 = 2,9 балла

Разработанный протокол - LIMone:

Z5 = 0,2 * 5 + 0,15 * 4 + 0,1 * 4 + 0,05 * 4 + 0,1 * 5 + 0,2 * 5 + 0,2 * 5 = 4,7 балла

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

6. Безопасность жизнедеятельности

6.1 Характеристика вредных факторов при работе с ПК

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

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

Все опасные и вредные производственные факторы в соответствии с ГОСТ 12.0.003-74 [14] подразделяются на физические, химические, биологические и психофизиологические.

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

1) физические:

- повышенные уровни электромагнитного излучения;

- повышенный уровень статического электричества;

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

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

- повышенная температура окружающей среды;

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

- повышенный уровень шума и вибрации;

- повышенный или пониженный уровень освещенности.

2) психофизиологические:

- интеллектуальные, сенсорные и эмоциональные нагрузки;

- длительные статические нагрузки;

- монотонность труда;

- большой объем информации, обрабатываемой в единицу времени.

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

6.2 Организация рабочего места при работе с компьютером

Рабочие места работников должны быть организованы в соответствии с требованиями СанПиН 2.2.2/2.4.1340-03 «Гигиенические требования к персональным электронно-вычислительным машинам и организации работы» [15].

Площадь на одно рабочее место пользователей ПЭВМ с ВДТ на базе электронно-лучевой трубки должна составлять не менее 6 м2, с ВДТ на базе плоских дискретных экранов (жидкокристаллические, плазменные) - 4,5 м2.

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

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

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

Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм. Рабочее место пользователя ПК следует оборудовать подставкой для ног. Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

Экран монитора должен находиться от глаз пользователя на оптимальном расстоянии -- 600-700 мм, но не ближе 500 мм.

Рабочее место с ПК должно быть автономным.

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

Необходимо обеспечить надежное заземление (зануление) системного блока и источника питания ПК, а также заземление защитного фильтра и локальной сети.


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

  • Создание клиент-серверного приложения "Чат" с помощью среды визуальной разработки приложений Borland C++ Builder версии 6. Описание функциональности приложения: наличие клиент-серверной архитектуры, обмен короткими сообщениями, а также передача файлов.

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

  • Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".

    дипломная работа [974,7 K], добавлен 08.06.2013

  • Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.

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

  • Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.

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

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

    курсовая работа [942,1 K], добавлен 19.03.2012

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

    курсовая работа [1,4 M], добавлен 21.01.2017

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

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

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

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

  • Создание клиент-серверного приложения на основе технологии CORBA. Проектирование многоуровневой системы, в которой клиент при помощи банкомата выполняет необходимые операции. Способы реализации серверов в разных каналах для ускорения обработки данных.

    лабораторная работа [1,1 M], добавлен 08.06.2009

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

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

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