Таблица «поставщики» включает в себя такие атрибуты как: код поставщика (суррогатный ключ), наименование поставщика. Из полей вывода можно выделить эту таблицу со списком уже введённых поставщиков.
Типы вводимых данных представлены в таблице 9.
Таблица 9 - Поставщики
|
Название атрибута |
Тип данных |
|
|
cod_provider (код поставщика, суррогатный ключ) |
serial (целое с автоувеличением) |
|
|
name_provider (наименование поставщика) |
character varying(255) (символьный тип) |
Таблица «поставки» связана с таблицей «поставщики» и включает в себя такие атрибуты как: код поставки (суррогатный ключ), номер накладной, номер наряда, код поставщика (внешний ключ). Из полей вывода можно выделить эту таблицу со списком уже введённых поставок для определенных средств связи.
Типы вводимых данных представлены в таблице 10.
Таблица 10 - Поставки
|
Название атрибута |
Тип данных |
|
|
cod_supply (код поставки, суррогатный ключ) |
serial (целое с автоувеличением) |
|
|
invoice_number (номер накладной, номер наряда) |
character varying(100) (символьный тип) |
|
|
invoice_date (дата накладной, дата наряда) |
date (дата без времени суток) |
|
|
cod_provider (код поставщика, внешний ключ) |
integer (целые числа) |
Таблица «средства связи» связана с таблицами: поставки, службы, комплектации и модели, включает в себя такие атрибуты как: код средства связи (суррогатный ключ), заводской номер, инвентарный номер, цена за единицу комплекта, дата выпуска, дата ввода в эксплуатацию, дата плана распределения, исправность, код службы (внешний ключ), код модели (внешний ключ), код комплектации (внешний ключ) и код поставки (внешний ключ). Из полей вывода можно выделить эту таблицу с суррогатным ключом и списком уже введенных средств связи и заданных им характеристик.
Типы данных представлены в таблице 11.
Таблица 11 - Средства связи
|
Название атрибута |
Тип данных |
|
|
cod_comm_equipment (код средства связи, суррогатный ключ) |
serial (целое с автоувеличением) |
|
|
serial_number (заводской номер) |
character varying(100) (символьный тип) |
|
|
inventory_number (инвентарный номер) |
character varying(100) (символьный тип) |
|
|
price (цена за единицу комплекта) |
numeric (числа с точностью) |
|
|
release_date (дата выпуска) |
date (дата без времени суток) |
|
|
commissioning_date (дата ввода в эксплуатацию) |
date (дата без времени суток) |
|
|
distribution_plan (дата плана распределения) |
date (дата без времени суток) |
|
|
model_operability (исправность) |
boolean (состояние: истина или ложь) |
|
|
cod_branch (код службы, внешний ключ) |
integer (целые числа) |
|
|
cod_model (код модели, внешний ключ) |
integer (целые числа) |
|
|
cod_equipment (код комплектации, внешний ключ) |
integer (целые числа) |
|
|
cod_supply (код поставки, внешний ключ) |
integer (целые числа) |
2.4 Проектирование пользовательского интерфейса
Пользовательский интерфейс - это совокупность программных и аппаратных средств, обеспечивающих взаимодействие пользователя с компьютером.
В рамках данной выпускной квалификационной работы используется технология Intranet, представляющая собой внутреннюю корпоративную сеть, построенную на Internet технологиях.
Пользовательский интерфейс для клиентской части приложения выполнен в виде WEB-приложения.
Первая вкладка «Подразделения» представлена на рисунке 4. Она состоит из двух таблиц «Подразделения» и «Службы» и для каждой из этих таблиц есть соответствующие кнопки на создание, находящееся ниже данных таблиц, изменение и удаление для каждой строки таблиц.
При нажатии на любую из строк в таблице «Подразделения» отображается изменённая таблица «Службы», в которой показываются все службы, соответствующие выбранному подразделению.
При добавлении и изменении подразделения или службы кнопки, находящиеся под таблицами, изменяются соответственно выбранному действию.
Рисунок 4 - Вкладка «Подразделения»
Нажимая на строку в таблице «Службы», пользователь попадает на отдельную вкладку «Средства связи» представленную на рисунке 5, в которой имеется две таблицы: «Радиостанции» и «Техника», строчки которых можно изменять или удалять при необходимости. Вверху таблиц отображаются наименования выбранных подразделения и службы.
Рисунок 5 - Вкладка «Средства связи»
Для каждой таблицы средств связи сделана кнопка «Показывать» позволяющая пользователю выбрать интересующие столбцы таблиц и отображать только их, для более удобного просмотра.
При добавлении средства связи, будь то радиостанция или другая техника, открывается модальное окно, в виде карточки представленной на рисунке 6, где необходимо заполнить нужные поля, и нажать кнопку добавить. Кнопка «отменить» закрывает карточку.
Изменение средства связи происходит аналогично добавлению, только карточка будет иметь соответствующие заполненные поля, при желании их можно изменить и нажать соответствующую кнопку.
Рисунок 6 - Карточка добавления радиостанции
Вкладка «Поставщики» представлена на рисунке 7, имеющая одну таблицу - «Поставщики», записи в которой можно добавлять, изменять и удалять аналогично подразделениям и службам.
Рисунок 7 - Вкладка «Поставщики»
Вкладка «Поиск» представленная на рисунке 8, имеет общую таблицу по всем средствам связи, служащую для поиска необходимого оборудования по заданным параметрам. Вверху таблицы ведется подсчет количества найденных средств связи. Параметры поиска задаются на выезжающей вкладке слева и включают в себя поиск по: подразделениям, службам, наименованию средства связи, дате выпуска, дате распределения, инвентарному номеру и заводскому номеру. Также имеется кнопка «сформировать отчёт», которая позволит перенести найденную информацию в excel таблицу.
Рисунок 8 - Вкладка «Поиск»
3. РЕАЛИЗАЦИЯ
3.1 Реализация серверной части
Разработка программы производилась с помощью средств разработки Intellij IDEA. В первую очередь реализовано соединение с базой данных при запуске программы. Для этого было объявлено поле для хранения соединения с базой данных. Затем объявлено и установлено новое соединение с базой данных. Пример кода представлен на рисунке 9.
Рисунок 9 - Пример кода установление соединения с базой данных
Для представления сущностей соответствующим таблицам на языке JAVA были созданы простые классы POJO (англ. Plain Old Java Object) -- «старый добрый Java-объект».
Пример POJO класса, реализующий сущность «Техника» представлен на рисунке 10.
Рисунок 10 - Класс-сущность «Техника»
Для доступа к каждой таблице были реализованы специальные классы, называемые DAO. Data access object (DAO) -- это объект, предоставляющий абстрактный интерфейс к какому-либо типу базы данных или механизму хранения. В этих классах реализованы методы для различных CRUD (сокр. от англ. create, read, update, delete -- «создать, прочесть, обновить, удалить») операций. На рисунке 11 описан INSERT сразу для ряда таблиц:
1. Technics
2. Comm_equipments
3. Models
4. Supplies
5. Providers
Рисунок 11 - SQL запрос на вставку техники
В качестве примера на рисунке 12 представлена реализация добавления техники по идентификатору службы.
Рисунок 12 - Пример кода добавления техники через DAO
В методе add используется экземпляр класса JDBCTemplate, который позволяет связать код на языке JAVA c базой данных. В методе происходит добавление техники в таблицу, в конце метода возвращается id добавленной сущности.
Для обработки запроса с клиентской части были созданы REST-контроллеры, которые обрабатывают HTML-запросы и возвращают какой-либо ответ. Общая блок-схема работы с URL представлен на рисунке 13.
Рисунок 13 - Блок-схема работы с URL
На рисунке 14 представлена блок-схема алгоритма добавления техники по id службы имеющей URL /techniques/add/{id}.
Пример кода, реализующий логику, описанную в блок схеме представлен на рисунке 15.
Рисунок 14 - Блок-схема алгоритма добавления техники по URL
Рисунок 15 - Пример кода добавления техники через HTML-запрос
В данном примере обрабатывается определенный URL пришедший с клиентской части. В методе add инициализируя dataSource, необходимый для подключения к серверу БД и используя созданный DAO-объект для вставки, а затем получения списка всей техники в определенной службе. Этот список возвращается клиенту в теле Response.
Все остальные POJO, DAO и REST-контроллеры реализованы аналогичным образом для других сущностей, представляющих таблицы.
3.2 Реализация клиентской части
Разработка осуществлялась с помощью Webstorm на языке TypeScript. В приложении представлено несколько страниц:
1. Главная, где отображаются подразделения и службы, а также дается возможность добавлять, удалять и редактировать их;
2. Средства связи, где представлен список радиостанций и техники принадлежащих определенным службам;
3. Список поставщиков;
4. Общая таблица поиска.
Для перехода по страницам используется библиотека React-Router. Пример кода изображен на рисунке 16.
Рисунок 16 - Пример кода перехода между страницами.
Для представления сущностей, отображающих таблицы, используются интерфейсы.
Интерфейс в TypeScript --?это группа взаимосвязанных свойств и методов, которые описывают объект, но не обеспечивают реализацию или инициализацию этих свойств и методов в объектах. Пример интерфейсов представлен на рисунке 17.
Рисунок 17 - Интерфейсы
В качестве примера на рисунке 18 приведена блок схема добавления/изменения любого средства связи будь то радиостанция или техника с клиентской части (пользовательского интерфейса). В зависимости от того выбрано «Добавление» или «Изменение», вызываются соответствующие методы.
Рисунок 18 - Блок-схема добавления/изменения любого средства связи
Пример кода на добавление/изменение техники с клиентской части (пользовательского интерфейса) представлен на рисунке 19.
Рисунок 19 - Пример кода на добавление/изменение техники
Для отправки HTML запросов на сервер была использована библиотека axios. Пример отправки запроса для получения списка техники изображен на рисунке 20.
Рисунок 20 - Пример кода отправки HTML-запроса на сервер
Для отображения интерфейса пользователя используется фреймворк ReactJS с помощью синтаксиса JSX.
React -- это основной строительный блок для создания фрагментов HTML-кода, подходящих для повторного использования.
JSX -- синтаксическое расширение JavaScript, которое позволяет создавать компоненты, используя возможности HTML и JavaScript.
На рисунке 21 приведен пример кода для отображения таблицы с техникой, в которой также отображаются кнопки в каждой строке, позволяющие редактировать или удалять запись.
Рисунок 21 - Пример кода для отображения таблицы и кнопок
Для остальных таблиц схемы базы данных проводятся аналогичные действия.
4. ТЕСТИРОВАНИЕ
4.1 Методика тестирования
Как после завершения, так и на этапе реализации любого программного продукта необходимо проверять его корректность и работоспособность путем проведения тестирования. Тестирование - это процесс исследования программного продукта с целью выявления существующих ошибок в программном коде.
Проводить тестирование можно как вручную, так и с применение отладочных программ. Существует множество разлитых стратегий и методов проведения тестирования. Полное функциональное тестирование, включающее в себя:
1) Модульное тестирование
2) Интеграционное тестирование
3) Системное тестирование
4) Приемочные испытания
Модульное тестирование предполагает проверку отдельных модулей программы на работоспособность. Для такого вида тестирование требуется точное знание программного кода и каждого установленного модуля. Для его проведения создаются тест-коды, позволяющие проверить ведет ли себя программа так, как задумывалось.
Интеграционное тестирование применяется после проведения модульного тестирования и служит для проверки связи и взаимодействия между различными компонентами системы. Включает в себя такие подходы как:
- "снизу вверх", при котором все низкоуровневые модули собираются воедино и тестируются;
- "сверху вниз", вначале тестируются все высокоуровневые модули и постепенно добавляются модули низкого уровня.
Такой вид тестирования в первую очередь выявляет ошибки интерфейса.
Системное тестирование основывается на стратегии «черного ящика», при которой не требуется взаимодействия с внутренним устройством программы, а производится поиск ошибок на основе входных данных и ожидаемых результатов.
Приёмочные испытания - последний вид тестирования программного продукта перед передачей клиенту. Производится проверка соответствия программного продукта требованиям заказчика. Данный вид тестирования может осуществляться как разработчиком, так и заказчиком. После успешного прохождения приемочных испытаний система может быть внедрена на производство. [9]
В данной выпускной квалификационной работе было выполнено полное тестирование функционала приложения администратора.
4.2 Результаты тестирования
Реализация информационной системы для учёта средств связи ЦИТС и ЗИ УМВД России по Вологодской области уже завершена, поэтому будем пользоваться программным тестированием.
Для проведения тестирования необходимо выполнить все возможные действия с приложением чтобы сравнить полученный результат с ожидаемым.