Skip to content

Commit 0f99788

Browse files
authored
Merge pull request #5 from Desiment/Leonid
add composition
2 parents 894bb91 + 2a19304 commit 0f99788

File tree

8 files changed

+69
-10
lines changed

8 files changed

+69
-10
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
build/*
2-
*.synctex.gz
2+
*.synctex.gz
3+
.vscode/*

assets/images/Composition.png

66.5 KB
Loading

core-design-document.pdf

88.5 KB
Binary file not shown.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
\section{Композиция}
2+
3+
\label{sec:composition}
4+
5+
Ядро строится вокруг трёх компонент: \textit{Distributions}, \textit{Families} и \textit{Transformations}.
6+
Они объединены общей идеей: все вычисления характеристик случайных величин происходят по единым контрактам, а сами компоненты остаются слабо связаны и расширяемы.
7+
8+
\subsection{Роли компонент}
9+
10+
\paragraph{Families.}
11+
Families отвечает за параметризацию и рождение конкретных распределений.
12+
Под параметризацией понимается множество имён параметров, а под параметрами --- отображение этих имён в значения.
13+
Поддерживается несколько параметризаций для одной и той же семьи, однако все вычисления выполняются через базовую параметризацию.
14+
Перед любыми вычислениями параметры приводятся к базовой форме, чтобы остальные компоненты работали с единым представлением.
15+
Families сохраняет смысловую целостность параметров, их допустимость и область определения будущего распределения.
16+
17+
\paragraph{Distributions.}
18+
Distributions --- единая поверхность доступа к характеристикам распределений и точка их композиции.
19+
Компонента материализует распределение, зная его семью и параметры, и предоставляет согласованный интерфейс к характеристикам: функциям распределения, плотности, квантилям, моментам и т.\,д.
20+
Distributions не решает, \emph{как} именно получена та или иная характеристика; она лишь координирует вычисление по зависимостям и контрактам, в том числе для составных объектов, которые появились в результате преобразований.
21+
22+
\paragraph{Transformations.}
23+
Transformations фиксирует операции над распределениями и правила пересчёта характеристик после этих операций.
24+
Сюда попадают преобразования вида «аффинное», «сдвиг и масштаб», «сумма/микс», «свёртка», «обрезка (truncation)», «монотонные отображения» и другие композиции.
25+
Компонента описывает, \emph{какие} характеристики нового распределения можно выразить через характеристики исходных и в каком порядке они должны вычисляться.
26+
На момент написания модуль проектно важен, но ещё не реализован; он задаёт общий язык описания преобразований и обеспечивает единообразную логику пересчёта поддержек, моментов, квантилей и прочих характеристик при переходе к результату преобразования.
27+
28+
\subsection{Поток данных и точки соприкосновения}
29+
30+
Рабочий цикл выглядит просто. Пользователь выбирает семью и задаёт параметры в удобной для него параметризации.
31+
Families приводит параметры к базовой форме и передаёт контекст в Distributions.
32+
Когда требуется характеристика, Distributions строит локальный граф зависимостей для этого запроса.
33+
Если характеристика получена применением преобразования, узлы этого графа добавляются модулем Transformations, а рёбра указывают, какие характеристики исходных распределений нужны для пересчёта.
34+
Таким образом, вычисления идут от стандартизованных параметров через согласованные правила преобразований к запрошенной характеристике результата.
35+
36+
\subsection{Границы и контракты}
37+
38+
Межкомпонентное взаимодействие опирается на несколько устойчивых сущностей:
39+
базовая параметризация, область значения случайной величины (support), именованный реестр характеристик и спецификация преобразований.
40+
Компоненты не разделяют внутреннее состояние и обмениваются только тем, что необходимо для вычисления.
41+
Это позволяет добавлять новые семьи и новые преобразования без изменения существующих модулей, сохраняя обратную совместимость.
42+
43+
\subsection{Композиционные свойства}
44+
45+
Композиция прозрачна: результат преобразования ведёт себя как обычное распределение, подчиняясь тем же контрактам Distributions.
46+
Порядок вычисления характеристик незначим для внешнего пользователя, так как зависимости и правила вывода зашиты в Transformations.
47+
Единая базовая параметризация в Families гарантирует сопоставимость результатов при смешении разных источников и представлений параметров.
48+
49+
\begin{figure}[H]
50+
\centering
51+
% Замените путь на ваш файл со схемой компонентов.
52+
% Если у вас PDF/PNG, оставьте только одно расширение
53+
\includegraphics[width=.85\linewidth]{assets/images/Composition.png}
54+
\caption{Компоненты ядра и их роли в композиции}
55+
\label{fig:kernel-components}
56+
\end{figure}

src/architectural-views/03-interaction.tex renamed to src/architectural-views/04-interaction.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
\section{Взаимодействие}
2+
13
\section{Взаимодействия и потоки выполнения}
24
\label{sec:interactions}
35

src/architectural-views/logical-structure/02-distributions.tex

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
\subsection{Модуль Distributions}
2-
32
В основе лежит класс \texttt{Distribution}, представленный в виде протокола Python. Это означает, что конкретные классы могут \emph{реализовать} интерфейс \texttt{Distribution}, не наследуясь от общего базового класса. По этой причине почти все поля \texttt{Distribution} экспонируются как свойства (\texttt{@property}); обзор ключевых элементов модуля показан на рис.~\ref{fig:uml-distributions}.
43

5-
\begin{figure}[htbp]
4+
\begin{figure}[h]
65
\centering
7-
\includegraphics[width=\linewidth]{assets/images/Distrs.png}
6+
\includegraphics[width=.66\linewidth,trim=4mm 4mm 4mm 4mm,clip]{assets/images/Distrs.png}
87
\caption{UML-обзор модуля \texttt{Distributions}: протокол \texttt{Distribution},
98
типы \texttt{DistributionType}, стратегии \texttt{SamplingStrategy}/\texttt{ComputationStrategy},
109
выборки и базовые реализации по умолчанию.}
@@ -52,9 +51,9 @@ \subsubsection{Протокол вычисления характеристик
5251

5352
Отдельно выделяется \texttt{ComputationMethod} — абстракция для сложных вычислений, которые не укладываются в сигнатуру вызова \texttt{FittedComputationMethod}. В частности, \texttt{ComputationMethod} намеренно \emph{не} определяет \texttt{fit} как \texttt{\_\_call\_\_}, поскольку его сигнатура отличается. Такое разделение упрощает кэширование и повторное использование результатов.
5453

55-
\begin{figure}[htbp]
54+
\begin{figure}[h]
5655
\centering
57-
\includegraphics[width=\linewidth]{assets/images/Computation.png}
56+
\includegraphics[width=.66\linewidth,trim=4mm 4mm 4mm 4mm,clip]{assets/images/Computation.png}
5857
\caption{Вычислительная модель: \texttt{Computation}, \texttt{AnalyticalComputation},
5958
\texttt{FittedComputationMethod} и \texttt{ComputationMethod}; целевая характеристика (\texttt{target}),
6059
источники (\texttt{sources}) и единый механизм вызова.}
@@ -110,9 +109,9 @@ \subsubsection{Реестр преобразований характерист
110109
\item Поиск маршрута: \texttt{find\_path(source, target)} — стандартный \texttt{BFS} по графу, используемый стратегией по умолчанию и доступный пользователю при реализации собственных стратегий.
111110
\end{itemize}
112111

113-
\begin{figure}[htbp]
112+
\begin{figure}[h]
114113
\centering
115-
\includegraphics[width=0.5\linewidth]{assets/images/Register.png}
114+
\includegraphics[width=.5\linewidth,trim=4mm 4mm 4mm 4mm,clip]{assets/images/Register.png}
116115
\caption{Реестр преобразований для типа распределения: \texttt{DistributionTypeRegister}
117116
и \texttt{GenericCharacteristicRegister} с инвариантами (связность definitive-подграфа,
118117
отсутствие обратных рёбер из indefinitive).}

src/chapter-05.tex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
\chapter{Избранные архитектурные точки зрения}
22

33
\input{src/architectural-views/01-context}
4-
\input{src/architectural-views/02-logical-structure}
5-
\input{src/architectural-views/03-interaction}
4+
\input{src/architectural-views/02-composition.tex}
5+
\input{src/architectural-views/03-logical-structure}
6+
\input{src/architectural-views/04-interaction}

0 commit comments

Comments
 (0)