Files
Wallenc/Report/Пояснительная_записка_ПытковРЕ.typ

99 lines
6.3 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "@preview/modern-g7-32:0.2.0": abstract, appendix-heading, appendixes, enum-numbering, gost
#set enum(numbering: enum-numbering)
#set heading(numbering: "1.1.1.1")
#show: gost.with(
ministry: "Министерство науки и высшего образования Российской Федерации",
organization: (
full: "Федеральное государственное автономное образовательное учреждение высшего образования «Южный федеральный университет»",
short: "ЮФУ",
),
about: "пояснительной записке",
subject: "разработке мобильного приложения Wallenc — универсального кошелька для безопасного хранения данных на небезопасных хранилищах без собственного сервера",
approved-by: (
name: "Беликов А. Н.",
position: "старший преподаватель кафедры системного анализа и телекоммуникаций",
),
manager: (
name: "Беликов А. Н.",
position: "научный руководитель ВКР, старший преподаватель",
),
city: "Таганрог",
year: 2026,
performers: (
(name: "Пытков Р. Е.", position: "студент гр. КТбо4-9"),
),
)
#import "includes/common.typ": pz-fig
#abstract(
"мобильное приложение",
"клиентское шифрование",
"Android",
"vault",
"zero-knowledge",
"синхронизация",
)[
Пояснительная записка посвящена разработке мобильного приложения Wallenc клиентского кошелька для безопасного хранения данных на недоверенных хранилищах без собственного сервера приложения. Описаны анализ предметной области и аналогов, формирование требований, проектирование архитектуры и пользовательского интерфейса, программная реализация на Kotlin (Android, Jetpack Compose, Room, Hilt), тестирование и краткая экономическая оценка. Реализованы управление локальными и удалёнными vault, клиентское AES-шифрование, OAuth Яндекс, служебное хранение метаданных в Room; спроектирован контур синхронизации без передачи ключей провайдеру. Исходный код размещён в приватном репозитории Gitea ЮФУ. Полный листинг исходных файлов приложение А; программная документация приложение Б.
]
#include "includes/abstract-en.typ"
#outline()
#include "includes/intro.typ"
#include "includes/ch01.typ"
#include "includes/ch02.typ"
#include "includes/ch03.typ"
#include "includes/ch04.typ"
#include "includes/ch05.typ"
#include "includes/ch06.typ"
#include "includes/conclusion.typ"
#include "includes/abbreviations.typ"
// Заголовок списка источников задаётся в gost (bibliography.title).
#bibliography("references.bib")
#show: appendixes
#appendix-heading("обязательное", level: 1)[Приложение А. Листинги исходного кода проекта Wallenc]
Полный листинг файлов, необходимых для сборки проекта (307 файлов), сформирован автоматически скриптом `Report/scripts/gen_listings.py` по конфигурации `Report/listings/listings.config.yaml`. Исключены каталоги `build/`, `**/generated/**` и бинарные артефакты.
#include "listings/generated/appendix-a.typ"
#appendix-heading("обязательное", level: 1)[Приложение Б. Программная документация]
#include "appendices/appendix-b.typ"
#appendix-heading("обязательное", level: 1)[Приложение В. Скриншоты пользовательского интерфейса]
#pz-fig("fig_05_local_vaults.jpg", [Локальные vault], "fig-05-app")
#pz-fig("fig_06_encrypt_dialog.jpg", [Диалог шифрования], "fig-06-app")
#pz-fig("fig_07_open_close_dialog.jpg", [Открытие и закрытие vault], "fig-07-app")
#pz-fig("fig_08_rename_delete_dialog.jpg", [Переименование и удаление], "fig-08-app")
#pz-fig("fig_09_remote_vaults.jpg", [Удалённые vault], "fig-09-app")
#pz-fig("fig_10_yandex_oauth.jpg", [OAuth Яндекс], "fig-10-app")
#pz-fig("fig_11_room_schema.png", [Схема Room], "fig-11-app")
#pz-fig("fig_12_tasks_screen.jpg", [Экран задач], "fig-12-app")
#pz-fig("fig_13_tasks_notification.jpg", [Уведомление о задачах], "fig-13-app")
#appendix-heading("обязательное", level: 1)[Приложение Г. Диаграммы архитектуры и процессов]
#pz-fig("fig_01_start_sync.png", [Старт и синхронизация], "fig-01-app")
#pz-fig("fig_02_vault_lifecycle.png", [Жизненный цикл vault], "fig-02-app")
#pz-fig("fig_03_navigation_hub.png", [Навигация и SyncWorker], "fig-03-app")
#pz-fig("fig_04_domain_class.png", [Классы domain], "fig-04-app")
#pz-fig("fig_14_context_system.png", [Контекстная диаграмма], "fig-14-app")
#pz-fig("fig_15_bpmn_vault.png", [BPMN vault], "fig-15-app")
#pz-fig("fig_16_dfd_level0.png", [DFD уровень 0], "fig-16-app")
#pz-fig("fig_17_use_case.png", [Прецеденты], "fig-17-app")
#pz-fig("fig_18_deployment.png", [Развёртывание], "fig-18-app")
#pz-fig("fig_19_clean_architecture.png", [Clean Architecture], "fig-19-app")
#pz-fig("fig_20_oauth_sequence.png", [OAuth sequence], "fig-20-app")
#pz-fig("fig_21_encrypt_flow.png", [Поток шифрования], "fig-21-app")
#pz-fig("fig_22_cjm_vault.png", [CJM], "fig-22-app")
#pz-fig("fig_23_module_deps.png", [Модули Gradle], "fig-23-app")