Implementation & Test Code

Need: (CODE) Implementation follows requirement IDs and architecture specifications. CODE_IMPL_001 _images/arrow-right-circle.svg
status: active
tags: implementation, code, traceability

The C++ implementation captures traceability via structured comments and stable interfaces.

Need: (TEST) Test suite provides coverage of requirements. TEST_CODE_001 _images/arrow-right-circle.svg
status: active
tags: verification, testing, code

The native test runner writes test_results.xml in JUnit format and maps to the TEST_* needs.

Need: (CODE) Complete example includes both documentation and implementation. CODE_REPO_001 _images/arrow-right-circle.svg
status: active
tags: repository, structure

This example keeps documentation (*.rst) next to the C++ source and test artifacts for end-to-end traceability.

Code Organization

This TSIM implementation is written in C++ and keeps the same requirement IDs as the reference example.

examples/cpp_hello_world/
├── include/
│   └── tsim.hpp
├── src/
│   └── tsim.cpp
├── tests/
│   └── test_tsim.cpp        # Native test runner writing JUnit XML
├── CMakeLists.txt
├── test_results.xml         # Generated by ./build-and-test.sh
└── build-and-test.sh

Traceability in C++ Code

In C/C++ projects, requirement traceability is typically captured via:

  • structured comments (e.g., REQ_FUNC_001, TEST_CONVERSION_001)

  • public headers as architecture artifacts (interfaces)

The API in include/tsim.hpp maps directly to:

Building & Running Tests

cd examples/cpp_hello_world

# Build
cmake -S . -B build
cmake --build build

# Run tests (writes JUnit XML)
./build/junit_tests test_results.xml

Then build the documentation (imports test_results.xml):

osqar build-docs --project examples/cpp_hello_world