hackathon/docs/traceability/requirements-traceability-matrix.md
Christoph Wagner 5b658e2468 docs: add architectural review and requirement refinement verification
Complete architectural analysis and requirement traceability improvements:

  1. Architecture Review Report (NEW)
     - Independent architectural review identifying 15 issues
     - 5 critical issues: security (no TLS), buffer inadequacy, performance
       bottleneck, missing circuit breaker, inefficient backoff
     - 5 major issues: no metrics, no graceful shutdown, missing rate limiting,
       no backpressure, low test coverage
     - Overall architecture score: 6.5/10
     - Recommendation: DO NOT DEPLOY until critical issues resolved
     - Detailed analysis with code examples and effort estimates

  2. Requirement Refinement Verification (NEW)
     - Verified Req-FR-25, Req-NFR-7, Req-NFR-8 refinement status
     - Added 12 missing Req-FR-25 references to architecture documents
     - Confirmed 24 Req-NFR-7 references (health check endpoint)
     - Confirmed 26 Req-NFR-8 references (health check content)
     - 100% traceability for all three requirements

  3. Architecture Documentation Updates
     - system-architecture.md: Added 4 Req-FR-25 references for data transmission
     - java-package-structure.md: Added 8 Req-FR-25 references across components
     - Updated DataTransmissionService, GrpcStreamPort, GrpcStreamingAdapter,
       DataConsumerService with proper requirement annotations

  Files changed:
  - docs/ARCHITECTURE_REVIEW_REPORT.md (NEW)
  - docs/REQUIREMENT_REFINEMENT_VERIFICATION.md (NEW)
  - docs/architecture/system-architecture.md (4 additions)
  - docs/architecture/java-package-structure.md (8 additions)

  All 62 requirements now have complete bidirectional traceability with
  documented architectural concerns and critical issues identified for resolution.
2025-11-19 11:06:02 +01:00

22 KiB

Requirements Traceability Matrix

HTTP Sender Plugin (HSP) - Bidirectional Traceability

Document Version: 1.0 Date: 2025-11-19 Status: Design Phase


Table of Contents

  1. Architecture Requirements
  2. Functional Requirements
  3. Non-Functional Requirements
  4. Normative Requirements
  5. User Stories

Architecture Requirements

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-Arch-1 Architecture OpenJDK 25, Java 25 Build System pom.xml N/A Build config review, compiler version check Designed
Req-Arch-2 Architecture External libraries: gRPC Java 1.60+, Protobuf 3.25+ only Build System, Dependency Management pom.xml dependencies DependencyValidationTest Dependency analysis, license check Designed
Req-Arch-3 Architecture Log to hsp.log in temp directory Logging Infrastructure com.siemens.hsp.adapter.outbound.logging.FileLoggerAdapter LoggerAdapterTest Integration test with file verification Designed
Req-Arch-4 Architecture Java Logging API with rotation (100MB, 5 files) Logging Infrastructure com.siemens.hsp.adapter.outbound.logging.LoggingConfiguration LoggingConfigurationTest Unit test, file rotation validation Designed
Req-Arch-5 Architecture Always run unless unrecoverable error Main Application Loop com.siemens.hsp.HspApplication (main) ApplicationLifecycleTest Integration test with failure scenarios Designed
Req-Arch-6 Architecture Multi-threaded: HTTP polling (virtual threads), gRPC transmission Core Domain Services com.siemens.hsp.application.HttpPollingService
com.siemens.hsp.application.GrpcTransmissionService
HttpPollingServiceTest
GrpcTransmissionServiceTest
Multi-threading integration test Designed
Req-Arch-7 Architecture Producer-Consumer pattern (IF1 to IF2) Core Domain com.siemens.hsp.domain.DataBuffer
com.siemens.hsp.application.DataFlowCoordinator
DataBufferTest
DataFlowCoordinatorTest
Unit test, pattern validation Designed
Req-Arch-8 Architecture Thread-safe collections for buffering Core Domain com.siemens.hsp.domain.DataBuffer (using ConcurrentLinkedQueue) DataBufferConcurrencyTest Concurrency test with multiple threads Designed

Functional Requirements

Initialization and Startup (Req-FR-1 to Req-FR-8)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-FR-1 Functional Execute startup sequence Application Orchestration com.siemens.hsp.HspApplication ApplicationStartupTest Integration test with full startup Designed
Req-FR-2 Functional Startup step 1: Load and validate configuration Configuration Port (Inbound) com.siemens.hsp.adapter.inbound.config.ConfigurationLoader
com.siemens.hsp.domain.Configuration
ConfigurationLoaderTest
ConfigurationValidatorTest
Unit test with valid/invalid configs Designed
Req-FR-3 Functional Startup step 2: Initialize logging Logging Port (Outbound) com.siemens.hsp.adapter.outbound.logging.FileLoggerAdapter LoggerAdapterTest Unit test, log file creation check Designed
Req-FR-4 Functional Startup step 3: Establish gRPC connection gRPC Port (Outbound) com.siemens.hsp.adapter.outbound.grpc.GrpcClientAdapter GrpcClientAdapterTest Integration test with mock gRPC server Designed
Req-FR-5 Functional Startup step 4: Begin HTTP polling HTTP Polling Service com.siemens.hsp.application.HttpPollingService HttpPollingServiceTest Integration test with mock HTTP server Designed
Req-FR-6 Functional gRPC retry: every 5s, log warnings every 1 min Connection Management com.siemens.hsp.adapter.outbound.grpc.ConnectionManager ConnectionManagerTest Unit test with timing validation Designed
Req-FR-7 Functional No HTTP polling until gRPC connected Application Orchestration com.siemens.hsp.HspApplication StartupSequenceTest Integration test with connection delays Designed
Req-FR-8 Functional Log "HSP started successfully" at INFO Application Orchestration com.siemens.hsp.HspApplication ApplicationStartupTest Log output validation Designed

Configuration Management (Req-FR-9 to Req-FR-13)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-FR-9 Functional Configurable via configuration file Configuration Port com.siemens.hsp.domain.ports.inbound.ConfigurationPort
com.siemens.hsp.adapter.inbound.config.JsonConfigurationAdapter
ConfigurationPortTest
JsonConfigurationAdapterTest
Unit test with sample configs Designed
Req-FR-10 Functional Read config file from application directory at startup Configuration Adapter com.siemens.hsp.adapter.inbound.config.ConfigurationLoader ConfigurationLoaderTest Integration test with file I/O Designed
Req-FR-11 Functional Validate all configuration parameters Domain Validation com.siemens.hsp.domain.ConfigurationValidator ConfigurationValidatorTest Unit test with boundary values Designed
Req-FR-12 Functional Terminate with error code 1 on validation failure Application Main com.siemens.hsp.HspApplication ConfigurationFailureTest Integration test with exit code check Designed
Req-FR-13 Functional Log validation failure reason Logging com.siemens.hsp.domain.ConfigurationValidator ConfigurationValidatorTest Log output validation Designed

HTTP Polling (IF1) (Req-FR-14 to Req-FR-26)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-FR-14 Functional Establish connection to configured devices (IF1) HTTP Client Port com.siemens.hsp.adapter.outbound.http.HttpClientAdapter HttpClientAdapterTest Integration test with mock HTTP endpoints Designed
Req-FR-15 Functional 30 second timeout for HTTP GET HTTP Client com.siemens.hsp.adapter.outbound.http.HttpClientAdapter HttpClientTimeoutTest Integration test with delayed responses Designed
Req-FR-16 Functional Poll at configured intervals HTTP Polling Service com.siemens.hsp.application.HttpPollingService HttpPollingIntervalTest Integration test with timing validation Designed
Req-FR-17 Functional Retry 3 times with 5-second intervals Retry Logic com.siemens.hsp.adapter.outbound.http.RetryHandler RetryHandlerTest Unit test with failure simulation Designed
Req-FR-18 Functional Linear backoff: 5s to 300s, +5s per attempt Backoff Strategy com.siemens.hsp.adapter.outbound.http.BackoffStrategy BackoffStrategyTest Unit test with timing calculations Designed
Req-FR-19 Functional No concurrent connections to same endpoint Connection Pool com.siemens.hsp.adapter.outbound.http.EndpointConnectionPool EndpointConnectionPoolTest Concurrency test Designed
Req-FR-20 Functional Continue polling other endpoints if one fails Fault Isolation com.siemens.hsp.application.HttpPollingService FaultIsolationTest Integration test with partial failures Designed
Req-FR-21 Functional Reject files larger than 1MB, log warning Data Validation com.siemens.hsp.domain.DiagnosticDataValidator DataValidatorTest Unit test with oversized data Designed
Req-FR-22 Functional Wrap collected data in JSON Data Serialization com.siemens.hsp.domain.JsonDataSerializer JsonDataSerializerTest Unit test with serialization validation Designed
Req-FR-23 Functional Encode binary as Base64 in JSON Data Encoding com.siemens.hsp.domain.JsonDataSerializer Base64EncodingTest Unit test with binary data Designed
Req-FR-24 Functional JSON includes: plugin_name, timestamp (ISO 8601), source_endpoint, data_size, payload JSON Structure com.siemens.hsp.domain.DiagnosticData (value object) DiagnosticDataTest Unit test with JSON schema validation Designed
Req-FR-25 Functional Send data to Collector Sender Core gRPC Transmission com.siemens.hsp.application.GrpcTransmissionService GrpcTransmissionServiceTest Integration test with mock gRPC Designed
Req-FR-26 Functional Buffer data in memory on transmission failure (max 300) Data Buffer com.siemens.hsp.domain.DataBuffer DataBufferTest Unit test with buffer overflow Designed
Req-FR-27 Functional Discard oldest data when buffer full Buffer Management com.siemens.hsp.domain.DataBuffer DataBufferOverflowTest Unit test with FIFO validation Designed

gRPC Communication (IF2) (Req-FR-28 to Req-FR-33)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-FR-28 Functional Communicate via Interface IF2 gRPC Port com.siemens.hsp.adapter.outbound.grpc.GrpcClientAdapter
com.siemens.coreshield.owg.shared.grpc.TransferService*
GrpcClientAdapterTest Integration test with protobuf validation Designed
Req-FR-29 Functional Single bidirectional gRPC stream at startup gRPC Stream Management com.siemens.hsp.adapter.outbound.grpc.StreamManager StreamManagerTest Integration test with stream lifecycle Designed
Req-FR-30 Functional On stream failure: close, wait 5s, re-establish Connection Recovery com.siemens.hsp.adapter.outbound.grpc.ConnectionManager ConnectionRecoveryTest Integration test with connection drops Designed
Req-FR-31 Functional Send TransferRequest with max 4MB data Message Batching com.siemens.hsp.application.GrpcTransmissionService MessageBatchingTest Unit test with size calculations Designed
Req-FR-32 Functional Send batch within 1s if not reaching 4MB Message Timing com.siemens.hsp.application.GrpcTransmissionService MessageTimingTest Integration test with timing validation Designed
Req-FR-33 Functional Set receiver_id to 99 for all requests Protocol Constants com.siemens.hsp.adapter.outbound.grpc.GrpcClientAdapter GrpcClientAdapterTest Unit test with message inspection Designed

Non-Functional Requirements

Performance (Req-NFR-1 to Req-NFR-2)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-NFR-1 Performance Support 1000 concurrent HTTP endpoints Scalability Architecture com.siemens.hsp.application.HttpPollingService (virtual threads) PerformanceScalabilityTest Load test with 1000 endpoints Designed
Req-NFR-2 Performance Memory usage not exceed 4096MB Resource Management Application-wide monitoring MemoryUsageTest Integration test with memory profiling Designed

Security (Req-NFR-3 to Req-NFR-4)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-NFR-3 Security No HTTP authentication HTTP Client Configuration com.siemens.hsp.adapter.outbound.http.HttpClientAdapter SecurityConfigTest Code review, configuration validation Designed
Req-NFR-4 Security TCP mode only for gRPC gRPC Configuration com.siemens.hsp.adapter.outbound.grpc.GrpcClientAdapter GrpcSecurityTest Configuration validation Designed

Usability (Req-NFR-5 to Req-NFR-6)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-NFR-5 Usability Built with Maven 3.9+ Build System pom.xml N/A Build process validation Designed
Req-NFR-6 Usability Packaged as executable fat JAR Build Configuration pom.xml (maven-shade-plugin) JarPackagingTest Build artifact inspection Designed

Reliability (Req-NFR-7 to Req-NFR-8)

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-NFR-7 Reliability Health check endpoint on localhost:8080/health Health Check Port (Inbound) com.siemens.hsp.adapter.inbound.health.HealthCheckAdapter HealthCheckAdapterTest Integration test with HTTP requests Designed
Req-NFR-8 Reliability Health check JSON: service_status, last_collection, gRPC status, error counts, success/fail counts (30s) Health Monitoring com.siemens.hsp.application.HealthMonitoringService HealthMonitoringServiceTest Integration test with JSON validation Designed

Testing Requirements

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-Test-1 Testing Integration test: HTTP collection with mock server Test Infrastructure N/A HttpCollectionIntegrationTest JUnit 5 test execution Designed
Req-Test-2 Testing Integration test: gRPC transmission with mock server Test Infrastructure N/A GrpcTransmissionIntegrationTest JUnit 5 test execution Designed
Req-Test-3 Testing Use JUnit 5 and Mockito frameworks Test Framework pom.xml test dependencies N/A Build configuration review Designed
Req-Test-4 Testing Tests executable via 'mvn test' Build System pom.xml N/A Maven build validation Designed

Normative Requirements

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-Norm-1 Normative ISO-9001 compliance Quality Management Process All modules N/A Process audit, documentation review Designed
Req-Norm-2 Normative Cenelec EN 50716 Basic Integrity Safety Standards All modules N/A Safety analysis, code review Designed
Req-Norm-3 Normative Error detection and handling (invalid data, timeouts, faults) Error Handling Architecture com.siemens.hsp.domain.ErrorHandler
All adapters
ErrorHandlingTest
TimeoutHandlingTest
Integration test with fault injection Designed
Req-Norm-4 Normative Rigorous testing: unit, integration, validation Test Strategy Test suite across all packages All test classes Test coverage analysis (target: 80%+) Designed
Req-Norm-5 Normative Document development process (requirements, design, implementation, testing) Documentation docs/ folder structure N/A Documentation completeness review Designed
Req-Norm-6 Normative Maintainable design: clear code, modular architecture Code Quality Hexagonal architecture pattern N/A Code review, architecture review Designed

User Stories

Req ID Category Description Architecture Component Java Package/Class Test Class Verification Method Status
Req-US-1 User Story System operator: automatic collection every second for real-time monitoring HTTP Polling Service com.siemens.hsp.application.HttpPollingService HttpPollingServiceTest Integration test with timing validation Designed
Req-US-2 User Story Data analyst: reliable transmission via gRPC with buffering Data Flow Coordination com.siemens.hsp.application.DataFlowCoordinator
com.siemens.hsp.domain.DataBuffer
DataFlowCoordinatorTest
DataBufferTest
Integration test with network failures Designed
Req-US-3 User Story System administrator: check health status via HTTP endpoint Health Check Port com.siemens.hsp.adapter.inbound.health.HealthCheckAdapter HealthCheckAdapterTest Integration test with health endpoint Designed

Hexagonal Architecture Mapping

Core Domain (Business Logic)

  • Value Objects: DiagnosticData, Configuration, HealthStatus
  • Entities: N/A (stateless service)
  • Services: DataBuffer, ConfigurationValidator, JsonDataSerializer, DiagnosticDataValidator
  • Domain Ports: ConfigurationPort, DataCollectionPort, DataTransmissionPort, HealthStatusPort

Application Layer (Use Cases)

  • Services: HttpPollingService, GrpcTransmissionService, DataFlowCoordinator, HealthMonitoringService
  • Orchestration: HspApplication (main)

Adapters (Infrastructure)

Inbound Adapters (Driving)

  • Configuration: JsonConfigurationAdapter, ConfigurationLoader
  • Health Check: HealthCheckAdapter (HTTP endpoint)

Outbound Adapters (Driven)

  • HTTP Client: HttpClientAdapter, RetryHandler, BackoffStrategy, EndpointConnectionPool
  • gRPC Client: GrpcClientAdapter, StreamManager, ConnectionManager
  • Logging: FileLoggerAdapter, LoggingConfiguration

Package Structure

com.siemens.hsp/
├── HspApplication.java                    # Main entry point
├── domain/                                # Core domain (no dependencies)
│   ├── DiagnosticData.java               # Value object
│   ├── Configuration.java                # Value object
│   ├── HealthStatus.java                 # Value object
│   ├── DataBuffer.java                   # Thread-safe buffer
│   ├── ConfigurationValidator.java       # Validation logic
│   ├── JsonDataSerializer.java           # JSON serialization
│   ├── DiagnosticDataValidator.java      # Data validation
│   └── ports/
│       ├── inbound/
│       │   ├── ConfigurationPort.java
│       │   └── HealthStatusPort.java
│       └── outbound/
│           ├── DataCollectionPort.java
│           ├── DataTransmissionPort.java
│           └── LoggingPort.java
├── application/                          # Use case orchestration
│   ├── HttpPollingService.java
│   ├── GrpcTransmissionService.java
│   ├── DataFlowCoordinator.java
│   └── HealthMonitoringService.java
└── adapter/
    ├── inbound/
    │   ├── config/
    │   │   ├── JsonConfigurationAdapter.java
    │   │   └── ConfigurationLoader.java
    │   └── health/
    │       └── HealthCheckAdapter.java
    └── outbound/
        ├── http/
        │   ├── HttpClientAdapter.java
        │   ├── RetryHandler.java
        │   ├── BackoffStrategy.java
        │   └── EndpointConnectionPool.java
        ├── grpc/
        │   ├── GrpcClientAdapter.java
        │   ├── StreamManager.java
        │   └── ConnectionManager.java
        └── logging/
            ├── FileLoggerAdapter.java
            └── LoggingConfiguration.java

Generated Protobuf Classes

com.siemens.coreshield.owg.shared.grpc/
├── TransferServiceGrpc.java              # Generated service stub
├── TransferRequest.java                  # Generated message
└── TransferResponse.java                 # Generated message

Summary Statistics

  • Total Requirements: 62 unique requirements

    • Architecture Requirements: 8
    • Functional Requirements: 33
    • Non-Functional Requirements: 8
    • Testing Requirements: 4 (relocated from NFR)
    • Normative Requirements: 6
    • User Stories: 3
  • Java Classes (Estimated): 32 production classes

  • Test Classes (Estimated): 35+ test classes

  • Test Coverage Target: 80%+ line coverage

  • Requirements by Status:

    • Designed: 56 (100%)
    • Implemented: 0 (0%)
    • Tested: 0 (0%)
    • Verified: 0 (0%)

Notes

  1. Duplicate Requirement IDs: Req-FR-25 appears twice in source document (data transmission and buffering). Both mapped separately.
  2. Testing Requirements Numbering: Req-NFR-7 and Req-NFR-8 appear twice (reliability and testing). Disambiguated in matrix.
  3. User Story Decomposition: Req-US-1 contains three distinct user stories, decomposed as Req-US-1a, Req-US-1b, Req-US-1c.
  4. Hexagonal Architecture: Design follows ports and adapters pattern for clean dependency management.
  5. Virtual Threads (Java 21+): Req-Arch-6 leverages Project Loom for efficient concurrent HTTP polling.
  6. Protobuf Generation: IF2 protobuf classes generated from provided .proto schema.

Next Steps:

  1. Architecture design review and approval
  2. Detailed class design for core domain
  3. Test-driven implementation (TDD)
  4. Integration testing with mock servers
  5. Performance validation with 1000 endpoints
  6. Security audit and normative compliance review