Файл: Анализ и оценка средств реализации структурных методов анализа и проектирования экономической информационной системы (АНАЛИТИЧЕСКИЙ ОБЗОР ПРОЕКТИРОВАНИЯ ЭКОНОМИЧЕСКИХ СИСТЕМ).pdf
Добавлен: 30.03.2023
Просмотров: 98
Скачиваний: 2
Архитектура информационной системы
В данном разделе производится разработка архитектуры системы, и описывается алгоритм работы будущего веб-сайта по осуществлению сбора и анализа данных по продажам питьевой воды.
Для лучшего понимания процесса в нашей будущей системе опишем её алгоритм:
- Ежедневно с предоставленных ftp-серверов производится сбор требуемых файлов с данными.
- Далее осуществляется разбор этих файлов с занесением в нашу базу данных по указанным ранее путям и обработка ошибок, файлы перезаписываются ежедневно.
- В приложении пользователи имеют определенную роль – собственник квартиры, управляющий, администратор, все они имеют разный доступ к системе. У каждого есть логин и пароль, которые они указывают при входе в систему.
- Система проверяет - существуют ли указанные данные в базе, если да, то переходим к следующему шагу, если нет, появляется сообщение об ошибке – «Неправильный логин или пароль». Если пользователь не может войти в систему, ему стоит обратиться к вышестоящему для исправления ошибки.
- Осуществляется определение роли пользователя, при входе в систему.
- Роль – администратор? Если нет, проверяем на другую роль.
- Открываем на страницу с вкладками меню только для администратора.
- Управление данными по управляющим.
- Управление данными по собственникам.
- Управление данными по домам.
- Управление данными по тарифам.
- Управление данными по всем домам и квартирам.
- Открываем на страницу с вкладками меню только для администратора.
- Роль – управляющий? Если нет, то роль собственника.
- Открываем страницу с вкладками меню только для управляющего.
- Управление данными по собственникам.
- Просмотр домов в управлении.
- Открываем страницу с вкладками меню только для управляющего.
- Роль – собственник квартиры.
- Перенаправляем на страницу с вкладками меню только для собственника.
- Вывод данных в квартире собственника.
- Перенаправляем на страницу с вкладками меню только для собственника.
- Роль – администратор? Если нет, проверяем на другую роль.
Рассмотрим используемые методы в работе некоторых функций. Наша система каждый день собирает файлы с сервера и сохраняет их. Наш разбор состоит из трёх этапов: сначала сбор информации в первоначальном виде. Автоматический разбор подразумевает копирование кода конкретной страницы с последующим извлечение из неё контента (необходимых данных). Затем наступает фаза извлечения и дальнейшего изменения формата информации. На этом этапе совершаем преобразование в требуемый формат. Генерация результата – это последняя фаза разбора. Во время неё записывается информация, полученная в процессе предыдущей фазы. И сразу же переводится в необходимый формат с последующей записью в локальную базу данных.
Создадим модель нашей базы данных, благодаря которой работа системы изнутри будет понятнее (рис.2.2.). Наша база данных имеет 6 сущностей – Houses, которая характеризует дома в системе, Controllers, хранит информацию о счётчиках, Data показания учета воды, Users, хранит информацию о пользователях, Rate, хранит информацию о тарифах потребления, Managers – хранит информацию об управляющих.
Рисунок 2.2. Модель базы данных
Разберем каждую сущность конкретнее:
- Houses – собирает информацию о домах в нашей системе, имеет id уникальный идентификатор дома, manager_id по которому осуществляется привязка к конкретному управляющему дома, address адрес, где расположен определенный дом, apartments несет информацию о количестве квартир и levels о количестве этажей.
- Managers – собирает информацию об управляющем персонале в системе, имеет уникальный идентификатор id, surname, name, patr – фио соответственно, email – логин, pass – пароль, phone – номер телефона, group_id – идентификатор, по которому определяется управляющий или администратор.
- Controllers – собирает информацию о счётчиках, имеет id уникальный идентификатор счётчика, house_id, apartment_id – несёт информацию о доме и квартире соответственно, где размещен счётчик, controller_number – уникальный номер счётчика и user_id – идентификатор, определяющий пользователя.
- Data – собирает информацию о данных потребления в квартирах, id – уникальный идентификатор, controller_id – несет информацию о счётчике, type – тип счетчика, date – дата, time – время, data – количество потребленных литров воды, id_rate – идентификатор, по которому определяется расчётный тариф.
- Rate – собирает информацию по тарифу потребления, имеет уникальный идентификатор id, name – название тарифа, unit – мера, price – цена за единицу меры.
- Users – собирает информацию о собственниках квартиры, id – уникальный идентификатор, e-mail – почта пользователя, одновременно является логином для входа в систему, pass – пароль для входа, name, surname, patronymic – фио соответственно, phone – номер телефона, contract_number – номер договора.
Составим схему для описания архитектуры работы нашей будущей системы (рис. 2.3), которая хорошо показывает альтернативу связке Denwer-MySQL-PHP. Модули аккаунты (accounts), дома (houses), модуль главной страницы (main), настройки (settings), статистика (stat), тарифы (tariff), пользователи (users) вынесены как увеличивающие функциональность системы. В то же время система не зависит от них, и сами эти модули самодостаточны. Модуль авторизации вынесен в отдельную часть, поскольку он не реализует дополнительную функциональность системы, а является одной из ее частей.
Рисунок 2.3. Архитектура информационной системы
Для описания особенностей физического представления нашего веб-сайта составим диаграмму компонентов (рис. 2.4). Она позволит описать архитектуру разрабатываемого сайта, установив зависимости с помощью пунктирных стрелок между компонентами, в роли которых выступят файлы с кодом.
index.php – главный скрипт, через который будет осуществляется вся работа.
tmp.inc.php - главный html шаблон, который повторяется на всех страницах сайта.
config.php - пароли от базы данных и от удаленного сервера, где лежат csv файлы.
lib/functions.php – файл, содержащий все функции, которые используются в коде.
lib/db.php – подключение к базе данных и функция для работы с запросами к базе данных.
js/script.js - набор средств, которые позволяют создавать более интерактивные веб-страницы.
css/style.css - папка в которой находятся файлы стилей (для оформления сайта).
- /название_модуля/tmp.inc.php - html шаблон модуля.
- /название_модуля/index.php - php код модуля, который будет нужен для вывода информации при открытии страницы данного модуля.
- /название_модуля/ajax.php - код, который будет обрабатывать асинхронные запросы (все действия, которые будут совершаться без перезагрузки страницы, например, добавить или удалить пользователя).
Рисунок 2.4. Диаграмма компонентов
ГЛАВА 3. РЕАЛИЗАЦИЯ ЭКОНОМИЧЕСКОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ МОНИТОРИНГА И АНАЛИЗА ДАННЫХ О ПРОДАЖАХ ПИТЬЕВОЙ ВОДЫ
Разработка информационной системы мониторинга и анализа данных о продажах питьевой воды
Разрабатываемая информационная система направлена на мониторинг и анализ данных о продажах питьевой воды и представляет собой комплекс элементов, которые связаны между собой. Пользователь осуществляет действия в системе через браузер при наличии доступа к сети Интернет, с помощью любого устройства. Все операции будут выполняться на веб-сервере, который также будет работать с сервером баз данных, который позволит нам хранить загружаемые данные о потреблении с ftp-серверов. Схема работы информационной системы представлена на рисунке 3.1.
Рисунок 3.1. Схема работы информационной системы
Для лучшего понимания структуры работы веб-сайта, составим схему последовательности открытия окон (рис.3.2). Сначала, пользователь должен будет внести свои данные для входа, далее форма зависит от прав пользователя, администратор – полный доступ, управляющий доступ к функциям по управлению домом, собственник – доступ к собственным данным.
Вход
Панель для собственника
Панель для управляющего
Панель для администратора
Пользователи
Личное потребление
Дома
Дома
Тарифы
Настройки
Пользователи
Настройки
Учётные записи
Настройки
Рисунок 3.2. Схема последовательности открытия окон
При входе в систему пользователь вводит логин и пароль на основе которых получает доступ к тем или иным данным. Если хранить все пароли в первичном виде, то это может привести к плохим последствиям, если кто-то завладеет базой данных, поэтому пароли принято шифровать. Было принято решение осуществлять данное преобразование с помощью хеш функций, что означает преобразование пароля в случайную строку, из которой будет достаточно сложно узнать оригинальный пароль.
После введения пароля, первоначально он обрабатывается функцией md5, после чего получается длинная строка из латинских букв и цифр. Далее эта строка поддается обработке функцией sha1, что приводит к получению новой строки из букв и цифр. Затем к полученной строке присоединяется тайная строка, после чего вновь обрабатываем функциями криптошифрования md5 и sha1.
Код шифрования:
$pass = sha1(md5(trim($pass)));
$pass = md5($pass . 'srrfrwfrfesfwfsdddddjkl');
В нашей работе мы используем данные на ftp-серверах (рис.3.3), для быстрого отклика системы, был написан скрипт, который запускается раз в сутки ночью (наименьшая активность пользователей), скачивает csv файлы с удалённого сервера и записывает показания из этих файлов в базу.
Рисунок 3.3. Файлы на ftp-серверах
Сначала происходит подключение к ftp-серверу, затем вводиться указанный логин и пароль, переходим по прописанному заранее пути к специальной папке, после чего получаем список файлов в ней. Затем осуществляется проверка, если есть хоть один csv файл, то скачиваем его и помещаем в папку files, после успешного скачивания помещаем его в массив. После чего закрываем соединение с сервером, после скачивания необходимых данных, он нам больше не нужен.
Данные в файлах представлены в виде строки (рис.3.4.), нам нужно их корректно занести в свою базу данных. Мы перебираем в цикле файлы, скачанные с сервера, достаём данные csv файла, если файл не пустой, то извлекаем из него информацию, разбивая строку. Записываем в базу данных тип счётчика (m1), далее из строк отделяем дату от времени, конвертируем дату в формат ГГГГ-ММ-ДД и записываем в переменную, далее записываем время и последняя строка несёт информацию о показаниях счётчика. Название файла является номером счётчика, записываем всю информацию о нём в базу, если за эту дату данных еще нет. После проделанных действий с файлом, мы его удаляем, так как он нам больше не нужен.
Рисунок 3.4. Пример данных на ftp-серверах
Весь наш веб-сайт представляет собой иерархию папок, каждая из которых хранит специальные скрипты для функциональности системы.
cron/ftpdata.php - скрипт, который запускается раз в сутки, скачивает csv файлы с удалённого сервера и записывает показания из этих файлов в нашу базу.
css/ - папка в которой находятся файлы стилей (для оформления сайта).
files/ - папка в которую закачиваются скачанные csv файлы.
img/ - папка с картинками, которые используются на сайте.
includes/ - папка, в которой находятся небольшие html шаблоны, которые нужно подключать в разных частях страницы.
js/ - папка в которой находятся js файлы.
lib/ - папка с библиотеками.
plugins/ - здесь размещены сторонние скрипты (скрипт календаря).
modules/ - здесь все модули сайта (учётные записи, тарифы, пользователи, дома, личный кабинет).
config.php -пароли для подключения к базе данных и к удалённому серверу по ftp.
index.php - главный скрипт, через который осуществляется вся работа.
tmp.inc.php - главный html шаблон сайта.
В папке modules:
- /название_модуля/css/style.css - оформление модуля
- /название_модуля/includes/ - html шаблоны, которые подключаются в разных частях html шаблона модуля (всплывающие формы, например, форма для добавления пользователя)
- /название_модуля/tmp.inc.php - html шаблон модуля.
- /название_модуля/index.php - php код модуля, который нужен для вывода информации при открытии страницы данного модуля.
- /название_модуля/ajax.php - код, который обрабатывает асинхронные запросы (все действия, которые совершаются без перезагрузки страницы, например, добавить или удалить пользователя).
Интерфейс информационной системы мониторинга и анализа данных о продажах питьевой воды
При открытии веб-сайта пользователь видит перед собой форму для входа (рис. 3.5) куда ему следует ввести логин и пароль, которые он получает от вышестоящего управления – администратор от разработчика системы, управляющий от администратора, собственник квартиры от управляющего или администратора. При неверном вводе данных пользователь увидит перед собой форму с предупреждением – «Неправильный логин или пароль».