1.4. Traceability

Traceability in software development refers to the ability to link various artifacts and components of a software project throughout its lifecycle. This includes requirements, architecture, design documents, code and tests.

In this project, traceability is achieved through the use of sphinx-needs tools.

1.4.1. Traceability Conventions

1.4.1.1. Types

Need Types and ID Patterns

Need Type

Description

ID Pattern

req

Software Requirement

req~<short-description>

arch

Software Architecture

arch~<short-description>

impl

Implementation

impl~<short-description>

dimpl

Detailed Design & Implementation

dimpl~<short-description>

dsgn

Detailed Design

dsgn~<short-description>

test

Unit Test

test~<short-description>

itest

Integration Test

itest~<short-description>

Short description must only contain letters, numbers, and hyphens.

Generally speaking every requirement should be traced through architecture, design, implementation and tests. The design and implementation can be combined if desired. In trivial cases, it is acceptable to skip architecture and/or design.

Rationale

Combining design and implementation reduces overhead, and is acceptable when the design is straightforward, and it’s easier to show the design in code comments than in separate documents.

1.4.1.2. Properties

This section documents the metadata properties used on sphinx-needs items to support Automotive SPICE (ASPICE) process compliance. These properties enable consistent classification, maturity tracking, and review workflows across all documentation artifacts.

1.4.1.2.1. Status

The :status: option tracks the maturity of each documentation item through its lifecycle. It applies to all need types (req, arch, dsgn, impl, dimpl, test, itest).

Allowed Status Values

Status

Description

Applies To

draft

Item is being written or is incomplete. Content may change significantly. This is the default status for newly created items.

All need types

valid

Item has been reviewed and is considered correct and complete. Content accurately reflects the intended behavior or design.

All need types

approved

Item has been formally approved by a reviewer or stakeholder. Content is frozen and may only change through a formal change request.

All need types

rejected

Item has been reviewed and rejected. The item needs rework before it can be accepted.

All need types

obsolete

Item is no longer applicable. It is retained for historical reference but should not be relied upon.

All need types

Items without an explicit :status: should be treated as draft.

1.4.1.2.2. Lifecycle

The typical status progression for an item is:

draft --> valid --> approved

Items may transition to rejected from draft or valid during review. Items may transition to obsolete from any status when they are superseded or no longer needed.

Usage Example

.. req:: Example Requirement
    :id: req~example
    :status: draft

    The system must do something.

1.4.1.3. Requirement Type

The :type: option classifies requirements by their nature. This is primarily relevant for req needs, but may optionally be applied to arch and dsgn items for additional classification.

Allowed Requirement Type Values

Type

Description

functional

Describes a behavior or capability the system must provide. Functional requirements define what the system does in response to inputs or conditions.

non-functional

Describes a quality attribute such as performance, reliability, availability, security, or maintainability. Non-functional requirements define how well the system performs.

interface

Describes an external interface or API contract. Interface requirements define the boundaries and communication protocols between the system and external entities.

constraint

Describes a design or implementation constraint imposed by the environment, standards, or organizational policies. Constraints limit the solution space without describing system behavior.

Usage Example

.. req:: HTTP-Server
    :id: req~sovd-api-http-server
    :status: valid
    :type: functional

    The CDA must provide an HTTP- or HTTPS-server.

1.4.1.3.1. Code

Code can be added to the traceability by utilizing sphinx-codelinks. The short format in a comment is as follows:

[[ <ID of the need>, <title>, <type>, <links> ]]

One-Line Example:

/// [[ dimpl~sovd.api.https.certificates, Handle HTTPS Certificates, dimpl, test~sovd.api.https.certificates ]]
/// description of the function
fn test {
    ...
}

Note

type and links are optional, if left empty, type will be dimpl

multi-line definitions are not supported at the time of writing by the src-trace directive.

1.4.1.4. Overviews

Software Requirements

Software Requirements overview

ID

Title

Status

req~doip-alive-check

Alive Check

draft

req~doip-communication-parameters

DoIP Communication Parameters

draft

req~doip-connection-management

DoIP Connection Management

draft

req~doip-diagnostic-message

Diagnostic Message Exchange

draft

req~doip-error-handling

DoIP Error Handling

draft

req~doip-message-framing

DoIP Message Framing

draft

req~doip-protocol-versions

DoIP Protocol Version Support

draft

req~doip-routing-activation

Routing Activation

draft

req~doip-tls

DoIP TLS Communication

draft

req~doip-vam-handling-mode

Spontaneous VAM Handling Mode

draft

req~doip-vehicle-identification

Vehicle Identification

draft

req~dt-database-loading

Database Loading

draft

req~dt-deferred-initialization

Communication Initialization Mode

draft

req~dt-doip-gateway-init

DoIP Gateway Initialization

draft

req~dt-ecu-discovery

ECU Discovery

draft

req~dt-ecu-list-persistence

ECU List Persistence

draft

req~dt-ecu-list-persistence-shutdown

ECU List Persistence - Shutdown Update

draft

req~dt-ecu-states

ECU States

draft

req~dt-error-handling

Startup Error Handling

draft

req~dt-startup-sequence

Startup Sequence

draft

req~dt-variant-detection

Variant Detection

draft

req~plugin-diagnostic-database-update

Diagnostic Database Update Plugin

draft

req~plugin-diagnostic-database-update-authentication

Diagnostic Database Update Plugin - Authentication

draft

req~plugin-diagnostic-database-update-downgrade-protection

Diagnostic Database Update Plugin - Downgrade Protection

draft

req~plugin-diagnostic-database-update-safety

Diagnostic Database Update Plugin - Safety

draft

req~plugin-diagnostic-database-update-verification

Diagnostic Database Update Plugin - Verification

draft

req~plugin-dlt-logging

DLT Logging

draft

req~plugin-dlt-logging-context-identification

DLT Logging - Context Identification

draft

req~plugin-dlt-logging-feature-gate

DLT Logging - Compile-Time Feature Gate

draft

req~plugin-dlt-logging-log-level-mapping

DLT Logging - Log Level Mapping

draft

req~plugin-dlt-logging-runtime-configuration

DLT Logging - Runtime Configuration

draft

req~plugin-vehicle-topology

Vehicle Topology Plugin

draft

req~plugin-vehicle-topology-reset

Vehicle Topology Plugin - Reset

draft

req~plugin-vehicle-topology-reset-clear-persisted

Vehicle Topology Plugin - Reset with Persisted List Control

draft

req~sovd-api-bytefield-as-hex

Data Type A_BYTEFIELD as Hex

draft

req~sovd-api-comparams

Communication Parameters API

draft

req~sovd-api-component-sdgsd

Component SDG/SDs

draft

req~sovd-api-components-entity-collection

Components Entity Collection

draft

req~sovd-api-data-types-mapping-iso17978

Entity Data Types

draft

req~sovd-api-ecu-variant-detection

Explicit ECU Variant Detection

draft

req~sovd-api-faults-endpoint

Faults Endpoint

draft

req~sovd-api-flashing

Flash API

draft

req~sovd-api-flashing-security

Flash API - Data Source Restriction

draft

req~sovd-api-functional-communication

Functional Communication

draft

req~sovd-api-health-endpoint

Health Monitoring Endpoint

draft

req~sovd-api-http-server

HTTP-Server

draft

req~sovd-api-http-server-port

HTTP-Server-Port

draft

req~sovd-api-https-server-configuration

HTTPS-Server configuration

draft

req~sovd-api-lock-acquisition-policy

Lock Acquisition Policy

draft

req~sovd-api-lock-api

Lock API

draft

req~sovd-api-lock-defunct

Defunct Lock State

draft

req~sovd-api-lock-defunct-enforcement

HTTP 409 for Preempted Clients

draft

req~sovd-api-lock-ecu-enforcement

ECU Lock Endpoint Enforcement

draft

req~sovd-api-lock-exclusivity

Lock Exclusivity

draft

req~sovd-api-lock-exclusivity-policy

Lock Exclusivity Policy

draft

req~sovd-api-lock-expiration

Lock Expiration

draft

req~sovd-api-lock-fg-enforcement

Functional Group Lock Endpoint Enforcement

draft

req~sovd-api-lock-priority

Lock Priority Preemption

draft

req~sovd-api-lock-requirement-policy

Lock Requirement Policy

draft

req~sovd-api-lock-vehicle-blocking

Vehicle Lock Blocks Child Lock Acquisition

draft

req~sovd-api-mdd-embedded-files

MDD Embedded files

draft

req~sovd-api-octet-stream-support

Support for mimetype application/octet-stream

draft

req~sovd-api-openapi-documentation

OpenAPI Documentation

draft

req~sovd-api-openapi-schema

OpenAPI Schema

draft

req~sovd-api-operations-handling

Operations Handling

draft

req~sovd-api-routine-operation-out-of-order

Support for non-standard operation order

draft

req~sovd-api-standalone-openapi-generator

Standalone OpenAPI Generator

draft

req~sovd-api-standardized-resource-collection-mapping

Standardized Resource Collection Mapping

draft

req~sovd-api-vehicle-level-operations

Vehicle Level Operations

draft

req~sovd-api-version-endpoint

Version Data Endpoint

draft

req~sovd-api-version-info-endpoint

Version Info Endpoint

draft

req~sovd-api-version-registration-function

Version Registration Function

draft

req~system-default-local-file-system-storage-access

Local File System Storage Access Implementation

draft

req~system-default-redb-persistence-provider

Default redb Persistence Provider

draft

req~system-persistence-api

Persistence API

draft

req~system-sd-notify-watchdog-integration

Systemd Watchdog Integration

draft

req~system-storage-access-abstraction

Storage Access Abstraction

draft

req~uds-communication-parameters

The CDA must support configuration of UDS communication as defined in the following table.

draft

req~uds-functional-communication

UDS Functional Communication

draft

req~uds-nrc-handling

UDS Negative Response Code Handling

draft

req~uds-request-response

UDS Request-Response Flow

draft

req~uds-tester-present

UDS Tester Present

draft

Software Architecture

Software Architecture overview

ID

Title

Status

arch~can-addressing-configuration

CAN Addressing And Configuration

draft

arch~can-discovery-keepalive

CAN Discovery And Keep-Alive

draft

arch~can-nrc-classification

CAN NRC Classification

draft

arch~can-physical-isotp-exchange

CAN Physical ISO-TP Exchange

draft

arch~doip-alive-check

Alive Check

draft

arch~doip-communication-parameters

DoIP Communication Parameters

draft

arch~doip-connection-establishment

DoIP Connection Establishment

draft

arch~doip-connection-management

DoIP Connection Management

draft

arch~doip-diagnostic-message

Diagnostic Message Exchange

draft

arch~doip-error-handling

DoIP Error Handling

draft

arch~doip-message-framing

DoIP Message Framing

draft

arch~doip-protocol-versions

DoIP Protocol Version Support

draft

arch~doip-routing-activation

Routing Activation

draft

arch~doip-tls

TLS Connection Support

draft

arch~doip-vam-handling-mode

Spontaneous VAM Handling Mode

draft

arch~doip-vehicle-identification

Vehicle Identification

draft

arch~dt-database-loading

Database Loading

draft

arch~dt-deferred-initialization

Communication Initialization Mode

draft

arch~dt-doip-gateway-init

DoIP Gateway Initialization

draft

arch~dt-ecu-discovery

ECU Discovery

draft

arch~dt-ecu-list-persistence

ECU List Persistence

draft

arch~dt-ecu-list-persistence-shutdown

ECU List Persistence - Shutdown Update

draft

arch~dt-ecu-states

ECU States

draft

arch~dt-error-handling

Startup Error Handling

draft

arch~dt-health-monitoring

Health Monitoring

draft

arch~dt-startup-sequence

Startup Sequence

draft

arch~dt-variant-detection

Variant Detection

draft

arch~plugin-diagnostic-database-update

Diagnostic Database Update Plugin

draft

arch~plugin-dlt-logging

DLT Logging

draft

arch~plugin-dlt-logging-configuration

DLT Logging - Configuration

draft

arch~plugin-dlt-logging-context-annotation

DLT Logging - Context Annotation

draft

arch~plugin-vehicle-topology-reset

Vehicle Topology Plugin - Reset

draft

arch~plugin-vehicle-topology-reset-persistence

Vehicle Topology Plugin - Reset with Persisted List Control

draft

arch~plugin-vehicle-topology-retrieval

Vehicle Topology Plugin - Retrieval

draft

arch~sovd-api-authentication-modes

Authentication Endpoints

draft

arch~sovd-api-bulk-data

Bulk-Data Endpoints

draft

arch~sovd-api-communication-control-modes

Communication Control Endpoints

draft

arch~sovd-api-comparams

Communication Parameters API

draft

arch~sovd-api-comparams-without-lock

Retrieve Communication Parameters without Lock

draft

arch~sovd-api-component-sdgsd

Component SDG/SDs

draft

arch~sovd-api-components-entity-collection

Components Entity Collection

draft

arch~sovd-api-configuration-resources

Configuration Resources

draft

arch~sovd-api-data-identifier-categories

Data Identifier Categories

draft

arch~sovd-api-data-resources

Data Resources

draft

arch~sovd-api-data-types-mapping-iso17978

ODX to JSON data type mapping

draft

arch~sovd-api-dtc-setting-modes

DTC Setting Endpoints

draft

arch~sovd-api-ecu-resource-collection

ECU Resource Collection

draft

arch~sovd-api-ecu-variant-detection

ECU Variant Detection via SOVD-API

draft

arch~sovd-api-faults-endpoint

Faults endpoint

draft

arch~sovd-api-flash-data-transfer

Flash data transfer

draft

arch~sovd-api-flash-file-management

Management of flash files

draft

arch~sovd-api-flash-folder-configuration

Flash folder configuration

draft

arch~sovd-api-functional-communication-api

Functional Communication API

draft

arch~sovd-api-functional-communication-data

Functional Communication - Data

draft

arch~sovd-api-functional-communication-dd-configuration

Diagnostic description & Configuration

draft

arch~sovd-api-functional-communication-locks

Functional Communication ECU-Lock behavior

draft

arch~sovd-api-functional-communication-modes

Functional Communication - Modes

draft

arch~sovd-api-functional-communication-operations

Functional Communication - Operations

draft

arch~sovd-api-generic-service

Generic Service Endpoint

draft

arch~sovd-api-http-server

SOVD-API over HTTP

draft

arch~sovd-api-lock-acquisition-policy

Lock Acquisition Policy

draft

arch~sovd-api-lock-api

Lock API

draft

arch~sovd-api-lock-defunct

Defunct Lock Lifecycle

draft

arch~sovd-api-lock-defunct-enforcement

HTTP 409 for Preempted Clients

draft

arch~sovd-api-lock-ecu-enforcement

ECU Lock Endpoint Enforcement

draft

arch~sovd-api-lock-exclusivity

Lock Exclusivity

draft

arch~sovd-api-lock-exclusivity-policy

Lock Exclusivity Policy

draft

arch~sovd-api-lock-expiration

Lock Expiration

draft

arch~sovd-api-lock-fg-enforcement

Functional Group Lock Endpoint Enforcement

draft

arch~sovd-api-lock-priority

Lock Priority Mechanism Interface

draft

arch~sovd-api-lock-requirement-policy

Lock Requirement Policy

draft

arch~sovd-api-lock-vehicle-blocking

Vehicle Lock Blocks Child Lock Acquisition

draft

arch~sovd-api-mdd-embedded-files

MDD Embedded Files API

draft

arch~sovd-api-operations-handling

Synchronous and Asynchronous Operations

draft

arch~sovd-api-security-access-modes

Security Access Endpoints

draft

arch~sovd-api-session-management

Session Endpoints

draft

arch~sovd-api-single-ecu-jobs

Single ECU Jobs Extension

draft

arch~sovd-api-standardized-resource-collection-mapping

Standardized Resource Collection Mapping

draft

arch~sovd-api-version-registration-function

API Version Endpoint Registration Function

draft

arch~system-default-redb-persistence-provider

Default redb Persistence Provider

draft

arch~system-persistence-api

Persistence API

draft

arch~system-sd-notify-watchdog-integration

Systemd Watchdog Integration

draft

arch~system-storage-access-abstraction

Storage Access API

draft

arch~uds-communication-parameters

UDS Communication Parameters

draft

arch~uds-functional-communication

UDS Functional Communication

draft

arch~uds-nrc-handling

UDS NRC Handling

draft

arch~uds-request-response

UDS Request-Response Flow

draft

arch~uds-tester-present

UDS Tester Present

draft

Detailed Design

Detailed Design

ID

Title

Status

dimpl~sovd-api-component-data-sdgsd

GET /data/{service} SDG handler

dimpl~sovd-api-component-operations-sdgsd

GET /operations/{service} SDG handler

dimpl~sovd-api-component-sdgsd

GET /components/{ecu} SDG handler

dimpl~sovd-api-ecu-variant-detection

PUT endpoint for ECU variant detection

dimpl~sovd-api-http-server

Starts HTTP Server

dimpl~sovd-api-version-endpoint

Register Version Endpoint

dimpl~storage-atomic-commit

Atomic commit of a staged transaction via WAL and backup-rename

dimpl~storage-crash-recovery

Startup recovery of interrupted transactions from the WAL

dimpl~storage-local-filesystem-implementation

Local filesystem implementation of the Storage Access API

dimpl~storage-wal-journaling

Write-ahead log with checksum-verified one-phase commit

dimpl~system-sd-notify-watchdog-integration

Systemd Watchdog Integration

Implementation

Implementation

ID

Title

Status

dimpl~sovd-api-component-data-sdgsd

GET /data/{service} SDG handler

dimpl~sovd-api-component-operations-sdgsd

GET /operations/{service} SDG handler

dimpl~sovd-api-component-sdgsd

GET /components/{ecu} SDG handler

dimpl~sovd-api-ecu-variant-detection

PUT endpoint for ECU variant detection

dimpl~sovd-api-http-server

Starts HTTP Server

dimpl~sovd-api-version-endpoint

Register Version Endpoint

dimpl~storage-atomic-commit

Atomic commit of a staged transaction via WAL and backup-rename

dimpl~storage-crash-recovery

Startup recovery of interrupted transactions from the WAL

dimpl~storage-local-filesystem-implementation

Local filesystem implementation of the Storage Access API

dimpl~storage-wal-journaling

Write-ahead log with checksum-verified one-phase commit

dimpl~system-sd-notify-watchdog-integration

Systemd Watchdog Integration

Unit Tests

Unit-Tests

ID

Title

Status

test~storage-atomicity-recovery-cleans-orphaned-backups

Recovery cleans up orphaned backup files left after a successful commit

test~storage-atomicity-recovery-discards-corrupt-wal

Recovery discards a WAL with a corrupt checksum during the recording phase

test~storage-atomicity-recovery-discards-recording-phase-crash

Recovery discards an incomplete transaction that crashed while still recording

test~storage-atomicity-recovery-removes-new-collection

Recovery removes an empty collection directory left by an interrupted `CreateCollection` commit

test~storage-atomicity-recovery-removes-new-file

Recovery removes a newly-written file left by an interrupted commit with no backup to restore

test~storage-atomicity-recovery-removes-orphaned-collection-dir

Recovery fully rolls back a multi-operation transaction that created a collection and wrote into it

test~storage-atomicity-recovery-restores-overwritten-file

Recovery restores the original file from its backup after an interrupted overwrite

test~storage-wal-checksum-round-trip

WAL entries round-trip through checksum-verified encode/decode

test~storage-wal-truncation-detection

WAL reader detects and stops at a truncated entry

test~system-sd-notify-watchdog-integration

Systemd Watchdog Health Aggregation Tests

Integration Tests

Integration-Tests

ID

Title

Status

itest~sovd-api-component-alias-sdgsd

ECU-level SDG retrieval (alias param)

itest~sovd-api-component-data-sdgsd

Data-level SDG retrieval

itest~sovd-api-component-operations-sdgsd

Operation-level SDG retrieval

itest~sovd-api-component-sdgsd

ECU-level SDG retrieval

itest~sovd-api-version-endpoint

Version Endpoint Integration Test