Skip to content

Commit 11f5b81

Browse files
committed
(feat): continue moving from typst
1 parent 47fd065 commit 11f5b81

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

core-design-document.pdf

12.1 KB
Binary file not shown.

src/chapter-04.tex

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,107 @@
11
\chapter{Ключевые требования, определяющие архитектуру}
22

3+
4+
\section{Ключевые функциональные требования}
5+
В данном разделе изложены функциональные требования к системе, определяющие её основную вычислительную модель, интерфейсы и возможности расширения. Эти требования отражают ожидаемое поведение ядра и набор поддерживаемых операций.
6+
7+
\begin{itemizecmp}
8+
\item \textit{Поддержка основных распределений}: система должна предоставлять встроенную поддержку наиболее распространённых распределений (нормальное, экспоненциальное, биномиальное и др.), а также предусматривать механизм регистрации пользовательских распределений.
9+
\item \textit{Определение распределения}: каждое распределение должно быть определено посредством как минимум одной функциональной характеристики (например, функция плотности или функция распределения), поддерживать генерацию выборки и вычисление логарифма правдоподобия. Распределение должно быть связано с типом случайной величины (дискретной или непрерывной) и типом значений выборки(многомерной или одномерной).
10+
\item \textit{Функциональные и числовые характеристики}: система должна поддерживать вычисление дополнительных характеристик распределений (например, матожидание, дисперсия, энтропия), включая возможность их добавления пользователем.
11+
\item \textit{Преобразования распределений}: система должна поддерживать стандартные операции преобразования распределений, включая арифметические операции, функциональные отображения, свёртки, смеси и т.п. Должна быть предусмотрена возможность компоновки и каскадирования таких преобразований.
12+
\item \textit{Работа с семействами распределений}: система должна поддерживать задание семейств распределений, определяемых через параметрические пространства. Необходимо обеспечить возможность описания связей между семействами, включая асимптотику и граничные переходы (например, предельные случаи распределений при изменении параметров). Поддержка пользовательских семейств и добавления новых связей обязательна.
13+
\item \textit{Модель преобразований в форме графа}: система должна предоставлять представление преобразований над распределениями и семействами в виде ориентированного ациклического графа (DAG), где узлы соответствуют операциям или распределениям, а рёбра — потокам параметров. Такая модель должна поддерживать символьную арифметику и допускать упрощение графа на основе известных свойств (например, сумма двух нормальных распределений — снова нормальное распределение). Параметры модели могут включать как внутренние (структурные), так и внешние (например, время).
14+
\end{itemizecmp}
15+
16+
\subsection{Требования к числовым и функциональным характеристикам}
17+
18+
Под корректным вычислением числовой или функциональной характеристики заданного распределения подразумевается следующее:
19+
\begin{itemizecmp}
20+
\item В случае
21+
\item В случае
22+
\item В случае если значение характеристики неопределено или равно $\pm \infty$: система должна выдать соответствующее значение (объект типа NaN или отвечающий значению бесконечности со знаком соотвтетственно) и сгенерировать предупреждение о том что соответствующее значение не являяется числом.
23+
\end{itemizecmp}
24+
25+
\textbf{Полнота:}
26+
\begin{itemizecmp}
27+
\item Для любого распределения должно быть доступно вычисление всех характеристик моментного/квантильного/информационного типа приведенных в глоссарии;
28+
\item Для любого распределения должно быть доступно вычисление всех функциональных характеристик (если они существуют для данного распределения) приведенных в глоссарии.
29+
\end{itemizecmp}
30+
31+
\textbf{Гибкость и конфигурируемость:}
32+
\begin{itemizecmp}
33+
\item При наличии нескольких алгоритмов для расчета числовой/функциональной характеристики данного распределеения, должен быть определен алгоритм который используется по умолчанию;
34+
\item При наличии нескольких алгоритмов для расчета числовой/функциональной характеристики пользователь должен иметь возможность указать, какой алгоритм использовать.
35+
\end{itemizecmp}
36+
37+
\textbf{Расширяемость:}
38+
\begin{itemizecmp}
39+
\item Пользователь должен иметь возможность добавлять свои собственные алгоритмы вычисления для уже существующих функциональных/числовых характеристик.
40+
\item Пользователь должен иметь возможность добавлять собственные числовые характеристики. В случае если числовая характеристика определена не для всех распределений, пользователь должен иметь возможность явно указать для какого класса распределений определена характеристика;
41+
\item Пользователь должен иметь возможность добавлять собственные функциональные характеристики. В случае если функциональные характеристика определена не для всех распределений, пользователь должен иметь возможность явно указать для какого класса распределений определена характеристика.
42+
\end{itemizecmp}
43+
44+
45+
\subsection{Требования к операциям над распределениями}
46+
\begin{itemizecmp}
47+
\item Для одномерных непрерывных распределений должны быть доступны операции описанные в параграфе «Преобразования распределений» обзора настоящей работы;
48+
\item При наличии нескольких способов вычисления операции, должен быть определён способ вычисления по умолчанию.
49+
\end{itemizecmp}
50+
51+
\subsection{Требования к распределениям семействам распределений}
52+
\begin{itemizecmp}
53+
\item Для любого семейства распределений должна быть возможность создать новое семейство распределений, получаемое из исходного частичной подстановкой значений параметров;
54+
\item Для любого семейства распределений должна быть определена каноническая параметризация;
55+
\item Для любого семейства распределений должна быть возможность добавления новой параметризации. При добавлении новой параметризации, пользователь должен указать как параметры добавляемой параметризации выражаются через каноническую параметризацию и наоборот;
56+
\item Над семействами необходимо уметь производить операции образования смесей: непрерывных и дискретных;
57+
\item Должна быть возможность указать как представители семейства взаимодействуют с представителями других семейств при выполнении операций.
58+
\end{itemizecmp}
59+
60+
\subsection{Требования к генерации выборок}
61+
\begin{itemizecmp}
62+
\item Для любого распределения, за исключением относящихся к распределениям геометрических примитивов, должна быть возможность генерации выборок;
63+
\item При создании пользовательского распределения должна предоставлять методы для генерации выборок без необходимости реализовывать алгоритмы генерации;
64+
\item При наличии нескольких алгоритмов генерации выборок, пользователь должен иметь возможность выбирать алгоритм;
65+
\item Если алгоритм генерации выборок имеет параметры, то пользователь должен уметь настраивать эти параметры. К числу параметров также относится используемый источник случайных или псевдослучайных чисел.
66+
\end{itemizecmp}
67+
68+
\subsection{Технические ограничения и качественные требования}
69+
70+
\subsection{Технические ограничения}
71+
В данном разделе перечислены внешние технические ограничения, влияющие на архитектуру и реализацию системы. Эти ограничения задаются проектом PySATL или внешними условиями и не подлежат изменению в рамках проектирования ядра.
72+
73+
\begin{itemizecmp}
74+
\item \textit{Язык реализации}: система должна предоставлять основной пользовательский интерфейс на языке Python версии 3.x. Допускается использование других языков программирования (например, C/C++) во внутренней реализации с целью оптимизации вычислений, при условии полной прозрачности интерфейса для Python-пользователя.
75+
\item \textit{Лицензирование}: система должна распространяться под MIT-лицензией. Использование копилефт-лицензий (например, GPL) запрещено.
76+
\item \textit{Кроссплатформенность}: система должна работать на основных операционных системах (Linux, macOS, Windows) без необходимости установки платформозависимых компонентов или привязки к конкретной среде исполнения.
77+
\item \textit{Вычислительные ограничения}: система не должна требовать наличия GPU или специализированного оборудования. Все вычисления должны корректно выполняться на CPU без дополнительных зависимостей.
78+
\end{itemizecmp}
79+
80+
\subsection{Качественные характеристики системы}
81+
82+
Данный раздел описывает нефункциональные требования, оказывающие влияние на архитектуру, проектные решения и организацию компонентов системы.
83+
84+
\paragraph{Расширяемость}
85+
86+
Система должна обеспечивать возможность добавления новых распределений, семейств и преобразований без необходимости изменения существующего кода. Расширение должно происходить через зарегистрированные интерфейсы или стандартные механизмы расширения Python.
87+
88+
\paragraph{Модульность и интерфейсы:}
89+
90+
Система должна быть реализована в виде набора Python-модулей с чётко определёнными публичными интерфейсами. Модули должны быть слабо связаны друг с другом, а взаимодействие между ними должно происходить исключительно через открытые контракты. Пакет в целом должен также иметь публичный интерфейс для взаимодействия с пользователем и другими подсистемами PySATL. Внутренние и внешние интерфейсы могут быть различны.
91+
92+
\paragraph{Совместимость}
93+
94+
Система должна быть совместима с остальными компонентами PySATL. Переход на новое ядро должен быть максимально прозрачным для пользователя и не требовать значительных изменений в существующем коде или логике пакетов, использующих ядро.
95+
96+
\paragraph{Тестируемость}
97+
98+
Архитектура должна способствовать покрытию тестами ключевой функциональности системы. Для стадии прототипа допускается ограниченное покрытие, однако оно должно быть достаточным для выявления ошибок при изменении поведения или интерфейсов.
99+
100+
\paragraph{Устойчивость к ошибкам}
101+
102+
Система должна быть устойчива к некорректным пользовательским данным и иметь механизм информирования об ошибках. Поведение при ошибках должно быть контролируемым и предсказуемым, включая диагностику нарушений интерфейсов, типов и других контрактов.
103+
104+
\paragraph{Документируемость и визуализация:}
105+
Архитектура модулей, их интерфейсы и взаимосвязи должны быть представлены в виде UML-диаграмм и сопровождаться соответствующей технической документацией. Диаграммы должны отражать как общую структуру системы, так и реализацию ключевых компонентов и связей.
106+
107+
тестирование документации

0 commit comments

Comments
 (0)