add Chapter4

This commit is contained in:
2026-05-24 15:38:09 +03:00
parent 9e6f52bbca
commit 905b00af02
10 changed files with 297 additions and 145 deletions
+44 -4
View File
@@ -1,10 +1,50 @@
\section{Описание программной реализации}
\label{sec:Chapter4} \index{Chapter4}
\todo[inline]{Если в рамках работы писался какой-то код, здесь должно быть его описание: выбранный язык и библиотеки и мотивы выбора, архитектура, схема функционирования, теоретическая сложность алгоритма, характеристики функционирования (скорость/память).}
\begin{figure}[h]
%\begin{figure}[htbp]
%\centering
%\includegraphics[width=0.8\textwidth]{files/UML.png}
%\caption{UML диаграмма классов Python}
%\label{fig:uml_model}
%\end{figure}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{files/schema.png}
\caption{Процесс работы}
\label{fig:schema}
\end{figure}
Табличное представление используется для ввода, но для дальнейшей обработки требуется программная структура, в которой связи между объектами выражены явно. Поэтому данные таблиц должны преобразовываться во внутреннее представление, например в набор объектов Python (рисуок \ref{fig:uml_model1}), соответствующих основным сущностям конфигурации. Такая модель служит центральным представлением, из которого данные могут быть преобразованы в другие форматы.
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{files/UML.png}
\caption{UML диаграмма классов Python}
\label{fig:uml_model}
\end{figure}
\label{fig:uml_model1}
\end{figure}
Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций и средства построения диаграмм. YAML-файл в этом случае используется как структурированное описание, пригодное для дальнейшей обработки программами, вроде Netloom для поднятия сети из виртуальных машин, а D2 может применяться для генерации визуального представления сети на основе уже построенной модели.
Программная реализация средства описания конфигурации сети виртуальных машин выполнена на языке Python. Объём написанного кода: 710 строк, 48 килобайт. На рисунке \ref{fig:schema} представлен основной процесс работы с утилитой. Построение диаграмм происходит с помощью модуля py-d2 (пример на рисунке \ref{fig:diagram}).
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{files/diagram.png}
\caption{Пример диаграмммы, построенной утилитой}
\label{fig:diagram}
\end{figure}
Воспроизводимость описания конфигурации обеспечивается тем, что результат хранится в виде структурированных данных. Одна и та же таблица при повторной обработке приводит к построению той же внутренней модели и, соответственно, к одинаковому описанию конфигурации. А преобразование в формат, пригодный для использования в средстве развёртывания сети виртуальных машин, обеспечивает возможность дальнейшего применения описания при подготовке лабораторных стендов из виртуальных машин.
\todo[inline]{вынести в отдельное приложение?}
Пример экспортированного YAML-описания конфигурации сети приведён в листинге~\ref{lst:yaml-config}.
\lstinputlisting[
language=yaml,
caption={Фрагмент YAML-описания конфигурации сети виртуальных машин},
label={lst:yaml-config}
]{files/topology.yaml}
% Таким образом, решение строится не вокруг построения диаграммы, а вокруг формальной модели сетевой конфигурации. Табличное представление используется как способ ввода и редактирования, внутренняя модель — как основа обработки данных, а YAML и диаграмма — как формы представления результата. Такой подход позволяет обеспечить редактируемость, воспроизводимость и возможность дальнейшего применения описания при подготовке лабораторных стендов из виртуальных машин.