AUTOSAR_AP_EXP_SWArchitecture
FIG-9a1b028590ef5c2c
543 × 963 px
1 Release(s)
Figure 9.120: Interfaces for SOVD data
SHA-256 Inhalts-Fingerabdruck:
9a1b028590ef5c2ca67a54dadd80e16769d48e9a423d741a4cf933bb3a6ea6ce
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: UML-Klassendiagramm / Schnittstellenspezifikation mit Komponentenannotationen.
- Funktionale Einordnung: AUTOSAR Adaptive Platform (AP), Functional Cluster Diagnostic Management (DM) in einer Daemon-basierten Implementierungsarchitektur (
daemon-based). - Technischer Zweck: Definition der nativen C++-Schnittstellen zur Modellierung, Serialisierung, Deserialisierung und dynamischen Handhabung hierarchischer Nutzdaten für SOVD (Service-Oriented Vehicle Diagnostics, ASAM SOVD / ISO 13170). Es entkoppelt die standardisierte Datenrepräsentation (JSON-analoge Strukturen: Primitive, Records/Maps, Arrays) zwischen der anwendenden
Adaptive Applicationund dem ausführenden DM-Daemon.
2. Komponenten, Entitäten & Schnittstellen
Akteure & Komponenten
Adaptive Application(UML Component): Konsument der SOVD-Datenstrukturen im Prozesskontext der Anwendung.Diagnostic Management(«aapFunctionalCluster», Ausprägung:daemon-based): AUTOSAR-Basissoftware-Cluster, der die konkrete Implementierung der Schnittstellen bereitstellt bzw. instanziiert und IPC/Routing übernimmt.
Schnittstellen & Datenstrukturen
DiagnosticSovdAbstractContentData(«aapAPI, aapNativeInterface»):- Semantik: Typunabhängiger, abstrakter Knoten zur Repräsentation dynamischer SOVD-Ressourcen-Payloads (analoge Semantik zu JSON-DOM / Variant-Trees).
- Fabrikmethoden (statisch, unterstrichen):
CreateContentElement()CreateRecordContentElement(),CreateArrayContentElement()CreatePrimitiveContentBool(),CreatePrimitiveContentDouble(),CreatePrimitiveContentSignedInt(),CreatePrimitiveContentUnsignedInt(),CreatePrimitiveContentString()
- Typabfrage & Generische Inspektion:
GetType(),GetPrimitiveContentValueType(),HasContentElement(),HasError(),SetError()
- Primitive Getter/Setter:
GetBool(),SetBool(),GetDouble(),SetDouble(),GetSignedInt(),SetSignedInt(),GetUnsignedInt(),SetUnsignedInt(),GetString(),SetString()
- Array- / Sequenz-Operationen (STL-orientiert):
Begin(),End(),CBegin(),CEnd(),Size(),Capacity(),Reserve(),Empty(),Clear(),PushBack(),Add(),Remove(),Erase(),Find(),operator[](),GetArrayView()
- Record- / Map-Operationen (Key-Value-Container):
RecordBegin(),RecordEnd(),RecordCBegin(),RecordCEnd(),RecordCount(),RecordCapacity(),RecordReserve(),RecordEmpty(),RecordRemoveAll(),GetRecordView()
DiagnosticSovdAbstractContentDataWithKey(«aapAPI, aapNativeInterface»):- Semantik: Schlüssel-Wert-Paar-Kapselung zur Konstruktion benannter Felder innerhalb von Records/Objektstrukturen.
- Methoden:
GetName(),SetName(): Zugriff auf den Key (Property-Identifier).GetContent(),SetContent(): Assoziierter Content-Knoten (DiagnosticSovdAbstractContentData).
Beziehungen & Abhängigkeiten
- Realisierung (
--▷):Diagnostic Managementimplementiert beide abstrakten Interfaces (DiagnosticSovdAbstractContentDataundDiagnosticSovdAbstractContentDataWithKey). - Nutzungsbeziehung (
«use»): DieAdaptive Applicationinteragiert typisiert über die deklarierten Methoden der Interfaces mit den Payload-Datenstrukturen, ohne an systemspezifische IPC- oder Daemon-Details gebunden zu sein.
3. Dynamisches Verhalten & Sequenzablauf
- Lebenszyklus & Instanziierung:
- Instanziierung erfolgt speicherschonend über statische Factory-Methoden (
Create*), typischerweise polymorph auf einem Memory-Pool oder Arena-Allokator des DM-Laufzeitstacks.
- Instanziierung erfolgt speicherschonend über statische Factory-Methoden (
- Schreibpfad (Provider / Application-to-Daemon):
- Die Applikation baut hierarchische SOVD-Datenobjekte über Factory-Calls auf (
CreateRecordContentElement,CreateArrayContentElement), füllt Primitive via Setter (Set*), mappt Key-Bindings überDiagnosticSovdAbstractContentDataWithKeyund übergibt den DOM-Baum an den DM-Daemon.
- Die Applikation baut hierarchische SOVD-Datenobjekte über Factory-Calls auf (
- Lesepfad (Consumer / Daemon-to-Application):
- Der DM-Daemon parst eingehende SOVD-HTTP/REST-Requests oder Diagnosedaten und übergibt der Applikation ein
DiagnosticSovdAbstractContentData-Wurzelelement. - Die Applikation prüft den Typ via
GetType(), nutzt Container-Views (GetRecordView(),GetArrayView()) oder iteriert direkt über STL-analoge Iteratoren (Begin(),End(), Indexoperatoroperator[]).
- Der DM-Daemon parst eingehende SOVD-HTTP/REST-Requests oder Diagnosedaten und übergibt der Applikation ein
- Fehlerbehandlung:
- Inband-Fehlersignalisierung über
HasError()undSetError(), wodurch Parsing- oder Datenkonvertierungsfehler direkt am betroffenen Datenelement annotiert werden können.
- Inband-Fehlersignalisierung über
4. Normative Relevanz & Entwickler-Hinweise
- Architektonischer Schnitt (Daemon-Architektur):
- Da DM als Daemon realisiert ist, arbeiten die Interfaces im Applikationsprozess als Proxy-/Wrapper-Objekte. Speicher-Allokationen (insb.
PushBack,Reserve, String-Zuweisungen) müssen auf deterministische Heap-Nutzung in sicherheitskritischen POSIX-Umgebungen geprüft werden.
- Da DM als Daemon realisiert ist, arbeiten die Interfaces im Applikationsprozess als Proxy-/Wrapper-Objekte. Speicher-Allokationen (insb.
- API-Vertrag:
- Keine direkten Roh-JSON-Strings im API-Vertrag der Applikation; stattdessen typsichere, strukturierte Abstraktion (
DiagnosticSovd*). Dies garantiert Portabilität und statische Typprüfung bei AUTOSAR-AP-Applikationen.
- Keine direkten Roh-JSON-Strings im API-Vertrag der Applikation; stattdessen typsichere, strukturierte Abstraktion (
- Performance & Allokation:
- Exzessives dynamisches Resizen vermeiden:
Capacity(),Reserve(),RecordReserve()zwingend nutzen, um dynamische Reallokationen bei großen Diagnosedatensätzen (z. B. Freeze Frames, Logging-Snapshots) zu minimieren.
- Exzessives dynamisches Resizen vermeiden:
- View-Semantik:
GetArrayView()undGetRecordView()erzeugen typischerweise Zero-Copy-Read-Only-Views (ara::core::Span/std::string_viewähnlich) auf bestehende Puffer; Gültigkeit der Views ist strikt an den Lebenszyklus des zugrunde liegenden Content-Data-Objekts gebunden.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.