Files
interfaces/lab1/report/report.tex
2025-12-03 18:03:41 +03:00

1019 lines
120 KiB
TeX
Raw Permalink 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.

\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочно го интервала
\usepackage{moreverb} %для работы с листингами
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\usepackage{pdfpages} %для вставки других pdf файлов
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{float}
\usepackage{xcolor}
% \usepackage[paper=A4,DIV=12]{typearea}
\usepackage{pdflscape}
% \usepackage{lscape}
\usepackage{array}
\usepackage{multirow}
\renewcommand\verbatimtabsize{4\relax}
\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге
\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице
\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы
\usepackage{subcaption} %для подфигур
\usepackage{listings} %листинги
\usepackage{xcolor} % цвета
\usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений
\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}
\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях
\hypersetup{colorlinks,
allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)
% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ SQL}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
breaklines,
basicstyle=\footnotesize,
columns=fullflexible,
flexiblecolumns,
numbers=left,
numberstyle={\footnotesize},
keywordstyle=\color{blue},
inputencoding=cp1251,
extendedchars=true
}
\lstdefinelanguage{MyC}{
language=SQL,
% ndkeywordstyle=\color{darkgray}\bfseries,
% identifierstyle=\color{black},
% morecomment=[n]{/**}{*/},
% commentstyle=\color{blue}\ttfamily,
% stringstyle=\color{red}\ttfamily,
% morestring=[b]",\
% showstringspaces=false,
% morecomment=[l][\color{gray}]{//},
keepspaces=true,
escapechar=\%,
texcl=true
}
\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=24pt % абзацный отступ
\parskip=5pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц
% Настройка листингов
\lstset{
language=python,
extendedchars=\true,
inputencoding=utf8,
keepspaces=true,
% captionpos=b, % подписи листингов снизу
}
\begin{document} % начало документа
% НАЧАЛО ТИТУЛЬНОГО ЛИСТА
\begin{center}
\hfill \break
\hfill \break
\normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\
федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]}
\normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt]
\normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt]
\normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\
\hfill \break
\hfill \break
\hfill \break
\large{Лабораторная работа №1}\\
\large{разработка интерфейса пользователя для интерактивного приложения по теме}\\
\large{<<Организация семейного похода за грибами>>}\\
\large{по дисциплине}\\
\large{<<Разработка человеко-машинного интерфейса>>}\\
\hfill \break
\hfill \break
\end{center}
\small{
\begin{tabular}{lrrl}
\!\!\!Студент, & \hspace{2cm} & & \\
\!\!\!группы 5130201/20101 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\
\!\!\!Преподаватель & \hspace{2cm} & \underline{\hspace{3cm}} & Курочкин М. А. \\\\
&&\hspace{4cm}
\end{tabular}
\begin{flushright}
<<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2025г.
\end{flushright}
}
\hfill \break
% \hfill \break
\begin{center} \small{Санкт-Петербург, 2025} \end{center}
\thispagestyle{empty} % выключаем отображение номера для этой страницы
% КОНЕЦ ТИТУЛЬНОГО ЛИСТА
\newpage
\tableofcontents
\newpage
\section*{Введение}
\addcontentsline{toc}{section}{Введение}
Работа посвящена проектированию интерфейса приложения, помогающего семье организовать поход за грибами: от планирования до подведения итогов. Приложение рассчитано на семьи, которые хотят собирать грибы в пригородных лесах и координироваться в реальном времени. Оно объединяет подготовку (маршрут, снаряжение, приглашения), сопровождение в пути (навигация, контрольные точки, уведомления) и подведение итогов (отчёты, архив маршрутов, семейная «корзина»).
Рассматриваются особенности взаимодействия людей разных возрастов, ограничения лесной среды и способы сделать навигацию, связь и обмен находками удобными. Основные задачи исследования: структурировать потребности пользователей, обозначить типовые сценарии и оценить, какие интерфейсные решения снизят риски и упростят работу с приложением. Ключевые проблемы --- нестабильная связь, различия в цифровой грамотности и необходимость оперативно действовать в случае ЧП.
\newpage
\section{Описание предметной области}
% \addcontentsline{toc}{section}{Описание предметной области}
Походы за грибами представляют собой сочетание прогулки на природе, наблюдения за лесной средой и сбора съедобных грибов. Этот вид отдыха подходит для семей благодаря умеренной физической нагрузке, исследовательскому интересу и возможности приобщения детей к совместному отдыху на природе. Успешная организация такого похода требует знаний о сезонности, типах лесов, правилах безопасного сбора, а также правильной подготовке участников.
\subsection*{Особенности грибных походов}
Грибные походы проводятся в лесных массивах с благоприятными условиями для произрастания грибов: смешанных и хвойных лесах, рядом с влажными низинами, опушками и моховыми участками. Такой тип ландшафта распространён во многих регионах России.
Сезонность является ключевым фактором: массовое появление грибов обычно происходит после устойчивых дождей при температуре около 1520°С. Наиболее насыщенный сезон приходится на конец лета и осень, когда в лесах можно встретить как ранние сыроежки, так и поздние осенние опята.
\subsection*{Основные виды грибов}
В процессе семейного похода предпочтение отдаётся хорошо различимым съедобным видам, например, белому грибу (Рис.~\ref{fig:belyj}), подберёзовику (Рис.~\ref{fig:podberezovik}), подосиновику (Рис.~\ref{fig:podosinovik}), лисичке (Рис.~\ref{fig:lisichki}), маслёнку (Рис.~\ref{fig:maslenok}). Эти виды распространены в большинстве российских регионов. В хвойных массивах особенно часто встречаются лисички и маслята, тогда как в более зрелых сосновых борах нередко попадаются белые грибы.
Опасность представляют ядовитые двойники: ложные лисички (Рис.~\ref{fig:lozhnye_lisichki}), желчный гриб, бледная поганка (Рис.~\ref{fig:blednaya_poganka}). Поэтому в семейных походах особое внимание уделяется правильному распознаванию грибов (см. Рис.~\ref{fig:belyj}--\ref{fig:blednaya_poganka}).
% Картинки грибов
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\textwidth]{img/белый.jpg}
\caption{Белый гриб}
\label{fig:belyj}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\textwidth]{img/лисички.jpg}
\caption{Лисички}
\label{fig:lisichki}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\textwidth]{img/ложные_лисички.jpg}
\caption{Ложные лисички (ядовитый гриб)}
\label{fig:lozhnye_lisichki}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.3\textwidth]{img/подберёзовик.jpg}
\caption{Подберёзовик}
\label{fig:podberezovik}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.3\textwidth]{img/подосиновик.jpg}
\caption{Подосиновик}
\label{fig:podosinovik}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\textwidth]{img/маслёнок.jpg}
\caption{Маслёнок}
\label{fig:maslenok}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.3\textwidth]{img/бледная_поганка.jpg}
\caption{Бледная поганка (ядовитый гриб)}
\label{fig:blednaya_poganka}
\end{figure}
\newpage
\phantom{text}
\newpage
\subsection*{Подготовка к походу}
Организация семейного грибного похода начинается с выбора района, анализа погодных условий и планирования маршрута. Лесные массивы, расположенные рядом с удобными транспортными путями, позволяют сократить время в пути и уделить больше внимания сбору грибов. В крупных городах, подобных Санкт\mbox{-}Петербургу, этому способствует наличие лесов на удалении 50--90 минут езды, что делает походы возможными даже в формате однодневных выездов.
Перед выходом необходимо проверить прогноз погоды, наличие снаряжения и заряд мобильных устройств. Стандартная экипировка включает нож для грибов, корзину или вентилируемую тару, удобную непромокаемую одежду, защиту от насекомых и небольшую аптечку. Семьи часто берут с собой дополнительно сменную одежду и перекус, особенно при походах с детьми.
\subsection*{Процесс поиска и сбора}
Во время похода участники ориентируются по тропам, лесным просекам, ручьям и естественным ориентирам. В регионах с густой лесной сетью, важно уделять внимание ориентации, так как ландшафт может быть монотонным. Семейные группы обычно двигаются медленно, позволяя детям участвовать в поиске грибов и наблюдении за природой.
Собранный гриб аккуратно срезают ножом (Рис.~\ref{fig:srezanie}) или выкручивают, чтобы сохранить грибницу и избежать её повреждения. Грибы помещают в корзину, где обеспечивается циркуляция воздуха — это особенно важно в районах с повышенной влажностью.
% Картинка процесса сбора
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\textwidth]{img/срезание_гриба_ножом.jpg}
\caption{Срезание гриба ножом}
\label{fig:srezanie}
\end{figure}
\subsection*{Безопасность при семейных походах}
Безопасность — ключевой аспект. Участники должны соблюдать дистанцию, поддерживать визуальный или голосовой контакт и не отходить далеко от маршрута. Семьи активно используют мобильные приложения с картами, особенно в лесах, где местность может выглядеть однообразно и легко потерять ориентиры.
Основные меры безопасности включают использование яркой одежды, обработку от клещей, внимательный выбор маршрута и периодические переклички. Не рекомендуется собирать незнакомые грибы или заходить в заболоченные участки, особенно характерные для северных регионов с высоким уровнем влажности.
\subsection*{Обработка собранных грибов}
После возвращения грибы сортируют, удаляют повреждённые или сомнительные экземпляры и проводят первичную обработку. Влажный климат многих регионов приводит к тому, что грибы быстро теряют свежесть, поэтому их очистку нежелательно откладывать. Большинство видов требует термической обработки перед употреблением.
\newpage
\section{Цели приложения}
Цель приложения --- сделать семейные походы за грибами безопасными, продуктивными и комфортными для всех участников независимо от их возраста и цифровой грамотности. Приложение ориентировано на походы как форму семейного отдыха и совместного времяпрепровождения на природе; сбор грибов рассматривается как приятное дополнение, а не как основная задача заготовки. Приложение призвано превратить поход из разрозненной активности в слаженное семейное мероприятие с чётким планированием, надёжной координацией и возможностью сохранить положительные воспоминания в виде архива маршрутов и находок. Приложение должно помогать пользователям как на этапе планирования, так и на этапе проведения похода.
Этап планирования похода включает в себя выбор даты и времени начала похода, определение места сбора и списка участников, построение маршрута с контрольными точками, отправку приглашений и согласование с участниками времени и плана похода. Организатор должен определить транспорт и способ, как добраться до точки сбора, проверить погодные условия на выбранную дату. Необходимо составить список снаряжения и запасной одежды, распределить ответственность за их подготовку между участниками и проверить готовность перед началом похода. Если в походе участвуют дети, требуется определить ответственного взрослого за каждого ребёнка.
В ходе этапа проведения похода участники добираются до точки начала похода, осуществляют навигацию в лесу с помощью карт и компаса, используя построенный маршрут и контрольные точки, занимаются сбором грибов, стараются поддерживать связь друг с другом и отслеживать местоположение членов группы для обеспечения безопасности.
\section{Заинтересованные лица}
\begin{itemize}
\item \textbf{Родители-участники похода} --- взрослые члены семьи возрастом от 30 до 50 лет, непосредственно участвующие в сборе грибов и отвечающие за безопасность детей.
\item \textbf{Дети и подростки} --- младшие участники похода возрастом от 10 до 18 лет.
\item \textbf{Пожилые родственники-грибники} --- опытные грибники старшего поколения возрастом от 60 лет.
\item \textbf{Организатор похода} --- ответственное лицо (обычно один из родителей), координирующее планирование и проведение похода.
\end{itemize}
\section{Ожидания заинтересованных лиц}
\begin{itemize}
\item \textbf{Родители-участники} хотят обеспечить безопасность детей, не потеряться самим, иметь возможность быстро связаться в случае разделения группы. Ожидают простой интерфейс с крупными элементами, офлайн-карту и быстрый доступ к тревожной кнопке. Важна возможность видеть местоположение всех членов семьи.
\item \textbf{Дети и подростки} хотят весело провести время, найти свои первые грибы, не отстать от взрослых и получить признание за находки. Ожидают интересный и понятный интерфейс с игровыми элементами, возможность делиться фотографиями находок и получать достижения за вклад в общую корзину.
\item \textbf{Пожилые родственники} хотят поделиться опытом и знаниями о грибных местах, передать традиции, при этом комфортно пользоваться приложением. Ожидают крупные шрифты, минимальное число действий на экране.
\item \textbf{Организатор} хочет эффективно спланировать маршрут, проконтролировать сбор снаряжения, координировать действия группы. Ожидает инструменты совместного планирования: систему приглашений, чек-лист снаряжения, контроль состава группы, возможность отслеживать местоположение всех участников и быстро реагировать на отклонения от плана.
\end{itemize}
% \section{Критерии оценки результата}
% Успешность приложения оценивается по достижению каждой из поставленных целей через следующие измеримые показатели:
% \textbf{Безопасность походов:}
% \begin{itemize}
% \item Время отправки экстренного сигнала SOS с координатами --- не более 3 секунд с момента нажатия кнопки.
% \item Доля успешных отправок координат при слабой связи (2G/EDGE) --- не менее 90\%.
% \item Процент участников, чьё местоположение видно организатору в реальном времени --- не менее 95\%.
% \item Среднее время обнаружения значительного отклонения от маршрута (более 500 м) --- не более 2 минут.
% \end{itemize}
% \textbf{Продуктивность и эффективность:}
% \begin{itemize}
% \item Время планирования похода от начала до отправки приглашений --- не более 5 минут.
% \item Доля походов с заполненным чек-листом снаряжения --- не менее 80\%.
% \item Процент найденных грибов с фотофиксацией и геометками --- не менее 60\%.
% \item Количество повторных походов на основе сохранённых маршрутов --- увеличение на 40\% по сравнению с планированием «с нуля».
% \end{itemize}
% \textbf{Комфорт и удобство использования:}
% \begin{itemize}
% \item Субъективная удовлетворённость пользователей (Net Promoter Score) --- не менее 40.
% \item Оценка удобства интерфейса (System Usability Scale) --- не менее 75 баллов.
% \item Количество критических ошибок при выполнении основного сценария --- не более одной на пользователя.
% \item Доля пользователей, успешно завершивших первый поход без обращения в поддержку --- не менее 85\%.
% \end{itemize}
% \textbf{Доступность для разных возрастов:}
% \begin{itemize}
% \item Время освоения базовых функций (создание маршрута, отправка SOS) пожилыми пользователями (65+) --- не более 10 минут с инструкцией.
% \item Успешность выполнения критических задач детьми (10--14 лет) без помощи взрослых --- не менее 90\%.
% \item Доля пожилых пользователей, использующих голосовые подсказки --- не менее 60\%.
% \end{itemize}
% \textbf{Работа в условиях ограниченной связи:}
% \begin{itemize}
% \item Процент функций, доступных в полностью офлайн-режиме --- не менее 70\%.
% \item Успешность синхронизации данных после восстановления связи --- не менее 95\%.
% \item Объём предварительно закешированных карт на типовой поход --- не более 50 МБ.
% \end{itemize}
% \textbf{Семейная интеграция и вовлечённость:}
% \begin{itemize}
% \item Среднее количество участников в походе --- не менее 3 человек.
% \item Доля походов с активным участием двух и более поколений --- не менее 70\%.
% \item Количество записей в семейном архиве за сезон (май--октябрь) --- не менее 5 походов на семью.
% \end{itemize}
\section{Планируемые результаты использования приложения}
\textbf{Повышение безопасности участников походов:}
\begin{itemize}
\item Снижение числа случаев потери ориентации и заблудившихся участников благодаря обмену геометками в реальном времени, контрольным точкам и автоматическим уведомлениям об отклонениях от маршрута.
\item Сокращение времени реагирования на экстренные ситуации за счёт мгновенной отправки координат службам спасения и волонтёрам с информацией о составе группы и состоянии участников.
\item Снижение рисков для детей и пожилых участников через постоянный мониторинг их местоположения родителями и организатором похода.
\end{itemize}
\textbf{Улучшение качества семейного отдыха:}
\begin{itemize}
\item Снижение стресса и тревожности у организатора и участников благодаря структурированному планированию, автоматическим напоминаниям и контролю готовности к походу.
\item Упрощение координации группы в лесу через визуализацию местоположения всех участников на карте.
\item Повышение вовлечённости всех членов семьи в совместную активность за счёт общей корзины находок, обмена фотографиями и возможности отмечать интересные места.
\item Сокращение времени на организационные вопросы (сбор снаряжения, согласование времени, выбор маршрута) через централизованное планирование и чек-листы.
\item Сохранение приятных воспоминаний через архив маршрутов с фотографиями и заметками, что мотивирует к повторным походам и формированию семейных традиций.
\end{itemize}
\section{Описание технической платформы}
Приложение ориентировано на мобильные устройства с операционными системами Android и iOS, оснащённые модулем GPS для определения местоположения, фотокамерой. Мобильная версия является основной, поскольку участники похода используют телефоны непосредственно в лесу для навигации, фотофиксации грибов и экстренной связи.
При проектировании необходимо учесть специфические условия эксплуатации. В лесной местности следует ожидать нестабильное или полностью отсутствующее покрытие мобильной сети, поэтому критически важные функции должны работать в офлайн-режиме с последующей синхронизацией данных. Устройства часто используются в перчатках, при плохой освещённости или под дождём, что требует крупных элементов управления и высокой контрастности интерфейса. Необходимо минимизировать энергопотребление, так как походы длятся несколько часов без возможности подзарядки, а GPS-модуль и постоянная работа экрана существенно расходуют батарею.
\section{Формулировка требований к системе}
\textbf{Требования к автономной работе и офлайн-режиму:}
\begin{itemize}
\item Приложение должно поддерживать работу в офлайн-режиме с предварительным кешированием карт выбранного лесного массива (объём 30--50 МБ на регион).
\item Система должна обеспечивать работу основных функций (навигация, фиксация находок, мониторинг группы) без подключения к интернету с последующей синхронизацией данных при восстановлении связи.
\item Приложение должно автоматически переключаться на компасный режим навигации при слабом GPS-сигнале с указанием направления к последней известной контрольной точке.
\end{itemize}
\textbf{Требования к планированию и организации:}
\begin{itemize}
\item Система должна автоматизировать рутинные операции: расчёт времени прохождения маршрута, проверку погоды, напоминания о снаряжении.
\item Приложение должно предоставлять инструменты совместного планирования: систему приглашений, чек-листы снаряжения с распределением ответственности, контроль состава группы.
\item Система должна автоматически рассчитывать примерное время прохождения между контрольными точками и общую длительность похода.
\item Приложение должно отправлять автоматические напоминания участникам о проверке снаряжения за 2 часа до выхода и о зарядке устройств за 5 часов.
\end{itemize}
\textbf{Требования к навигации и координации:}
\begin{itemize}
\item Система должна отображать местоположение всех участников группы на карте в реальном времени с обновлением позиций каждые 30 секунд.
\item Приложение должно автоматически отправлять уведомления организатору при отклонении участника от группы более чем на заданное расстояние: для детей — 150 метров, для взрослых — 250 метров, для пожилых участников — 200 метров.
\item Система должна предоставлять голосовые подсказки с направлением к контрольной точке, предупреждениями об отклонении от маршрута и напоминаниями о времени встречи.
\end{itemize}
\textbf{Требования к безопасности и экстренным ситуациям:}
\begin{itemize}
\item Приложение должно обеспечивать отправку сигнала SOS с точными GPS-координатами, составом группы, запасом батареи, последней контрольной точкой и историей перемещений через интеграцию с системой «Система-112».
\item Кнопка SOS должна быть доступна с любого экрана приложения и работать даже при минимальной связи.
\item Приложение должно предоставлять таймер обратного отсчёта 5 секунд с возможностью отмены для предотвращения случайных нажатий кнопки SOS.
\end{itemize}
\textbf{Требования к интерфейсу и доступности:}
\begin{itemize}
\item Система должна предоставлять крупные элементы управления и высокую контрастность интерфейса для использования в перчатках, при плохой освещённости или под дождём.
\end{itemize}
\textbf{Требования к фиксации и учёту находок:}
\begin{itemize}
\item Система должна автоматически сохранять GPS-координаты и время и погодные условия.
\item Приложение должно создавать общую семейную корзину с отображением всех находок в реальном времени и указанием автора каждой находки.
\end{itemize}
\textbf{Требования к архивированию и отчётности:}
\begin{itemize}
\item Приложение должно сохранять пройденный GPS-трек, общее время и расстояние похода, количество и авторство находок.
\item Приложение должно поддерживать сохранение маршрутов как шаблонов для повторного использования.
\item Приложение должно предоставлять функции для экспорта и отправки фотографий находок.
\end{itemize}
\textbf{Технические требования:}
\begin{itemize}
\item Приложение должно поддерживать мобильные устройства с операционными системами Android и iOS, оснащённые модулем GPS и фотокамерой.
\end{itemize}
\section{Модель пользователей приложения}
\textbf{Основные персонажи:}
\textbf{Мария Петрова, 38 лет --- организатор семейных походов (персонаж 1).} Проживает в Санкт-Петербурге, Калининский район, работает менеджером в крупной компании. Уверенный пользователь смартфона, активно использует навигаторы, мессенджеры и облачные сервисы. Замужем, двое детей (12 и 7 лет). Семья выезжает за грибами 2--3 раза за сезон, обычно по выходным в сентябре-октябре.
\textit{Типичный маршрут:} электричка с Финляндского вокзала до одной из станций Всеволожского района (Токсово, Каменка), время в пути около 2--3 часов. Далее пешком 15--25 минут до знакомых мест в смешанном лесу. Общая продолжительность похода 6--7 часов, включая дорогу и сбор грибов.
\textit{Цели и потребности:} эффективно организовать поход --- согласовать дату и состав участников, создать маршрут и чек-лист снаряжения, убедиться, что все взяли необходимое снаряжение. Во время похода контролировать местоположение детей в лесу, иметь возможность быстро отправить сигнал о помощи. Опасается потерять из виду младшую дочь или отца, переживает за разрядку телефонов. Хочет сохранять маршруты для повторных походов и вести семейную статистику находок.
\vspace{0.3cm}
\textbf{Иван Семёнович Петров, 67 лет --- опытный грибник, дедушка (персонаж 2).} Пенсионер, всю жизнь прожил в Ленинградской области. Собирает грибы с детства, знает грибные места в окрестностях Комарово, Солнечного и Репино. Использует кнопочный телефон для звонков, недавно получил в подарок от дочери бюджетный Android-смартфон, но осваивает его медленно.
\textit{Цели и потребности:} поделиться знаниями о грибных местах с внуками, научить их отличать съедобные грибы от ядовитых, показать секретные полянки, где он собирает грибы много лет. Хочет чувствовать себя безопасно в лесу, иметь возможность вызвать помощь простым действием (одна кнопка), не разбираться в сложных меню. Важно крупное отображение информации, голосовые подсказки. Готов использовать смартфон, если интерфейс простой и понятный.
\vspace{0.3cm}
\textbf{Алиса Петрова, 12 лет --- школьница, любительница фотографии (персонаж 3).} Учится в 7 классе, живёт с родителями в Калининском районе. Активный пользователь смартфона, любит фотографировать природу, общается с друзьями в мессенджерах, играет в мобильные игры. В походы ездит с родителями и дедушкой, для неё это интересное приключение и возможность сделать красивые фото для соцсетей.
\textit{Типичный маршрут:} сопровождает семью в походы, обычно идёт рядом с мамой или дедушкой. Любит исследовать окрестности, но иногда увлекается и отходит далеко. После нескольких случаев, когда её искали 15--20 минут, родители настаивают на постоянной связи через приложение.
\textit{Цели и потребности:} весело провести время, найти необычные грибы и сфотографировать их для коллекции, получить похвалу от родителей и дедушки за находки. Хочет видеть своё местоположение относительно семьи, делиться фотографиями находок в семейном чате. Не любит, когда родители слишком контролируют, но понимает необходимость безопасности.
\vspace{0.3cm}
\textbf{Общий контекст использования приложения:} походы проходят в лесных массивах Всеволожского района Ленинградской области (Токсово, Каменка, Васкелово). Местность холмистая, преимущественно сосновые и смешанные леса, множество озёр. Покрытие мобильной сети нестабильное: у станций и населённых пунктов есть 4G, в глубине леса сигнал слабый или отсутствует. Погода осенью переменчива: температура +5..+15°C, часто дожди и туманы, необходимы тёплая одежда и перчатки. Световой день короткий (в октябре темнеет к 18:00), поэтому важно успеть вернуться до темноты. Устройства находятся в чехлах, карманах курток, рюкзаках, часто используются в перчатках при плохой освещённости.
% \section{Ментальная модель пользователя, метафоры и идиомы}
% Пользователи воспринимают поход как совместное мероприятие с чёткими точками встречи и таймерами возвращения. Интерфейс опирается на метафоры: \textit{карта тропы} (основной экран с маршрутом), \textit{корзина} для списка найденных грибов, \textit{поляна} как место встречи группы и общения (семейный чат). Идиомы: перетаскивание контрольных точек, чек-лист с галочками, крупная красная кнопка SOS, значок компаса для ориентации.
\section{Квалификация пользователя}
Квалификация пользователей приложения рассматривается по двум ключевым параметрам: владение цифровыми технологиями (навигация, использование мобильных приложений, работа с картами и геолокацией) и знание предметной области (грибы, лесная местность, правила безопасного сбора). Идеальный пользователь должен сочетать оба навыка, однако в реальности семейные группы объединяют людей с разным уровнем компетенций, которые дополняют друг друга: кто-то является экспертом в грибах, но слабо владеет технологиями, другие уверенно работают с приложениями, но нуждаются в консультациях по определению видов.
\textbf{Мария (персонаж 1)} --- уверенный пользователь цифровых технологий: свободно владеет мессенджерами, навигаторами, облачными сервисами, быстро осваивает новые приложения. В грибах разбирается на базовом уровне: знает основные съедобные виды (белые, подосиновики, лисички), но в сложных случаях полагается на опыт отца или консультируется по справочникам. Умеет читать карты и пользоваться GPS-навигацией.
\textbf{Иван Семёнович (персонаж 2)} --- эксперт в грибной охоте с 50-летним стажем. Безошибочно определяет десятки видов грибов, знает сезоны плодоношения, особенности местности и секретные полянки, накопленные за годы походов. Передаёт традиционные знания о бережном сборе и правилах поведения в лесу. При этом цифровые технологии даются ему сложно: только начал осваивать смартфон, нуждается в крупном шрифте, голосовых подсказках и простых интерфейсах без вложенных меню. Может выполнять простые действия (нажать кнопку SOS, посмотреть карту), но настройку приложения доверяет внучке.
\textbf{Алиса (персонаж 3)} --- продвинутый пользователь смартфона для своего возраста: уверенно работает с мессенджерами, соцсетями, камерой, играми. Быстро осваивает новые приложения, понимает интерфейсы, может помочь дедушке разобраться с телефоном. В грибах пока новичок: знает на вид несколько распространённых видов (белые, мухоморы, лисички), но постепенно учится у дедушки. Любит фотографировать находки и потом вместе с семьёй определять виды. Хорошо ориентируется по карте на телефоне, понимает принципы геолокации.
\section{Задачи, решаемые приложением}
Приложение решает комплекс задач, охватывающих все этапы семейного похода за грибами: от предварительной подготовки до сохранения результатов. Задачи сформулированы исходя из ожиданий заинтересованных лиц и специфики использования приложения в условиях лесной местности с ограниченной связью.
\textbf{Задачи этапа планирования и подготовки:}
\begin{itemize}
\item \textbf{Определение параметров похода} --- помочь организатору выбрать и зафиксировать дату и время начала похода, точку сбора участников и место проведения.
\item \textbf{Планирование логистики} --- показать организатору варианты транспорта до точки сбора с расписанием электричек от ближайших станций, рассчитать время в пути до точки сбора.
\item \textbf{Информирование о погодных условиях} --- отобразить прогноз погоды на выбранную дату, время восхода и захода солнца, предупредить о неблагоприятных условиях (дождь, низкая температура) и дать рекомендации по снаряжению.
\item \textbf{Формирование группы и согласование плана} --- обеспечить отправку приглашений всем участникам с указанием даты, времени, точки сбора и маршрута. Каждый участник должен видеть план похода.
\item \textbf{Построение маршрута} --- предоставить инструменты для создания маршрута с контрольными точками, автоматически рассчитать расстояния и время прохождения между точками, общую продолжительность похода.
\item \textbf{Совместная подготовка снаряжения} --- обеспечить возможность распределения ответственности за снаряжение между участниками. Каждый член семьи должен видеть свои задачи и подтверждать их выполнение.
\item \textbf{Обеспечение автономности} --- предоставить возможность предварительной загрузки офлайн-карт, маршрутов и справочной информации о грибах, чтобы критически важные функции работали без подключения к интернету в лесу.
\end{itemize}
\textbf{Задачи этапа проведения похода:}
\begin{itemize}
\item \textbf{Поддержание координации группы} --- позволить всем участникам видеть местоположение друг друга и своевременно получать уведомления о критических событиях (кто-то отстал, пора возвращаться, приближается темнота).
\item \textbf{Фиксация и учёт находок} --- обеспечить простой способ документирования найденных грибов с автоматическим сохранением координат, времени и фотографий. Создавать общую семейную корзину, где все видят вклад каждого участника, что повышает вовлечённость и мотивацию.
\end{itemize}
\textbf{Задачи обеспечения безопасности:}
\begin{itemize}
\item \textbf{Быстрое реагирование на экстренные ситуации} --- обеспечить мгновенную отправку сигнала о помощи с точными координатами, составом группы и другой критически важной информацией в службы спасения. Кнопка SOS должна быть доступна с любого экрана и работать даже при минимальной связи.
\item \textbf{Интеграция с профессиональными службами спасения} --- автоматически передавать структурированные данные о группе в систему 112 при экстренном вызове.
\end{itemize}
\section{Описание основных процессов}
Приложение поддерживает полный цикл семейного похода за грибами, от подготовки до подведения итогов. Ниже описаны ключевые процессы, которые автоматизируются или упрощаются с помощью приложения.
\textbf{1. Планирование похода (Мария).} Мария за день до похода открывает приложение на домашнем компьютере или в смартфоне. Выбирает лесной массив из списка знакомых мест (Комарово, Зеленогорск) или находит новое место на карте. Приложение показывает прогноз погоды, время восхода и захода солнца, рекомендуемое время выезда с учётом расписания электричек. Мария строит маршрут: размещает стартовую точку у станции, добавляет 3--4 контрольные точки в лесу (места предполагаемого сбора грибов и встречи группы), указывает финальную точку возврата. Приложение автоматически рассчитывает примерное время прохождения между точками и общую длительность похода. Мария загружает офлайн-карты выбранного региона (приложение показывает объём: ~30--50 МБ) для работы без связи в лесу. Затем отправляет приглашения участникам: мужу, детям, отцу Ивану, указывая время и место сбора. Каждый получает уведомление с маршрутом и может подтвердить участие.
\textbf{2. Подготовка снаряжения (Мария + семья).} После подтверждения участников Мария создаёт чек-лист снаряжения: выбирает готовый шаблон "Осенний поход на 4--5 часов" или создаёт свой список. В чек-лист входят: корзины для грибов, ножи, аптечка, вода, перекус, powerbank, дождевики, компас. Мария распределяет ответственность: муж берёт аптечку и воду, она — корзины и перекус, Иван — ножи. Каждый участник видит свои назначения в приложении и отмечает галочками выполнение. За 2 часа до выхода приложение отправляет напоминание всем участникам проверить список. Вечером накануне приходит напоминание зарядить телефоны и powerbank.
\textbf{3. Навигация в походе (все участники).} В лесу все участники используют приложение для навигации. На экране отображается карта с текущим положением каждого (Мария видит всех, остальные видят маршрут и контрольные точки), направление к ближайшей контрольной точке (стрелка-компас), расстояние до неё и примерное время прибытия. Иван использует упрощённый режим "Проводник" с крупными элементами и голосовыми подсказками: "Поверните направо через 50 метров", "Вы отклонились от маршрута на 200 метров". Если участник отходит от группы дальше установленного радиуса (для детей — 150 метров, для взрослых — 250 метров, для пожилых — 200 метров), приложение автоматически отправляет уведомление Марии. При слабом GPS-сигнале приложение переключается на компасный режим с указанием направления к последней известной контрольной точке.
\textbf{4. Фиксация находок (все участники).} Когда кто-то из семьи находит гриб, он фотографирует его через приложение. Приложение автоматически сохраняет координаты места находки и текущее время. Пользователь может добавить краткую заметку (текстовую или голосовую): "Белый гриб под сосной" или "Здесь много лисичек". Иван добавляет экспертные комментарии: "Это подосиновик, съедобный, лучше собирать молодые". Находка автоматически добавляется в общую семейную корзину с указанием автора. Все участники видят в реальном времени, кто и что нашёл, могут оставлять реакции (лайки, поздравления). Алиса получает баллы за каждую находку и выполнение квестов ("Найди 3 разных вида грибов"). Места с фотографиями сохраняются на карте как "грибные точки" для будущих походов.
\textbf{5. Координация и безопасность (Мария + все).} В течение похода Мария периодически проверяет местоположение всех участников на карте. Если кто-то долго не движется, она отправляет сообщение в семейный чат: "Иван, всё в порядке?". При приближении к контрольной точке приложение напоминает о времени встречи. За час до установленного времени возврата (например, в 16:00 нужно быть на станции) приложение предупреждает: "Через час планируется возврат. Текущее расстояние до станции: 2,5 км, примерное время: 45 минут". Если группа отклоняется от графика, Мария корректирует маршрут: пропускает одну контрольную точку, выбирает более короткий путь обратно. Елена дома видит на веб-карте, где находится семья, и периодически получает автообновления: "Группа дошла до точки 2 из 4".
\textbf{6. Экстренная ситуация (любой участник → МЧС, доверенные контакты).} Если возникает опасная ситуация (кто-то заблудился, травма, встреча с диким животным), любой участник может нажать крупную красную кнопку SOS в приложении. Приложение показывает таймер обратного отсчёта 5 секунд с возможностью отмены (чтобы избежать случайных нажатий). После подтверждения автоматически отправляется сигнал тревоги в службу спасения через систему 112 и всем участникам группы. Одновременно уведомления получают доверенные контакты (например, родственники дома). Сообщение содержит структурированные данные: точные GPS-координаты, состав группы, запас батареи на устройствах, историю передвижения, медицинскую информацию участников (если указана). Диспетчер службы 112 принимает вызов и передаёт информацию в поисково-спасательную службу МЧС. Спасатели получают через диспетчерскую систему полный пакет данных о группе, могут проанализировать маршрут, определить вероятное направление движения и спланировать зону поиска. При наличии связи диспетчер может связаться с организатором Марией для уточнения деталей ситуации.
\textbf{7. Подведение итогов (Мария + семья).} После возвращения домой семья просматривает результаты похода. Мария открывает раздел "Архив" и видит: пройденный GPS-трек на карте, общее время похода (4 часа 20 минут), пройденное расстояние (8,3 км), количество собранных грибов (37 штук), авторство находок (Иван — 18, Мария — 10, Алиса — 9). Все фотографии грибов отображаются на карте как точки, можно кликнуть и увидеть, где именно был найден каждый гриб. Мария сохраняет маршрут как шаблон "Комарово осень 2025" для повторного использования. Экспортирует отчёт в PDF для семейного альбома с фотографиями, картой и статистикой. Елена просматривает результаты на планшете, комментирует фото: "Этот гриб лучше не брать, похож на ложный опёнок". Алиса делится красивыми фотографиями находок в соцсетях, получает новый значок "Грибной следопыт уровень 2".
\section{Описание функций}
Функции приложения организованы в соответствии с основными процессами похода и призваны автоматизировать рутинные операции, повысить безопасность и удобство использования для всех возрастных групп.
\textbf{Функции планирования и подготовки:}
\begin{itemize}
\item \textbf{Конструктор маршрутов} с возможностью размещения контрольных точек на карте, автоматическим расчётом расстояний и времени прохождения между точками, сохранением маршрутов как шаблонов для повторного использования.
\item \textbf{Интеграция с прогнозом погоды и расписанием транспорта}: автоматическое отображение погодных условий для выбранного дня, времени восхода и захода солнца, расписания электричек от ближайших станций.
\item \textbf{Кеширование офлайн-карт} выбранного региона с отображением объёма памяти (обычно 30--50 МБ), автоматическим обновлением при изменении маршрута, возможностью предварительной загрузки нескольких регионов.
\item \textbf{Совместный чек-лист снаряжения} с готовыми шаблонами ("Осенний поход", "Весенний поход", "С детьми"), распределением ответственности между участниками, отслеживанием выполнения в реальном времени, автоматическими напоминаниями перед выходом.
\end{itemize}
\textbf{Функции навигации и координации в походе:}
\begin{itemize}
\item \textbf{Режим реального времени} с отображением местоположения всех участников на карте, обновлением позиций каждые 30--60 секунд (в зависимости от заряда батареи), автоматическими уведомлениями при отклонении участника от группы более чем на заданное расстояние.
\item \textbf{Адаптивная навигация}: основной режим с полной картой для уверенных пользователей, упрощённый режим "Проводник" для пожилых с крупными кнопками и увеличенным шрифтом, компасный режим при слабом GPS-сигнале.
\item \textbf{Голосовые подсказки} с настраиваемой частотой оповещений: направление к контрольной точке, предупреждения об отклонении от маршрута, напоминания о времени встречи, уведомления о приближении к цели.
\item \textbf{Семейный чат} с поддержкой текстовых и голосовых сообщений, быстрыми реакциями (эмодзи, лайки), отправкой фотографий, автоматическим прикреплением геолокации к сообщениям.
\item \textbf{Мониторинг состояния группы} для организатора: панель с информацией о заряде батареи на устройствах всех участников, времени последнего обновления позиции, расстоянии до контрольных точек, прогнозируемом времени возврата.
\end{itemize}
\textbf{Функции фиксации находок:}
\begin{itemize}
\item \textbf{Камера с автоматическим геотегированием}: при фотографировании гриба автоматически сохраняются GPS-координаты, время находки, погодные условия, создаётся запись в семейной корзине.
\item \textbf{Общая семейная корзина} с отображением всех находок в реальном времени, указанием автора, возможностью добавления текстовых или голосовых комментариев, системой реакций (одобрение, вопрос, предупреждение).
\item \textbf{Справочник грибов} с описаниями распространённых видов, эталонными фотографиями, указанием съедобности, сезонов плодоношения, двойников, возможностью сравнения найденного гриба с базой.
\item \textbf{Карта грибных мест}: автоматическое сохранение координат успешных находок, отображение "грибных точек" на карте с фильтрацией по видам и сезонам, возможность добавления заметок ("здесь было много белых в прошлом году").
\end{itemize}
\textbf{Функции безопасности и экстренной связи:}
\begin{itemize}
\item \textbf{Кнопка SOS} с крупным размером и ярким цветом, доступная с любого экрана, таймером обратного отсчёта 5 секунд для предотвращения случайных нажатий, возможностью быстрой отмены.
\item \textbf{Интеграция со службами спасения}: автоматическая передача структурированных данных в систему 112, экспорт координат и треков в стандартных форматах (GPX, KML) для профессионального оборудования МЧС.
\end{itemize}
\textbf{Функции подведения итогов и архивирования:}
\begin{itemize}
\item \textbf{Автоматическое формирование отчёта о походе}: сохранение пройденного GPS-трека, статистики (время, расстояние, количество находок), всех фотографий с привязкой к карте и времени.
\end{itemize}
\section{Описание структуры диалога и его обоснование}
Структура диалога приложения построена на основе задач, решаемых пользователями. Приложение два основных состояния, соответствующих этапам планирования и непосредственно проведения похода.
В состоянии планирования пользователю отображаются даты, время и место сбора, список участников, список снаряжения, карта с контрольными точками. Все участники похода видят эти данные, но только организатор может их редактировать.
Состояние проведения похода разделено на несколько экранов:
\begin{itemize}
\item Маршрут --- экран с компасом и картой, на которой отображается местоположение других участников похода и контрольные точки.
\item Корзина --- просмотр находок группы с фотографиями, координатами и указанием автора.
\item Чат --- координация участников через текстовые сообщения.
\item Справочник --- информация о видах грибов для идентификации находок.
\item SOS --- режим экстренного вызова, доступный по кнопке SOS. Кнопка SOS находится на всех экранах, когда приложение находится в состоянии проведения похода.
\end{itemize}
Во время активного похода переключение между экранами <<Маршрут>>, <<Корзина>>, <<Чат>> и <<Справочник>> осуществляется через навигационную панель в нижней части экрана.
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/graph.png}
\caption{Структура диалога.}
\label{fig:graph}
\end{figure}
\newpage
\phantom{text}
\newpage
\section{Описание структуры команд пользователей}
\textbf{Тип 1} - команды без параметров:
\begin{itemize}
\item Открытие приложения.
\item Переход между экранами с помощью навигационной панели.
\item Закрытие приложения.
\end{itemize}
\textbf{Тип 2} - команды с одним оператором.
\begin{itemize}
\item Выбор участника похода.
\item Выбор снаряжения.
\item Выбор контрольных точек.
\item Выбор даты и времени сбора.
\item Выбор места сбора.
\item Выбор контрольных точек.
\item Фиксация находок.
\end{itemize}
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/commands.png}
\caption{Структура команд пользователей.}
\label{fig:commands}
\end{figure}
\newpage
\section{Технология ввода данных}
Приложение поддерживает несколько технологий ввода данных, адаптированных под условия использования в лесу и разную цифровую грамотность пользователей. Основным методом взаимодействия являются жесты касания и свайпы по сенсорному экрану. Все формы спроектированы с минимальным количеством обязательных полей: геоданные (координаты, время) и метаданные фотографий подставляются автоматически при фиксации находок. Для упрощения работы пожилым пользователям предусмотрены увеличенные области нажатия (минимум 48×48 пикселей). При работе в перчатках или с мокрым экраном доступен упрощённый режим с крупными элементами и подтверждением критических действий.
\section{Описание ошибок пользователей}
При использовании приложения пользователи могут допускать ошибки. Ниже описаны основные типы ошибок и методы их смягчения.
\textbf{1. Случайное нажатие кнопки SOS.}
\textit{Описание:} Пользователь случайно активирует экстренный сигнал при доставании телефона из кармана, надевании перчаток или передаче устройства другому участнику, что приводит к ложной тревоге и необоснованному беспокойству доверенных контактов.
\textit{Метод обработки:} Кнопка SOS имеет двухэтапную активацию: после нажатия запускается обратный отсчёт 5 секунд с кнопкой отмены. Вибрация и звуковое предупреждение при активации.
\textbf{2. Неверное размещение контрольных точек на маршруте.}
\textit{Описание:} Организатор при планировании похода ставит контрольные точки в недоступных местах (болото, густой кустарник, частная территория) или слишком далеко друг от друга, что делает маршрут опасным или невыполнимым.
\textit{Метод обработки:} Приложение анализирует размещение точек и выдаёт предупреждения: <<Точка находится на расстоянии более N км от предыдущей>>, <<Участок может быть труднопроходимым>>, <<Рядом отмечена запретная зона>>. Используются данные топографических карт, отзывы других пользователей и информация от лесничих.
\textbf{3. Закрытие приложения во время активной навигации.}
\textit{Описание:} Пользователь случайно сворачивает или закрывает приложение, пытаясь очистить память телефона, принять звонок или сделать фотографию на основную камеру, теряя доступ к навигации и координатам группы.
\textit{Метод обработки:} Приложение продолжает отслеживать местоположение в фоновом режиме и отправляет уведомление <<Навигация активна, вернуться в приложение>> с кнопкой быстрого доступа. При закрытии из режима активной навигации показывается диалог с предупреждением: <<Вы уверены? GPS-отслеживание будет остановлено>>. Для возврата достаточно нажать на постоянное уведомление в шторке. Критические события (отклонение от маршрута, SOS от других участников) вызывают полноэкранное уведомление даже при закрытом приложении.
\textbf{4. Опоздание на контрольную точку.}
\textit{Описание:} Участник увлекается поиском грибов, не следит за временем и опаздывает на запланированную встречу группы в контрольной точке, что вызывает беспокойство остальных участников и задержку всего похода.
\textit{Метод обработки:} Приложение отправляет каскадные напоминания: за 30 минут до контрольного времени, за 15 минут с указанием расстояния до точки и времени в пути, за 5 минут с усиленным звуковым сигналом и вибрацией. При опоздании более чем на 10 минут уведомление получает организатор, который может скорректировать план или связаться с опаздывающим через чат.
\textbf{5. Неправильное определение вида гриба.}
\textit{Описание:} Неопытный пользователь ошибочно идентифицирует ядовитый гриб как съедобный, добавляет его в корзину с неверной меткой, что может привести к отравлению при употреблении.
\textit{Метод обработки:} При добавлении находки приложение анализирует фотографию с помощью алгоритмов компьютерного зрения и предлагает наиболее вероятные виды с указанием уровня уверенности. Для потенциально опасных грибов (бледная поганка, мухомор, ложные опята) выводится красное предупреждение: <<ВНИМАНИЕ! Возможно ядовитый гриб>>.
\textbf{6. Недостаточная зарядка батареи телефона.}
\textit{Описание:} Пользователь активно использует камеру, экран и GPS, не следит за уровнем заряда, батарея разряжается в середине похода, связь с группой теряется.
\textit{Метод обработки:} Приложение прогнозирует время автономной работы на основе текущего расхода энергии и предупреждает: <<При таком расходе заряда хватит на 2,5 часа. До конца похода 4 часа. Рекомендуется включить режим экономии>>. При достижении 30\%, 20\% и 10\% заряда отправляются напоминания с советами (уменьшить яркость, отключить фоновую синхронизацию, использовать режим <<Только навигация>>). Участники видят уровень заряда других членов группы.
\textbf{7. Отклонение от запланированного маршрута.}
\textit{Описание:} Участник случайно или намеренно уходит в сторону от маршрута, следуя за грибами или исследуя местность, не замечая отклонения, что может привести к потере ориентации и разделению группы.
\textit{Метод обработки:} Приложение непрерывно отслеживает положение относительно маршрута и устанавливает <<коридор безопасности>> с дифференцированной шириной в зависимости от возраста участника: для детей — 150 метров, для взрослых — 250 метров, для пожилых участников — 200 метров. При выходе за пределы коридора срабатывает голосовое предупреждение: <<Вы отклонились от маршрута на 150 метров>> и отображается стрелка направления возврата. Организатор и все остальные участники получают уведомления.
\section{Описание дизайна экранной формы}
Дизайн экранных форм приложения разработан в соответствии с требованиями международного стандарта ISO 9241-161 (Эргономика взаимодействия человек-система. Часть 161: Руководство по элементам графического пользовательского интерфейса) и адаптирован под специфические условия использования: лесная местность, плохая освещённость, использование в перчатках, разный уровень цифровой грамотности пользователей.
\subsection{Типографика и шрифты}
В приложении используется шрифтовая система, обеспечивающая высокую читабельность в сложных условиях освещения и при быстром просмотре информации на ходу.
\textbf{Основной шрифт:} Inter или Roboto --- современные гротескные шрифты без засечек, специально разработанные для экранов с высокой читабельностью при малых размерах. Эти шрифты имеют открытые апертуры (внутренние просветы букв), что улучшает различимость символов при плохом освещении.
\textbf{Размеры шрифтов:}
\begin{itemize}
\item \textbf{Базовый размер текста:} 16--18pt для основного контента (описания, инструкции, названия грибов). Это на 2--4pt больше стандартных 14pt, что обусловлено необходимостью чтения на ходу и при плохой видимости.
\item \textbf{Заголовки экранов:} 22--24pt, полужирное начертание, для быстрой идентификации текущего раздела.
\item \textbf{Навигационные данные:} 18--20pt для расстояний, времени, направлений --- критически важная информация, которую нужно считывать мгновенно.
\item \textbf{Минимальный размер:} не менее 14pt для второстепенной информации (метки времени, подписи к иконкам), что соответствует рекомендациям ISO 9241-161.
\end{itemize}
\textbf{Межстрочный интервал:} 1.4--1.5 от размера шрифта для улучшения читабельности блоков текста. Для коротких надписей (кнопки, метки) можно использовать 1.2--1.3.
\textbf{Насыщенность:} основной текст использует regular (400) или medium (500) начертание, заголовки и активные элементы --- semibold (600) или bold (700). Тонкие начертания (light, thin) не используются из-за плохой видимости на солнце и в тумане.
\subsection{Цветовая палитра}
Цветовая схема построена на природных оттенках с учётом контрастности и психологического восприятия цветов в контексте лесной прогулки.
\textbf{Основные цвета:}
\begin{itemize}
\item \textbf{Лесной зелёный \#2D5F3F} --- основной цвет бренда, используется для маршрутов на карте, пройденных участков пути, успешных действий. Ассоциируется с природой, безопасностью, спокойствием.
\item \textbf{Янтарный оранжевый \#E67E22} --- акцентный цвет для активных элементов, кнопок действия, контрольных точек. Хорошо виден в лесу, привлекает внимание, ассоциируется с теплом и энергией.
\item \textbf{Тревожный красный \#C0392B} --- используется исключительно для критических элементов: кнопка SOS, предупреждения об опасности, низкий заряд батареи. Сигнализирует о необходимости немедленных действий.
\item \textbf{Небесный голубой \#3498DB} --- для информационных элементов, ссылок, текущего местоположения на карте. Нейтральный, не конфликтует с зелёным фоном карты.
\end{itemize}
\textbf{Нейтральная палитра (оттенки серого):}
\begin{itemize}
\item Тёмно-серый \#2C3E50 --- основной цвет текста на светлом фоне.
\item Средний серый \#7F8C8D --- второстепенный текст, неактивные элементы.
\item Светло-серый \#ECF0F1 --- фон карточек, разделители.
\item Почти белый \#FAFAFA --- основной фон приложения.
\end{itemize}
\textbf{Контрастность:} все текстово-фоновые комбинации обеспечивают коэффициент контрастности не менее 4.5:1 для обычного текста и 3:1 для крупного текста (18pt+), что соответствует уровню AA стандарта WCAG 2.1. Для критических элементов (SOS, предупреждения) используется усиленный контраст 7:1 (уровень AAA).
\textbf{Семантика цвета:}
\begin{itemize}
\item \textbf{Зелёный:} успех, завершение, безопасность (отметка на контрольной точке, подтверждение снаряжения).
\item \textbf{Оранжевый:} действие, внимание, активность (кнопки "Начать поход", "Добавить гриб", контрольные точки).
\item \textbf{Красный:} опасность, критическая ситуация, запрет (SOS, отклонение от маршрута, разрядка батареи <15\%).
\item \textbf{Голубой:} информация, навигация, нейтральное состояние (текущая позиция, информационные подсказки).
\item \textbf{Серый:} неактивное, второстепенное, фоновое (отключенные кнопки, пройденные точки).
\end{itemize}
\subsection{Размеры и отступы}
Система размеров построена на модульной сетке с базовым шагом 8pt (пикселей), что обеспечивает визуальную согласованность и упрощает адаптацию под разные размеры экранов.
\textbf{Размеры интерактивных элементов:}
\begin{itemize}
\item \textbf{Минимальный размер касания:} 48×48pt (примерно 9×9 мм на физическом экране) для стандартного режима, что соответствует рекомендациям ISO 9241-161 и позволяет уверенно нажимать пальцем в перчатке.
\item \textbf{Основные кнопки действий:} 56×56pt, увеличенный размер для часто используемых элементов ("Добавить гриб", "Открыть чат").
\item \textbf{Кнопка SOS:} 80×80pt, максимальный размер для мгновенного доступа в критической ситуации, постоянно видна в углу экрана.
\item \textbf{Расстояние между интерактивными элементами:} не менее 8pt, чтобы избежать случайных нажатий.
\end{itemize}
\textbf{Отступы и воздух:}
\begin{itemize}
\item Внутренние отступы кнопок: 12--16pt по вертикали, 20--24pt по горизонтали.
\item Отступы между секциями экрана: 24--32pt для визуального разделения.
\item Поля экрана от края: 16--20pt, чтобы контент не прижимался к границам.
\item Расстояние между строками в списках: 16pt для комфортного чтения и случайных нажатий.
\end{itemize}
\subsection{Состояния элементов}
В соответствии с ISO 9241-161, все интерактивные элементы должны иметь визуально различимые состояния.
\textbf{Состояния кнопок:}
\begin{itemize}
\item \textbf{Обычное (default):} полный цвет заливки, чёткие границы.
\item \textbf{Наведение/фокус (hover/focus):} лёгкое затемнение цвета на 10--15\%, появление обводки 3pt голубого цвета для фокуса.
\item \textbf{Нажатие (pressed):} затемнение на 20--25\%, лёгкое уменьшение размера (scale 0.95) для тактильного отклика.
\item \textbf{Неактивное (disabled):} полупрозрачность 40\%, серый цвет, курсор "not-allowed".
\item \textbf{Загрузка (loading):} анимированный спиннер внутри кнопки, текст сохраняется.
\end{itemize}
\textbf{Индикация выбора:} для элементов списка, переключателей, чекбоксов используется изменение цвета фона (светло-зелёный \#E8F5E9 для выбранного), появление галочки-иконки, увеличение высоты элемента на 2--4pt.
\newpage
\section{Шаблон экранной формы}
Шаблон экранной формы определяет единую структуру для всех основных экранов мобильного приложения. Он обеспечивает визуальную согласованность, предсказуемость навигации и соответствие принципам дизайна, описанным в предыдущем разделе.
\subsection{Структура шаблона}
Шаблон состоит из следующих обязательных компонентов:
\begin{itemize}
\item \textbf{Шапка приложения (Header)} --- содержит логотип и название приложения "По грибы". Фиксирована в верхней части экрана, имеет зелёный градиентный фон (\#2D5F3F → \#3A7A52), высоту 64pt. Логотип размером 36×36pt расположен слева, название выполнено белым шрифтом 24pt, полужирное начертание.
\item \textbf{Основная область контента (Main)} --- прокручиваемая область для размещения содержимого конкретного экрана. Включает заголовок экрана (22pt, полужирный), описание при необходимости (16pt, серый цвет), карточки с информацией и элементы управления. Отступы от краёв 20pt, отступ снизу 80pt для навигационной панели.
\item \textbf{Нижняя навигационная панель (Navigation)} --- фиксирована внизу экрана, высота 72pt, белый фон с тенью. Содержит 5 навигационных кнопок с иконками и подписями: "Маршрут", "Корзина", "Главная", "Чат", "Справочник". Активная вкладка выделяется зелёным цветом текста и подчёркиванием снизу.
\item \textbf{Кнопка SOS} --- расположена в правом нижнем углу над навигацией, размер 80×80pt, красный цвет (\#C0392B), круглая форма с белой обводкой 4pt. Постоянно видима на всех экранах, имеет анимацию пульсации для привлечения внимания.
\end{itemize}
\subsection{Основные элементы интерфейса}
Шаблон использует набор унифицированных элементов интерфейса, обеспечивающих визуальную согласованность и предсказуемость взаимодействия.
\textbf{Кнопка SOS} --- критически важный элемент безопасности, доступный на всех экранах. Размер 80×80pt обеспечивает уверенное нажатие даже в стрессовой ситуации. Красный цвет \#C0392B мгновенно привлекает внимание, белая обводка 4pt создаёт контраст с любым фоном.
\begin{figure}[h!]
\centering
\includegraphics[width=0.2\linewidth]{img/elements/sos-button.png}
\caption{Кнопка SOS}
\label{fig:sos-button}
\end{figure}
\newpage
\textbf{Карточка (Card)} --- базовый контейнер для группировки связанного контента. Белый фон \#FFFFFF, радиус скругления 12pt, отступы 16pt. Тень средней интенсивности. Используется для информации о маршруте, участниках, находках.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/card.png}
\caption{Карточка контента}
\label{fig:card}
\end{figure}
\textbf{Основная кнопка} --- минимальная высота 48pt (стандарт ISO 9241-161 для сенсорных элементов), радиус 8pt, шрифт 16pt полужирный. Основная кнопка (primary) имеет оранжевый цвет \#E67E22, вторичная (secondary) --- светло-серый \#ECF0F1. При нажатии кнопка уменьшается до 97\% размера для тактильного отклика.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/button-primary.png}
\caption{Основная и вторичная кнопки}
\label{fig:button-primary}
\end{figure}
\textbf{Элемент списка} --- используется для участников, находок, контрольных точек. Иконка 40×40pt в скруглённом контейнере слева, заголовок 17pt полужирный, подзаголовок 14pt серый цвет. Отступы 14pt по вертикали, 16pt по горизонтали. Белый фон, радиус 12pt, лёгкая тень.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/list-item.png}
\caption{Элемент списка}
\label{fig:list-item}
\end{figure}
\newpage
\textbf{Поисковое поле} --- высота 48pt, радиус 12pt, иконка лупы 20pt слева, текст 16pt. Фон белый с лёгкой тенью. Placeholder серого цвета \#7F8C8D. Используется в справочнике грибов для быстрого поиска по названию.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/search-bar.png}
\caption{Поисковое поле}
\label{fig:search-bar}
\end{figure}
\textbf{Навигационная панель} --- высота 72pt, 5 кнопок равной ширины. Иконки 24pt, подписи 11pt. Активная вкладка: зелёный цвет текста \#2D5F3F, полужирное начертание, подчёркивание снизу 3pt высотой. Неактивные: серый цвет \#7F8C8D, обычное начертание.
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\linewidth]{img/elements/navigation-bar.png}
\caption{Навигационная панель}
\label{fig:navigation-bar}
\end{figure}
\subsection{Визуальные особенности}
Шаблон реализует описанную ранее цветовую палитру и типографику:
\begin{itemize}
\item Карточки контента имеют белый фон, радиус скругления 12pt, лёгкую тень для создания эффекта "слоя".
\item Элементы списков включают иконку слева (40×40pt в скруглённом контейнере), заголовок (17pt, полужирный) и подзаголовок (14pt, серый).
\item Все интерактивные элементы реагируют на нажатие визуальным эффектом (уменьшение до 95--98\% размера).
\item Общий фон приложения --- светло-серый \#FAFAFA для снижения контрастности и уменьшения утомляемости глаз.
\end{itemize}
Шаблон рассчитан на стандартную ширину мобильного экрана 375pt (iPhone, большинство Android-устройств) и может адаптироваться по высоте от 667pt до 844pt.
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\linewidth]{img/template-screen.png}
\caption{Шаблон экранной формы мобильного приложения "По грибы!"}
\label{fig:template}
\end{figure}
\newpage
\phantom{text}
\newpage
\section{Эскизы экранных форм}
На основе разработанного шаблона созданы экранные формы для ключевых процессов приложения. Каждая форма реализует описанные ранее функции и соответствует принципам дизайна ISO 9241-161.
\subsection{Экран планирования похода}
Экран планирования реализует функции конструктора маршрутов и подготовки к походу. Пользователь (организатор) может выбрать маршрут на карте, установить дату и время, просмотреть прогноз погоды и пригласить участников.
\textbf{Основные элементы экрана:}
\begin{itemize}
\item \textbf{Предварительный просмотр карты} --- интерактивная область высотой 200pt с наложенным маршрутом, кнопка "Выбрать на карте" для перехода к полноэкранной карте.
\item \textbf{Информация о маршруте} --- карточка с основными параметрами: район (Токсово), расстояние (8.3 км), прогнозируемое время (4ч 30мин).
\item \textbf{Селекторы даты и времени} --- крупные нажимаемые элементы с иконками календаря и часов, отображают выбранные значения.
\item \textbf{Виджет погоды} --- показывает температуру, описание погоды, время восхода/заката, скорость ветра для выбранной даты.
\item \textbf{Список участников} --- карточки с аватарами, именами, ролями и статусами подтверждения. Кнопка "Пригласить ещё" для добавления новых участников.
\item \textbf{Кнопки действий} --- "Сохранить черновик" (вторичная) и "Создать поход" (основная, оранжевая).
\end{itemize}
Экран оптимизирован для быстрого планирования: все ключевые параметры видны без прокрутки, часто используемые действия доступны крупными кнопками. Прогноз погоды помогает организатору принять решение о целесообразности похода.
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.30\linewidth}
\centering
\includegraphics[width=\textwidth]{img/planning-screen.png}
\caption{Карта}
\label{fig:planning-screen}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.30\linewidth}
\centering
\includegraphics[width=\textwidth]{img/planning-screen2.png}
\caption{Когда идём?}
\label{fig:planning-screen2}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.30\linewidth}
\centering
\includegraphics[width=\textwidth]{img/planning-screen3.png}
\caption{Участники похода}
\label{fig:planning-screen3}
\end{subfigure}
\caption{Экран планирования похода}
\label{fig:planning-screens}
\end{figure}
\newpage
\subsection{Экран навигации в походе}
Экран навигации --- основной экран во время активного похода. Занимает полноэкранный режим с картой, поверх которой размещены информационные панели и элементы управления.
\textbf{Основные элементы экрана:}
\begin{itemize}
\item \textbf{Полноэкранная карта} --- отображает местность, маршрут, контрольные точки и местоположение всех участников группы в реальном времени. Текущая позиция пользователя выделена синей пульсирующей точкой с анимацией расширяющегося кольца.
\item \textbf{Панель состояния} --- расположена сверху, показывает критически важную информацию: уровень сигнала сети (3G/4G), заряд батареи (78\%), время в пути (2:15). Полупрозрачный белый фон для видимости на любой карте.
\item \textbf{Компас-навигатор} --- крупная карточка над группой участников, содержит визуальный компас с направлением движения (стрелка указывает на север), название целевой точки ("До точки встречи №2"), расстояние до неё (1.2 км) и прогнозируемое время прибытия (примерно 25 мин). Зелёный градиентный круг компаса выделяет элемент.
\item \textbf{Маркеры на карте} --- визуальные метки: аватары участников (Иван, Алиса), оранжевый круг с иконкой (контрольная точка).
\end{itemize}
Экран оптимизирован для использования в движении: все элементы управления имеют увеличенный размер (56×56pt), информация сгруппирована в легко читаемые карточки с тенями для отделения от карты. Анимация пульсации текущей позиции помогает быстро найти себя на карте даже при беглом взгляде.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/navigation-screen.png}
\caption{Экран навигации в походе с картой и информационными панелями}
\label{fig:navigation-screen}
\end{figure}
\newpage
\subsection{Экран семейной корзины}
Экран отображает все найденные грибы с возможностью фильтрации, статистику похода и вклад каждого участника.
\textbf{Основные элементы:}
\begin{itemize}
\item \textbf{Статистика} --- карточка с градиентным фоном показывает общее количество грибов (37), количество видов (6) и время в пути (2:15).
\item \textbf{Вклад участников} --- три карточки с аватарами и счётчиками находок для каждого члена семьи (Иван: 18, Мария: 10, Алиса: 9).
\item \textbf{Карточки находок} --- каждая содержит фото гриба, название, количество экземпляров, автора находки, время и местоположение. Ядовитые грибы выделены предупреждающими бейджами и комментариями.
\end{itemize}
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.34\linewidth}
\centering
\includegraphics[width=\textwidth]{img/basket-screen.png}
% \caption{Общий вид}
\label{fig:basket-screen}
\end{subfigure}
\hspace{1cm}
\begin{subfigure}[b]{0.34\linewidth}
\centering
\includegraphics[width=\textwidth]{img/basket-screen2.png}
% \caption{Детали}
\label{fig:basket-screen2}
\end{subfigure}
\caption{Экран семейной корзины с находками}
\label{fig:basket-screens}
\end{figure}
\newpage
\subsection{Экран справочника грибов}
Справочник содержит информацию о распространённых съедобных и ядовитых грибах с фотографиями и описаниями.
\textbf{Основные элементы:}
\begin{itemize}
\item \textbf{Поисковая строка} --- быстрый поиск гриба по названию.
\item \textbf{Фильтры} --- фильтрация по категориям: все, съедобные, ядовитые, условно-съедобные.
\item \textbf{Карточки грибов} --- фотография, название (русское и латинское), бейдж съедобности, сезон сбора, описание признаков, метки мест обитания. Ядовитые грибы выделены красной рамкой и предупреждающим блоком о возможной путанице с похожими съедобными грибами.
\end{itemize}
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/guide-screen.png}
\caption{Экран справочника грибов}
\label{fig:guide-screen}
\end{figure}
\newpage
\subsection{Экран семейного чата}
Чат обеспечивает оперативную коммуникацию между участниками похода с возможностью отправки текста, фотографий и геолокации.
\textbf{Основные элементы:}
\begin{itemize}
\item \textbf{Область сообщений} --- прокручиваемый список с сообщениями участников, системными уведомлениями о достижении контрольных точек. Сообщения других участников слева с аватарами, свои сообщения справа в зелёных пузырях.
\item \textbf{Типы сообщений} --- текстовые, фотографии грибов, карточки с геолокацией (показывают расстояние до отправителя), системные уведомления (начало похода, достижение точек).
\item \textbf{Панель ввода} --- кнопки быстрых действий (камера, отправить геолокацию), поле ввода текста, кнопка отправки. Все элементы увеличенного размера для удобного использования в перчатках.
\end{itemize}
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.34\linewidth}
\centering
\includegraphics[width=\textwidth]{img/chat-screen.png}
\label{fig:chat-screen}
\end{subfigure}
\hspace{1cm}
\begin{subfigure}[b]{0.34\linewidth}
\centering
\includegraphics[width=\textwidth]{img/chat-screen2.png}
\label{fig:chat-screen2}
\end{subfigure}
\caption{Экран семейного чата}
\label{fig:chat-screens}
\end{figure}
\newpage
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}
В ходе работы выполнено проектирование интерфейса приложения для организации семейных походов за грибами. Описана предметная область и сформулированы цели приложения. Определены заинтересованные лица и их ожидания. Сформулированы требования к системе. Построена модель пользователей с описанием персонажей и их квалификации. Определены задачи приложения и описаны основные процессы. Перечислены функции приложения. Разработана структура диалога в виде графа состояний. Описаны технологии ввода данных и типичные ошибки пользователей. Разработан дизайн экранных форм: определены цветовая схема, типографика, иконки и элементы управления. Создан шаблон экранной формы и эскизы основных экранов приложения.
\newpage
\section*{Список литературы}
\addcontentsline{toc}{section}{Список литературы}
\vspace{-1.5cm}
\begin{thebibliography}{0}
\bibitem{novikov}
Алан Купер. Об интерфейсе. Основы проектирования взаимодействия ИМВ, 2-е изд.
Пер. с англ. — 2009. — 688 с.
\end{thebibliography}
\end{document}