--- active: true level: 1.0 links: - SWE-XXX: [hash] --- # SWA-XXX: [Component name] > **Software Architectural Design Element (ASPICE SWE.2).** > Describes a software component and its mapping to software requirements. | Field | Value | |----------|--------------------------------| | Project | [Project name] | | Date | [YYYY-MM-DD] | | Version | [1.0] | | Status | [Draft / Released] | | ASIL | [QM / A / B / C / D] | | Author | [Name] | | Parent | [SA-XXX, if applicable] | --- ## 1. Responsibility [One or two sentences: what does this component do? Where is the boundary to neighbouring components?] ## 2. Static view ### 2.1 Component diagram ```plantuml @startuml package "[Component name]" { [Submodule A] [Submodule B] } [Submodule A] --> [Submodule B] [Component name] ..> [Neighbour component] : uses @enduml ``` ### 2.2 Embedded / used components | Component | Reference | Use | |---------------|-----------|---------------------------| | [Name] | SWA-YYY | [for what] | ## 3. Interfaces ### 3.1 Provided interface ```c /** * @brief [Short description] * @param [name] [Meaning, value range] * @return [Status / value] * @pre [Precondition] * @post [Postcondition] */ Status component_init(const Config* cfg); ``` | Function | Purpose | Pre-condition | Post-condition | |------------------|--------------------|-----------------------|------------------------| | component_init | Initialisation | cfg != NULL | Component ready | | component_send | Send data | initialised | Data in TX buffer | ### 3.2 Required interface | Interface | Provided by | Purpose | |-------------------|--------------------|---------------------| | ILogger::log() | LoggerComponent | Diagnostics / tracing | | IClock::now() | ClockComponent | Timestamps | ## 4. Dynamic behaviour ### 4.1 Sequence diagram (critical flow) ```plantuml @startuml participant App participant "[Component]" as C participant HW App -> C: init(cfg) C -> HW: configure HW --> C: ok C --> App: STATUS_OK @enduml ``` ### 4.2 State diagram (if applicable) ```plantuml @startuml [*] --> Uninitialized Uninitialized --> Ready : init() Ready --> Busy : send() Busy --> Ready : tx_done Ready --> Error : fault Error --> Ready : reset() @enduml ``` ## 5. Resource demand | Resource | Worst case | Method of determination | |-------------------|--------------|------------------------------| | Stack | [e.g. 256 B] | [Measurement / static analysis] | | Heap | [e.g. 0 B] | [No heap use] | | Flash | [e.g. 4 KB] | [Linker map file] | | RAM (static) | [e.g. 128 B] | [Linker map file] | | CPU load | [e.g. < 1%] | [Measurement on target] | | Worst-case timing | [e.g. 200 us / call init()] | [HiL measurement] | ## 6. Failure behaviour | Failure case | Detection | Reaction | |-----------------------|-------------------|---------------------------| | Invalid config | Parameter check | Status STATUS_EINVAL | | HW timeout | Timer | Retry, then STATUS_TIMEOUT | | Buffer full | Pre-write check | STATUS_NOSPACE | ## 7. Design decisions | Decision | Alternative(s) | Rationale | |------------------------|------------------|----------------------------| | [e.g. static allocation] | [Heap] | [Deterministic, MISRA] | | [Locking strategy] | [Mutex / lock-free] | [Rationale] | ## 8. Mapping to requirements | Requirement | How covered | Verification test | |---------------|-----------------------------------------------|----------------------------| | SWE-XXX | [which part of this component fulfils it] | TST-UNIT-XXX, TST-INT-YYY | | SWE-YYY | [...] | TST-UNIT-YYY | Every SWE requirement listed in `links` must have an entry in this table. ## 9. Detailed design Detailed design (ASPICE SWE.3) is maintained separately under `arch/swd/SWD-XXX.md` from ASIL-C upwards. For ASIL-A/B and QM, code plus header comments are sufficient. --- *Changes to this architecture element go through a PR with at least 2 technical-review approvals (see SWE Plan).*