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:
The system is organized into five architectural layers:
Foundation Layer
- Components: ores.database, ores.utility, ores.variability.
- Database: PostgreSQL connectivity, connection pooling, health monitoring, repository helpers.
- Utility: Logging, filesystem utilities, UUID generation, environment variables, string conversion.
- Variability: Feature flags and runtime configuration management.
- No dependencies on other ORE Studio components (ores.database is the base).
Infrastructure Layer
- Components: ores.comms, ores.testing, ores.eventing.
- Communications: Binary protocol over SSL/TLS for client-server messaging. Publishes connection lifecycle events (connected, disconnected, reconnecting, reconnected) to event bus.
- Testing: Catch2 integration with database isolation and logging.
- Eventing: Event-driven architecture with in-process publish/subscribe event bus, PostgreSQL LISTEN/NOTIFY integration, and entity change notifications.
- Depends on: Foundation.
Domain Layer
- Components: ores.risk, ores.accounts.
- Risk: ORE domain model with XML/CSV/JSON I/O and temporal versioning.
- Accounts: User authentication, authorisation, and feature flags.
- Depends on: Foundation, Infrastructure
Application Layer
- Components: ores.client, ores.cli, ores.qt, ores.service, ores.shell.
- Client: REPL client.
- CLI: Command-line import/export of currencies in multiple formats
- Qt: Desktop GUI with MDI interface for visual data management
- Service: Multi-client server hosting all backend services
- Depends on: All layers
Useful Pages
- To understand the binary protocol, see the Protocol Reference.
- To understand how we generate PlantUML diagrams see the PlantUML Modeler skill.
- To understand how to add new domain types, see the Domain Type Creator skill.
- To understand unit testing, see the Unit Test Writer skill.
General information
- For detailed component documentation, see the individual components.
- API documentation: https://orestudio.github.io/OreStudio/doxygen/html/index.html
- Source code: https://github.com/OreStudio/OreStudio
- Project website: https://orestudio.github.io/OreStudio
This project has no affiliation with Acadia, Open Source Risk Engine, or QuantLib. See Doxygen documentation for full context.
| Previous: Documentation |
