Диплом: Автоматизация и обеспечение информационной безопасности приема и анализа заявок технической поддержки в АКБ «ФридомФинанс»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
96
Анализ существующей защиты информации на предприятии показал, что
вопросам безопасности и защиты информации на предприятии не уделяется
должного внимания. Поэтому в качестве дополнительной защиты ИТ-
инфраструктуры предлагается установка ИБП для всех рабочих станций и
серверов предприятия.
При анализе существующих аналогов проектируемой системы были
рассмотрены такие продукты:
IntraService;
Okdesk;
Омнидеск.
Исходя из анализа и сравнения определено, что все эти системы обладают
серьезным функционалом, который избыточен для анализируемого предприятия.
К тому же эти системы являются платными, что делает более целесообразным
собственную разработку подобной системы для нужд исследуемой организации.
В качестве стратегии автоматизации задачи предлагается «автоматизация
по участкам», поскольку из всего комплекса процессов выделен только один
участок – учет заявок на техническую поддержку клиентов банка.
Обоснование проектных решений по информационному обеспечению
определило:
тип приложения – веб-ориентированное;
модель данных – реляционная;
тип классификаторов – локальные.
Обоснование проектных решений по программному обеспечению
определило:
язык программирования – PHP;
СУБД – MySQL.
Обоснование проектных решений по техническому обеспечению
определило минимальные системные требования к серверу и рабочим станциям
сотрудников ИТ-отдела и прочих отделов.
В качестве стандарта жизненного цикла проекта автоматизации
предлагается ГОСТ 34.601-90, который предполагает использование каскадной
модели жизненного цикла.
97
В качестве стратегии внедрения предлагается стратегия «узкое место»,
потому что автоматизации будет подвержена работа узкого круга специалистов
ИТ-отдела предприятия.
Определена входная, нормативно-справочная, оперативная и результатная
информация, составлены соответствующие макеты веб-форм приложения.
Также составлены дерево функций и диалога.
В рамках проектирования базы данных составлена информационная
модель, которая определила таблицы, пользователей, операции и результатные
документы.
Сама база данных спроектирована в среде ERWin.
Веб-приложение разработано с использованием паттерна MVC.
Также составлен алгоритм вывода информации по конкретному
обращению.
Тестирование веб-приложения показало, что система позволяет вести учет
обращений в службу поддержки АКБ.
Экономической обоснование показало, что экономия финансовых затрат с
одного обращения клиента АКБ составляет 7,57 руб. При себестоимости
разработки 64341,07 и среднего числа обращений в год 6500 срок окупаемости
проекта автоматизации составит 1,31 года, поэтому проект признается
экономически эффективным.
98
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. ГОСТ 34.601-90. Автоматизированные системы. Стадии создания.
2. Федеральный закон РФ от 27 июля 2006 года № 152-ФЗ «О
персональных данных»
3. Громов А. Управление бизнес-процессами. Современные методы. –
Юрайт, 2016. – 368 с.
4. Зараменских Е.П. Управление жизненным циклом информационных
сисием.- М.: Юрайт, 2017. – 431 с.
5. Зимин В. В. Основы управления жизненным циклом сервиса систем
информатики и автоматизации: учеб. пособие / В. В. Зимин, А. А.
Ивушкин, С. М. Кулаков, К. А. Ивушкин. Кемерово: Кузбассвузиздат,
2013. 96-100 с
6. Исаев Г. Проектирование информационных систем. – М.: «Омега-Л»,
2012. – 432 с.
7. Тарасов С. СУБД для программиста. Базы данных изнутри. – Соломон,
2015. – 320 с.
8. Тюгашев А. Языки программирования. Учебное пособие. Стандарт
третьего поколения. – Питер, 2014. – 336 с.
9. Эспозито Д. Разработка современных веб-приложений. Анализ
предметных областей и технологий. – Вильямс, 2017. – 464 с.
10. Анализ организационной структуры предприятия [Электронный
ресурс]. URL: http://www.fox-manager.ru/analiz-organizacionnoj-struktury-
predpriyatiya.html – Загл. с экрана (дата обращения: 15.04.2019)
11. Герасимчук В. А. Автоматизация процессов предприятия // Молодой
ученый. — 2016. №11. — С. 654-657. — URL
https://moluch.ru/archive/115/30382/ (дата обращения: 15.04.2019)
12. Сайт АКБ «ФридомФинанс». [Электронный ресурс]. URL:
https://bankffin.ru/ (дата обращения: 15.04.2019)
99
13. Система IntraService. [Электронный ресурс]. URL:
https://intraservice.ru/upload/iblock/d4e/IS_AdminGuide_4_3.pdf (дата
обращения: 15.04.2019)
14. Система Okdesk. [Электронный ресурс]. URL:
https://okdesk.ru/blog/webinar250717 (дата обращения: 15.04.2019)
15. Система Омнидеск. [Электронный ресурс]. URL: https://omnidesk.ru
(дата обращения: 15.04.2019)
100
ПРИЛОЖЕНИЕ А − СКРИПТ ИНИЦИАЛИЗАЦИИ БАЗЫ ДАННЫХ
CREATE TABLE files
(
file_id INT NOT NULL,
newname VARCHAR(255) NOT NULL,
message_id INT NULL,
oldname VARCHAR(255) NOT NULL
)
;
ALTER TABLE files
ADD PRIMARY KEY (file_id)
;
CREATE TABLE messages
(
message_id INT NOT NULL,
request_id INT NOT NULL,
date_and_time DATETIME NOT NULL,
messagetext VARCHAR(255) NOT NULL,
user_id INT NULL
)
;
ALTER TABLE messages
ADD PRIMARY KEY (message_id)
;
CREATE TABLE priorities
(
priority_id INT NOT NULL,
priorityname VARCHAR(255) NOT NULL
)
;
ALTER TABLE priorities
ADD PRIMARY KEY (priority_id)
;
CREATE TABLE requests
(
request_id INT NOT NULL,
user_id INT NULL,
status_id INT NULL,
type_id INT NULL,
priority_id INT NULL,
date_and_time DATETIME NOT NULL
)
;
ALTER TABLE requests
ADD PRIMARY KEY (request_id)
;
CREATE TABLE statuses
(
status_id INT NOT NULL,
statusname VARCHAR(255) NOT NULL
)
;
ALTER TABLE statuses
ADD PRIMARY KEY (status_id)
;
101
CREATE TABLE types
(
type_id INT NOT NULL,
typename VARCHAR(255) NOT NULL
)
;
ALTER TABLE types
ADD PRIMARY KEY (type_id)
;
CREATE TABLE users
(
user_id INT NOT NULL,
fio VARCHAR(255) NOT NULL,
phone VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(50) NOT NULL,
login VARCHAR(255) NOT NULL DEFAULT 0,
type TINYINT NOT NULL DEFAULT 0,
info VARCHAR(255) NOT NULL
)
;
ALTER TABLE users
ADD PRIMARY KEY (user_id)
;
CREATE UNIQUE INDEX XAK1Пользователи ON users
(
email
)
;
ALTER TABLE files
ADD FOREIGN KEY R_11 (message_id) REFERENCES messages(message_id)
;
ALTER TABLE messages
ADD FOREIGN KEY R_7 (request_id) REFERENCES requests(request_id)
;
ALTER TABLE messages
ADD FOREIGN KEY R_12 (user_id) REFERENCES users(user_id)
;
ALTER TABLE requests
ADD FOREIGN KEY R_2 (user_id) REFERENCES users(user_id)
;
ALTER TABLE requests
ADD FOREIGN KEY R_8 (status_id) REFERENCES statuses(status_id)
;
ALTER TABLE requests
ADD FOREIGN KEY R_9 (type_id) REFERENCES types(type_id)
;
ALTER TABLE requests
ADD FOREIGN KEY R_10 (priority_id) REFERENCES priorities(priority_id)
;
102
ПРИЛОЖЕНИЕ Б − ЛИСТИНГИ ПРОГРАММНЫХ МОДУЛЕЙ
Модуль вывода обращения
<h3>Просмотр обращения в службу техподдержки</h3>
<?php
if($this->err != null && trim($this->err)!= "")
View::showMessage($this->err, "error");
if($this->suc != null && trim($this->suc)!= "")
View::showMessage($this->suc, "success");
$adr = $s_pref."/".str_replace("Controller_", "", $this->currContr)."/".str_replace("action_", "",
$this->currAct);
echo "<p>&nbsp;</p>";
if(isset($alldata['req']) && count($alldata['req']) > 0)
{
echo "<table class='myhead'><tr>";
echo "<td class='myinf'>";
echo "<p>Дата создания: ".$alldata['req'][0][7]."</p>";
echo "<p>Статус: ".$alldata['req'][0][2]."</p>";
echo "<p>Приоритет: ".$alldata['req'][0][6]."</p>";
echo "<p>Тип: ".$alldata['req'][0][4]."</p>";
echo "</td>";
echo "<td class='mybtns'>";
if($alldata['req'][0][1] == 1) // запрос еще открыт
$adr = $s_pref."/".str_replace("Controller_", "", $this->currContr)."/closereq/";
else
$adr = $s_pref."/".str_replace("Controller_", "", $this->currContr)."/openreq/";
echo "<form action='$adr' enctype='multipart/form-data' method='post' >";
echo "<input type='hidden' name='id_req' value='".$alldata['id_req']."' />";
echo "<input type='hidden' name='id_user' value='".$alldata['id_user']."' />";
if($alldata['req'][0][1] == 1) // запрос еще открыт
echo "<button type='submit' name='btn_action' value='close'
style='width:150px;height:30px;'>Закрыть запрос</button><br><br>";
else
echo "<button type='submit' name='btn_action' value='open'
style='width:150px;height:30px;'>Открыть запрос</button><br><br>";
echo "</form>";
echo "</td>";
echo "</tr></table>";
echo "<p>&nbsp;</p>";
echo "<table class='mymess'>";
echo "<col width='250'>";
echo "<col width='400'>";
echo "<col width='300'>";
$cnt = count($alldata['mess']);
for($i=0; $i<$cnt; $i++)
{
switch($alldata['mess'][$i][5])
{
case 0: $type = 'Незарегистрированный пользователь'; break;
case 1: $type = 'Руководитель ИТ-отдела'; break;
case 2: $type = 'Менеджер ИТ-отдела'; break;
case 3: $type = 'Зарегистрированный пользователь'; break;
default: $type = 'Неизвестный пользователь'; break;
}
$fio = $alldata['mess'][$i][4];
103
$dt = $alldata['mess'][$i][1];
$mess = $alldata['mess'][$i][2];
$myfiles = $alldata['mess'][$i][6];
echo "<tr>";
if($alldata['id_user']==$alldata['mess'][$i][3])
echo "<td class='myauthor'>$dt<br><span
class='myyou'>Вы</span></td>";
else
echo "<td class='myauthor'>$dt<br>$fio<br>[<span
class='myother'>$type</span>]</td>";
echo "<td class='mymessage'>$mess</td>";
echo "<td class='mymyfiles'>";
$myfiles = explode(',', $myfiles);
$cnt1 = count($myfiles);
for($j=0; $j<$cnt1; $j++)
{
$file = explode('|', $myfiles[$j]);
echo "<a href='".$_SESSION['site_prefix']."/myfiles/".$file[0]."'
target='_blank'>".$file[1]."</a><br>";
}
echo "</td>";
echo "</tr>";
}
if($alldata['req'][0][1]==1) // Открыт
{
echo "<tr>";
echo "<td colspan='3' class='myaddmess'>";
$adr = $s_pref."/".str_replace("Controller_", "", $this-
>currContr)."/addmessage/";
echo "<form action='$adr' enctype='multipart/form-data' method='post' >";
echo "<input type='hidden' name='id_req' value='".$alldata['id_req']."' />";
echo "<input type='hidden' name='id_user' value='".$alldata['id_user']."' />";
echo "<br>Новое сообщение:<br><textarea rows='3' style='width:100%;'
name='text'></textarea>";
echo "<br><br>";
echo "Загрузите файлы/фотографии (не более
пяти)&nbsp;&nbsp;&nbsp;&nbsp;";
echo "<input type='file' min='1' max='5' name='file[]' multiple='true'
/>&nbsp;&nbsp;&nbsp;&nbsp;";
echo "<button type='submit' name='btn_action' value='add'
style='width:150px;height:30px;'>Добавить сообщение</button><br><br>";
echo "</form>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
Модуль маршрутизатора
<?php
class Route
{
104
static function mydebug($mym, $myc, $mya, $myp)
{
if($_SESSION['mydebug'])
{
echo "<div
class=\"mydebug\">mydebug:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contro
ller: $myc &nbsp;&nbsp;&nbsp;&nbsp;Action: $mya&nbsp;&nbsp;&nbsp;&nbsp;Model:
$mym<br>POST: ";
print_r($_POST);
echo "<br>GET: ";
print_r($_GET);
echo "<br>FILES: ";
print_r($_FILES);
echo "<br>PARAMS: ";
print_r($myp);
echo "</div>";
}
}
static function valU()
{
$myres = array();
if( isset($_POST['loginU']) && isset($_POST['passU']) )
{
$myu = Model::getUsByField('login', $_POST['loginU']);
if(is_array($myu) && isset($myu['user_id']) && isset($myu['pass']) &&
$myu)
{
$myp = trim($_POST['passU']);
# Сравниваем пароли
if($myu['pass'] === $myp)
{
# Генерируем случайное число и шифруем его
$myhash = md5(Model::generateCode(10));
# Записываем в БД хеш авторизации
Model::updAuthmyhash($myhash, $myu['user_id']);
# Устанавливаем куки
setcookie("id", $myu['user_id'], time()+60*60*24*30, "/");
setcookie("myhash", $myhash, time()+60*60*24*30, "/");
$myres[0] = true;
$myres[1] = "";
$_SESSION['user_id'] = $myu['user_id'];
return $myres;
}
else
{
$myres[0] = false;
$myres[1] = "Неверный логин или пароль";
if(isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
return $myres;
}
}
else
105
{
$myres[0] = false;
$myres[1] = "Ошибка подтверждения";
if(isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
return $myres;
}
}
if (isset($_COOKIE['id']) and isset($_COOKIE['myhash']))
{
$myu = Model::getUsByField('user_id', intval($_COOKIE['id']));
if(is_array($myu) && isset($myu['user_id']) &&
isset($myu['myhashcode']) && $myu)
{
if(($myu['myhashcode'] !== $_COOKIE['myhash']) or ($myu['user_id'] !==
$_COOKIE['id']))
{
setcookie("id", "", time() - 3600*24*30*12, "/");
setcookie("myhash", "", time() - 3600*24*30*12, "/");
$myres[0] = false;
$myres[1] = "Ошибка валидации № 1";
if(isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
return $myres;
}
else
{
$myres[0] = true;
$myres[1] = "";
$_SESSION['user_id'] = $myu['user_id'];
return $myres;
}
}
else
{
$myres[0] = false;
$myres[1] = "Ошибка валидации № 2";
if(isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
return $myres;
}
}
$myres[0] = false;
$myres[1] = "Ошибка валидации № 3";
if(isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
return $myres;
}
public static function red2Log($mypage, $mywhere='', $myparam='')
{
$mydate = date('Y-m-d H:i:s');
if(isset($_SERVER['REDIRECT_URL']))
$myfrom = $_SERVER['REDIRECT_URL'];
else
$myfrom = '';

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)