--- active: true level: 1.0 links: - SWE-XXX: [hash] --- # SWA-XXX: [Komponenten-Name] > **Software Architectural Design Element (ASPICE SWE.2).** > Beschreibt eine Software-Komponente und ihr Mapping auf Software-Anforderungen. | Feld | Wert | |----------|-------------------------------| | Projekt | [Projektname] | | Datum | [YYYY-MM-DD] | | Version | [1.0] | | Status | [Entwurf / Freigegeben] | | ASIL | [QM / A / B / C / D] | | Autor | [Name] | | Parent | [SA-XXX, falls vorhanden] | --- ## 1. Verantwortung [Ein bis zwei Saetze: Was tut diese Komponente? Wo ist die Abgrenzung zu Nachbar-Komponenten?] ## 2. Statische Sicht ### 2.1 Komponentendiagramm ```plantuml @startuml package "[Komponenten-Name]" { [Submodul A] [Submodul B] } [Submodul A] --> [Submodul B] [Komponenten-Name] ..> [Nachbar-Komponente] : nutzt @enduml ``` ### 2.2 Eingebettete / verwendete Komponenten | Komponente | Verweis | Verwendung | |---------------|----------|--------------------------| | [Name] | SWA-YYY | [wofuer] | ## 3. Schnittstellen ### 3.1 Bereitgestellte Schnittstelle (Provided) ```c /** * @brief [Kurzbeschreibung] * @param [name] [Bedeutung, Wertebereich] * @return [Status / Wert] * @pre [Vorbedingung] * @post [Nachbedingung] */ Status component_init(const Config* cfg); ``` | Funktion | Zweck | Pre-Condition | Post-Condition | |------------------|----------------------|-----------------------|------------------------| | component_init | Initialisierung | cfg != NULL | Komponente betriebsbereit | | component_send | Daten senden | initialisiert | Daten in TX-Buffer | ### 3.2 Benoetigte Schnittstelle (Required) | Schnittstelle | Bereitgestellt von | Zweck | |-------------------|--------------------|-----------------------| | ILogger::log() | LoggerComponent | Diagnose / Tracing | | IClock::now() | ClockComponent | Zeitstempel | ## 4. Dynamisches Verhalten ### 4.1 Sequenzdiagramm (kritischer Ablauf) ```plantuml @startuml participant App participant "[Komponente]" as C participant HW App -> C: init(cfg) C -> HW: configure HW --> C: ok C --> App: STATUS_OK @enduml ``` ### 4.2 Zustandsdiagramm (falls zutreffend) ```plantuml @startuml [*] --> Uninitialized Uninitialized --> Ready : init() Ready --> Busy : send() Busy --> Ready : tx_done Ready --> Error : fault Error --> Ready : reset() @enduml ``` ## 5. Ressourcen-Bedarf | Ressource | Worst-Case | Methode der Bestimmung | |-------------------|--------------|-----------------------------| | Stack | [z.B. 256 B] | [Messung / statische Analyse] | | Heap | [z.B. 0 B] | [keine Heap-Nutzung] | | Flash | [z.B. 4 KB] | [Map-File des Linkers] | | RAM (statisch) | [z.B. 128 B] | [Map-File des Linkers] | | CPU-Last | [z.B. < 1 %] | [Messung auf Zielsystem] | | Worst-Case Timing | [z.B. 200 us / Aufruf init()] | [Messung HiL] | ## 6. Fehlerverhalten | Fehlerfall | Erkennung | Reaktion | |-----------------------|-------------------|---------------------------| | Ungueltige Konfig | Parameter-Check | Status STATUS_EINVAL | | HW-Timeout | Timer | Retry, dann STATUS_TIMEOUT | | Buffer voll | Check vor Schreiben | STATUS_NOSPACE | ## 7. Designentscheidungen | Entscheidung | Alternative(n) | Begruendung | |------------------------|------------------|--------------------------| | [z.B. statische Allokation] | [Heap] | [deterministisch, MISRA] | | [Lock-Strategie] | [Mutex / lock-free] | [Begruendung] | ## 8. Mapping auf Anforderungen | Anforderung | Wie abgedeckt | Verifikations-Test | |---------------|----------------------------------------------|----------------------------| | SWE-XXX | [welcher Teil dieser Komponente erfuellt es] | TST-UNIT-XXX, TST-INT-YYY | | SWE-YYY | [...] | TST-UNIT-YYY | Jede in den `links` referenzierte SWE-Anforderung muss in dieser Tabelle einen Eintrag haben. ## 9. Detail-Design Detail-Design (ASPICE SWE.3) wird ab ASIL-C separat in `arch/swd/SWD-XXX.md` gefuehrt. Fuer ASIL-A/B und QM ist Code + Header-Kommentare ausreichend. --- *Aenderungen an diesem Architektur-Element gehen per PR mit mind. 2 Technical-Review-Approvals (siehe SWE-Plan).*