граф состояний
This commit is contained in:
3
lab1/report/.gitignore
vendored
3
lab1/report/.gitignore
vendored
@@ -2,4 +2,5 @@
|
||||
!.gitignore
|
||||
!report.tex
|
||||
!img
|
||||
!img/**
|
||||
!img/**
|
||||
!*.dot
|
||||
69
lab1/report/graph.dot
Normal file
69
lab1/report/graph.dot
Normal file
@@ -0,0 +1,69 @@
|
||||
digraph MushroomHikeApp {
|
||||
rankdir=LR;
|
||||
fontsize=10;
|
||||
node [shape=rectangle, style=rounded, fontsize=10];
|
||||
|
||||
// --- Основные состояния участников похода (a–m) ---
|
||||
a [label="a) Начальное состояние\n(главный экран)"];
|
||||
b [label="b) Планирование похода\n(маршрут, точки, погода, офлайн-карты)"];
|
||||
c [label="c) Управление участниками\n(приглашения, роли, доверенные контакты)"];
|
||||
d [label="d) Чек-лист снаряжения\n(шаблон, распределение, контроль сборов)"];
|
||||
e [label="e) Активная навигация\n(карта, GPS, режимы отображения)"];
|
||||
f [label="f) Фиксация находки\n(фото, координаты, заметки)"];
|
||||
g [label="g) Семейная корзина\n(все находки группы)"];
|
||||
h [label="h) Семейный чат\n(сообщения, фото, геолокация)"];
|
||||
i [label="i) Справочник грибов\n(виды, съедобность, двойники)"];
|
||||
k [label="k) Панель организатора\n(мониторинг, управление маршрутом)"];
|
||||
l [label="l) Архив походов\n(список завершённых походов)"];
|
||||
m [label="m) Детальный просмотр похода\n(трек, события, статистика)"];
|
||||
|
||||
|
||||
// --- SOS (красный, отдельный) ---
|
||||
j [label="j) Экстренный режим (SOS)", color="red", fontcolor="red", style="rounded,bold", penwidth=2];
|
||||
|
||||
// --- Технические невидимые точки для "стрелок из ниоткуда" ---
|
||||
fromAnywhereToA [shape=point, width=0, height=0, style=invis];
|
||||
fromAnywhereToSOS [shape=point, width=0, height=0, style=invis];
|
||||
|
||||
// Стрелки "из ниоткуда"
|
||||
fromAnywhereToA -> a [label="25. Переход\nна главный экран", style=dashed];
|
||||
fromAnywhereToSOS -> j [label="24. SOS\n(из любого состояния)", style=dashed, color="red", fontcolor="red"];
|
||||
|
||||
// --- Переходы (кроме SOS и возврата на главный) ---
|
||||
|
||||
a -> b [label="1. Создать поход"];
|
||||
|
||||
a -> e [label="2. Присоединиться (день похода)"];
|
||||
a -> d [label="3. Присоединиться (подготовка)"];
|
||||
|
||||
b -> c [label="4. Управление\nучастниками"];
|
||||
|
||||
c -> d [label="5. Чек-лист"];
|
||||
b -> d [label="6. Чек-лист"];
|
||||
|
||||
d -> e [label="7. Начать поход"];
|
||||
b -> e [label="8. Начать поход"];
|
||||
|
||||
e -> f [label="9. Фиксировать\nнаходку"];
|
||||
f -> e [label="10. Сохранить\nи вернуться"];
|
||||
|
||||
e -> g [label="11. Открыть корзину"];
|
||||
g -> e [label="12. Назад к\nнавигации"];
|
||||
|
||||
e -> h [label="13. Открыть чат"];
|
||||
h -> e [label="14. Назад к\nнавигации"];
|
||||
|
||||
f -> i [label="15. Открыть\nсправочник"];
|
||||
g -> i [label="16. Открыть\nсправочник"];
|
||||
i -> f [label="17. Назад\nк фиксации"];
|
||||
i -> g [label="18. Назад\nк корзине"];
|
||||
|
||||
e -> k [label="19. Панель\nорганизатора"];
|
||||
k -> e [label="20. Назад к\nнавигации"];
|
||||
|
||||
e -> l [label="21. Завершить\nпоход"];
|
||||
|
||||
a -> l [label="22. Открыть\nархив"];
|
||||
l -> m [label="23. Открыть\nпоход"];
|
||||
|
||||
}
|
||||
@@ -458,16 +458,113 @@
|
||||
\end{itemize}
|
||||
|
||||
\section{Описание структуры диалога и его обоснование}
|
||||
Диалоговая модель основана на мастер-пошаговом подходе: сначала пользователь формирует маршрут, затем подтверждает состав группы и включает режим навигации. Такой порядок минимизирует когнитивную нагрузку и уменьшает вероятность пропуска ключевых шагов. Линейность важна для пожилых пользователей, поэтому избегаются глубокие вложенные меню и скрытые жесты.
|
||||
|
||||
\section{Описание структуры команд пользователей}
|
||||
Основные команды расположены на нижней панели: \textit{Маршрут}, \textit{Группа}, \textit{Корзина}, \textit{SOS}. Дополнительные действия скрыты за контекстным меню карты. Команды формулируются глаголами действия ("Скачать карту", "Отметить точку", "Отправить сигнал"), что снижает неоднозначность и помогает пользователям с разным опытом.
|
||||
Структура диалога приложения организована в виде графа состояний, отражающего полный цикл взаимодействия пользователя с системой: от первоначальной авторизации до завершения похода и анализа результатов. Граф учитывает различные роли пользователей (организатор, участник, дистанционный наблюдатель, доверенный волонтёр) и обеспечивает быстрый доступ к критически важным функциям безопасности из любого состояния.
|
||||
|
||||
\section{Физическая реализация команд пользователей}
|
||||
Команды выполняются через крупные кнопки и свайпы. В режиме «Проводник» используются физические кнопки громкости как горячие клавиши: двойное нажатие --- отправка геометки, долгое удержание --- SOS. Такой подход учитывает перчатки, мокрые экраны и минимизирует вероятность промаха.
|
||||
\textbf{Приложение может находиться в следующих состояниях:}
|
||||
|
||||
\begin{itemize}
|
||||
\item[a)] \textbf{Начальное состояние.} Главный экран с выбором основных действий: создание нового похода, присоединение к существующему по приглашению, просмотр архива прошлых походов.
|
||||
|
||||
\item[b)] \textbf{Планирование похода.} Конструктор маршрута с размещением контрольных точек на карте, выбором даты и времени, просмотром прогноза погоды, загрузкой офлайн-карт региона.
|
||||
|
||||
\item[c)] \textbf{Управление участниками.} Формирование группы похода: отправка приглашений членам семьи и друзьям, просмотр подтверждений участия, назначение ролей (организатор, участник), добавление доверенных контактов для экстренных ситуаций.
|
||||
|
||||
\item[d)] \textbf{Чек-лист снаряжения.} Совместная подготовка к походу: выбор шаблона снаряжения, распределение ответственности за предметы между участниками, отслеживание выполнения сборов.
|
||||
|
||||
\item[e)] \textbf{Режим активной навигации.} Основное состояние во время похода: отображение карты с местоположением всех участников, навигация к контрольным точкам, мониторинг расстояний и времени, контроль заряда батарей устройств. Доступны адаптивные режимы: полная карта, упрощённый "Проводник" для пожилых, компасный режим при слабом GPS.
|
||||
|
||||
\item[f)] \textbf{Фиксация находки.} Фотографирование найденного гриба с автоматическим сохранением GPS-координат, времени и погодных условий. Возможность добавления текстовых или голосовых комментариев, выбора вида гриба из справочника.
|
||||
|
||||
\item[g)] \textbf{Семейная корзина.} Просмотр всех зафиксированных находок группы в реальном времени с указанием авторов, местоположений на карте, фотографиями. Возможность добавления реакций, комментариев, экспертных оценок от опытных грибников.
|
||||
|
||||
\item[h)] \textbf{Семейный чат.} Обмен текстовыми и голосовыми сообщениями между участниками похода, отправка фотографий, быстрые реакции, автоматическое прикрепление геолокации к сообщениям.
|
||||
|
||||
\item[i)] \textbf{Справочник грибов.} Просмотр базы знаний о распространённых видах грибов с эталонными фотографиями, описаниями съедобности, сезонов плодоношения, предупреждениями о ядовитых двойниках. Поиск и сравнение найденных грибов с базой.
|
||||
|
||||
\item[j)] \textbf{Экстренный режим (SOS).} Активация тревожного сигнала с обратным отсчётом для предотвращения случайных нажатий. Автоматическая отправка координат, состава группы и медицинской информации доверенным контактам и службам спасения.
|
||||
|
||||
\item[k)] \textbf{Панель организатора.} Расширенный режим мониторинга для ответственного лица: отслеживание всех участников, контроль соблюдения графика, управление маршрутом, корректировка контрольных точек, принудительное оповещение группы.
|
||||
|
||||
\item[l)] \textbf{Архив походов.} Просмотр списка завершённых походов с краткой статистикой: дата, маршрут, участники, количество найденных грибов, пройденное расстояние.
|
||||
|
||||
\item[m)] \textbf{Детальный просмотр похода.} Анализ конкретного похода из архива: GPS-трек на карте, временная шкала событий, фотографии всех находок с геометками, статистика по участникам, экспорт отчёта в PDF.
|
||||
\end{itemize}
|
||||
|
||||
\textbf{Переходы между состояниями происходят по следующим действиям:}
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{Создание нового похода.} Переход из начального состояния (a) в планирование похода (b). Инициируется организатором для подготовки нового маршрута.
|
||||
|
||||
\item \textbf{Присоединение к походу по приглашению (день похода).} Переход из начального состояния (a) в режим активной навигации (e) для участников, принявших приглашение и готовых начать поход.
|
||||
|
||||
\item \textbf{Присоединение к походу по приглашению (подготовка).} Переход из начального состояния (a) в чек-лист снаряжения (d) на этапе подготовки к походу.
|
||||
|
||||
\item \textbf{Переход к управлению участниками.} Из планирования похода (b) в управление участниками (c) для формирования группы и отправки приглашений.
|
||||
|
||||
\item \textbf{Переход к чек-листу снаряжения.} Из управления участниками (c) в чек-лист снаряжения (d) для подготовки необходимых предметов.
|
||||
|
||||
\item \textbf{Переход к чек-листу снаряжения.} Из планирования похода (b) в чек-лист снаряжения (d) напрямую.
|
||||
|
||||
\item \textbf{Начало похода.} Переход из чек-листа (d) в режим активной навигации (e). Активирует GPS-отслеживание и синхронизацию местоположений всех участников.
|
||||
|
||||
\item \textbf{Начало похода.} Переход из планирования похода (b) в режим активной навигации (e) напрямую.
|
||||
|
||||
\item \textbf{Фотографирование находки.} Из режима навигации (e) в фиксацию находки (f). Доступно любому участнику при обнаружении гриба.
|
||||
|
||||
\item \textbf{Сохранение находки и возврат к навигации.} Из фиксации находки (f) обратно в режим навигации (e) с автоматическим добавлением записи в семейную корзину (g).
|
||||
|
||||
\item \textbf{Открытие семейной корзины.} Из режима навигации (e) в просмотр семейной корзины (g) для анализа всех находок группы.
|
||||
|
||||
\item \textbf{Возврат к навигации из корзины.} Из семейной корзины (g) обратно в режим навигации (e).
|
||||
|
||||
\item \textbf{Открытие семейного чата.} Из режима навигации (e) в семейный чат (h) для координации и обмена сообщениями.
|
||||
|
||||
\item \textbf{Возврат к навигации из чата.} Из семейного чата (h) обратно в режим навигации (e).
|
||||
|
||||
\item \textbf{Открытие справочника грибов.} Из фиксации находки (f) в справочник грибов (i) для уточнения вида и съедобности.
|
||||
|
||||
\item \textbf{Открытие справочника грибов.} Из семейной корзины (g) в справочник грибов (i) для проверки информации о найденных грибах.
|
||||
|
||||
\item \textbf{Возврат к фиксации находки.} Из справочника грибов (i) обратно в фиксацию находки (f).
|
||||
|
||||
\item \textbf{Возврат к семейной корзине.} Из справочника грибов (i) обратно в семейную корзину (g).
|
||||
|
||||
\item \textbf{Переход в панель организатора.} Из режима навигации (e) в панель организатора (k) для расширенного контроля группы. Доступно только ответственному лицу.
|
||||
|
||||
\item \textbf{Возврат к навигации из панели организатора.} Из панели организатора (k) обратно в режим навигации (e).
|
||||
|
||||
\item \textbf{Завершение похода.} Из режима навигации (e) в архив походов (l) с автоматическим сохранением всех данных: трека, находок, статистики.
|
||||
|
||||
\item \textbf{Просмотр архива.} Из начального состояния (a) в архив походов (l) для анализа прошлых маршрутов.
|
||||
|
||||
\item \textbf{Открытие конкретного похода.} Из архива (l) в детальный просмотр похода (m) с полной статистикой и картой.
|
||||
|
||||
\item \textbf{Активация SOS.} Из любого состояния в экстренный режим (j) при нажатии тревожной кнопки. Критически важный переход, доступный с любого экрана.
|
||||
|
||||
\item \textbf{Возврат на главный экран.} Из любого состояния (кроме активной навигации e и экстренного режима j) в начальное состояние (a). Из навигации возврат возможен только через завершение похода для предотвращения случайного выхода.
|
||||
\end{enumerate}
|
||||
|
||||
\textbf{Обоснование структуры диалога:}
|
||||
|
||||
Предложенная структура диалога основана на трёх ключевых принципах. Во-первых, обеспечение безопасности: переход в экстренный режим (SOS) доступен из любого состояния одним действием, что критически важно в опасных ситуациях. Во-вторых, минимизация когнитивной нагрузки: для пожилых пользователей предусмотрен линейный переход по основным состояниям (начало → навигация → фиксация находки → возврат к навигации) без необходимости глубокой навигации по меню. В-третьих, гибкость для опытных пользователей: организатор и участники с высокой цифровой грамотностью могут быстро переключаться между параллельными состояниями (навигация, чат, корзина, панель организатора) для эффективной многозадачности.
|
||||
|
||||
\addtocounter{figure}{1}
|
||||
\includepdf[pages={1}, fitpaper, pagecommand={
|
||||
\thispagestyle{empty}
|
||||
\begin{tikzpicture}[remember picture, overlay]
|
||||
\node at (current page.south) [anchor=north, yshift=35pt] {\large{Рис 1. Граф состояний приложения}};
|
||||
\end{tikzpicture}
|
||||
}]{pdf/graph.pdf}
|
||||
|
||||
% \section{Описание структуры команд пользователей}
|
||||
|
||||
|
||||
% \section{Физическая реализация команд пользователей}
|
||||
% Команды выполняются через крупные кнопки и свайпы. В режиме «Проводник» используются физические кнопки громкости как горячие клавиши: двойное нажатие --- отправка геометки, долгое удержание --- SOS. Такой подход учитывает перчатки, мокрые экраны и минимизирует вероятность промаха.
|
||||
|
||||
\section{Технология ввода данных}
|
||||
Используются касания, свайпы и голосовой ввод для заметок и поиска грибов. Формы содержат минимальное число обязательных полей, геоданные и фотографии подставляются автоматически. Для детей ввод действий требует подтверждения родителей через push-уведомление.
|
||||
|
||||
|
||||
\section{Описание ошибок пользователей}
|
||||
Возможные ошибки: случайное нажатие SOS, неверный выбор контрольной точки, закрытие навигации из-за слабого интернета, дублирование отметок грибов, опоздание на контрольное время, неверное указание координаты при плохом GPS.
|
||||
|
||||
Reference in New Issue
Block a user