Файл: Руководство пользователя для разработанной системы. Пятый раздел приводит данные по информационной безопасности приложения.docx

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

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

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

Добавлен: 23.11.2023

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

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

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

  • бизнес-уровень.

Это средний слой архитектуры. Этот уровень включает в себя логические вычисления и операции, выполняемые на этом уровне. Он обрабатывает команду, принимает логические решения и выполняет расчеты. Он также выступает в качестве промежуточного программного обеспечения между двумя окруженными слоями, то есть уровнем представления и уровнем данных. Он обрабатывает данные между этими двумя слоями. Этот слой реализует бизнес-логику и вычисления. Этот уровень также проверяет входные условия перед вызовом метода из уровня данных. Это гарантирует правильность ввода данных перед продолжением, а также часто может гарантировать правильность выходных данных. Эта проверка ввода называется бизнес-правилами;

  • уровень данных.

Этот уровень используется для подключения бизнес-уровня к базе данных или источнику данных. Он содержит методы, которые используются для выполнения операций с базой данных, таких как вставка, удаление, обновление и т. д. Этот уровень содержит хранимые процедуры, которые используются для запросов к базе данных. Следовательно, этот уровень устанавливает соединение с базой данных (или с внешней API, будь то REST или GraphQL) и выполняет функции в базе данных.

Разработка приложения ведется на Dart, языке, который используется фреймворком Flutter. В фреймоворке есть механизм для добавления специальных пакетов. Список использованных в разработке пакетов приведен в листинге 2.1.

dependencies:

adaptive_scrollbar: ^2.1.2

artemis: ^7.0.0-beta

auto_route: ^3.2.3+1

badges: ^2.0.2

bloc: ^8.0.2

cupertino_icons: ^1.0.2

dio: ^4.0.4

dropdown_search: ^2.0.1

equatable: ^2.0.3

flutter:

sdk: flutter

flutter_bloc: ^8.0.1

flutter_dotenv: ^5.0.2

flutter_form_builder: ^7.1.1

flutter_localizations:

sdk: flutter

flutter_localized_locales: ^2.0.3

font_awesome_flutter: ^10.0.0

form_builder_extra_fields: ^7.1.0

form_builder_validators: ^8.1.1

freezed: ^1.0.1

get_it: ^7.2.0

gql: null

gql_dio_link: 0.1.0

gql_exec: 0.3.0

gql_transform_link: 0.2.0

graphql_flutter: ^5.0.0

hive: ^2.1.0

hive_flutter: null

intl: ^0.17.0

json_annotation: ^4.1.0

jwt_decode: ^0.3.1

logger: ^1.1.0

normalize: ^0.5.5

qr_flutter: ^4.0.0

shared_preferences: ^0.5.5

storage_repository: ^1.1.7
dev_dependencies:

auto_route_generator: ^3.2.3

build_runner: ^2.1.7

flutter_gen_runner: ^4.1.5

flutter_lints: ^1.0.0

flutter_test:

sdk: flutter

json_serializable: ^6.0.1


Листинг 2.1 – Список используемых пакетов

С помощью Flutter можно создать кроссплатформенное приложение под OS Windows, MacOS, Web, Android и iOS. Для того что бы собрать под MacOS и iOS необходимо наличие самой операционной системы MacOS, с помощью XCode. Необходимость его использования обусловлена тем, что для приложений под эти системы нужны сертификаты, которые генерируются только в XCode.

3.5 Описание основных зависимостей проекта

3.5.1 Пакет Intl


Пакет предоставляет средства интернационализации и локализации, включая перевод сообщений, множественное число и роды, форматирование и разбор даты / номера, а также двунаправленный текст.

Локализуемые сообщения записываются как функции, которые возвращают результат вызова Intl.message. Функция может быть запущена в программе до того, как будет выполнен какой-либо перевод, и просто вернет строку сообщения. Строка также можно извлечь в файл и затем может быть модифицирована так, чтобы она возвращала переведенную версию без изменения исходной программы [4].

3.5.2 Пакет Provider


Зависимость, которая предоставляет ряд возможностей при разработке приложения:

  • упрощенное распределение / распоряжение ресурсами;

  • отложенная загрузка;

  • значительно уменьшенный шаблон по сравнению с созданием нового класса каждый раз;

  • повышенная масштабируемость для классов с механизмом прослушивания, которая экспоненциально растет.

3.5.3 Пакет Auto Route


AutoRoute ­ это пакет для генерации маршрутов, в которой автоматически создается все необходимое для навигации.

В Flutter маршруты используются для перехода между экранами.

Класс Navigator предоставляет возможность навигации по названному маршруту из любой части приложения с использованием общего идентификатора. В некоторых случаях также может понадобиться передать аргументы в именованный маршрут. Например, можно перейти к маршруту /user и передать информацию о пользователе по этому маршруту.

3.5.4 Пакет artemis


Плагин Flutter, который предоставляет возможность сгенерировать код для взаимодействия с GraphQL сервером из доступной схемы.

Плагин использует стандартный механизм Flutter для создания генерированного кода всех запросов, мутаций и объектов доступных внутри GraphQL схемы.

3.5.5 Пакет storage_repository


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

Характерной чертой этой зависимости является то, что данные, которые сохраняются туда персистенты и хранятся между запусками приложения в шифрованном виде.

3.5.6 Пакет flutter_localizations


Стандартный плагин Flutter для предоставления возможностей интернационализации приложения.

Предоставляет инструменты и генерацию кода для всевозможных доступных локалей. Все переводы хранятся в специальных arb файлах.

3.5.7 Пакет hive


Кроссплатформенная библиотека, предоставляющая хранилище по типу «ключ-значение» написанное на чистом Dart.

Одна из транзитивных зависимостей требуемых для storage_repositoryдля того, чтобы он мог работать на мобильной платформе.

3.5.8 Пакет Build Runner


Пакет build_runner предоставляет конкретный способ генерации файлов с использованием кода Dart вне таких инструментов, как pub. В отличие от pub / build, файлы всегда генерируются непосредственно на диске, а перестройки - инкрементные.

3.6 Разработка архитектуры приложения

Для реализации всей функциональности приложения в клиентской части существует лишь одна основная роль. Таким образом, учитывая аутентификацию можно выделить две основные структурные части:

  • аутентификация;

  • сотрудник.

По серверной части мы используем IdentityServer для авторизации и клиентов, а HotChocolate для поддержки GraphQL в ASP.NET Core. Таким образом можно выделить такие структурные части как:

  • ASP.NET Core;

  • EntityFramework;

  • PostgreSQL;

  • IdentityServer;

  • HotChocolate.

Большинство приложений должны распознавать пользователей. Знание личности пользователя позволяет приложению безопасно сохранять пользовательские данные и предоставлять персонализированный опыт работы на любом устройстве. IdentityServer предоставляет основную работу с авторизацией и OAuth.

Вход в приложение, использующее IdentityServer, можно осуществить либо с помощью FirebaseUI как готовое решение предоставляющее все средства для работы с OAuth, либо ручная интеграция одного или нескольких методов входа в приложение.

Для вышеперечисленных компонентов был проведен поиск и подбор соответствующих инструментов и технологий, а также архитектурного стиля. В качестве архитектурного стиля для нашего клиентского решения был выбран трёхслойный архитектурный стиль. Для компонентов решения были выбраны следующие технологии:


  • Flutter – в качестве технологии проектирования кроссплатформенного приложения;

  • PostgreSQL – в качестве базы данных приложения;

ASP.NET Core – в качестве технологии проектирования серверного приложения.

3.7 Выводы по разделу

В данном разделе были подробно рассмотрены ключевые компоненты для разработки и реализации программного средства мобильного приложения.

Реализация пользовательского приложения производилась при помощи фреймворка Flutter. Был составлен и реализован набор компонентов для отображения, добавления, удаления и взаимодействия различных сущностей. Также была реализована система разграничения доступа к функционалу приложения для различных групп пользователей. Была внедрена валидация введённых данных перед отправкой формы, а также сообщения об ошибке при отправке данных формы на сервер.

Программное средство позволяет создавать заказы, подписки и управлять персоналом. Реализовано наличие двух ролей, пользователя и сотрудника, а также аутентификация и обновление позиции курьера в реальном времени.

4 Руководство пользователя системы и тестирование (анализ безопасности системы)