System Model

This file documents the architecture of the ORE Studio system. ORE Studio provides a graphical interface and data management for Open Source Risk Engine (ORE).

ORE Studio is a C++-23 application providing persistent storage, graphical user interface, and orchestration tools for quantitative risk analysis using ORE. The system is built on a layered architecture with clear separation of concerns. The objective of this page is to describe the system architecture.

To operate on the system architecture, see the System Architect skill.

System Architecture

Diagram:

Description

Figure 1: ORE Studio System Diagram

The system is organised into four architectural layers:

Foundation Layer

  • ores.utility: UUID generation, base32/base64 encoding, string conversion, faker utilities. No ores dependencies.
  • ores.platform: Filesystem utilities, environment variables, network info, cross-platform time utilities. Depends on: utility.
  • ores.logging: Core logging infrastructure with Boost.Log integration, logger factory, severity levels. Depends on: platform.
  • ores.telemetry: Extends logging with distributed tracing (trace_id, span_id), OpenTelemetry integration, log record export. Depends on: logging, platform.
  • ores.database: PostgreSQL connectivity, connection pooling, health monitoring, repository helpers. Depends on: telemetry, utility.
  • ores.variability: Feature flags and runtime configuration management.
  • ores.geo: IP-to-location geolocation using MaxMind GeoLite2-City database. Provides country, city, and coordinate lookups for session tracking.
  • ores.sql: Postgres Database setup.
  • ores.security: Shared security primitives for cryptography (password hashing with scrypt, AES-256-GCM encryption) and validation (password policy, email format). Used by ores.iam and ores.connections.
  • ores.codegen: Basic code-generation utility.
  • Dependency order: utility → platform → logging → telemetry → database.

Infrastructure Layer

  • ores.comms: Binary protocol over SSL/TLS for client-server messaging. Publishes connection lifecycle events (connected, disconnected, reconnecting, reconnected) to event bus.
  • ores.testing: Catch2 integration with database isolation and logging listeners.
  • ores.eventing: Event-driven architecture with in-process publish/subscribe event bus, PostgreSQL LISTEN/NOTIFY integration, and entity change notifications.
  • ores.assets: Asset management for images and visual resources. Binary image storage, hierarchical tagging, currency-to-image linking, messaging handlers (0x4000-0x4FFF).
  • ores.http: HTTP infrastructure for RESTful API support. JWT token parsing, claims extraction, authentication middleware support.
  • ores.connections: Client-side server connection bookmark manager. Hierarchical folder organization, tag-based categorization, encrypted credential storage using AES-256-GCM with master password, SQLite local persistence.
  • Depends on: Foundation (telemetry, database).

Domain Layer

  • ores.refdata: ORE domain model with XML/CSV/JSON I/O and temporal versioning.
  • ores.iam: User authentication, authorisation, and session management.
  • ores.fpml: Financial Products Markup Language (FPML) processing infrastructure for handling derivatives and securities trade representations.
  • ores.ore: ORE (Open Source Risk Engine) specific code, mainly importing and exporting capabilities.
  • Depends on: Foundation, Infrastructure

Application Layer

  • ores.comms.shell: REPL client. Exercises the service layer via the binary comms protocol.
  • ores.cli: Command-line import/export of entities in multiple formats, exercises the database layer directly.
  • ores.qt: Desktop GUI with MDI interface for visual data management.
  • ores.comms.service: Multi-client server hosting all backend services.
  • ores.http.server: RESTful HTTP API server for ORE Studio. Alternative to binary protocol for web clients and integrations.
  • ores.wt: Web application built with Wt framework for browser-based access. Account management, currency operations, feature flags via web UI.
  • ores.comms.analyser: Communication session analyzer for debugging protocol issues. Parse and decode recorded binary protocol sessions.
  • Depends on: All layers

Useful Pages

General information

This project has no affiliation with Acadia, Open Source Risk Engine, or QuantLib. See Doxygen documentation for full context.

Previous: Documentation