Черновик ПЗ

This commit is contained in:
2026-05-25 19:34:22 +03:00
parent adc3730b8d
commit 2b139a18b3
72 changed files with 3570 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
#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")