Файл: М инобрнауки россии федеральное государственное бюджетное образовательное учреждение высшего образования Национальный исследовательский университет мэи.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 652
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. Анализ предметной области и постановка задачи
1.4 Инструментальные средства разработки
2. Проектирование информационной системы
3. Разработка информационной системы
3.1 Физическая структура проекта
3.3 Реализация работы с данными
3.7 Требования к средствам обеспечения
4. Технико-экономическое описание разработки
4.1 Расчёт себестоимости программного продукта
Выводы главы
В данной главе была проанализирована БД ФИАС в формате КЛАДР, было определено, что она состоит из четырёх таблиц, часть из которых содержит дублирующийся данные, а некоторые столбцы и вовсе были пустыми. Далее производилось проектирование основных таблиц БД мобильного приложения: субъекты РФ, административные районы, населённые пункты (города, сёла, деревни и т.д.), улицы и таблица домов, была так же построена иерархическая модель данных рис. 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 не достигала пятисот мегабайт.