Files
dzentra_bot/docs/market_intelligence/runtime_contract.md

97 KiB
Raw Blame History

Dzentra Market Intelligence Runtime Contract

Engineering Standard Release


Контроль документа

Свойство Значение
Документ Dzentra Market Intelligence Runtime Contract
Тип документа Engineering Standard
Версия 2.0
Статус Release
Подсистема Market Intelligence
Проект Dzentra
Владелец стандарта Dzentra Architecture
Язык Русский
Применяется к Runtime подсистемы Market Intelligence

Оглавление

Общие положения

  • Контроль документа
  • Статус документа
  • Управление стандартом
  • Соответствие стандарту
  • Нормативная терминология
  • Официальная терминология
  • Назначение
  • Область применения
  • Архитектурная роль Runtime
  • Общие положения

Part I. Runtime Architecture

  • Назначение Runtime
  • Runtime в архитектуре платформы
  • Ответственность Runtime
  • Границы Runtime
  • Runtime и аналитическая подсистема

Part II. Runtime Contract

  • Общая модель взаимодействия
  • Runtime Context
  • Engine Execution Model
  • Engine Instance Lifecycle
  • Runtime Result Flow
  • Runtime Ownership

Part III. Engine Input Contract

  • Общий входной контракт
  • Runtime Context
  • Входные зависимости
  • Допустимые источники данных
  • Запрещённые источники данных

Part IV. Engine Result Contract

  • Общий результат Engine
  • Engine Status
  • Evaluation
  • Metrics
  • Diagnostics
  • Payload
  • Snapshot
  • Metadata

Part V. Runtime Status Contract

  • Runtime Status
  • Engine Status
  • Допустимые состояния
  • Правила изменения статусов
  • Инварианты статусов

Part VI. Diagnostics and Explainability Contract

  • Diagnostics
  • Reason Code
  • Payload
  • Snapshot
  • Runtime Events
  • Explainability

Part VII. Dependency Contract

  • Общая модель зависимостей
  • Допустимые зависимости
  • Запрещённые зависимости
  • Runtime Contract
  • Coordinator Contract

Part VIII. Runtime Safety

  • Общие требования
  • Graceful Degradation
  • Partial Result
  • Error Isolation
  • Fault Tolerance

Part IX. Runtime Evolution

  • Общие принципы развития
  • Развитие Runtime Contract
  • Расширение Runtime
  • Изменение Runtime Model
  • Архитектурная стабильность Runtime
  • Критерии качественного развития Runtime
  • Завершение Runtime Evolution

Part X. Заключительные положения

  • Соответствие стандарту
  • Приоритет Runtime Contract
  • Развитие стандарта
  • Runtime аксиома
  • Заключительные положения

Приложения

  • Приложение А. Каталог Runtime Contract
  • Приложение Б. Каталог Runtime Status
  • Приложение В. Примеры Runtime Flow
  • Приложение Г. Примеры допустимых зависимостей
  • Приложение Д. Примеры допустимых Runtime Contract
  • Приложение Е. Примеры недопустимых Runtime Contract

Статус документа

Настоящий документ имеет статус Release.

Документ является официальным инженерным стандартом, определяющим единый Runtime Contract подсистемы Market Intelligence проекта Dzentra.

Настоящий стандарт устанавливает обязательные требования к организации Runtime, контрактам взаимодействия аналитических компонентов, моделям обмена данными, правилам формирования результатов анализа и обработке состояний Runtime.

Настоящий документ не определяет архитектурные принципы построения платформы.

Фундаментальные архитектурные требования определяются документом Architecture Principles.

Настоящий стандарт определяет исключительно официальные Runtime Contract подсистемы Market Intelligence.

Изменение настоящего стандарта допускается исключительно посредством выпуска новой официальной версии документа.


Управление стандартом

Настоящий документ определяет официальный Runtime Contract платформы Market Intelligence.

Все компоненты Runtime обязаны соответствовать требованиям настоящего стандарта независимо от:

  • используемого языка программирования;
  • способа реализации компонентов;
  • этапа развития платформы;
  • количества аналитических движков;
  • используемых инженерных инструментов.

Настоящий стандарт определяет исключительно контракты взаимодействия компонентов Runtime.

Архитектурные принципы построения платформы определяются документом Architecture Principles.

Инженерный процесс разработки определяется документом Development Process.

Изменение Runtime Contract допускается только при одновременном выполнении следующих условий:

  • изменение имеет долгосрочную архитектурную ценность;
  • изменение подтверждено практикой разработки;
  • изменение не нарушает существующую архитектурную модель;
  • изменение сохраняет обратную совместимость либо сопровождается официальным изменением стандарта;
  • изменение повышает сопровождаемость, расширяемость или согласованность Runtime.

Локальные изменения отдельных Build не могут изменять требования настоящего стандарта.

При возникновении противоречий между Runtime Contract и локальной реализацией приоритет имеет настоящий документ.


Соответствие стандарту

Runtime подсистемы Market Intelligence считается соответствующим настоящему стандарту только при соблюдении всех обязательных требований, определённых данным документом.

Нарушение любого обязательного Runtime Contract рассматривается как архитектурный дефект независимо от корректности реализации отдельных компонентов.

Рекомендации настоящего стандарта не являются обязательными, однако рассматриваются как предпочтительная инженерная практика.

Соответствие Runtime настоящему стандарту подтверждается посредством процедур Architecture Review и Domain Review, определённых документом Development Process.


Нормативная терминология

Во всём тексте настоящего документа используются следующие нормативные формулировки.

Формулировка Значение
Должен Обязательное требование Runtime Contract.
Не должен Действие запрещено Runtime Contract.
Обязан Обязательное действие Runtime-компонента.
Не допускается Полный запрет соответствующего решения.
Следует Предпочтительная инженерная практика.
Рекомендуется Наиболее предпочтительный способ реализации Runtime.
Может Допустимое решение при соблюдении остальных требований настоящего стандарта.

Если явно не указано иное, все перечисленные формулировки используются исключительно в приведённых выше значениях.


Официальная терминология

В целях единообразного понимания настоящего стандарта используются следующие определения.

Термин Определение
Runtime Совокупность моделей состояния, контрактов взаимодействия и правил обмена данными между аналитическими компонентами платформы.
Runtime Context Официальный входной контракт аналитического компонента.
Runtime Contract Совокупность обязательных правил взаимодействия компонентов Runtime.
Engine Metadata Официальное описание Engine как компонента платформы. Не является результатом анализа и доступно без создания экземпляра Engine.
Engine Result Официальный результат выполнения аналитического движка.
Runtime Status Состояние Runtime либо аналитического компонента в процессе выполнения.
Engine Status Стандартизированное состояние выполнения аналитического движка.
Reason Code Стандартизированный идентификатор причины полученного результата или состояния Runtime.
Payload Структурированное представление результатов анализа, предназначенное для передачи между компонентами платформы.
Snapshot Зафиксированное состояние аналитического результата в момент завершения расчёта.
Diagnostics Служебная информация, предназначенная для анализа работы Runtime и диагностики выполнения аналитических компонентов.

Все перечисленные термины используются исключительно в приведённых выше значениях.


Назначение

Настоящий документ определяет единый Runtime Contract подсистемы Market Intelligence проекта Dzentra.

Стандарт устанавливает обязательные требования к:

  • организации Runtime;
  • входным контрактам аналитических компонентов;
  • результатам выполнения Engine;
  • моделям обмена данными;
  • статусам выполнения;
  • диагностической информации;
  • обработке ошибок Runtime;
  • взаимодействию аналитических компонентов.

Настоящий документ не определяет архитектурные принципы построения платформы и не регламентирует инженерный процесс разработки.

Указанные вопросы регулируются документами Architecture Principles и Development Process соответственно.


Область применения

Настоящий стандарт распространяется на все Runtime-компоненты подсистемы Market Intelligence, включая:

  • Runtime Context;
  • Runtime Models;
  • Runtime Status;
  • Engine Result;
  • Runtime Events;
  • Diagnostics;
  • Payload;
  • Snapshot;
  • Coordinator Runtime;
  • все существующие и будущие аналитические Engine.

Требования настоящего стандарта обязательны для всех компонентов Runtime независимо от времени их создания, способа реализации или архитектурного уровня.


Архитектурная роль Runtime

Runtime является официальным механизмом взаимодействия аналитических компонентов подсистемы Market Intelligence.

Runtime обеспечивает:

  • единый входной контракт;
  • единый формат результатов;
  • единые статусы выполнения;
  • единый механизм диагностики;
  • единые правила обмена аналитической информацией.

Runtime не реализует анализ рынка.

Runtime не принимает торговые решения.

Runtime не определяет стратегию анализа.

Единственной задачей Runtime является обеспечение согласованного взаимодействия компонентов аналитической платформы.


Общие положения

Настоящий документ определяет официальный Runtime Contract платформы Market Intelligence.

Все аналитические компоненты обязаны использовать исключительно контракты, определённые настоящим стандартом.

Ни один компонент не должен самостоятельно изменять формат взаимодействия, модели обмена данными или жизненный цикл Runtime.

Все изменения Runtime Contract должны сопровождаться обновлением настоящего стандарта.

Runtime Contract является обязательной частью архитектуры платформы и применяется совместно с документом Architecture Principles.

Part I. Runtime Architecture

Настоящая часть определяет официальную архитектурную модель Runtime подсистемы Market Intelligence.

Runtime является самостоятельным архитектурным уровнем платформы, обеспечивающим единообразное взаимодействие аналитических компонентов независимо от их внутренней реализации.

Runtime определяет:

  • официальный жизненный цикл аналитических компонентов;
  • единые модели обмена данными;
  • единые входные и выходные контракты;
  • правила формирования результатов;
  • правила представления состояний;
  • правила взаимодействия компонентов.

Runtime не определяет алгоритмы анализа рынка.

Runtime не определяет стратегию торговли.

Runtime не реализует бизнес-логику аналитических компонентов.

Единственной задачей Runtime является обеспечение согласованного взаимодействия компонентов аналитической платформы.


Назначение Runtime

Runtime представляет собой официальный слой взаимодействия аналитических компонентов.

Основной задачей Runtime является создание единой среды выполнения, в которой любой аналитический компонент может функционировать независимо от особенностей реализации остальных компонентов.

Runtime обеспечивает:

  • единый жизненный цикл выполнения;
  • единые контракты обмена данными;
  • единый формат результатов;
  • единые модели состояний;
  • единые правила диагностики;
  • единые правила обработки ошибок.

Благодаря Runtime все аналитические движки работают по одинаковым правилам независимо от выполняемого анализа.


Runtime в архитектуре платформы

Runtime занимает промежуточное положение между фундаментальными архитектурными сущностями и аналитическими компонентами.

Архитектурная модель имеет следующий вид.

                 Common Layer
                       │
                       ▼
                Runtime Contract
                       │
                       ▼
                 Runtime Layer
                       │
                       ▼
                  Engine Layer
                       │
                       ▼
               Coordinator Layer

Каждый вышележащий уровень использует возможности нижележащего уровня исключительно посредством официальных контрактов.

Runtime является обязательным связующим звеном между архитектурным фундаментом платформы и аналитическими движками.


Ответственность Runtime

Runtime отвечает исключительно за организацию взаимодействия аналитических компонентов.

В область ответственности Runtime входят:

  • описание моделей состояния;
  • описание жизненного цикла выполнения;
  • определение входных контрактов;
  • определение выходных контрактов;
  • описание моделей диагностики;
  • описание моделей результатов;
  • определение допустимых состояний выполнения;
  • описание правил обмена информацией между компонентами.

Runtime не отвечает за вычисление аналитических показателей.

Runtime не принимает решений о состоянии рынка.

Runtime не агрегирует результаты анализа.

Runtime не выполняет функции Coordinator.


Границы Runtime

Границы Runtime определяют допустимую область его ответственности.

Runtime может:

  • описывать контракты взаимодействия;
  • описывать модели состояния;
  • описывать модели результатов;
  • определять допустимые статусы;
  • определять правила обмена данными;
  • определять правила диагностики.

Runtime не должен:

  • выполнять анализ рынка;
  • содержать алгоритмы аналитики;
  • управлять последовательностью выполнения Engine;
  • взаимодействовать с торговой подсистемой;
  • обращаться к внешним источникам данных;
  • содержать пользовательский интерфейс;
  • реализовывать бизнес-логику платформы.

Таким образом Runtime остаётся полностью нейтральным по отношению к предметной области анализа.


Runtime и аналитическая подсистема

Runtime является общей инфраструктурой для всех аналитических движков платформы.

Каждый Engine использует Runtime одинаковым образом независимо от собственной специализации.

Runtime обеспечивает единообразное взаимодействие следующих компонентов:

  • Engine;
  • Coordinator;
  • Runtime Context;
  • Runtime Status;
  • Engine Result;
  • Diagnostics;
  • Payload;
  • Snapshot.

Добавление нового Engine не требует изменения Runtime, если новый компонент полностью соответствует официальным Runtime Contract.

Это свойство обеспечивает долгосрочную масштабируемость аналитической платформы.


Завершение архитектурной модели Runtime

Runtime Architecture, определённая настоящей частью, является официальной моделью построения Runtime подсистемы Market Intelligence.

Все существующие и будущие Runtime-компоненты обязаны соответствовать данной модели.

Любое изменение Runtime Architecture допускается исключительно посредством выпуска новой версии настоящего стандарта.

Part II. Runtime Contract

Настоящая часть определяет официальный Runtime Contract подсистемы Market Intelligence.

Runtime Contract представляет собой совокупность обязательных правил взаимодействия всех аналитических компонентов платформы.

Любой компонент, входящий в состав Runtime, обязан использовать исключительно контракты, определённые настоящим стандартом.

Использование альтернативных моделей взаимодействия не допускается.

Runtime Contract обеспечивает:

  • единообразие взаимодействия компонентов;
  • независимость реализации аналитических движков;
  • совместимость компонентов;
  • безопасное расширение платформы;
  • долгосрочную сопровождаемость архитектуры.

Runtime Contract является обязательной частью архитектуры платформы.


Общая модель взаимодействия

Все аналитические компоненты взаимодействуют посредством единой модели выполнения.

Каждый Engine получает стандартизированный входной контекст, выполняет анализ в пределах собственной области ответственности и возвращает стандартизированный результат.

Общая модель взаимодействия имеет следующий вид.

Runtime Context
        │
        ▼
      Engine
        │
        ▼
 Engine Result
        │
        ▼
  Coordinator
        │
        ▼
Market Intelligence Result

Каждый этап взаимодействия использует исключительно официальные Runtime Contract.

Прямое взаимодействие компонентов в обход контрактов не допускается.


Runtime Context

Runtime Context является официальным входным контрактом любого аналитического Engine.

Каждый Engine получает данные исключительно посредством Runtime Context.

Runtime Context определяет:

  • входные рыночные данные;
  • результаты разрешённых зависимостей;
  • параметры выполнения;
  • конфигурацию анализа;
  • служебную информацию Runtime.

Runtime Context не содержит:

  • пользовательский интерфейс;
  • торговые позиции;
  • состояние исполнения ордеров;
  • объекты внешних сервисов;
  • произвольные данные.

Состав Runtime Context определяется едиными моделями Runtime и одинаков для всех Engine.


Engine Execution Model

Все аналитические Engine выполняются по единой модели жизненного цикла.

Официальная последовательность выполнения имеет следующий вид.

Input Context
        │
        ▼
Input Validation
        │
        ▼
Analysis
        │
        ▼
Evaluation
        │
        ▼
Engine Result

Каждый этап жизненного цикла является обязательным.

Пропуск этапов выполнения не допускается.

Внутренняя реализация отдельных этапов определяется самим Engine и не регулируется настоящим документом.


Engine Instance Lifecycle

Экземпляры аналитических Engine создаются исключительно компонентом RuntimeRunner.

Ни один другой Runtime-компонент не имеет права самостоятельно создавать экземпляры Engine.

Во время выполнения анализа RuntimeRunner:

  1. получает EngineRegistration;
  2. создаёт новый экземпляр Engine;
  3. передаёт Engine официальный EngineContext;
  4. получает EngineResult;
  5. завершает жизненный цикл экземпляра Engine.

Официальная схема жизненного цикла имеет следующий вид.

EngineRegistration
        │
        ▼
RuntimeRunner
        │
        ▼
Create Engine Instance
        │
        ▼
analyze(context)
        │
        ▼
EngineResult
        │
        ▼
Destroy Instance

Каждый запуск анализа использует новый экземпляр Engine.

Повторное использование экземпляров между запусками не допускается.

Engine не должен хранить изменяемое состояние между выполнениями анализа.

Все данные, необходимые для анализа, должны передаваться исключительно посредством EngineContext.

RuntimeRegistry хранит только регистрацию Engine и никогда не создаёт экземпляры Engine.

Coordinator использует только результаты выполнения Engine и не взаимодействует с экземплярами Engine напрямую.


Engine Result

Результатом выполнения любого аналитического Engine является единый объект EngineResult.

Никакие альтернативные модели результата не допускаются.

EngineResult представляет собой официальный контракт обмена результатами анализа между компонентами платформы.

Каждый Engine обязан возвращать результат независимо от успешности выполнения анализа.

Даже при невозможности полного анализа Engine обязан вернуть корректно сформированный EngineResult с соответствующим статусом выполнения.

Структура EngineResult определяется настоящим стандартом и является обязательной для всех аналитических движков.


Runtime Result Flow

После завершения работы Engine результат передаётся Coordinator посредством официального Runtime Contract.

Coordinator не обращается к внутреннему состоянию Engine.

Coordinator работает исключительно с объектом EngineResult.

Это обеспечивает:

  • независимость Engine;
  • возможность замены реализации Engine;
  • единообразную обработку результатов;
  • безопасное развитие аналитической платформы.

Любые дополнительные сведения, необходимые Coordinator, должны быть частью официального Runtime Contract.


Runtime Ownership

Каждый Runtime-объект имеет единственного владельца.

Распределение ответственности определяется следующим образом.

Runtime-компонент Владелец
Runtime Context Runtime Layer
Engine Registration Runtime Registry
Engine Instance RuntimeRunner
Engine Result Engine
Runtime Status Runtime Layer
Diagnostics Engine
Payload Engine
Snapshot Engine
Runtime Events Runtime Layer

Жизненный цикл экземпляра Engine полностью принадлежит RuntimeRunner.

После завершения выполнения экземпляр Engine считается завершившим свой жизненный цикл и не должен использоваться повторно.

Ни один другой компонент Runtime не должен хранить ссылки на экземпляры Engine после завершения анализа.

Передача объекта другому компоненту не изменяет его владельца.

Компонент, получивший Runtime-объект, не должен изменять его внутреннее состояние.

Runtime-модели рассматриваются как неизменяемые после их формирования.


Контракт взаимодействия компонентов

Все компоненты Runtime взаимодействуют исключительно посредством официальных контрактов.

Каждый контракт обязан обладать следующими свойствами:

  • однозначностью;
  • стабильностью;
  • документированностью;
  • независимостью от реализации;
  • обратной совместимостью при допустимых изменениях.

Взаимодействие посредством внутренних структур компонентов запрещается.

Компоненты не должны зависеть от деталей реализации друг друга.

Это обеспечивает возможность независимого развития каждого архитектурного компонента.


Завершение Runtime Contract

Runtime Contract, определённый настоящей частью, является официальной моделью взаимодействия компонентов подсистемы Market Intelligence.

Все существующие и будущие аналитические компоненты обязаны использовать исключительно данный контракт.

Изменение Runtime Contract допускается только посредством официального изменения настоящего стандарта.

Part III. Engine Input Contract

Настоящая часть определяет официальный входной контракт любого аналитического Engine подсистемы Market Intelligence.

Входной контракт устанавливает единые требования к данным, которые могут использоваться аналитическими компонентами платформы.

Все существующие и будущие Engine обязаны использовать исключительно входной контракт, определённый настоящим стандартом.

Использование альтернативных способов получения данных не допускается.


Общий входной контракт

Каждый Engine получает входные данные исключительно посредством Runtime Context.

Runtime Context является единственным официальным источником входной информации для аналитических компонентов.

Ни один Engine не должен самостоятельно формировать собственный входной контракт.

Это обеспечивает:

  • единообразие выполнения;
  • независимость аналитических компонентов;
  • возможность безопасного тестирования;
  • совместимость компонентов Runtime.

Runtime Context

Runtime Context представляет собой полное описание информации, необходимой Engine для выполнения анализа.

Runtime Context формируется Runtime Layer до начала выполнения Engine.

После передачи Engine Runtime Context считается неизменяемым.

Engine использует Runtime Context только для чтения.

Изменение Runtime Context во время выполнения анализа не допускается.


Состав Runtime Context

Runtime Context может содержать только информацию, необходимую для выполнения анализа.

К допустимым категориям относятся:

  • рыночные данные;
  • временные характеристики;
  • параметры анализа;
  • конфигурация выполнения;
  • результаты разрешённых зависимостей;
  • служебная информация Runtime.

Конкретный состав Runtime Context определяется официальными Runtime Models.

Все Engine используют одинаковую структуру входного контракта.


Входные зависимости

При необходимости Engine может использовать результаты других аналитических компонентов.

Такие зависимости допускаются только при соблюдении следующих условий:

  • зависимость официально определена архитектурой;
  • данные предоставлены Runtime Context;
  • взаимодействие осуществляется исключительно посредством Runtime Contract;
  • Engine не обращается напрямую к реализации другого Engine.

Engine не должен самостоятельно получать результаты других компонентов.

Все зависимости разрешаются Runtime до начала выполнения Engine.


Допустимые источники данных

Engine может использовать только данные, предоставленные Runtime.

К допустимым источникам относятся:

  • Runtime Context;
  • официальные Runtime Models;
  • результаты разрешённых зависимостей;
  • собственная внутренняя конфигурация.

Любые другие источники данных считаются внешними и не входят в официальный входной контракт.


Запрещённые источники данных

Engine не должен самостоятельно получать информацию из внешних источников.

Не допускается прямое обращение:

  • к биржевым API;
  • к базе данных;
  • к пользовательскому интерфейсу;
  • к журналу событий;
  • к торговой подсистеме;
  • к компонентам исполнения ордеров;
  • к внутреннему состоянию других Engine;
  • к Coordinator.

Получение подобных данных должно выполняться Runtime до начала анализа.

Это обеспечивает воспроизводимость выполнения Engine и независимость аналитических компонентов.


Неизменяемость входных данных

После начала выполнения Engine входной контракт считается неизменяемым.

Engine не должен:

  • изменять Runtime Context;
  • изменять объекты входного контракта;
  • модифицировать результаты зависимостей;
  • сохранять изменения обратно в Runtime.

Все изменения состояния платформы выполняются исключительно за пределами Engine.

Это гарантирует повторяемость вычислений и исключает появление скрытых побочных эффектов.


Изоляция входного контракта

Каждый Engine рассматривает Runtime Context как локальную копию состояния платформы на момент начала анализа.

Engine не должен зависеть от изменения состояния Runtime во время собственного выполнения.

Любые изменения Runtime становятся доступными Engine только при следующем запуске анализа посредством нового Runtime Context.

Данное правило обеспечивает детерминированность выполнения аналитических компонентов.


Завершение Engine Input Contract

Engine Input Contract, определённый настоящей частью, является единственным допустимым способом передачи данных аналитическим компонентам платформы.

Все существующие и будущие Engine обязаны использовать исключительно данный входной контракт.

Любое изменение структуры входного контракта допускается только посредством официального изменения настоящего стандарта.

Part IV. Engine Result Contract

Настоящая часть определяет официальный контракт результата выполнения любого аналитического Engine подсистемы Market Intelligence.

Результат выполнения Engine является основным объектом обмена аналитической информацией внутри платформы.

Все существующие и будущие аналитические движки обязаны возвращать результат исключительно в формате, определённом настоящим стандартом.

Использование альтернативных моделей результата не допускается.


Общие требования

Каждый Engine обязан завершать выполнение формированием единого результата анализа.

Результат выполнения должен быть стандартизирован независимо от:

  • назначения Engine;
  • сложности анализа;
  • используемых алгоритмов;
  • полноты входных данных;
  • успешности выполнения анализа.

Единый контракт результата обеспечивает совместимость всех аналитических компонентов платформы.


Engine Result

Официальным результатом выполнения любого аналитического Engine является объект EngineResult.

EngineResult представляет собой единый Runtime Contract обмена аналитической информацией между компонентами платформы.

Каждый Engine возвращает исключительно один экземпляр EngineResult.

Возврат альтернативных структур данных не допускается.

Даже при невозможности полного анализа Engine обязан вернуть корректно сформированный EngineResult.


Обязательные логические разделы результата

Каждый EngineResult должен содержать следующие обязательные логические разделы.

Раздел Назначение
Status Состояние выполнения Engine
Evaluation Итоговая аналитическая оценка
Confidence Уровень уверенности результата
Metrics Вычисленные показатели анализа
Diagnostics Диагностическая информация
Payload Структурированное представление результата
Snapshot Снимок состояния результата
Metadata Служебная информация о выполнении

Данные разделы являются обязательными смысловыми частями результата.

Конкретная программная структура этих разделов определяется официальными Runtime Models.

Runtime Contract определяет содержание и назначение разделов.

Runtime Models определяют их конкретную реализацию.


Engine Status

Каждый результат обязан содержать официальный статус выполнения.

Статус определяет качество и полноту полученного результата.

Статус не является аналитической оценкой рынка.

Статус описывает исключительно процесс выполнения Engine.

Допустимые значения статуса определяются настоящим стандартом.


Evaluation

Evaluation представляет итоговую аналитическую оценку, сформированную Engine.

Evaluation содержит исключительно выводы, относящиеся к предметной области данного Engine.

Evaluation не должна содержать:

  • торговые решения;
  • команды исполнения;
  • рекомендации пользователю;
  • результаты других Engine.

Каждый Engine отвечает только за собственную аналитическую оценку.


Confidence

Confidence отражает степень уверенности Engine в корректности собственного результата.

Confidence относится исключительно к результату конкретного Engine.

Engine не должен интерпретировать Confidence как вероятность торгового успеха.

Правила вычисления Confidence определяются самим Engine.

Runtime определяет только способ представления данного значения.


Metrics

Metrics содержат количественные показатели, вычисленные Engine.

Каждая метрика должна быть:

  • измеримой;
  • воспроизводимой;
  • документированной;
  • относящейся исключительно к области ответственности данного Engine.

Metrics не содержат итоговых решений.

Они являются первичными аналитическими измерениями.


Diagnostics

Diagnostics содержат техническую информацию о выполнении анализа.

Диагностика предназначена исключительно для:

  • журналирования;
  • анализа качества работы;
  • поиска ошибок;
  • проверки корректности выполнения.

Diagnostics не участвуют в принятии аналитических решений.


Payload

Payload представляет структурированное описание результата анализа.

Payload предназначен для передачи информации другим компонентам платформы.

Payload должен содержать только официальные данные анализа.

Payload не должен содержать:

  • команды исполнения;
  • объекты пользовательского интерфейса;
  • торговые действия;
  • внутреннее состояние Runtime.

Snapshot

Snapshot представляет состояние результата в момент завершения анализа.

Snapshot используется для:

  • журналирования;
  • последующего анализа;
  • сравнения результатов;
  • воспроизводимости вычислений.

После формирования Snapshot считается неизменяемым.


Metadata

В Runtime Contract различаются два вида metadata:

Вид Назначение
Engine Metadata Описание Engine как компонента платформы.
Evaluation Metadata Служебная информация о конкретном выполнении Engine.

Engine Metadata описывает сам Engine и включает:

  • имя Engine;
  • версию Engine;
  • описание назначения;
  • поддерживаемые таймфреймы;
  • обязательные зависимости;
  • необязательные зависимости;
  • признак включения по умолчанию.

Engine Metadata не содержит аналитических выводов и не является результатом анализа.

Engine Metadata должна быть доступна без создания экземпляра Engine.

Evaluation Metadata относится к конкретному результату выполнения Engine и может включать:

  • идентификатор Engine;
  • версию реализации;
  • время выполнения;
  • продолжительность вычислений;
  • сведения о входных данных.

Evaluation Metadata не содержит аналитических выводов.


Неизменяемость результата

После формирования EngineResult его внутреннее состояние не должно изменяться.

Все Runtime-модели результата рассматриваются как неизменяемые.

Если требуется изменение результата, формируется новый экземпляр EngineResult.

Это обеспечивает:

  • воспроизводимость анализа;
  • корректное журналирование;
  • безопасную передачу между компонентами;
  • предсказуемость поведения Runtime.

Независимость результата

EngineResult должен быть полностью самодостаточным.

Компонент, получивший результат анализа, не должен обращаться к Engine за дополнительной информацией.

Вся информация, необходимая для последующей обработки, должна содержаться внутри официального Runtime Contract.

Это обеспечивает слабую связанность архитектурных компонентов.


Завершение Engine Result Contract

Engine Result Contract, определённый настоящей частью, является официальным стандартом представления результатов анализа в подсистеме Market Intelligence.

Все существующие и будущие аналитические компоненты обязаны возвращать результаты исключительно в соответствии с данным контрактом.

Любое изменение структуры EngineResult допускается только посредством официального изменения настоящего стандарта.

Part V. Runtime Status Contract

Настоящая часть определяет официальный контракт статусов Runtime и аналитических компонентов подсистемы Market Intelligence.

Статусы используются для описания качества выполнения, полноты результата и состояния аналитического компонента.

Статус не является аналитическим выводом о рынке.

Статус описывает исключительно состояние выполнения Runtime или Engine.


Назначение статусов

Runtime Status Contract обеспечивает единообразное описание состояния выполнения всех аналитических компонентов.

Статусы позволяют:

  • отличать успешное выполнение от частичного;
  • фиксировать недостаточность входных данных;
  • фиксировать устаревание данных;
  • безопасно обрабатывать ошибки;
  • сохранять объяснимость результата;
  • обеспечивать устойчивость Runtime.

Каждый Engine обязан использовать только официальные статусы, определённые настоящим стандартом.


Runtime Status

Runtime Status описывает состояние Runtime Layer как среды выполнения аналитических компонентов.

Runtime Status может использоваться для описания:

  • готовности Runtime;
  • доступности входного контекста;
  • актуальности Runtime Context;
  • состояния выполнения группы Engine;
  • состояния Coordinator Runtime.

Runtime Status не должен использоваться для описания аналитического вывода о рынке.


Engine Status

Engine Status описывает состояние выполнения конкретного Engine.

Engine Status является обязательной частью результата выполнения Engine.

Engine Status должен отражать качество и полноту выполнения анализа.

Engine Status не должен отражать торговую оценку, рыночное направление или рекомендацию к действию.


Допустимые состояния Engine

Каждый Engine использует единый набор статусов выполнения.

Допустимые состояния:

Статус Значение
OK Engine успешно выполнил анализ и сформировал полный результат.
PARTIAL Engine выполнил анализ частично и сформировал неполный, но пригодный результат.
STALE Engine выполнил анализ на устаревших или частично устаревших данных.
INSUFFICIENT_DATA Engine не имеет достаточного объёма данных для полного анализа.
ERROR Engine завершился с ошибкой, но безопасно сформировал результат.
DISABLED Engine отключён и не выполняет анализ.

Использование собственных статусов Engine не допускается.


Правила применения статусов

Статус должен соответствовать фактическому состоянию выполнения Engine.

Engine должен возвращать:

  • OK, если анализ выполнен полностью;
  • PARTIAL, если результат сформирован не полностью, но может быть использован;
  • STALE, если входные данные устарели;
  • INSUFFICIENT_DATA, если данных недостаточно для корректного анализа;
  • ERROR, если выполнение завершилось ошибкой;
  • DISABLED, если Engine отключён конфигурацией или архитектурным режимом.

Статус не должен использоваться для сокрытия ошибок реализации.


Статус и аналитическая оценка

Статус выполнения отделён от аналитической оценки.

Например:

  • OK не означает положительный рыночный сигнал;
  • ERROR не означает негативное состояние рынка;
  • PARTIAL не означает слабое движение рынка;
  • STALE не означает изменение рыночного режима.

Аналитическая оценка должна располагаться в соответствующем разделе результата Engine.

Статус описывает только качество выполнения.


Статус и Reason Code

Каждый статус, отличный от OK, должен сопровождаться объяснимой причиной.

Причина должна быть представлена через официальный Reason Code.

Использование произвольного текстового описания причины вместо Reason Code не допускается.

Reason Code позволяет обеспечить:

  • единообразную диагностику;
  • машинную обработку причин;
  • перевод в человекочитаемый текст отдельным слоем;
  • стабильность логирования;
  • независимость Runtime от пользовательского интерфейса.

Инварианты статусов

Runtime Status Contract имеет следующие инварианты:

  • каждый Engine всегда возвращает статус;
  • статус всегда относится к выполнению, а не к торговому решению;
  • OK допускается только при полном успешном выполнении;
  • ошибки не выбрасываются наружу без формирования результата;
  • статус не заменяет Reason Code;
  • Reason Code не заменяет Diagnostics;
  • пользовательский текст не является частью статуса.

Нарушение любого из указанных инвариантов рассматривается как нарушение Runtime Contract.


Завершение Runtime Status Contract

Runtime Status Contract, определённый настоящей частью, является обязательным для всех аналитических компонентов платформы.

Все существующие и будущие Engine обязаны использовать только официальные статусы выполнения.

Любое изменение набора статусов допускается только посредством официального изменения настоящего стандарта.


Part VI. Diagnostics and Explainability Contract

Настоящая часть определяет единый контракт диагностики и объяснимости результатов анализа подсистемы Market Intelligence.

Диагностика и объяснимость являются обязательными свойствами любого аналитического результата.

Ни один аналитический компонент не должен формировать результат, который невозможно объяснить или воспроизвести.

Настоящий раздел устанавливает единые требования к представлению причин, диагностической информации и сопроводительных данных результатов анализа.


Общие положения

Каждый аналитический Engine обязан сопровождать результат выполнения достаточной информацией, позволяющей:

  • понять процесс выполнения анализа;
  • определить причину полученного результата;
  • воспроизвести последовательность вычислений;
  • оценить качество результата;
  • выполнить последующую диагностику.

Диагностическая информация является частью Runtime Contract.


Explainability

Объяснимость результатов является обязательным свойством аналитической платформы.

Каждый результат анализа должен позволять ответить на следующие вопросы:

  • почему получен именно данный результат;
  • какие входные данные использовались;
  • какие ограничения существовали во время выполнения;
  • насколько результат является надёжным;
  • какие факторы оказали влияние на итоговую оценку.

Получение результата без возможности объяснить его происхождение не допускается.


Reason Code

Причины формирования результата представляются посредством официального Reason Code.

Reason Code является стандартизированным идентификатором причины результата.

Reason Code используется для:

  • машинной обработки;
  • журналирования;
  • диагностики;
  • последующего преобразования в человекочитаемый текст.

Engine не должен самостоятельно генерировать текстовые описания причин.

Преобразование Reason Code в пользовательский текст выполняется отдельным слоем платформы.


Diagnostics

Diagnostics содержит служебную информацию о процессе выполнения анализа.

Diagnostics предназначен исключительно для инженерных задач.

Diagnostics может содержать:

  • сведения о выполненных этапах анализа;
  • сведения о пропущенных этапах;
  • информацию о качестве входных данных;
  • сведения о внутренних проверках;
  • информацию о времени выполнения;
  • дополнительные диагностические показатели.

Diagnostics не участвует в принятии аналитических решений.


Payload

Payload представляет структурированное представление результатов анализа.

Payload предназначен для передачи аналитической информации между архитектурными компонентами платформы.

Payload должен содержать исключительно результаты анализа.

Payload не должен содержать:

  • команды исполнения;
  • пользовательский интерфейс;
  • торговые инструкции;
  • внутреннее состояние Runtime;
  • объекты реализации Engine.

Payload является частью официального Runtime Contract.


Snapshot

Snapshot представляет состояние результата в момент завершения выполнения Engine.

Snapshot используется исключительно для:

  • журналирования;
  • последующего анализа;
  • сравнения результатов;
  • воспроизводимости вычислений.

Snapshot не должен использоваться как источник аналитических решений.

После формирования Snapshot считается неизменяемым.


Runtime Events

Runtime может публиковать события, отражающие жизненный цикл выполнения аналитических компонентов.

Runtime Events предназначены для:

  • журналирования;
  • мониторинга;
  • диагностики;
  • анализа выполнения Runtime.

Runtime Events не используются для передачи аналитических результатов.

Аналитическая информация передаётся исключительно посредством официального Runtime Contract.


Разделение ответственности

Диагностические сущности имеют строго определённую область ответственности.

Компонент Назначение
Reason Code Причина результата
Diagnostics Техническая диагностика
Payload Передача аналитических данных
Snapshot Фиксация результата
Runtime Events События жизненного цикла Runtime

Пересечение областей ответственности между указанными сущностями не допускается.


Инварианты диагностики

Diagnostics Contract имеет следующие инварианты.

Каждый аналитический результат:

  • сопровождается диагностической информацией;
  • имеет объяснимую причину формирования;
  • допускает воспроизведение процесса анализа;
  • отделяет диагностику от аналитической оценки;
  • отделяет диагностику от пользовательского интерфейса.

Диагностика должна оставаться независимой от реализации конкретного Engine.


Завершение Diagnostics Contract

Diagnostics and Explainability Contract является обязательной частью Runtime Contract.

Все аналитические компоненты платформы обязаны использовать единые механизмы диагностики и объяснимости результатов.

Любое изменение Diagnostics Contract допускается исключительно посредством официального изменения настоящего стандарта.


Part VII. Dependency Contract

Настоящая часть определяет официальный контракт зависимостей подсистемы Market Intelligence.

Dependency Contract устанавливает единые правила взаимодействия архитектурных компонентов платформы.

Основной целью настоящего раздела является обеспечение независимости компонентов, предотвращение появления скрытых зависимостей и сохранение долгосрочной сопровождаемости архитектуры.

Все существующие и будущие компоненты платформы обязаны соответствовать требованиям настоящего раздела.


Общие положения

Архитектура платформы строится на принципе явных и однонаправленных зависимостей.

Каждая зависимость должна быть:

  • необходимой;
  • явной;
  • объяснимой;
  • документированной;
  • архитектурно обоснованной.

Появление скрытых зависимостей не допускается.


Архитектурная модель зависимостей

Допустимая модель зависимостей имеет следующий вид.

Coordinator Layer
        │
        ▼
Engine Layer
        │
        ▼
Runtime Layer
        │
        ▼
Common Layer

Каждый компонент может использовать только компоненты, расположенные ниже по архитектурной иерархии.

Обратные зависимости запрещаются.


Допустимые зависимости

Архитектурный компонент может зависеть только от компонентов, предусмотренных архитектурной моделью платформы.

Допустимыми code dependencies являются:

  • Coordinator → Runtime Contract;
  • Coordinator → Engine Contract;
  • Engine Implementation → Engine Contract;
  • Engine → Runtime;
  • Engine → Common;
  • Runtime → Common.

Execution Flow и Code Dependency являются разными архитектурными понятиями.

Execution Flow допускает следующую модель выполнения:

Coordinator
        │
        ▼
Engine

Запрещённые зависимости

Не допускаются следующие зависимости:

  • Engine → Engine;
  • Runtime → Engine;
  • Common → Runtime;
  • Common → Engine;
  • Common → Coordinator;
  • Runtime → Coordinator;
  • Engine → Coordinator.

Также запрещается:

  • использование внутренних структур другого компонента;
  • импорт приватных сущностей;
  • обход официальных контрактов;
  • косвенное создание циклических зависимостей.

Зависимости между Engine

Каждый Engine рассматривается как полностью независимый аналитический компонент.

Engine не должен:

  • импортировать другой Engine;
  • обращаться к внутреннему состоянию другого Engine;
  • использовать внутренние модели другого Engine;
  • управлять выполнением другого Engine.

Если одному Engine требуется результат другого Engine, соответствующая информация должна предоставляться Runtime посредством официального Runtime Context.

Таким образом взаимодействие осуществляется через контракт, а не посредством прямой зависимости между компонентами.


Runtime как граница взаимодействия

Runtime является единственной официальной границей взаимодействия аналитических компонентов.

Все данные, необходимые Engine для выполнения анализа, должны быть подготовлены Runtime до начала выполнения Engine.

Во время выполнения Engine не должен самостоятельно получать дополнительные данные из других архитектурных компонентов.

Это обеспечивает:

  • воспроизводимость вычислений;
  • независимость Engine;
  • возможность безопасного тестирования;
  • минимизацию связанности компонентов.

Зависимости от внешних систем

Компоненты подсистемы Market Intelligence не должны зависеть напрямую от внешних систем.

Не допускаются прямые зависимости от:

  • биржевых API;
  • торговой подсистемы;
  • пользовательского интерфейса;
  • базы данных;
  • журнала событий;
  • систем исполнения ордеров;
  • сервисов уведомлений.

Получение информации из внешних источников должно выполняться до формирования Runtime Context.


Dependency Inversion

Архитектура платформы должна строиться на зависимости от официальных контрактов, а не от конкретных реализаций.

Компоненты взаимодействуют посредством:

  • Runtime Contract;
  • Runtime Models;
  • Common Models;
  • Engine Metadata;
  • официальных интерфейсов взаимодействия.

Замена внутренней реализации компонента не должна влиять на остальные компоненты платформы при сохранении официального контракта.


Инварианты Dependency Contract

Dependency Contract имеет следующие инварианты.

Архитектура всегда сохраняет:

  • однонаправленные зависимости;
  • отсутствие циклических импортов;
  • отсутствие скрытых зависимостей;
  • взаимодействие исключительно через официальные контракты;
  • независимость аналитических компонентов;
  • возможность независимого тестирования Engine.

Нарушение любого из перечисленных инвариантов рассматривается как нарушение Runtime Contract.


Завершение Dependency Contract

Dependency Contract является обязательной частью Runtime Contract подсистемы Market Intelligence.

Все существующие и будущие компоненты платформы обязаны соблюдать установленные правила зависимостей.

Любое изменение архитектурной модели зависимостей допускается исключительно посредством официального изменения настоящего стандарта.

Part VIII. Runtime Safety

Настоящая часть определяет требования к устойчивости Runtime подсистемы Market Intelligence.

Runtime должен обеспечивать безопасное выполнение аналитических компонентов независимо от полноты входных данных, состояния отдельных Engine или возникновения внутренних ошибок.

Основной целью Runtime Safety является сохранение работоспособности аналитической платформы при возникновении локальных отказов.


Общие требования

Runtime должен обеспечивать устойчивую работу аналитической платформы независимо от состояния отдельных компонентов.

Каждый Runtime-компонент обязан:

  • корректно завершать выполнение;
  • публиковать официальный результат;
  • использовать официальный Runtime Status;
  • сохранять объяснимость результата;
  • обеспечивать возможность последующей диагностики.

Локальная ошибка не должна приводить к разрушению общего процесса анализа.


Graceful Degradation

Подсистема Market Intelligence должна поддерживать контролируемую деградацию функциональности.

При невозможности выполнения полного анализа допускается публикация частичного результата при условии, что:

  • результат явно помечен соответствующим статусом;
  • ограничения результата отражены посредством Reason Code;
  • сохранена диагностическая информация;
  • остальные аналитические компоненты продолжают выполнение.

Контролируемая деградация рассматривается как штатный режим работы Runtime.


Error Isolation

Ошибка одного Engine не должна распространяться на остальные аналитические компоненты.

При возникновении ошибки Engine обязан:

  • безопасно завершить выполнение;
  • сформировать корректный Engine Result;
  • установить соответствующий Engine Status;
  • сохранить диагностическую информацию;
  • передать результат Coordinator посредством официального Runtime Contract.

Coordinator обязан продолжить обработку остальных доступных результатов.


Partial Result

Если Engine не может сформировать полный результат, допускается публикация частичного результата.

Частичный результат должен:

  • соответствовать официальному Runtime Contract;
  • иметь корректный статус выполнения;
  • содержать объяснимую причину неполноты;
  • сохранять диагностическую информацию.

Использование частичного результата определяется Coordinator и не входит в область ответственности Engine.


Fault Tolerance

Runtime должен сохранять работоспособность при возникновении отказов отдельных компонентов.

Runtime обязан обеспечивать:

  • локализацию ошибок;
  • независимость выполнения Engine;
  • отсутствие каскадных отказов;
  • воспроизводимость поведения;
  • сохранение официальных Runtime Contract.

Нарушение работы одного компонента не должно приводить к потере работоспособности Runtime в целом.


Устойчивость Runtime Contract

Все официальные Runtime Contract должны сохранять свою корректность независимо от результата выполнения анализа.

Даже при возникновении ошибки Runtime обязан публиковать корректно сформированные объекты Runtime.

Не допускается:

  • возврат неопределённых структур данных;
  • нарушение официального контракта;
  • отсутствие статуса выполнения;
  • отсутствие диагностической информации.

Runtime Contract должен оставаться стабильным при любых допустимых сценариях выполнения.


Инварианты Runtime Safety

Runtime Safety имеет следующие инварианты.

Подсистема Market Intelligence всегда сохраняет:

  • официальные Runtime Contract;
  • объяснимость результатов;
  • независимость аналитических компонентов;
  • локализацию ошибок;
  • корректность статусов;
  • возможность диагностики;
  • воспроизводимость поведения.

Нарушение любого из перечисленных инвариантов рассматривается как нарушение настоящего стандарта.


Завершение Runtime Safety

Требования Runtime Safety являются обязательными для всех компонентов подсистемы Market Intelligence.

Все существующие и будущие аналитические компоненты обязаны обеспечивать безопасное выполнение в соответствии с настоящим разделом.

Любое изменение требований Runtime Safety допускается исключительно посредством официального изменения настоящего стандарта.

Part IX. Runtime Evolution

Настоящая часть определяет правила долгосрочного развития Runtime подсистемы Market Intelligence.

Runtime рассматривается как фундаментальный архитектурный уровень платформы.

Развитие Runtime допускается только при сохранении совместимости с фундаментальными архитектурными принципами и официальными Runtime Contract.


Общие принципы развития

Runtime должен развиваться последовательно и предсказуемо.

Любое изменение Runtime должно:

  • иметь архитектурное обоснование;
  • соответствовать требованиям настоящего стандарта;
  • сохранять согласованность Runtime Layer;
  • не нарушать существующие архитектурные инварианты.

Изменение Runtime не должно выполняться исключительно ради изменения внутренней реализации.


Развитие Runtime Contract

Runtime Contract является официальным механизмом взаимодействия архитектурных компонентов.

Любое изменение Runtime Contract должно:

  • быть архитектурно обоснованным;
  • документироваться одновременно с изменением архитектуры;
  • сохранять внутреннюю согласованность контракта;
  • учитывать влияние на существующие компоненты платформы.

Изменение Runtime Contract рассматривается как архитектурное изменение и требует соответствующего Architecture Review.


Расширение Runtime

Расширение Runtime является предпочтительным способом развития платформы.

Новые возможности должны добавляться посредством расширения существующей архитектуры без изменения фундаментальной модели Runtime.

При расширении Runtime должны соблюдаться следующие требования:

  • новая сущность имеет единственную область ответственности;
  • место новой сущности определено заранее;
  • используются существующие архитектурные контракты либо их официальное расширение;
  • отсутствует дублирование существующих сущностей;
  • сохраняется архитектурная простота Runtime.

Расширение Runtime не должно увеличивать связанность компонентов.


Изменение Runtime Model

Runtime Model может изменяться только при наличии подтверждённой архитектурной необходимости.

К таким случаям относятся:

  • устранение архитектурного дефекта;
  • повышение сопровождаемости Runtime;
  • упрощение архитектурной модели;
  • развитие официальных Runtime Contract;
  • устранение архитектурного долга.

Изменение Runtime Model не должно нарушать фундаментальные свойства Runtime Layer.


Архитектурная стабильность Runtime

Runtime относится к наиболее стабильным архитектурным слоям платформы.

Чем ближе компонент расположен к Runtime Layer, тем более строгими должны быть требования к его изменению.

Любое изменение Runtime должно рассматриваться как изменение архитектурного фундамента платформы.


Критерии качественного развития Runtime

Развитие Runtime считается успешным только при одновременном выполнении следующих условий:

  • расширяются возможности аналитической платформы;
  • сохраняется совместимость Runtime Contract;
  • не увеличивается архитектурная сложность;
  • сохраняется объяснимость Runtime;
  • повышается сопровождаемость платформы.

Если изменение Runtime приводит к усложнению архитектуры без существенной инженерной ценности, такое изменение должно быть пересмотрено.


Завершение Runtime Evolution

Развитие Runtime должно обеспечивать долгосрочную стабильность архитектуры подсистемы Market Intelligence.

Все изменения Runtime обязаны сохранять:

  • архитектурную целостность;
  • официальные Runtime Contract;
  • архитектурные инварианты;
  • объяснимость архитектуры;
  • возможность дальнейшего безопасного развития платформы.

Runtime развивается посредством последовательных архитектурно согласованных изменений, каждое из которых делает платформу функционально богаче без увеличения её архитектурной сложности.

Part X. Заключительные положения

Настоящая часть завершает настоящий инженерный стандарт и определяет порядок его применения, развития и сопровождения.

Все положения настоящего документа являются обязательными для архитектуры подсистемы Market Intelligence проекта Dzentra.


Соответствие настоящему стандарту

Все компоненты Runtime обязаны соответствовать требованиям настоящего стандарта.

Соответствие подтверждается посредством процедур Architecture Review, определённых документом Development Process.

Runtime считается соответствующим настоящему стандарту только при одновременном выполнении следующих условий:

  • соблюдены требования Runtime Layer;
  • соблюдены требования Runtime Contract;
  • соблюдены архитектурные ограничения;
  • сохранены Runtime-инварианты;
  • обеспечена архитектурная согласованность;
  • документация соответствует текущему состоянию Runtime.

Несоответствие любому обязательному требованию настоящего стандарта рассматривается как архитектурный дефект.


Развитие стандарта

Настоящий документ рассматривается как долгосрочный инженерный стандарт.

Развитие настоящего стандарта допускается только посредством выпуска новой версии документа.

Каждая новая редакция должна:

  • сохранять фундаментальную архитектурную модель Runtime либо официально фиксировать её изменение;
  • устранять неоднозначности;
  • повышать согласованность Runtime Contract;
  • улучшать сопровождаемость Runtime;
  • уменьшать архитектурную сложность платформы.

Изменение настоящего стандарта не должно приводить к ухудшению архитектурного качества платформы.


Приоритет настоящего стандарта

Настоящий документ является официальным источником требований к Runtime подсистемы Market Intelligence.

При возникновении противоречий между настоящим документом и другими инженерными материалами приоритет имеют требования настоящего стандарта.

Документы более низкого уровня обязаны развивать положения настоящего стандарта и не могут изменять его фундаментальные требования.


Runtime-аксиома Dzentra

Фундаментальной аксиомой Runtime платформы Dzentra является следующее утверждение.

Runtime определяет архитектурные контракты взаимодействия компонентов, но не реализует предметную или аналитическую логику.

Данная аксиома является итоговым выражением всех требований настоящего стандарта.

Любое изменение Runtime должно оцениваться прежде всего с точки зрения соответствия этой аксиоме.

Если после изменения Runtime начинает содержать аналитическую, торговую или предметную логику, принятое решение должно быть пересмотрено независимо от достигнутой функциональности.


Заключительные положения

Настоящий документ определяет официальный Runtime Contract подсистемы Market Intelligence проекта Dzentra.

Все существующие и будущие Runtime-компоненты обязаны соответствовать требованиям настоящего стандарта.

Настоящий документ является фундаментом для:

  • Engine Layer;
  • Coordinator Layer;
  • Runtime Models;
  • Runtime Events;
  • Runtime Context;
  • Runtime Contract;
  • Engine Contract;
  • всех последующих аналитических компонентов платформы.

Настоящий документ остаётся единым официальным источником требований к Runtime подсистемы Market Intelligence.


Приложения

Приложения являются справочной частью настоящего стандарта.

Они не изменяют обязательные требования документа, но используются для унификации архитектурной практики проекта.

В последующих версиях стандарта могут быть подготовлены отдельные приложения.

  • Приложение А. Runtime Glossary.
  • Приложение Б. Каталог Runtime Models.
  • EngineMetadata
  • EngineContext
  • EngineResult
  • EngineDependencyResult
  • EngineEvaluationMeta
  • EngineDiagnostics
  • EngineMetric
  • Приложение В. Каталог Runtime Events.
  • Приложение Г. Runtime State Diagrams.
  • Приложение Д. Примеры допустимых Runtime Contract.
  • Приложение Е. Примеры недопустимых Runtime Contract.