\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{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{Постановка задачи} Требуется разработать пользовательский интерфейс интерактивного приложения, помогающего семье планировать и проводить походы за грибами. В отчёте системно описываются цели проекта, заинтересованные лица, требования, портреты пользователей, риски, сценарии задач, методы обработки ошибок и основы информационной модели. Экранные формы будут включены в приложение, поэтому внимание сосредоточено на структурировании требований и диалогов. \subsection*{Контекст и назначение продукта} Приложение предназначено для семей с разным уровнем цифровой грамотности, которые хотят безопасно собирать грибы в пригородных лесах. Оно должно объединить подготовку (маршруты, снаряжение), сопровождение в пути (навигация, контрольные точки, экстренные сигналы) и подведение итогов (отчёты и архив). \subsection*{Основные цели решения} \begin{itemize} \item Упростить совместное планирование похода: выбор лесного массива, приглашение участников, согласование времени и проверка готовности по чек-листу. \item Повысить безопасность во время маршрута за счёт контроля геопозиций, напоминаний о контрольных точках и понятных действий в экстренной ситуации. \item Поддержать интерес семьи через ведение «корзины» найденных грибов, фотофиксацию и краткие рекомендации по бережному сбору. \end{itemize} \subsection*{Функциональные требования первого прототипа} \begin{itemize} \item Планирование похода: создание маршрута с контрольными точками, предварительная загрузка офлайн-карты, проверка погоды и тайминг контрольных сборов. \item Совместная подготовка: формирование чек-листа снаряжения, назначение ответственных, отправка приглашений из телефонной книги с подтверждением участия. \item Навигация в лесу: отображение текущего положения и расстояния до ближайшей точки, голосовые подсказки, переключение в упрощённый «Проводник» для пожилых участников. \item Аварийный режим: кнопка SOS с автоматической отправкой координат, заряда батареи и последней контрольной точки выбранным контактам и волонтёру. \item Фиксация находок: добавление фотографий грибов, сохранение координат и заметок, быстрый просмотр общей «корзины» семьи. \end{itemize} \subsection*{Нефункциональные требования и ограничения} \begin{itemize} \item Доступность: крупные элементы управления, настраиваемый шрифт, голосовые подсказки и контрастная тема для слабовидящих пользователей. \item Работа в условиях плохой связи: офлайн-кеш карт и контрольных точек, автосохранение маршрута, SMS-резерв для критических уведомлений. \item Защита данных: шифрование локального кеша, явное согласие на обмен геопозицией, понятные настройки приватности без скрытых опций. \item Производительность: время отклика ключевых действий (открытие карты, отметка точки, отправка SOS) не более 2 секунд на устройствах среднего уровня. \item Совместимость: поддержка актуальных версий Android и iOS, веб-доступ через современные браузеры для подготовки похода. \end{itemize} \subsection*{Границы и допущения} \begin{itemize} \item Приложение не принимает медицинских решений и не заменяет связь со службами спасения, а лишь передаёт координаты и контакты. \item Классификация грибов выполняется пользователем вручную; автоматическое распознавание фото может быть добавлено позже как дополняющая функция. \item Предполагается базовая подготовка похода в зоне стабильной связи для предварительной загрузки карт и рассылки приглашений. \item Пользователи согласны делиться минимальным набором данных (имя, телефон, местоположение во время похода) в пределах семьи и выбранных волонтёров. \end{itemize} \subsection*{Критерии готовности лабораторной работы} \begin{itemize} \item Требования сформулированы и увязаны с пользовательскими сценариями: планирование, совместная подготовка, навигация, SOS, фиксация находок. \item Риски описаны и снабжены способами смягчения в контексте интерфейса и поведения пользователя. \item Модель пользователей, задачи, диалоговые структуры и информационная модель оформлены в отчёте и могут служить основой для построения прототипа экранов. \end{itemize} \section{Цели и заинтересованные лица} \subsection{Цель проекта} Создать прототип интерфейса мобильного и веб-приложения, который объединяет семью при планировании походов за грибами, обеспечивает безопасность участников и помогает вести инвентаризацию добычи. Продукт должен быть понятен людям с разным опытом в цифровых технологиях и предусматривать офлайн-работу. \subsection{Заинтересованные лица} \begin{itemize} \item Семейные участники: родители, дети, пожилые родственники. \item Организатор похода (обычно один из родителей). \item Волонтёр-поисковик или знакомый грибник, готовый помочь в случае ЧП. \item Разработчики и сопровождение продукта. \item Региональные лесничие (получатели статистики посещений и предупреждений). \end{itemize} \subsection{Ожидания заинтересованных лиц} \begin{itemize} \item Участники хотят простого интерфейса с крупными элементами, режимом офлайн-карт и быстрым доступом к тревожной кнопке. \item Организатор ожидает совместного планирования: приглашения, список снаряжения, контроль состава группы. \item Пожилые пользователи ждут голосовых подсказок и минимального количества действий на экране. \item Поисковики рассчитывают на автоматические координаты в экстренных сообщениях. \item Лесничие заинтересованы в агрегации обезличенной статистики посещений и предупреждении о запретах. \end{itemize} \subsection{Критерии оценки результата} Успешным считается прототип, в котором пользователь за три шага может: (1) выбрать или создать маршрут, (2) пригласить участников и назначить время сбора, (3) включить режим безопасности. Дополнительно измеряются: время на ввод данных (не более 2 минут), количество ошибок на сценарий (не более одной) и субъективная удовлетворённость (NPS \(>30\)). \section{Планируемые результаты и платформа} \subsection{Планируемые результаты использования продукта} \begin{itemize} \item Снижение числа заблудившихся благодаря обмену геометками и контрольным точкам. \item Повышение дисциплины сборов через чек-листы снаряжения и уведомления. \item Создание семейного архива маршрутов и корзины собранных грибов с фото. \item Повышение экологической ответственности через советы по бережному сбору. \end{itemize} \subsection{Риски проекта и использования} \begin{itemize} \item \textbf{Технические риски}: потеря связи в лесу, разряд батареи, сбой GPS. Смягчается офлайн-кешированием и показом запаса заряда в SOS. \item \textbf{Человеческие риски}: забытые контрольные точки, неверное толкование навигационных меток, панические действия у детей. Снижается через упрощённые надписи, голосовые подсказки и дополнительные подтверждения. \item \textbf{Риски безопасности данных}: утечка геопозиций и персональной информации. Требуются шифрование, минимизация собираемых данных и прозрачные настройки доступа. \item \textbf{Организационные риски}: несогласованность расписания между участниками, отсутствие ответственного взрослого. Покрывается ролями и уведомлениями с подтверждением участия. \item \textbf{Риски удобства использования для пожилых}: мелкий шрифт, сложные жесты. Смягчается крупными кнопками, голосовым вводом и настройкой контрастности. \end{itemize} \subsection{Описание технической платформы} Прототип ориентирован на мобильные устройства Android/iOS с GPS и ограниченным интернетом в лесу. Веб-версия доступна из браузера для подготовки похода. Хранение данных предполагается в облаке с локальным кешем маршрутов и фотографий. Обмен координатами --- через push-уведомления и SMS-шлюз в аварийном режиме. \section{Требования и модель пользователей} \subsection{Формулировка требований к системе} \begin{itemize} \item Поддержка офлайн-карт с предварительным кешированием области. \item Совместное редактирование маршрутов и списка снаряжения. \item Быстрая отправка SOS с координатами и состоянием батареи. \item Защита персональных данных: шифрование хранилища, явное согласие на обмен геоданными. \item Адаптивный интерфейс с возможностью увеличения шрифта и контрастной темы. \item Локализация: русский по умолчанию, возможность подключить английский. \end{itemize} \subsection{Модель пользователей продукта} Основные персонажи: \begin{itemize} \item \textbf{Мария, 38 лет, организатор}. Опытный пользователь смартфона, планирует маршрут, отвечает за детей. Цели: быстро собрать группу, убедиться в готовности, контролировать местоположение. \item \textbf{Иван, 65 лет, дедушка-грибник}. Сильная предметная экспертиза в грибах, слабый опыт приложений. Цели: делиться знаниями, безопасно перемещаться, не тратить время на сложные меню. \item \textbf{Алиса, 12 лет, ребёнок}. Использует телефон для фото, любит геймификацию. Цели: видеть своё местоположение, получать простые задания и напоминания. \end{itemize} Второстепенные персонажи: \begin{itemize} \item \textbf{Сосед Пётр, 45 лет, волонтёр}. Может помочь в поиске, получает уведомления. \item \textbf{Инженер техподдержки}. Следит за стабильностью сервиса. \end{itemize} \subsection{Ментальная модель пользователя, метафоры и идиомы} Пользователи мыслят поход как совместное путешествие с точками сбора и таймерами. Интерфейс опирается на метафоры: \textit{карта тропы} (основной экран), \textit{корзина} для списка грибов, \textit{костёр} как общий чат. Идиомы: перетаскивание контрольных точек, чек-лист с галочками, крупная красная кнопка SOS. \subsection{Квалификация пользователя} Мария --- уверенный пользователь, знакома с мессенджерами и навигацией; Иван --- базовые навыки, нуждается в подсказках и крупном шрифте; Алиса --- цифрово грамотна, но требует защиты от лишних настроек; Пётр --- продвинутый пользователь, ожидает доступ к координатам и логам. \section{Задачи и процессы} \subsection{Задачи, решаемые персонажем} \begin{itemize} \item Мария: подготовка маршрута, приглашение участников, контроль присутствия, ведение чек-листа, запуск тревоги. \item Иван: просмотр маршрута офлайн, отметка найденных грибов, отправка фото, быстрый вызов помощи. \item Алиса: следование маршруту, выполнение мини-квестов (найти безопасные грибы), отправка местоположения родителям. \item Пётр: получение SOS, просмотр последней точки, связь с группой. \end{itemize} \subsection{Описание задач и процессов} \begin{enumerate} \item \textbf{Планирование маршрута (Мария)}: выбрать лесной массив, скачать офлайн-карту, добавить контрольные точки, отправить приглашения. Проверки: наличие связи, объём кеша. \item \textbf{Сбор снаряжения (Мария + Иван)}: использовать чек-лист, отмечать исполнителей, получать напоминания. Возможность напечатать список. \item \textbf{Навигация в лесу (все)}: просматривать текущее положение, видеть направление к контрольной точке, получать голосовые подсказки. \item \textbf{Фиксация находок (Иван)}: сделать фото гриба, классифицировать по шаблону, добавить заметку о месте. \item \textbf{Аварийный сигнал (любой участник)}: нажать кнопку SOS, автоматически отправить координаты и заряд батареи выбранным контактам и службам. \item \textbf{Аналитика после похода (Мария)}: просмотреть трек, количество собранных грибов, экспортировать в семейный альбом. \end{enumerate} \subsection{Описание функций} \begin{itemize} \item Кеширование карт и контрольных точек. \item Совместный чек-лист и чат с аудио-сообщениями. \item Режим "Проводник" с крупными кнопками и голосовым управлением. \item Фотофиксация с шаблонами и автоматическим сохранением координат. \item Шаблоны уведомлений SOS и связи с волонтёром. \item Экспорт отчёта о походе (GPX, PDF для семейного альбома). \end{itemize} \subsection{Минимизация накладных расходов} \begin{itemize} \item Предзаполнение форм (дата, привычные участники, прошлые маршруты). \item Голосовой ввод заметок для пожилых пользователей. \item Шаблоны списков снаряжения под разные погодные условия. \item Однакликовое продление маршрута и повторение прошлой поездки. \end{itemize} \section{Диалог и команды} \subsection{Структура диалога и её обоснование} Диалоговая модель основана на мастер-пошаговом подходе: сначала пользователь формирует маршрут, затем подтверждает состав группы и включает режим навигации. Такой порядок минимизирует когнитивную нагрузку и уменьшает вероятность пропуска ключевых шагов. Для пожилых пользователей важна линейность и повторяемость действий, поэтому глубоких вложенных меню избегаем. \subsection{Структура команд пользователей} Основные команды расположены на нижней панели: \textit{Маршрут}, \textit{Группа}, \textit{Корзина}, \textit{SOS}. Дополнительные действия скрыты за контекстным меню карты. Команды формулируются глаголами действия ("Скачать карту", "Отметить точку", "Отправить сигнал"), чтобы снизить неоднозначность. \subsection{Физическая реализация команд пользователей} Команды выполняются через большие кнопки и свайпы. Для режима "Проводник" предусмотрены физические кнопки громкости как горячие клавиши: двойное нажатие --- отправка геометки, долгое удержание --- SOS. Это учитывает использование устройства в перчатках. \subsection{Технология ввода данных} Используются касания, свайпы и голосовой ввод для заметок и поиска грибов. Формы ограничены минимальным числом обязательных полей. Геоданные и фотографии подставляются автоматически. Для детей ввод ограничен подтверждением родителей через push. \section{Ошибки и обработка} \subsection{Описание ошибок пользователей} Возможные ошибки: случайное нажатие SOS, неверный выбор контрольной точки, закрытие навигации из-за слабого интернета, дублирование отметок грибов, опоздание на контрольное время. \subsection{Методы обработки ошибок} \begin{itemize} \item Подтверждение SOS с обратным отсчётом и отменой. \item Автосохранение маршрута офлайн при пропадании сети. \item Проверка контрольных точек (минимальная дистанция между точками, предупреждение о запретных зонах). \item Объединение похожих отметок грибов и предложение удалить дубль. \item Напоминания о контрольном времени с эскалацией: уведомление участнику, затем организатору. \end{itemize} \section{Информационная модель и дизайн} \subsection{Описание структуры информационной модели экранной формы} Основной экран --- карта с наложением маршрута, панелью состояния (связь, заряд, шаги) и плавающей кнопкой SOS. Ниже --- горизонтальный список контрольных точек. Карточка точки содержит название, ETA, кнопки "Отметиться" и "Фото". Чат и чек-лист открываются свайпом вверх. Экран приглашения содержит поля: дата, время, список контактов, чек-лист снаряжения, радиокнопки для режима сложности. \subsection{Описание дизайна экранной формы} Используются шрифты без засечек (Inter или Roboto), базовый размер 16--18pt для читабельности в лесу. Цветовая палитра: зелёные оттенки для маршрутов, тёплые оранжевые акценты для действий, красный для SOS. Контрастные режимы и крупные кнопки для пожилых пользователей. Пиктограммы грибов и костра помогают ориентироваться. \subsection{Сравнение с нормативными документами} Проект следует ISO 9241-161: учитывается доступность (крупные элементы, читабельные шрифты), однозначность команд и предсказуемость диалогов. Учитываются требования по защите данных (GDPR-подобные согласия) и рекомендации по доступности WCAG 2.1 AA: цветовой контраст, фокусируемость элементов, альтернативные описания для иконок. \section{Выводы} Проработаны основные аспекты пользовательского интерфейса приложения для семейного похода за грибами: цели и ожидания заинтересованных лиц, модели пользователей, ключевые задачи и процессы, методы снижения ошибок и накладных расходов. Следующим шагом станет разработка экранных форм и интерактивного прототипа с учётом описанных требований. \end{document}