Skip to main content

Software Architecture Guide

This guide describes the software architecture of OCUDU. Reading it before diving into the codebase will help you understand the design decisions, where contributions belong, and what the codebase expects from every contributor.

The guide is structured in three parts:

  • Vision and Goals - the platform ambition behind OCUDU and the design goals every contribution must respect.

  • Design Principles - the engineering principles that shape every class and interface:

  • Realization - how the principles above are concretely expressed in the implementation:

    • Threading Model - executor-based, fully configurable, decoupled from protocol logic.
    • Asynchronous Programming - coroutine-based async procedures for complex 5G NR flows.
    • Interfaces - stack-layer interfaces, FAPI, and supported functional splits.
    • Metrics Reporting - per-layer KPI and performance metrics via injected reporter interfaces.
    • Real-Time Safety - timing constraints, forbidden operations, and CI enforcement.
    • Use of C++ - C++17/20/23 features, specialised containers, executors, and SIMD.
    • Testing - unit, component, integration, and E2E test strategy.
    • Plugins - extending or replacing OCUDU components with third-party implementations.
  • Software Design Patterns - the patterns used consistently across the codebase.

  • References - books and online resources for further reading on Clean Architecture, SOLID, C++ software design, and design patterns.