\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{ Haskell}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
    breaklines,
    basicstyle=\footnotesize,
    columns=fullflexible,
    flexiblecolumns,
    numbers=left,
    numberstyle={\footnotesize},
    keywordstyle=\color{blue},
    inputencoding=cp1251,
    extendedchars=true
}
\lstdefinelanguage{MyC}{
    language=Haskell,
%    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=Haskell,
    extendedchars=\true,
    inputencoding=utf8,
    keepspaces=true,
    captionpos=t,
}

\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{\textbf{Технологии разработки ПО}}\\
        \large{\textit{Построение функциональной модели для процесса разработки приложения <<Словарь-КЧД>> с помощью методологии IDEF0}}\\
        \hfill \break
        
        % \hfill \break
        % \hfill \break
    \end{center}
    
    \small{ 
        \begin{tabular}{lrrl}
            \!\!\!Студент, & \hspace{2cm} & & \\
            \!\!\!группы 5130201/20102 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\
            \!\!\!Преподаватель,\\ \hspace{-5pt}к.т.н., доц. & \hspace{2cm} &  \underline{\hspace{3cm}} &  Курочкин М. А. \\\\
            &&\hspace{4cm}
        \end{tabular}
        \begin{flushright}
            <<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2024г.
        \end{flushright}
    }
    
    \hfill \break
    % \hfill \break
    \begin{center} \small{Санкт-Петербург, 2024} \end{center}
    \thispagestyle{empty} % выключаем отображение номера для этой страницы
    
    % КОНЕЦ ТИТУЛЬНОГО ЛИСТА
    \newpage
    
    \tableofcontents


    \newpage

	\section*{Введение}
	\addcontentsline{toc}{section}{Введение}
	\par \textbf{IDEF} (I-CAM DEFinition или Integrated DEFinition) — методологии семейства ICAM (Integrated Computer-Aided Manufacturing) для решения задач моделирования сложных систем, позволяют отображать и анализировать модели деятельности широкого спектра сложных систем в различных разрезах. При этом широта и глубина обследования процессов в системе определяется самим разработчиком, что позволяет не перегружать создаваемую модель излишними данными.
	\par Общая методология IDEF состоит из трех частных
	методологий моделирования, основанных на графическом представлении
	систем
	\begin{itemize}
		\item \textbf{IDEF0} используется для создания функциональной модели, отображающей структуру и функции системы, а также потоки информации и материальных объектов, связывающие эти функции.
		\item \textbf{IDEF1} применяется для построения информационной модели, отображающей структуру и содержание информационных потоков, необходимых для поддержки функций системы;
		\item \textbf{IDEF2} позволяет построить динамическую модель меняющихся во времени поведения функций, информации и ресурсов системы.
	\end{itemize}
	
	\par Методология IDEF0 основана на подходе, разработанном Дугласом Т. Россом в начале 70–ых годов и получившем название SADT (Structured Analysis and Design Technique - метод структурного анализа и проектирования). Основу подхода и, как следствие, методологии IDEF0, составляет графический язык описания (моделирования) систем.
	
	\par \textbf{Графический язык} - полное и выразительное средство, способное наглядно представлять широкий спектр деловых, производственных и других
	процессов и операций предприятия на любом уровне детализации.
	Он обеспечивает точное и лаконичное описание моделируемых объектов, удобство использования и интерпретации этого описания.
	Язык облегчает взаимодействие и взаимопонимание системных аналитиков, разработчиков и персонала изучаемого объекта (фирмы, предприятия), т.е. служит средством «информационного общения» большого числа специалистов и рабочих групп, занятых в одном проекте, в процессе
	обсуждения, рецензирования, критики и утверждения результатов.
	
	\par Для выполнения работы была использована методология IDEF0. Объектом моделирования является процесс разработки приложения <<Словарь-КЧД>>
	
	\newpage
	\section{Постановка задачи}
	\begin{itemize} 
		\item Изучить методологию IDEF0, опираясь на руководящий документ <<Методология функционального моделирования IDEF0>>, принятый и введенный в действие Постановлением Госстандарта России от 2000 г.
		\item Построить функциональную модель для процесса разработки приложения <<Словарь-КЧД>> с помощью методологии IDEF0 с точки зрения программиста-разработчика
	\end{itemize}
	
	\newpage
	\section{Концепция IDEF0}
	\par  {\bf Функциональная модель IDEF0} –  это набор блоков, каждый из которых представляет собой «черный ящик» со входами и выходами, управлением и механизмами, которые детализируются (декомпозируются) до необходимого уровня.
	
	\par Разработка модели в IDEF0 представляет собой пошаговую, итеративную процедуру. Наиболее важная функция расположена в верхнем левом углу. А соединяются функции между собой при помощи стрелок и описаний функциональных блоков. При этом каждый вид стрелки или активности имеет собственное значение. Данная модель позволяет описать все основные виды процессов, как административные, так и организационные
	
	Методология IDEF0 основана на следующих концептуальных положениях.
	
	\subsection{Модель}
	
	\par Модель – искусственный объект, представляющий собой отображение
	(образ) системы и ее компонентов.  Модель разрабатывают для понимания, анализа и принятия решений о реконструкции
	(реинжиниринге) или замене существующей, либо проектировании новой системы. Система представляет собой совокупность взаимосвязанных и взаимодействующих частей, выполняющих некоторую полезную
	работу.
	
	\subsection{Блочное моделирование и его графическое представление}
	
	\par Основной
	концептуальный принцип методологии IDEF – представление любой изучаемой системы в виде набора взаимодействующих и взаимосвязанных
	блоков, отображающих процессы, операции, действия (определения – см.
	ниже), происходящие в изучаемой системе. В IDEF0 все, что происходит в
	системе и ее элементах, принято называть функциями. Каждой функции
	ставится в соответствие блок. На IDEF0 –диаграмме, основном документе при анализе и проектировании систем, блок представляет собой прямоугольник. Интерфейсы, посредством которых блок взаимодействует с другими блоками или с внешней по отношению к моделируемой системе средой, представляются стрелками ), входящими в блок или выходящими из
	него. Входящие стрелки показывают, какие условия должны быть одновременно выполнены, чтобы функция, описываемая блоком, осуществилась.
	
	\subsection{Лаконичность и точность}
	
	\par Документация, описывающая систему,
	должна быть точной и лаконичной. Многословные характеристики, изложенные в форме традиционных текстов, неудовлетворительны. Графический язык позволяет лаконично, однозначно и точно показать все элементы (блоки) системы и все отношения и связи между ними, выявить ошибочные, лишние или дублирующие связи и т.д.
	
	\subsection{Передача информации}
	
	\par Средства IDEF0 облегчают передачу информации от одного участника разработки модели (отдельного разработчика или
	рабочей группы) к другому. К числу таких средств относятся: 
	
	\begin{itemize}
		\item диаграммы, основанные на простой графике блоков и стрелок, легко
		читаемые и понимаемые;
		\item метки на естественном языке для описания блоков и стрелок, а также
		глоссарий и сопроводительный текст для уточнения смысла элементов диаграммы;
		\item последовательная декомпозиция диаграмм, строящаяся по иерархическому принципу, при котором на верхнем уровне отображаются
		основные функции, а затем происходит их детализация и уточнение;
		\item древовидные схемы иерархии диаграмм и блоков, обеспечивающие
		обозримость модели в целом и входящих в нее деталей	
	\end{itemize}
	
	\subsection{Строгость и формализм}
	
	\par Разработка моделей IDEF0 требует соблюдения ряда строгих формальных правил, обеспечивающих преимущества
	методологии в отношении однозначности, точности и целостности сложных многоуровневых моделей. Эти правила описываются ниже. Здесь отмечается только основное из них: все стадии и этапы разработки и корректировки модели должны строго, формально документироваться с тем,
	чтобы при ее эксплуатации не возникало вопросов , связанных с неполнотой или некорректностью документации
	
	\subsection{Итеративное моделирование}
	
	\par Разработка модели в IDEF0 представляет
	собой пошаговую, итеративную процедуру. На каждом шаге итерации
	разработчик предлагает вариант модели, который подвергают обсуждению, рецензированию и последующему редактированию, после чего цикл
	повторяется. Такая организация работы способствует оптимальному использованию знаний системного аналитика, владеющего методологией и
	техникой IDEF0, и знаний специалистов – экспертов в предметной области, к которой относится объект моделирования
	
	\subsection{Отделение «организации» от «функций»}
	
	\par При разработке моделей
	следует избегать изначальной «привязки» функций исследуемой системы
	к существующей организационной структуре моделируемого объекта
	(предприятия, фирмы). Это помогает избежать субъективной точки зрения, навязанной организацией и ее руководством. Организационная
	структура должна явиться результатом использования (применения) модели. Сравнение результата с существующей структурой позволяет, во-первых, оценить адекватность модели, а во-вторых – предложить решения, направленные на совершенствование этой структуры.
	
	\newpage 
	
	\section{Синтаксис графического языка IDEF0}
	
	\par Набор структурных компонентов языка, их характеристики и правила, определяющие связи между компонентами, представляют собой синтаксис языка.
	Компоненты синтаксиса IDEF0 – блоки, стрелки, диаграммы и правила.
	
	\subsection{Блок}
	
	\par Блок описывает функцию. Типичный блок показан на рис. 1. Внутри
	каждого блока помещается его имя и номер. Имя должно быть активным
	глаголом или глагольным оборотом, описывающим функцию. Номер блока
	размещается в правом нижнем углу. Номера блоков используются для их
	идентификации на диаграмме и в соответствующем тексте.
	
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.4]{img/block.png}
		\caption{Устройство блока}
	\end{figure}
	
	
	\subsection{Стрелка}
	
	\par Стрелка формируется из одного или более отрезков прямых и наконечника на одном конце. Как показано на рис. 2, сегменты стрелок могут быть
	прямыми или ломаными; в последнем случае горизонтальные и вертикальные отрезки стрелки сопрягаются дугами, имеющими угол 90 градусов.
	
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.6]{img/arrows.png}
		\caption{Виды стрелок}
	\end{figure}
	
	\par Стрелки не
	представляют поток или последовательность событий, как в традиционных
	блок-схемах потоков или процессов. Они лишь показывают, какие данные
	или материальные объекты должны поступить на вход функции для того,
	чтобы эта функция могла выполняться.
	
	\subsection{Синтаксические правила}
	\par Блоки должны удовлетворять следующим правилам:
	
	\begin{enumerate}
		\item Размеры блоков должны быть достаточными для того, чтобы включить
		имя блока.
		\item Блоки должны быть прямоугольными, с прямыми углами.
		\item Блоки должны быть нарисованы сплошными линиями.
	\end{enumerate}
	
	\par Стрелки должны удовлетворять следующим правилам:
	
	\begin{enumerate}
		\item Ломаные стрелки изменяют направление только под углом 90 град.
		\item Стрелки должны быть нарисованы сплошными линиями различной толщины.
		\item Стрелки могут состоять только из вертикальных или горизонтальных отрезков; отрезки, направленные по диагонали , не допускаются.
		\item Концы стрелок должны касаться внешней границы функционального блока, но не должны пересекать ее.
		\item Стрелки должны присоединяться к блоку на его сторонах. Присоединение в
		углах не допускается.
	\end{enumerate}
	
	\newpage
	
	\section{Семантика языка IDEF0}
	
	Семантика определяет содержание (значение) синтаксических компонентов
	языка и способствует правильности их интерпретации. Интерпретация устанавливает соответствие между блоками и стрелками с одной стороны и
	функциями и их интерфейсами – с другой.
	
	\subsection{Cемантика блоков и стрелок} 
	
	\par Поскольку IDEF0 есть методология функционального моделирования, имя
	блока, описывающее функцию, должно быть глаголом или глагольным оборотом; например, имя блока "Выполнить проверку", означает, что блок с
	таким именем превращает непроверенные детали в проверенные. После присваивания блоку имени, к соответствующим его сторонам присоединяются
	входные, выходные и управляющие стрелки, а также стрелки механизма, что
	и определяет наглядность и выразительность изображения блока IDEF0.
	\par Чтобы гарантировать точность модели, следует использовать стандартную
	терминологию. Блоки именуются глаголами или глагольными оборотами и
	эти имена сохраняются при декомпозиции Стрелки и их сегменты, как отдельные, так и связанные в «пучок», помечаются существительными или
	оборотами существительного. Метки сегментов позволяют конкретизировать
	данные или материальные объекты, передаваемые этими сегментами, с соблюдением синтаксиса ветвлений и слияний.
	\par Каждая сторона функционального блока имеет стандартное значение с точки
	зрения связи блок/стрелки, В свою очередь, сторона блока, к которой присоединена стрелка, однозначно определяет ее роль. Стрелки, входящие в
	левую сторону блока - входы.
	\par Входы преобразуются или расходуются
	функцией, чтобы создать то, что появится на ее выходе. Стрелки, входящие
	в блок сверху - управления. 
	\par Управления определяют условия, необходимые
	функции, чтобы произвести правильный выход. Стрелки, покидающие блок
	справа – выходы, т.е. данные или материальные объекты, произведенные
	функцией.
	
	Стандартное расположение стрелок показано на рис.3.
	
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.5]{img/semantica.png}
		\caption{Семантика блоков и стрелок}
	\end{figure}
	
	\par Стрелки, подключенные к нижней стороне блока, представляют механизмы.
	Стрелки, направленные вверх, идентифицируют средства, поддерживающие
	выполнение функции. Другие средства могут наследоваться из родительского блока. Стрелки механизма, направленные вниз, являются стрелками вызова. Стрелки вызова обозначают обращение из данной модели или из данной
	части модели к блоку, входящему в состав другой модели или другой части
	модели, обеспечивая их связь, т.е. разные модели или разные части одной и
	той же модели могут совместно использовать один и тот же элемент (блок).
	
	\subsection{Семантические правила блоков и стрелок}
	
	\begin{enumerate}
		\item Имя блока должно быть активным глаголом или глагольным оборотом.
		\item Каждая сторона функционального блока должна иметь стандартное отношение блок/стрелки:
		\begin{itemize}
			\item[а)] входные стрелки должны связываться с левой стороной блока;
			\item[б)] управляющие стрелки должны связываться с верхней стороной блока;
			\item[в)] выходные стрелки должны связываться с правой стороной блока;
			\item[г)] стрелки механизма (кроме стрелок вызова) должны указывать вверх и
			подключаться к нижней стороне блока.
			\item[д)] стрелки вызова механизма должны указывать вниз, подключаться к нижней стороне блока, и помечаться ссылкой на вызываемый блок.
		\end{itemize}
		
		\item Сегменты стрелок, за исключением стрелок вызова, должны помечаться
		существительным или оборотом существительного, если только единственная метка стрелки несомненно не относится к стрелке в целом.
		\item Чтобы связать стрелку с меткой, следует использовать "тильду".
		\item В метках стрелок не должны использоваться следующие термины:
		функция, вход, управление, выход, механизм, вызов
		
	\end{enumerate}
	
	\subsection{Родительская диаграмма}
	
	\par Родительская диаграмма – та, которая содержит один или более родительских блоков. Каждая обычная (не-контекстная) диаграмма является также
	дочерней диаграммой, поскольку, по определению, она подробно описывает
	некоторый родительский блок. Таким образом, любая диаграмма может быть
	как родительской диаграммой (содержать родительские блоки), так и дочерней (подробно описывать собственный родительский блок). Аналогично,
	блок может быть как родительским (подробно описываться дочерней диаграммой) так и дочерним (появляющимся на дочерней диаграмме).
	
	\subsection{Контекстная диаграмма верхнего уровня}
	
	\par Каждая модель должна иметь контекстную диаграмму верхнего уровня, на
	которой объект моделирования представлен единственным блоком с граничными стрелками. Эта диаграмма называется A-0 (А минус нуль). Стрелки
	на этой диаграмме отображают связи объекта моделирования с окружающей
	средой. Поскольку единственный блок представляет весь объект, его имя –
	общее для всего проекта. Это же справедливо и для всех стрелок диаграммы,
	поскольку они представляют полный комплект внешних интерфейсов объекта. Диаграмма A-0 устанавливает область моделирования и ее границу.
	
	\par  Каждая модель IDEF0 должна также иметь по крайней мере одну дочернюю диаграмму, содержащую декомпозицию блока А0 на 3 … 6 дочерних блоков. Этим блокам присваиваются уникальные узловые номера A1,
	A2, A3, … A6. Таким образом, последовательность [A0, A1,..., A2,..., A3,...]
	начинает нумерацию узлов для любой модели
	
	\subsection{Декомпозиция блоков}
	
	\par Одной из наиболее важных особенностей методологии IDEF0 является постепенное введение все больших уровней детализации по мере создания диаграмм, отображающих модель. Таким образом обеспечивается представление информации, и читатель располагает
	хорошо очерченным предметом изучения с приемлемым объемом новой информации на каждой следующей диаграмме.
	
	
	\par На рисунке ниже представлена структура IDEF0 модели
	
	
	\begin{figure}[H]
		\centering
		\includegraphics[width=8cm]{img/decomp.png}
		\caption{Иерархия диаграмм}
	\end{figure}
	
	\par Построение IDEF0-модели начинается с представления всей системы в виде простейшей компоненты - одного блока и дуг, изображающих интерфейсы с функциями вне системы.
	\par Затем блок, который представляет систему в качестве единого модуля, детализируется на другой диаграмме с помощью нескольких блоков, соединенных интерфейсными дугами. Эти блоки представляют основные подфункции (подмодули) единого исходного модуля.
	\par Данная декомпозиция выявляет полный набор подмодулей, каждый из которых представлен как блок, границы которого определены интерфейсными дугами. Каждый из этих подмодулей может быть декомпозирован подобным же образом для более детального представления.
	
	\newpage
	
	\section{Модель IDEF0 для <<Словарь-КЧД>>}
	
	\subsection{Контекстная диаграмма верхнего уровня А-0} 
	
	\par На следующей странице представлена диаграмма A-0 для разработки приложения <<Словарь-КЧД>>.
	
	\par  {\bf Точка зрения}: программист-разработчик.
	\par  {\bf Входные данные}: техническое задание.
	\par  {\bf Выходные данные}: разработанное приложение «Словарь-КЧД».
	\par  {\bf Управляющие данные (механизмы управления)}: cтандарт программирования С++14.
	\par  {\bf Механизмы, необходимые для выполнения работы}: программист, язык программирования С++, математическое описание КЧД.
	\newpage
	\includepdf[fitpaper]{pdf/А_0.pdf}
	

	\subsection{Дочерняя диаграмма А0}
	\par На следующей странице представлена диаграмма декомпозиции первого уровня А0. Данная диаграмма является дочерней диаграммой для А-0, поскольку она детально описывает родительский блок, изображенный на диаграмме А-0, и разбивает функцию «Разработать приложение "Словарь-КЧД"» на 6 подфункций:
	\vskip 0.3 cm
	\par А1. Реализовать функции для обработки пользовательского ввода;
	\par А2. Реализовать функции  для добавления данных в КЧД;
	\par А3. Реализовать функции  для удаления данных из КЧД;
	\par А4. Реализовать функции  для поиска и просмотра записей в КЧД;
	\par А5. Реализовать функцию для вывода текстового представления КЧД на экран;
	\par А6. Объединить реализованные функции в приложение "Словарь-КЧД".
	\vskip 0.3 cm
	\par Управляющим воздействием всех блоков является cтандарт программирования С++14, механизмами являются язык программирования С++, программист и математическое описание КЧД.
	\par На вход блокам подается техническое задание на приложение <<Словарь-КЧД>>. На каждый блок поступают конкретные требования из технического задания, необходимые для разработки конкретных функций системы.
	\par На выходе блоков получаются разработанные функции для обработки пользовательского ввода, добавления, удаления и поиска данных в КЧД, а также функции для вывода КЧД на экран.
	
	\newpage
	\includepdf[fitpaper]{pdf/A0.pdf}


	\newpage
	
	\subsection{Диаграмма А1}
	\par На следующей странице представлено более подробное представление блока А1 «Реализовать функции для обработки пользовательского ввода». Диаграмма А1 является дочерней диаграммой для А0  и содержит в себе 4 подфункции:
	
	\par А11. Реализовать функцию для обработки ввода чисел;
	\par А12. Реализовать функцию для обработки ввода строк;
	\par А13. Реализовать функцию для обработки подтверждения действия;
	\par А14. Объединить реализованные функции.
	
	\par На вход блокам поступают данные из технического задания приложения <<Словарь-КЧД>> для разработки каждой конкретной функции.
	
	\par На выходе блоков получаются разработанные функции для обработки ввода чисел, строк и для обработки подтверждения действия пользователем.
	
	\newpage
	
	\includepdf[fitpaper]{pdf/A1.pdf}



    \newpage
	
	\subsection{Диаграмма А2}
	\par На следующей странице представлено более подробное представление блока А2 «Реализовать функции  для добавления данных в КЧД». Диаграмма А2 является дочерней диаграммой для А0  и содержит в себе 3 подфункции:
	
	\par А21. Реализовать функцию добавления данных в бинарное дерево поиска;
	\par А22. Реализовать функцию балансировки КЧД после добавления данных;
	\par А23. Объединить реализованные функции.
	
	\par На вход блокам поступают данные из технического задания приложения <<Словарь-КЧД>> для разработки каждой конкретной функции.
	
	\par На выходе блоков получаются разработанные функции для добавления данных в бинарное дерево поиска и балансировки КЧД после добавления данных.
	
	\newpage
	
	\includepdf[fitpaper]{pdf/A2.pdf}



    \newpage
	
	\subsection{Диаграмма А3}
	\par На следующей странице представлено более подробное представление блока А3 «Реализовать функции  для удаления данных из КЧД». Диаграмма А3 является дочерней диаграммой для А0  и содержит в себе 3 подфункции:
	
	\par А31. Реализовать функцию удаления данных из бинарного дерева поиска;
	\par А32. Реализовать функцию балансировки КЧД после удаления данных;
	\par А33. Объединить реализованные функции.
	
	\par На вход блокам поступают данные из технического задания приложения <<Словарь-КЧД>> для разработки каждой конкретной функции.
	
	\par На выходе блоков получаются разработанные функции для удаления данных из бинарного дерева поиска и балансировки КЧД после удаления данных.
	
	\newpage
	
	\includepdf[fitpaper]{pdf/A3.pdf}


    \newpage
	
	\subsection{Диаграмма А4}
	\par На следующей странице представлено более подробное представление блока А4 «Реализовать функции  для поиска и просмотра записей в КЧД». Диаграмма А4 является дочерней диаграммой для А0  и содержит в себе 3 подфункции:
	
	\par А41. Реализовать функцию для поиска словарной записи в КЧД;
	\par А42. Реализовать функцию для вывода словарной записи на экран;
	\par А43. Объединить реализованные функции.
	
	\par На вход блокам поступают данные из технического задания приложения <<Словарь-КЧД>> для разработки каждой конкретной функции.
	
	\par На выходе блоков получаются разработанные функции для поиска словарной записи в КЧД и вывода словарной записи на экран.
	
	\newpage
	
	\includepdf[fitpaper]{pdf/A4.pdf}


    \newpage
	
	\subsection{Диаграмма А5}
	\par На следующей странице представлено более подробное представление блока А5 «Реализовать функции  для поиска и просмотра записей в КЧД». Диаграмма А5 является дочерней диаграммой для А0 и содержит в себе 3 подфункции:
	
	\par А51. Реализовать функцию для создания текстового представления узлов КЧД;
	\par А52. Реализовать функцию для создания текстового представления структуры КЧД;
	\par А53. Объединить реализованные функции.
	
	\par На вход блокам поступают данные из технического задания приложения <<Словарь-КЧД>> для разработки каждой конкретной функции.
	
	\par На выходе блоков получаются разработанные функции для создания текстового представления узлов и структуры КЧД.
	
	\newpage
	
	\includepdf[fitpaper]{pdf/A5.pdf}



    \newpage
    \section*{Заключение}
    \addcontentsline{toc}{section}{Заключение}
    С помощью методологии функционального моделирования IDEF0 была построена модель демонстрирующая процесс разработки приложения <<Словарь-КЧД>>. Благодаря данной методологии были выявлены и наглядно показаны основные этапы разработки приложения с точки зрения программиста-разработчика. Была построена контекстная диаграмма (родительская диаграмма), проведена ее декомпозиция и построены пять дочерних диаграмм: А0, А1, А2, A3, A4, A5.

    % \newpage
    % \section*{Список литературы}
    % \addcontentsline{toc}{section}{Список литературы}
    % \vspace{-1.5cm}
    % \begin{thebibliography}{0}
    % \end{thebibliography}
\end{document}