Skip to content

Specification & Traceability

OpenSOME/IP tracks protocol coverage against the Open SOME/IP Specification using Sphinx-Needs annotations embedded directly in the source code.

At a Glance

Metric Value
Total requirements 649
Spec-derived 486
Implementation-derived 163
Critical / High priority coverage 100%
C++ unit tests 169+
Python tests 80+

Reports

These reports are generated automatically on every CI run.

Report Description
Gap Analysis Per-category breakdown of implementation and test coverage
Implementation Status Executive summary with priority analysis and recommendations
Implementation Verification Which requirements have code annotations vs. truly missing
Spec Mapping Maps every Open SOME/IP spec requirement to implementation requirements

Interactive Views

View Description
Requirements Documentation Full Sphinx-Needs requirements browser (searchable, filterable)
Traceability Matrix Interactive HTML matrix linking requirements, code, and tests

How Traceability Works

Developers annotate source files with structured comments:

/** @implements REQ_MSG_051 */
void Message::set_service_id(uint16_t service_id) { ... }
/** @tests REQ_MSG_051 */
TEST_F(MessageTest, SetServiceId) { ... }

Requirements are defined in RST files under docs/requirements/ using Sphinx-Needs directives, and linked to the Open SOME/IP spec via :satisfies: references.

The CI pipeline extracts all annotations, cross-references them with the requirements database, and produces the reports listed above.

See the Traceability Guide for details on adding annotations to your code.