Files
application-design/report.tex

358 lines
32 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\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[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} %для перечислений
% Настраиваем листинги, чтобы они использовали счётчик figure
\AtBeginDocument{
\renewcommand{\thelstlisting}{\thefigure} % Листинги используют тот же счетчик, что и рисунки
\renewcommand{\lstlistingname}{Рис.} % Меняем подпись на "Рисунок"
}
% Автоматически увеличиваем счетчик figure перед каждым листингом
\let\oldlstlisting\lstlisting
\renewcommand{\lstlisting}[1][]{%
\refstepcounter{figure}% Увеличиваем счетчик figure
\oldlstlisting[#1]% Вызываем оригинальную команду lstlisting
}
\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=SQL,
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
\hfill \break
\large{Отчет по лабораторным работам}\\
\large{<<Проектирование приложений>>}\\
\hfill \break
% \hfill \break
\hfill \break
\end{center}
\small{
\begin{tabular}{lrrl}
\!\!\!Студент, & \hspace{2cm} & & \\
\!\!\!группы 5130201/20102 & \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 {Постановка задачи}
% В ходе прохождения данного курса необходимо выполнить пять лабораторных работ.
% \begin{enumerate}
% \item Создать представление, инкапсулирующее запрос. Написать запрос, использующий в себе представление.
% \item Написать триггеры, автоматизирующие сбор статистической информации о количестве соревнований, в которых участвовал каждый судья.
% \item Создать двух пользователей. Первый должен иметь доступ только на просмотр представления из первого задания. Второй также должен уметь редактировать таблицы, участвующие в запросе представления.
% \end{enumerate}
\newpage
\section {Лабораторные работы}
\subsection{Работа 1: Анализ текста с помощью ER-диаграмм}
\textbf{Задача:} Провести анализ одного абзаца текста с помощью ER-диаграммы.
\subsubsection*{Исходный абзац}
Когда организатор проводит соревнования, в первую очередь он должен определиться с местом и датами проведения. После этого он должен предоставить спортсменам возможность оставить заявку на соревнования, сейчас многие используют для этого Yandex или Google формы, в этой заявке спортсмены указывают персональные данные, а также спортивный разряд, тип лука, федерацию или клуб, от имени которого они участвуют в соревновании. По мимо спортсменов важно подобрать судей. Соответственно судьи также должны оставить заявку, в которой они указывают свои персональные данные, а также свою судейскую категорию, номер и дату приказа об её присвоении.
\subsubsection*{Обновлённый абзац}
Когда организатор проводит соревнования, в первую очередь он должен определиться с местом и датами проведения. После этого он должен предоставить спортсменам шаблон заявки на соревнование. Многие организаторы создают шаблоны заявок в Yandex или Google формах. Спортсмены создают заявки по шаблону. В этих заявках спортсмены указывают персональные данные, а также спортивный разряд, тип лука, спортивнюю федерацию и клуб, от имени которого они участвуют в соревновании. Организаторам важно подобрать судей для соревнования. Соответственно судьи тоже должны оставить заявки на судейство соревнования, в которой указываются: персональные данные, судейская категория, номер и дата приказа об её присвоении. Затем по этим заявкам организатор подбирает судей для соревнования.
\subsubsection*{Чтение ER-диаграммы}
Организатор проводит соревнования.
Организатор определяет место и даты проведения соревнований.
Организатор создаёт шаблоны заявок в Яндекс или Google формах.
Организатор предоставляет спортсменам шаблон заявки на соревнование.
Спортсмен создаёт заявку спортсмена по шаблон у заявки.
Спортсмен указывает в заявке спортсмена свои персональные данные, спортивный разряд, спортивную федерацию, тип лука и клуб.
Спортсмены участвуют в соревновании от имени клубов.
Судьи оставляют заявки на судейство на соревнование.
Организатор подбирает судей для соревнования по заявкам на судейство.
В заявке судьи указываются: персональные данные, судейская категория, номер приказа о присвоении судейской категории, дата приказа о присвоении судейской категории.
\subsubsection*{ER-диаграмма}
Полученная ER-диаграмма представление на Рис.~1.
\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. ER-диаграмма, построенная на основе одного абзаца из текста описания предметной области.}};
\end{tikzpicture}
}]{pdf/er_diagram.pdf}
\subsection{Работа 2: Описание процессов предметной области}
\textbf{Задача:} Выделить и описать основные и вспомогательные процессы в выбранной предметной области.
Основным процессом в выбранной предметной области является процесс проведения соревнований по стрельбе из лука. Тогда в качестве вспомогательных можно выделить, например, следующие процессы:
\begin{itemize}
\item процесс сбора заявок от спортсменов;
\item процесс подбора судей;
\item процесс подготовки помещения;
\item процесс организации безопасности;
\item процесс подготовки финального протокола соревнований.
\end{itemize}
\subsubsection*{Процесс проведения соревнований}
\subsubsection*{Процесс сбора заявок от спортсменов}
\begin{enumerate}
\item \textbf{Определение необходимых данных.} Организатор определяет, какие данные нужно получить от спортсменов, например: ФИО, пол, тип лука, спортивный разряд, спортивная федерация или клуб, контактные данные.
\item \textbf{Создание шаблона заявки.} Организатор создаёт шаблон заявки (например, в Google Формах), добавляя все необходимые поля.
\item \textbf{Публикация и распространение шаблона.} Организатор публикует ссылку на шаблон на сайте соревнований и в социальных сетях, рассылает по закрытым спискам клубов или размещает объявления.
\item \textbf{Получение информации о соревновании.} Спортсмен узнаёт о соревновании через сайт, объявления в клубе, социальные сети или от других спортсменов.
\item \textbf{Заполнение заявки.} Спортсмен открывает шаблон заявки, заполняет необходимые поля и отправляет её организатору.
\item \textbf{Подтверждение регистрации.} Организатор обрабатывает заявку, проверяет корректность данных и отправляет спортсмену подтверждение регистрации или запрос на исправление данных.
\item \textbf{Обновление списков участников.} Организатор формирует список зарегистрированных участников и публикует его, чтобы спортсмены могли проверить наличие своей заявки.
\end{enumerate}
\textbf{Выход процесса:}
Формируется список спортсменов, допущенных до участия в соревнованиях.
\subsubsection*{Процесс подбора судей}
\begin{enumerate}
\item \textbf{Определение потребности в судьях.} Организатор определяет, сколько судей потребуется в зависимости от масштаба соревнований, количества участников и этапов.
\item \textbf{Определение критериев отбора.} Организатор решает, какие требования будут предъявляться к судьям: судейская категория, опыт работы, регион, принадлежность к определённой спортивной федерации и т.д.
\item \textbf{Создание и публикация шаблона заявки.} Организатор создаёт шаблон заявки, включая обязательные поля: ФИО, судейская категория, номер и дата приказа о присвоении категории, контактные данные, регион и федерация. Шаблон публикуется на сайте, рассылается клубам и судьям.
\item \textbf{Получение информации о соревновании.} Судьи узнают о соревновании через сайт, рассылку, объявления или от коллег.
\item \textbf{Заполнение и отправка заявки.} Судья открывает шаблон, заполняет свои данные и отправляет заявку организатору.
\item \textbf{Проверка заявок.} Организатор проверяет поступившие заявки на соответствие критериям и корректность данных.
\item \textbf{Отбор судей.} Организатор отбирает необходимых судей в соответствии с установленными критериями и количеством позиций.
\item \textbf{Уведомление отобранных судей.} Организатор уведомляет выбранных судей о включении в состав и отправляет им подтверждение участия.
\item \textbf{Формирование списка судей.} Организатор формирует и публикует список судей, которые будут судить соревнование.
\end{enumerate}
\textbf{Выход процесса:}
Сформирован список судей, утверждённых для работы на соревнованиях.
\subsubsection*{Процесс подготовки помещения}
\begin{enumerate}
\item \textbf{Выбор помещения.} Организатор выбирает помещение, учитывая количество участников, требования к безопасности, наличие необходимой инфраструктуры (освещение, вентиляция, зоны для зрителей и участников).
\item \textbf{Аренда и согласование.} Организатор заключает договор аренды помещения на даты проведения соревнований и согласовывает время для подготовки.
\item \textbf{Составление плана подготовки.} Организатор создаёт подробный план подготовки помещения: разметка зон стрельбы, установка щитов, размещение судейских столов, зон ожидания и хранения оборудования.
\item \textbf{Подготовка оборудования.} Организатор закупает, арендует или использует имеющееся необходимое оборудование: мишени, щиты, стойки, столы, ограждения.
\item \textbf{Назначение технического персонала.} Организатор назначает технический персонал, который будет заниматься подготовкой помещения.
\item \textbf{Разметка и установка оборудования.} Технический персонал выполняет разметку дистанций, устанавливает щиты и мишени, организует зоны для участников, судей и зрителей.
\item \textbf{Окончательная приёмка помещения.} Организатор проверяет правильность разметки, надёжность установки оборудования и готовность всех зон.
\end{enumerate}
\textbf{Выход процесса:}
Помещение подготовлено для проведения соревнований, установлено всё необходимое оборудование.
\subsubsection*{Процесс организации безопасности}
\begin{enumerate}
\item \textbf{Анализ требований к безопасности.} Организатор изучает регламент соревнований, включая требования FITA и РФСЛ, чтобы учесть все аспекты безопасности.
\item \textbf{Определение зон безопасности.} Организатор определяет и размечает зоны стрельбы, зоны ожидания спортсменов, зоны для зрителей и судей. Определяются границы, которые нельзя пересекать во время стрельбы.
\item \textbf{Установка оборудования.} Технический персонал устанавливает ограждения, предупреждающие знаки и динамики для звуковых сигналов, управляющих ходом стрельбы.
\item \textbf{Настройка системы сигналов.} Организатор настраивает систему звуковых сигналов, управляющих этапами стрельбы:
\begin{itemize}
\item Звуковой сигнал <<Начало серии>> -- после него спортсмены могут выходить на линию огня и начинать стрельбу.
\item Звуковой сигнал <<Окончание серии>> -- после него все спортсмены должны прекратить стрельбу.
\item Звуковой сигнал <<Доступ к мишеням>> -- сигнал, после которого спортсменам разрешено подходить к мишеням для фиксации результатов и извлечения стрел.
\end{itemize}
Без чёткого звукового сигнала спортсменам запрещено находиться в зоне стрельбы и у мишеней.
\item \textbf{Проведение инструктажа.} Организатор объясняет спортсменам и судьям правила безопасности, включая использование звуковых сигналов и порядок действий при их подаче.
\item \textbf{Контроль безопасности во время соревнований.} Организатор и судьи контролируют, чтобы спортсмены выходили на линию огня и к мишеням только после соответствующих сигналов.
\item \textbf{Оценка и исправление недостатков.} Перед началом и после завершения соревнований организатор оценивает, были ли допущены нарушения или недочёты в организации безопасности, и вносит изменения в будущие мероприятия.
\end{enumerate}
\textbf{Выход процесса:}
Обеспечена безопасность всех участников соревнований.
\subsubsection*{Процесс подготовки финального протокола соревнований}
\begin{enumerate}
\item \textbf{Определение структуры протокола.} Организатор определяет структуру финального протокола. Как правило протокол содержит следующие разделы:
\begin{itemize}
\item Список победителей и призёров;
\item Результаты квалификационного раунда;
\item Финальные сетки;
\item Итоговые результаты.
\end{itemize}
\item \textbf{Подготовка шаблонов протоколов.} Организатор создаёт шаблоны для промежуточных и итоговых протоколов, включая таблицы для результатов, списки участников, места и суммы очков. Обычно для этого используются Google или Excel таблицы.
\item \textbf{Фиксация результатов во время соревнований.} Судьи фиксируют результаты каждого спортсмена после каждой серии выстрелов на бумажных карточках или в электронной системе, включая количество очков, количество попаданий в 10 и 9 (Х и 10).
\item \textbf{Внесение промежуточных результатов.} После первой половины квалификации организатор вносит промежуточные результаты в протокол: общий счёт за первую половину, количество попаданий 10 и 9 (Х и 10).
\item \textbf{Внесение итоговых результатов квалификации.} После окончания квалификации организатор добавляет в протокол окончательные результаты квалификационного этапа.
\item \textbf{Формирование финальных сеток.} Организатор составляет финальные сетки, распределяя спортсменов в соответствии с результатами квалификации.
\item \textbf{Фиксация результатов финальных раундов.} Судьи фиксируют результаты финальных раундов, передавая их организатору для внесения в протокол.
\item \textbf{Подготовка итогового протокола.} Организатор объединяет все данные в один документ: добавляет список победителей и призёров, результаты квалификации, финальные сетки и итоговые результаты.
\item \textbf{Проверка и утверждение протокола.} Организатор проверяет корректность всех данных, после чего утверждает протокол.
\item \textbf{Публикация протокола.} Итоговый протокол публикуется на сайте соревнований и рассылается участникам и спортивным федерациям.
\end{enumerate}
\textbf{Выход процесса:}
Формируется итоговый протокол соревнований, содержащий все необходимые разделы и результаты.
\newpage
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}
% В ходе освоения данного курса было выполнено пять лабораторных работ:
% \begin{enumerate}
% \item Создано представление, инкапсулирующее запрос. Продемонстрирована невозможность модификации представления; написан запрос, использующий в себе созданное представление.
% \item Создана таблица подсчёта количества соревнований для каждого судьи. Также созданы 5 триггеров, автоматизирующие сбор статистики в таблице.
% \item Созданы 2 пользователя с различными правами доступа. Первый пользователь наделён правами только на просмотр представления, а второй наделён правами просмотра, вставки, удаления и обновления данных во всех таблицах, участвующих в представлении. На 8 примерах продемонстрировано поведение СУБД при различных операциях для каждого пользователя, в том числе при недопустимых.
% \item Созданы процедура и функция. Функция принимает на вход фамилию, имя и отчество человека и возвращает фамилию и его инициалы.
% \item Управление транзакциями. Задан уровень изоляции транзакций как Read Committed и продемонстрировано отсутствие артефакта <<Грязное чтение>> и наличие артефактов <<Неповторяемое чтение>> и <<Фантомы>>.
% \end{enumerate}
% На работу было потрачено около 2-х месяцев, за которые было написано более 500 строк кода.
% Работа была выполнена в системе управления базами данных PostgreSQL 16.2.
% Полученные знания могут быть и будут использованы в работе над последующими проектами и заданиями.
\newpage
\section*{Список литературы}
\addcontentsline{toc}{section}{Список литературы}
\vspace{-1.5cm}
\begin{thebibliography}{0}
\bibitem{MySQL}
MySQL Documentation URL: \url{https://dev.mysql.com/doc/}, Дата обращения: 01.11.2024
\bibitem{PostgreSQL}
PostgreSQL documentation URL: \url{https://www.postgresql.org/docs/}, Дата обращения: 01.11.2024
\end{thebibliography}
\end{document}