Файл: М инобрнауки россии федеральное государственное бюджетное образовательное учреждение высшего образования Национальный исследовательский университет мэи.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 634

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Выводы главы


В данной главе была проанализирована БД ФИАС в формате КЛАДР, было определено, что она состоит из четырёх таблиц, часть из которых содержит дублирующийся данные, а некоторые столбцы и вовсе были пустыми. Далее производилось проектирование основных таблиц БД мобильного приложения: субъекты РФ, административные районы, населённые пункты (города, сёла, деревни и т.д.), улицы и таблица домов, была так же построена иерархическая модель данных рис. 2.1. Так же были определены основные компоненты интерфейса: боковое меню навигации с кнопками переключения между страницами и обновления БД до актуальной версии, стартовая страница состоящая из карусели с тремя наборами элементов описывающих приложение, которые пользователь сможет просматривать во время подготовки БД к работе, страница с информацией о приложении, страница поиска информации в адресной системе и страница избранного отражающая данные добавленные пользователем в избранное.

3. Разработка информационной системы

3.1 Физическая структура проекта


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



Рисунок 3.1 – Структура проекта

Файлы App.xaml и App.xaml.cs являются по своей сути одним файлом, представленным в двух форматах в виде XAML и в виде программного кода C#, с данного файла начинается выполнение приложения и чаще всего он используется для определения общих для всей программы ресурсов. В данной структуре можно выделить два каталога это pages и page_func: первый представляет из себя набор программного кода, реализующего пользовательский интерфейс, второй демонстрирует набор классов, реализующих функциональное наполнение каждой отдельной страницы, а так же инструменты по работе с данными и СУБД.

Элементы интерфейса разбиты на отдельные файлы в папке pages: MenuPage.cs реализует создание бокового меню
, тем самым выполняя навигационную функцию, StartPage.cs это элемент стартовой страницы оповещающей пользователя о том, что БД ФИАС подготавливается для работы, About.cs отражает описание приложения и её версию, DBworking.cs является страницей на которой пользователь реализуем функции поиска по БД, Favourite.cs страница отражающая все адресные элементы добавленные пользователем в избранное, FastSearch.cs это страница быстрого поиска на которой пользователь сам вводит искомый адрес.

Файлы папки page_func представляют из себя несколько различных инструментов для работы приложения: файл DataClass.cs содержит классы описывающие данные, таблицы БД с которыми необходимо работать мобильному приложению, файл f_Start_page.cs отражает функционал, который необходимо выполнять на стартовой странице пользовательского интерфейса, f_DBWorking_page.cs соответственно описывает функции работы со страницей поиска данных в БД, файл f_SQL.cs с помощью ORM библиотеки осуществляет работу с СУБД SQLite.

3.2 Логическая структура


Логическая структура проекта представляет собой набор пространств имён, которые в большей степени соответствуют физической структуре проекта. Краткое описание пространств имён отражен в таблице 16.

Таблица 16

Пространства имён

Наименование пространства имён

Описание

MenuGUI

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

StartGUI

Содержит класс пользовательского интерфейса стартовой страницы и необходимые методы



Продолжение таблицы 16

Наименование пространства имён

Описание

StartGUI

Содержит класс пользовательского интерфейса стартовой страницы и необходимые методы

AboutGUI

Содержит класс пользовательского интерфейса страницы информации о приложении

DBWorkGUI

Содержит класс пользовательского интерфейса страницы для поиска информации в БД ФИАС

FavouriteGUI

Содержит класс пользовательского интерфейса страницы избранного

FastSearchGUI

Содержит класс пользовательского интерфейса страницы быстрого поиска

DBSpace

Пространство, содержащее классы необходимые для осуществления поиска по адресной системе

SQLSpace

Содержит класс, осуществляющий работу с СУБД SQLite

StartSpace

Содержит класс реализующий функционал стартовой страницы

Data

Содержит классы представлений данных, используемых в мобильном приложении





3.3 Реализация работы с данными


После загрузки БД ФИАС необходимо произвести разархивацию данных, для этих целей была использована библиотека SharpCompress, которая предоставила метод SevenZipArchive для взаимодействия с архивом рис. 3.2. После открытия архива циклом были выгружены все файлы, содержащиеся в нём.



Рисунок 3.2 – Распаковка данных

Дальнейшая работа заключается в выгрузке данных из DBF файлов. Для выполнение данной задачи была найдена библиотека NDbfReader, она позволяет открывать DBF файлы различных форматов, а так же выставлять необходимо кодировку если это необходимо. В ходе работы с данными было выяснено, что в DBF файлах используется кодировка code page 866, которая является устаревшей на текущий момент, для дальнейшей работы с ней необходимо было изменить настройки проекта и включить туда необходимую группу кодировок. Для удобства работы с данными были использованы списки классов, представляющих выгружаемую таблицу рис. 3.3.



Рисунок 3.3 – Работа с DBF файлами

Для дальнейшей работы с данными необходимо подготовить соответствующие таблицы в SQLite, для этих целей было принято решение использовать ORM библиотеку sqlite-net-pcl. Данная библиотека позволяет создавать таблицы БД с помощью классов данных, но в ходе выполнения работы было выявлено, что в классах нет возможности указать внешний ключ, в связи с тем был использовать язык SQL для создания большинства таблиц рис. 3.4. Полный код работы с SQLite ппредставлен в приложении 1.



Рисунок 3.4 – Создание таблиц в БД

Данные после выгрузки нуждаются в фильтрации и распределении по таблицам БД. Из-за того, что предстояла работа с большим количеством данных необходимо было найти более эффективное средство обработки массивов чем цикл с условными операторами, таким образом было принято решение использовать язык запросов LINQ, который предоставлял более производительное решение в обработке данных. После фильтрации информация преобразовывается в список классов, представляющих таблицу БД и затем производится транзакция InsertAll добавляющую весь массив данных в БД SQLite рис. 3.5.




Рисунок 3.5 – Пример фильтрации данных и добавления в SQLite

Дальнейшая работа с данными осуществлялась с помощью SQL-запросов к БД в качестве примера можно привести получение домов, относящихся к определённой улице рис. 3.6.



Рисунок 3.5 – Фильтрация данных и добавление в SQLite

3.4 Работа с RAM


В ходе разработки было выявлено, что наибольшая нагрузка на мобильное устройство происходит в момент формирования БД на базе SQLite. Мониторинг нагрузки был проведён с помощью стороннего приложения Simple System Monitor, по полученным данным рис. 3.6 нагрузка на оперативную память на устройстве с 5.5 гигабайт памяти составила более 2 гигабайт на протяжении половины процесса составления БД.



Рисунок 3.6 – Максимальная нагрузка на RAM

Так же было выявлено, что память не освобождается полностью после подготовки БД и продолжает нагружать систему на полтора гигабайта, в связи с тем было принято решение принудительно вызывать сборку мусора сразу после скопления большого количества уже добавленных в БД данных. После внедрения подобных мер, нагрузка на память стала достигать 2 гигабайт только в момент обработки домов, поскольку их наибольшее количество в БД ФИАС, а при завершении преобразования БД занимаемая оперативная память стала ровняться 235 мегабайтам рис. 3.7.



Рисунок 3.7 – Нагрузка на RAM после освобождения памяти

В дальнейшей работе мобильного приложения нагрузка на RAM не достигала пятисот мегабайт.