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:
- Clean Architecture - layered dependency model; arrows always point inward.
- Clean Code - SOLID - the five SOLID principles with OCUDU-specific guidance and violation patterns.
- Object Oriented Programming - encapsulation, polymorphism, composition over inheritance, ownership rules.
-
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.
Vision and Goals
The platform goals and design ambitions that every OCUDU contribution must respect.
Design Principles
3 items
Realization
9 items
References
Books and online resources for Clean Architecture, SOLID, C++ software design, and design patterns.