Traceability Reports

Complete traceability is a cornerstone of the BrewMaster Pro 3000 development process. Every line of code can be traced back through architectural designs and requirements to the original customer need or safety regulation. Conversely, every requirement can be traced forward to its detailed design and verification test cases. This bidirectional traceability ensures nothing is missed and enables rapid impact analysis when requirements change.

Full Traceability Diagram

The following diagram shows all needs and their connections in this coffee machine example:

@startuml

' Config

top to bottom direction


' Nodes definition 

node "<size:12>Requirement</size>\n**Brew Coffee**\n<size:10>REQ_BREW_COFFEE</size>" as REQ_BREW_COFFEE [[../coffee-machine/requirements.html#REQ_BREW_COFFEE]] #FFB300
node "<size:12>Requirement</size>\n**Heat Water**\n<size:10>REQ_HEAT_WATER</size>" as REQ_HEAT_WATER [[../coffee-machine/requirements.html#REQ_HEAT_WATER]] #FFB300
node "<size:12>Requirement</size>\n**User Interface**\n<size:10>REQ_USER_INTERFACE</size>" as REQ_USER_INTERFACE [[../coffee-machine/requirements.html#REQ_USER_INTERFACE]] #FFB300
node "<size:12>Requirement</size>\n**Safety Shutdown**\n<size:10>REQ_SAFETY_SHUTDOWN</size>" as REQ_SAFETY_SHUTDOWN [[../coffee-machine/requirements.html#REQ_SAFETY_SHUTDOWN]] #FFB300
node "<size:12>SW_Requirement</size>\n**Temperature**\n**Regulation**\n<size:10>SWREQ_TEMP_REGULATION</size>" as SWREQ_TEMP_REGULATION [[../coffee-machine/sw_requirements.html#SWREQ_TEMP_REGULATION]] #a8f578
node "<size:12>SW_Requirement</size>\n**Over-**\n**Temperature**\n**Shutdown**\n<size:10>SWREQ_OVERTEMP_SHUTDOWN</size>" as SWREQ_OVERTEMP_SHUTDOWN [[../coffee-machine/sw_requirements.html#SWREQ_OVERTEMP_SHUTDOWN]] #a8f578
node "<size:12>SW_Requirement</size>\n**Brew Strength**\n**Selection**\n<size:10>SWREQ_BREW_STRENGTH</size>" as SWREQ_BREW_STRENGTH [[../coffee-machine/sw_requirements.html#SWREQ_BREW_STRENGTH]] #a8f578
node "<size:12>SW_Requirement</size>\n**Button Input**\n**Handler**\n<size:10>SWREQ_BUTTON_INPUT</size>" as SWREQ_BUTTON_INPUT [[../coffee-machine/sw_requirements.html#SWREQ_BUTTON_INPUT]] #a8f578
node "<size:12>SW_Requirement</size>\n**Water Level**\n**Monitoring**\n<size:10>SWREQ_WATER_LEVEL</size>" as SWREQ_WATER_LEVEL [[../coffee-machine/sw_requirements.html#SWREQ_WATER_LEVEL]] #a8f578
component "<size:12>Component</size>\n**User Interface**\n**Module**\n<size:10>COMP_UI_MODULE</size>" as COMP_UI_MODULE [[../coffee-machine/architecture.html#COMP_UI_MODULE]] #3498db
component "<size:12>Component</size>\n**Brew Controller**\n**Module**\n<size:10>COMP_BREW_CTRL</size>" as COMP_BREW_CTRL [[../coffee-machine/architecture.html#COMP_BREW_CTRL]] #3498db
component "<size:12>Component</size>\n**Temperature**\n**Controller**\n**Module**\n<size:10>COMP_TEMP_CTRL</size>" as COMP_TEMP_CTRL [[../coffee-machine/architecture.html#COMP_TEMP_CTRL]] #3498db
component "<size:12>Component</size>\n**Safety Monitor**\n**Module**\n<size:10>COMP_SAFETY_MON</size>" as COMP_SAFETY_MON [[../coffee-machine/architecture.html#COMP_SAFETY_MON]] #3498db
component "<size:12>Component</size>\n**ADC Driver**\n<size:10>COMP_ADC_DRV</size>" as COMP_ADC_DRV [[../coffee-machine/architecture.html#COMP_ADC_DRV]] #3498db
component "<size:12>Component</size>\n**PWM Driver**\n<size:10>COMP_PWM_DRV</size>" as COMP_PWM_DRV [[../coffee-machine/architecture.html#COMP_PWM_DRV]] #3498db
component "<size:12>Component</size>\n**GPIO Driver**\n<size:10>COMP_GPIO_DRV</size>" as COMP_GPIO_DRV [[../coffee-machine/architecture.html#COMP_GPIO_DRV]] #3498db
component "<size:12>Component</size>\n**SPI Driver**\n<size:10>COMP_SPI_DRV</size>" as COMP_SPI_DRV [[../coffee-machine/architecture.html#COMP_SPI_DRV]] #3498db
interface "<size:12>Interface</size>\n**User Command**\n**Interface**\n<size:10>INTF_USER_CMD</size>" as INTF_USER_CMD [[../coffee-machine/architecture.html#INTF_USER_CMD]] #16a085
interface "<size:12>Interface</size>\n**Brew Controller**\n**Safety Status**\n**Interface**\n<size:10>INTF_BREW_CTRL_STATUS</size>" as INTF_BREW_CTRL_STATUS [[../coffee-machine/architecture.html#INTF_BREW_CTRL_STATUS]] #16a085
interface "<size:12>Interface</size>\n**Temperature**\n**Status**\n**Interface**\n<size:10>INTF_TEMP_STATUS</size>" as INTF_TEMP_STATUS [[../coffee-machine/architecture.html#INTF_TEMP_STATUS]] #16a085
interface "<size:12>Interface</size>\n**Temperature**\n**Controller**\n**Safety Status**\n**Interface**\n<size:10>INTF_TEMP_CTRL_STATUS</size>" as INTF_TEMP_CTRL_STATUS [[../coffee-machine/architecture.html#INTF_TEMP_CTRL_STATUS]] #16a085
interface "<size:12>Interface</size>\n**Safety Command**\n**Interface**\n<size:10>INTF_SAFETY_CMD</size>" as INTF_SAFETY_CMD [[../coffee-machine/architecture.html#INTF_SAFETY_CMD]] #16a085
interface "<size:12>Interface</size>\n**PWM Control**\n**Interface**\n<size:10>INTF_PWM_CTRL</size>" as INTF_PWM_CTRL [[../coffee-machine/architecture.html#INTF_PWM_CTRL]] #16a085
interface "<size:12>Interface</size>\n**GPIO Interface**\n<size:10>INTF_GPIO</size>" as INTF_GPIO [[../coffee-machine/architecture.html#INTF_GPIO]] #16a085
interface "<size:12>Interface</size>\n**SPI Bus**\n**Interface**\n<size:10>INTF_SPI_BUS</size>" as INTF_SPI_BUS [[../coffee-machine/architecture.html#INTF_SPI_BUS]] #16a085
interface "<size:12>Interface</size>\n**Sensor Data**\n**Interface**\n<size:10>INTF_SENSOR_DATA</size>" as INTF_SENSOR_DATA [[../coffee-machine/architecture.html#INTF_SENSOR_DATA]] #16a085
node "<size:12>Implementation</size>\n**BrewStrength**\n**enum**\n<size:10>IMPL_BREW_STRENGTH</size>" as IMPL_BREW_STRENGTH [[../coffee-machine/detailed_design.html#IMPL_BREW_STRENGTH]] #fa8638
node "<size:12>Implementation</size>\n**SafetyCommand**\n**enum**\n<size:10>IMPL_SAFETY_CMD_ENUM</size>" as IMPL_SAFETY_CMD_ENUM [[../coffee-machine/detailed_design.html#IMPL_SAFETY_CMD_ENUM]] #fa8638
node "<size:12>Implementation</size>\n**UserCommand**\n**enum**\n<size:10>IMPL_USER_CMD_ENUM</size>" as IMPL_USER_CMD_ENUM [[../coffee-machine/detailed_design.html#IMPL_USER_CMD_ENUM]] #fa8638
node "<size:12>Implementation</size>\n**TemperatureStat**\n**us struct**\n<size:10>IMPL_TEMP_STATUS</size>" as IMPL_TEMP_STATUS [[../coffee-machine/detailed_design.html#IMPL_TEMP_STATUS]] #fa8638
node "<size:12>Implementation</size>\n**TemperatureStat**\n**usProvider**\n**trait**\n<size:10>IMPL_TEMP_STATUS_PROVIDER</size>" as IMPL_TEMP_STATUS_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_TEMP_STATUS_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**TemperatureStat**\n**usConsumer**\n**trait**\n<size:10>IMPL_TEMP_STATUS_CONSUMER</size>" as IMPL_TEMP_STATUS_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_TEMP_STATUS_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**TempCtrlStatus**\n**struct**\n<size:10>IMPL_TEMP_CTRL_STATUS</size>" as IMPL_TEMP_CTRL_STATUS [[../coffee-machine/detailed_design.html#IMPL_TEMP_CTRL_STATUS]] #fa8638
node "<size:12>Implementation</size>\n**TempCtrlStatusP**\n**rovider trait**\n<size:10>IMPL_TEMP_CTRL_STATUS_PROVIDER</size>" as IMPL_TEMP_CTRL_STATUS_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_TEMP_CTRL_STATUS_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**TempCtrlStatusC**\n**onsumer trait**\n<size:10>IMPL_TEMP_CTRL_STATUS_CONSUMER</size>" as IMPL_TEMP_CTRL_STATUS_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_TEMP_CTRL_STATUS_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**BrewCtrlStatus**\n**struct**\n<size:10>IMPL_BREW_CTRL_STATUS</size>" as IMPL_BREW_CTRL_STATUS [[../coffee-machine/detailed_design.html#IMPL_BREW_CTRL_STATUS]] #fa8638
node "<size:12>Implementation</size>\n**BrewCtrlStatusP**\n**rovider trait**\n<size:10>IMPL_BREW_CTRL_STATUS_PROVIDER</size>" as IMPL_BREW_CTRL_STATUS_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_BREW_CTRL_STATUS_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**BrewCtrlStatusC**\n**onsumer trait**\n<size:10>IMPL_BREW_CTRL_STATUS_CONSUMER</size>" as IMPL_BREW_CTRL_STATUS_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_BREW_CTRL_STATUS_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**SafetyCommandPr**\n**ovider trait**\n<size:10>IMPL_SAFETY_CMD_PROVIDER</size>" as IMPL_SAFETY_CMD_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_SAFETY_CMD_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**SafetyCommandCo**\n**nsumer trait**\n<size:10>IMPL_SAFETY_CMD_CONSUMER</size>" as IMPL_SAFETY_CMD_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_SAFETY_CMD_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**UserCommandProv**\n**ider trait**\n<size:10>IMPL_USER_CMD_PROVIDER</size>" as IMPL_USER_CMD_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_USER_CMD_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**UserCommandCons**\n**umer trait**\n<size:10>IMPL_USER_CMD_CONSUMER</size>" as IMPL_USER_CMD_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_USER_CMD_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**SensorData**\n**struct**\n<size:10>IMPL_SENSOR_DATA</size>" as IMPL_SENSOR_DATA [[../coffee-machine/detailed_design.html#IMPL_SENSOR_DATA]] #fa8638
node "<size:12>Implementation</size>\n**SensorDataProvi**\n**der trait**\n<size:10>IMPL_SENSOR_DATA_PROVIDER</size>" as IMPL_SENSOR_DATA_PROVIDER [[../coffee-machine/detailed_design.html#IMPL_SENSOR_DATA_PROVIDER]] #fa8638
node "<size:12>Implementation</size>\n**SensorDataConsu**\n**mer trait**\n<size:10>IMPL_SENSOR_DATA_CONSUMER</size>" as IMPL_SENSOR_DATA_CONSUMER [[../coffee-machine/detailed_design.html#IMPL_SENSOR_DATA_CONSUMER]] #fa8638
node "<size:12>Implementation</size>\n**PwmChannel enum**\n<size:10>IMPL_PWM_CHANNEL</size>" as IMPL_PWM_CHANNEL [[../coffee-machine/detailed_design.html#IMPL_PWM_CHANNEL]] #fa8638
node "<size:12>Implementation</size>\n**PwmControl**\n**trait**\n<size:10>IMPL_PWM_CTRL</size>" as IMPL_PWM_CTRL [[../coffee-machine/detailed_design.html#IMPL_PWM_CTRL]] #fa8638
node "<size:12>Implementation</size>\n**GpioPin enum**\n<size:10>IMPL_GPIO_PIN</size>" as IMPL_GPIO_PIN [[../coffee-machine/detailed_design.html#IMPL_GPIO_PIN]] #fa8638
node "<size:12>Implementation</size>\n**Edge enum**\n<size:10>IMPL_GPIO_EDGE</size>" as IMPL_GPIO_EDGE [[../coffee-machine/detailed_design.html#IMPL_GPIO_EDGE]] #fa8638
node "<size:12>Implementation</size>\n**GpioControl**\n**trait**\n<size:10>IMPL_GPIO_CTRL</size>" as IMPL_GPIO_CTRL [[../coffee-machine/detailed_design.html#IMPL_GPIO_CTRL]] #fa8638
node "<size:12>Implementation</size>\n**SpiBus trait**\n<size:10>IMPL_SPI_BUS</size>" as IMPL_SPI_BUS [[../coffee-machine/detailed_design.html#IMPL_SPI_BUS]] #fa8638
node "<size:12>Implementation</size>\n**test_temperatur**\n**e_status_conver**\n**sions**\n<size:10>IMPL_TEST_TEMP_STATUS</size>" as IMPL_TEST_TEMP_STATUS [[../coffee-machine/detailed_design.html#IMPL_TEST_TEMP_STATUS]] #fa8638
node "<size:12>Implementation</size>\n**test_temp_ctrl_**\n**status_fault_de**\n**tection**\n<size:10>IMPL_TEST_TEMP_FAULT</size>" as IMPL_TEST_TEMP_FAULT [[../coffee-machine/detailed_design.html#IMPL_TEST_TEMP_FAULT]] #fa8638
node "<size:12>Implementation</size>\n**test_brew_ctrl_**\n**status_fault_de**\n**tection**\n<size:10>IMPL_TEST_BREW_FAULT</size>" as IMPL_TEST_BREW_FAULT [[../coffee-machine/detailed_design.html#IMPL_TEST_BREW_FAULT]] #fa8638
node "<size:12>Implementation</size>\n**test_brew_stren**\n**gth_enum**\n<size:10>IMPL_TEST_BREW_STRENGTH</size>" as IMPL_TEST_BREW_STRENGTH [[../coffee-machine/detailed_design.html#IMPL_TEST_BREW_STRENGTH]] #fa8638
node "<size:12>Implementation</size>\n**test_user_comma**\n**nd_variants**\n<size:10>IMPL_TEST_USER_CMD</size>" as IMPL_TEST_USER_CMD [[../coffee-machine/detailed_design.html#IMPL_TEST_USER_CMD]] #fa8638
node "<size:12>Implementation</size>\n**test_sensor_dat**\n**a_creation**\n<size:10>IMPL_TEST_SENSOR_DATA</size>" as IMPL_TEST_SENSOR_DATA [[../coffee-machine/detailed_design.html#IMPL_TEST_SENSOR_DATA]] #fa8638
node "<size:12>Test Case</size>\n**Test**\n**Temperature**\n**Control**\n<size:10>TEST_TEMP_CONTROL</size>" as TEST_TEMP_CONTROL [[../coffee-machine/testing.html#TEST_TEMP_CONTROL]] #A6BDD7
node "<size:12>Test Case</size>\n**Test Brew**\n**Strength**\n**Settings**\n<size:10>TEST_BREW_STRENGTH</size>" as TEST_BREW_STRENGTH [[../coffee-machine/testing.html#TEST_BREW_STRENGTH]] #A6BDD7
node "<size:12>Test Case</size>\n**Test Button**\n**Debouncing**\n<size:10>TEST_BUTTON_DEBOUNCE</size>" as TEST_BUTTON_DEBOUNCE [[../coffee-machine/testing.html#TEST_BUTTON_DEBOUNCE]] #A6BDD7
node "<size:12>Test Case</size>\n**Test Safety**\n**Shutdown**\n<size:10>TEST_SAFETY_SHUTDOWN</size>" as TEST_SAFETY_SHUTDOWN [[../coffee-machine/testing.html#TEST_SAFETY_SHUTDOWN]] #A6BDD7
node "<size:12>Test Case</size>\n**Test End-to-End**\n**Brewing**\n<size:10>TEST_E2E_BREWING</size>" as TEST_E2E_BREWING [[../coffee-machine/testing.html#TEST_E2E_BREWING]] #A6BDD7

' Connection definition 

SWREQ_TEMP_REGULATION --> REQ_HEAT_WATER: specifies\n
SWREQ_OVERTEMP_SHUTDOWN --> REQ_HEAT_WATER: specifies\n
SWREQ_OVERTEMP_SHUTDOWN --> REQ_SAFETY_SHUTDOWN: specifies\n
SWREQ_BREW_STRENGTH --> REQ_BREW_COFFEE: specifies\n
SWREQ_BUTTON_INPUT --> REQ_USER_INTERFACE: specifies\n
SWREQ_WATER_LEVEL --> REQ_SAFETY_SHUTDOWN: specifies\n
COMP_UI_MODULE --> SWREQ_BUTTON_INPUT: implements\n
COMP_UI_MODULE -[dashed]-( INTF_GPIO: uses\n
COMP_UI_MODULE -[dashed]-( INTF_SPI_BUS: uses\n
COMP_BREW_CTRL --> SWREQ_BREW_STRENGTH: implements\n
COMP_BREW_CTRL -[dashed]-( INTF_GPIO: uses\n
COMP_BREW_CTRL -[dashed]-( INTF_SAFETY_CMD: uses\n
COMP_BREW_CTRL -[dashed]-( INTF_TEMP_STATUS: uses\n
COMP_BREW_CTRL -[dashed]-( INTF_USER_CMD: uses\n
COMP_TEMP_CTRL --> SWREQ_TEMP_REGULATION: implements\n
COMP_TEMP_CTRL -[dashed]-( INTF_PWM_CTRL: uses\n
COMP_TEMP_CTRL -[dashed]-( INTF_SAFETY_CMD: uses\n
COMP_TEMP_CTRL -[dashed]-( INTF_SENSOR_DATA: uses\n
COMP_SAFETY_MON --> SWREQ_OVERTEMP_SHUTDOWN: implements\n
COMP_SAFETY_MON --> SWREQ_WATER_LEVEL: implements\n
COMP_SAFETY_MON -[dashed]-( INTF_BREW_CTRL_STATUS: uses\n
COMP_SAFETY_MON -[dashed]-( INTF_SENSOR_DATA: uses\n
COMP_SAFETY_MON -[dashed]-( INTF_TEMP_CTRL_STATUS: uses\n
INTF_USER_CMD -[bold]- COMP_UI_MODULE: provided by\n
INTF_BREW_CTRL_STATUS -[bold]- COMP_BREW_CTRL: provided by\n
INTF_TEMP_STATUS -[bold]- COMP_TEMP_CTRL: provided by\n
INTF_TEMP_CTRL_STATUS -[bold]- COMP_TEMP_CTRL: provided by\n
INTF_SAFETY_CMD -[bold]- COMP_SAFETY_MON: provided by\n
INTF_PWM_CTRL -[bold]- COMP_PWM_DRV: provided by\n
INTF_GPIO -[bold]- COMP_GPIO_DRV: provided by\n
INTF_SPI_BUS -[bold]- COMP_SPI_DRV: provided by\n
INTF_SENSOR_DATA -[bold]- COMP_ADC_DRV: provided by\n
IMPL_BREW_STRENGTH --> SWREQ_BREW_STRENGTH: implements\n
IMPL_SAFETY_CMD_ENUM --> INTF_SAFETY_CMD: implements\n
IMPL_USER_CMD_ENUM --> INTF_USER_CMD: implements\n
IMPL_TEMP_STATUS --> INTF_TEMP_STATUS: implements\n
IMPL_TEMP_STATUS_PROVIDER --> COMP_TEMP_CTRL: implements\n
IMPL_TEMP_STATUS_PROVIDER --> INTF_TEMP_STATUS: implements\n
IMPL_TEMP_STATUS_CONSUMER --> COMP_BREW_CTRL: implements\n
IMPL_TEMP_STATUS_CONSUMER --> INTF_TEMP_STATUS: implements\n
IMPL_TEMP_CTRL_STATUS --> INTF_TEMP_CTRL_STATUS: implements\n
IMPL_TEMP_CTRL_STATUS_PROVIDER --> COMP_TEMP_CTRL: implements\n
IMPL_TEMP_CTRL_STATUS_PROVIDER --> INTF_TEMP_CTRL_STATUS: implements\n
IMPL_TEMP_CTRL_STATUS_CONSUMER --> COMP_SAFETY_MON: implements\n
IMPL_TEMP_CTRL_STATUS_CONSUMER --> INTF_TEMP_CTRL_STATUS: implements\n
IMPL_BREW_CTRL_STATUS --> INTF_BREW_CTRL_STATUS: implements\n
IMPL_BREW_CTRL_STATUS_PROVIDER --> COMP_BREW_CTRL: implements\n
IMPL_BREW_CTRL_STATUS_PROVIDER --> INTF_BREW_CTRL_STATUS: implements\n
IMPL_BREW_CTRL_STATUS_CONSUMER --> COMP_SAFETY_MON: implements\n
IMPL_BREW_CTRL_STATUS_CONSUMER --> INTF_BREW_CTRL_STATUS: implements\n
IMPL_SAFETY_CMD_PROVIDER --> COMP_SAFETY_MON: implements\n
IMPL_SAFETY_CMD_PROVIDER --> INTF_SAFETY_CMD: implements\n
IMPL_SAFETY_CMD_CONSUMER --> COMP_BREW_CTRL: implements\n
IMPL_SAFETY_CMD_CONSUMER --> COMP_TEMP_CTRL: implements\n
IMPL_SAFETY_CMD_CONSUMER --> INTF_SAFETY_CMD: implements\n
IMPL_USER_CMD_PROVIDER --> COMP_UI_MODULE: implements\n
IMPL_USER_CMD_PROVIDER --> INTF_USER_CMD: implements\n
IMPL_USER_CMD_CONSUMER --> COMP_BREW_CTRL: implements\n
IMPL_USER_CMD_CONSUMER --> INTF_USER_CMD: implements\n
IMPL_SENSOR_DATA --> INTF_SENSOR_DATA: implements\n
IMPL_SENSOR_DATA_PROVIDER --> COMP_ADC_DRV: implements\n
IMPL_SENSOR_DATA_PROVIDER --> INTF_SENSOR_DATA: implements\n
IMPL_SENSOR_DATA_CONSUMER --> COMP_SAFETY_MON: implements\n
IMPL_SENSOR_DATA_CONSUMER --> COMP_TEMP_CTRL: implements\n
IMPL_SENSOR_DATA_CONSUMER --> INTF_SENSOR_DATA: implements\n
IMPL_PWM_CHANNEL --> INTF_PWM_CTRL: implements\n
IMPL_PWM_CTRL --> COMP_PWM_DRV: implements\n
IMPL_PWM_CTRL --> INTF_PWM_CTRL: implements\n
IMPL_GPIO_PIN --> INTF_GPIO: implements\n
IMPL_GPIO_EDGE --> INTF_GPIO: implements\n
IMPL_GPIO_CTRL --> COMP_GPIO_DRV: implements\n
IMPL_GPIO_CTRL --> INTF_GPIO: implements\n
IMPL_SPI_BUS --> COMP_SPI_DRV: implements\n
IMPL_SPI_BUS --> INTF_SPI_BUS: implements\n
IMPL_TEST_TEMP_STATUS --> TEST_TEMP_CONTROL: implements\n
IMPL_TEST_TEMP_FAULT --> TEST_SAFETY_SHUTDOWN: implements\n
IMPL_TEST_BREW_FAULT --> TEST_SAFETY_SHUTDOWN: implements\n
IMPL_TEST_BREW_STRENGTH --> TEST_BREW_STRENGTH: implements\n
IMPL_TEST_USER_CMD --> TEST_BUTTON_DEBOUNCE: implements\n
IMPL_TEST_SENSOR_DATA --> TEST_TEMP_CONTROL: implements\n
TEST_TEMP_CONTROL --> SWREQ_TEMP_REGULATION: specs\n
TEST_BREW_STRENGTH --> SWREQ_BREW_STRENGTH: specs\n
TEST_BUTTON_DEBOUNCE --> SWREQ_BUTTON_INPUT: specs\n
TEST_SAFETY_SHUTDOWN --> SWREQ_OVERTEMP_SHUTDOWN: specs\n
TEST_SAFETY_SHUTDOWN --> SWREQ_WATER_LEVEL: specs\n
TEST_E2E_BREWING --> SWREQ_BREW_STRENGTH: specs\n
TEST_E2E_BREWING --> SWREQ_BUTTON_INPUT: specs\n
TEST_E2E_BREWING --> SWREQ_TEMP_REGULATION: specs\n

@enduml

Requirements Coverage

This table shows all system requirements and which software requirements specify them, providing a forward-traceability view from customer needs to software specifications.

Requirements → SW Requirements

ID

Title

Status

Specified by

REQ_BREW_COFFEE

Brew Coffee

open

SWREQ_BREW_STRENGTH

REQ_HEAT_WATER

Heat Water

open

SWREQ_OVERTEMP_SHUTDOWN; SWREQ_TEMP_REGULATION

REQ_SAFETY_SHUTDOWN

Safety Shutdown

open

SWREQ_OVERTEMP_SHUTDOWN; SWREQ_WATER_LEVEL

REQ_USER_INTERFACE

User Interface

open

SWREQ_BUTTON_INPUT

SW Requirements to Architecture

This table traces software requirements to the architectural components that implement them.

SW Requirements → Components

ID

Title

Status

Specifies

Implemented by

SWREQ_BREW_STRENGTH

Brew Strength Selection

open

REQ_BREW_COFFEE

COMP_BREW_CTRL; IMPL_BREW_STRENGTH

SWREQ_BUTTON_INPUT

Button Input Handler

open

REQ_USER_INTERFACE

COMP_UI_MODULE

SWREQ_OVERTEMP_SHUTDOWN

Over-Temperature Shutdown

open

REQ_HEAT_WATER; REQ_SAFETY_SHUTDOWN

COMP_SAFETY_MON

SWREQ_TEMP_REGULATION

Temperature Regulation

open

REQ_HEAT_WATER

COMP_TEMP_CTRL

SWREQ_WATER_LEVEL

Water Level Monitoring

open

REQ_SAFETY_SHUTDOWN

COMP_SAFETY_MON

Architecture to Test Coverage

This table shows which software requirements are covered by test cases, highlighting any gaps in verification.

SW Requirements → Tests

ID

Title

Tested by

SWREQ_BREW_STRENGTH

Brew Strength Selection

TEST_BREW_STRENGTH; TEST_E2E_BREWING

SWREQ_BUTTON_INPUT

Button Input Handler

TEST_BUTTON_DEBOUNCE; TEST_E2E_BREWING

SWREQ_OVERTEMP_SHUTDOWN

Over-Temperature Shutdown

TEST_SAFETY_SHUTDOWN

SWREQ_TEMP_REGULATION

Temperature Regulation

TEST_E2E_BREWING; TEST_TEMP_CONTROL

SWREQ_WATER_LEVEL

Water Level Monitoring

TEST_SAFETY_SHUTDOWN

Test Case Overview

A summary of all test cases with their current status and the requirements they verify.

Test Execution Results

Results from the latest cargo test run, automatically linked to test specifications via tr_link.

No needs passed the filters

No needs passed the filters

Test Status Metrics

../_images/need_pie_a130c.svg

Requirements Status Metrics

../_images/need_pie_5949c.svg

Unlinked Needs

The following list shows any needs that have no outgoing or incoming links, which may indicate missing traceability:

Complete Needs Index

A comprehensive table of all needs in the coffee machine project:

All Coffee Machine Needs

ID

Type

Title

Status

Tags

COMP_UI_MODULE

component

User Interface Module

open

module; ui

COMP_BREW_CTRL

component

Brew Controller Module

open

module; control

COMP_TEMP_CTRL

component

Temperature Controller Module

open

module; control; safety

COMP_SAFETY_MON

component

Safety Monitor Module

open

module; safety

COMP_ADC_DRV

component

ADC Driver

open

module; hardware; driver

COMP_PWM_DRV

component

PWM Driver

open

module; hardware; driver

COMP_GPIO_DRV

component

GPIO Driver

open

module; hardware; driver

COMP_SPI_DRV

component

SPI Driver

open

module; hardware; driver

IMPL_BREW_STRENGTH

impl

BrewStrength enum

IMPL_SAFETY_CMD_ENUM

impl

SafetyCommand enum

IMPL_USER_CMD_ENUM

impl

UserCommand enum

IMPL_TEMP_STATUS

impl

TemperatureStatus struct

IMPL_TEMP_STATUS_PROVIDER

impl

TemperatureStatusProvider trait

IMPL_TEMP_STATUS_CONSUMER

impl

TemperatureStatusConsumer trait

IMPL_TEMP_CTRL_STATUS

impl

TempCtrlStatus struct

IMPL_TEMP_CTRL_STATUS_PROVIDER

impl

TempCtrlStatusProvider trait

IMPL_TEMP_CTRL_STATUS_CONSUMER

impl

TempCtrlStatusConsumer trait

IMPL_BREW_CTRL_STATUS

impl

BrewCtrlStatus struct

IMPL_BREW_CTRL_STATUS_PROVIDER

impl

BrewCtrlStatusProvider trait

IMPL_BREW_CTRL_STATUS_CONSUMER

impl

BrewCtrlStatusConsumer trait

IMPL_SAFETY_CMD_PROVIDER

impl

SafetyCommandProvider trait

IMPL_SAFETY_CMD_CONSUMER

impl

SafetyCommandConsumer trait

IMPL_USER_CMD_PROVIDER

impl

UserCommandProvider trait

IMPL_USER_CMD_CONSUMER

impl

UserCommandConsumer trait

IMPL_SENSOR_DATA

impl

SensorData struct

IMPL_SENSOR_DATA_PROVIDER

impl

SensorDataProvider trait

IMPL_SENSOR_DATA_CONSUMER

impl

SensorDataConsumer trait

IMPL_PWM_CHANNEL

impl

PwmChannel enum

IMPL_PWM_CTRL

impl

PwmControl trait

IMPL_GPIO_PIN

impl

GpioPin enum

IMPL_GPIO_EDGE

impl

Edge enum

IMPL_GPIO_CTRL

impl

GpioControl trait

IMPL_SPI_BUS

impl

SpiBus trait

IMPL_TEST_TEMP_STATUS

impl

test_temperature_status_conversions

IMPL_TEST_TEMP_FAULT

impl

test_temp_ctrl_status_fault_detection

IMPL_TEST_BREW_FAULT

impl

test_brew_ctrl_status_fault_detection

IMPL_TEST_BREW_STRENGTH

impl

test_brew_strength_enum

IMPL_TEST_USER_CMD

impl

test_user_command_variants

IMPL_TEST_SENSOR_DATA

impl

test_sensor_data_creation

INTF_USER_CMD

interface

User Command Interface

open

interface; ui

INTF_BREW_CTRL_STATUS

interface

Brew Controller Safety Status Interface

open

interface; safety

INTF_TEMP_STATUS

interface

Temperature Status Interface

open

interface; control

INTF_TEMP_CTRL_STATUS

interface

Temperature Controller Safety Status Interface

open

interface; safety

INTF_SAFETY_CMD

interface

Safety Command Interface

open

interface; safety

INTF_PWM_CTRL

interface

PWM Control Interface

open

interface; hardware

INTF_GPIO

interface

GPIO Interface

open

interface; hardware

INTF_SPI_BUS

interface

SPI Bus Interface

open

interface; hardware

INTF_SENSOR_DATA

interface

Sensor Data Interface

open

interface; hardware

REQ_BREW_COFFEE

req

Brew Coffee

open

brewing; core

REQ_HEAT_WATER

req

Heat Water

open

heating; safety

REQ_USER_INTERFACE

req

User Interface

open

ui; usability

REQ_SAFETY_SHUTDOWN

req

Safety Shutdown

open

safety; critical

SWREQ_TEMP_REGULATION

swreq

Temperature Regulation

open

control; heating; safety

SWREQ_OVERTEMP_SHUTDOWN

swreq

Over-Temperature Shutdown

open

safety; critical

SWREQ_BREW_STRENGTH

swreq

Brew Strength Selection

open

control; brewing

SWREQ_BUTTON_INPUT

swreq

Button Input Handler

open

ui; input

SWREQ_WATER_LEVEL

swreq

Water Level Monitoring

open

safety; monitoring

TEST_TEMP_CONTROL

test

Test Temperature Control

open

unit; control; safety

TEST_BREW_STRENGTH

test

Test Brew Strength Settings

open

integration; brewing

TEST_BUTTON_DEBOUNCE

test

Test Button Debouncing

open

unit; ui

TEST_SAFETY_SHUTDOWN

test

Test Safety Shutdown

open

integration; safety

TEST_E2E_BREWING

test

Test End-to-End Brewing

open

system; e2e