AUTOSAR_AP_EXP_SWArchitecture
FIG-77e485cbe4c2b9bb
608 × 469 px
1 Release(s)
Figure 11.13: Scenario: Store Persistent Data with Unique ID
SHA-256 Inhalts-Fingerabdruck:
77e485cbe4c2b9bbce9a3ad484bf649a1f19456ad07fd63e7fb5d81dc0dfd2f7
✦
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 2.x Sequenzdiagramm (Interaktions- und Ablauf-Szenario).
- Kontext: AUTOSAR Adaptive Platform (AP), Release R23-11, Spezifikation
AUTOSAR_AP_EXP_SWArchitecture, Kapitel 11.3.1 (Persistency). - Technischer Zweck: Detaillierung des Standard-Persistierungsablaufs für schlüsselwertbasierte Daten (Store Persistent Data with Unique ID via
KeyValueStorage). Es visualisiert das zweistufige Commit-Modell (RAM-Pufferung vs. synchronisierter NVRAM-/Disk-Flush) sowie die optionale, manifestgesteuerte Krypto-Integration vor der Übergabe an das Betriebssystem.
2. Komponenten, Entitäten & Schnittstellen
- Lebenslinien & Stereotypen:
:Adaptive Application(Akteur / Prozess-Instanz): Nutzt die standardisierte funktionale C++-API vonara::per.«aapFunctionalCluster» :Persistency(Plattform-Basisdienst): Realisiert den Functional Clusterara::per; verwaltet In-Memory-Caches, Serialisierung, Redundanzprüfungen und Persistierungslogik.:Operating System(Akteur / POSIX-Subsystem): Abstrahiert Dateisystem-, VFS- und Blocktreiberzugriffe über standardisierte POSIX-Systemschnittstellen.«aapFunctionalCluster» :Cryptography(Plattform-Basisdienst): Realisiert den Functional Clusterara::crypto; stellt kryptographische Transformationen, Algorithmen und Schlüsselkontexte bereit.
- Schnittstellen & Operationen:
OpenKeyValueStorage(): KeyValueStorage: Fabrikmethode/Getter am Persistency-Cluster zur Erlangung eines typisierten Storage-Handles (ara::per::KeyValueStorage).SetValue(): Typisierte Schreiboperation auf den lokalen In-Memory-Puffer des Key-Value-Speichers.SyncToStorage(): Synchronisationsbefehl zum physischen Flush der gepufferten Änderungen in den permanenten Speicher.open(),write(): Low-Level-POSIX-Systemaufrufe zur Interaktion mit dem Dateisystem/Persistent Storage.ProcessBlock(): Symmetrische Blockverschlüsselungs- bzw. Transformationsoperation der Krypto-Pipeline.
- Konfigurations- und Manifestelemente:
KeySlotMapping: ARXML-Manifest-Zuordnung zwischen einem logischen Persistency-Port/Storage und einem konkreten physischen/logischen Crypto-KeySlot (ara::crypto::keys).keySlotUsage = encryption: Manifest-Attribut, welches die kryptographische Verschleierung vor dem Dateisystem-Schreibvorgang erzwingt.
3. Dynamisches Verhalten & Sequenzablauf
- Initialisierung des Storage-Handles:
:Adaptive Applicationruft synchronOpenKeyValueStorage()auf.:Persistencyinstanziiert bzw. bindet dieKeyValueStorage-Ressource und gibt das Handle zurück.
- In-Memory-Modifikation (Entkoppelter Schreibvorgang):
- Die Applikation ruft
SetValue()auf.:Persistencyaktualisiert den Wert ausschließlich im flüchtigen Prozess-Arbeitsspeicher (Cache). Zu diesem Zeitpunkt findet keinerlei I/O-Interaktion mit dem Filesystem oder Krypto-Cluster statt.
- Die Applikation ruft
- Flush-Trigger (
SyncToStorage):- Die Applikation stößt über
SyncToStorage()die eigentliche Persistierungskette an.
- Die Applikation stößt über
- Storage-Öffnung:
:Persistencyinitiiert den I/O-Kanal über den Aufrufopen()am:Operating System.
- Konditionale Verschlüsselung (
alt-Fragment):- Guard-Bedingung:
[KeySlotMapping exists in Manifest and keySlotUsage = encryption]. - Sub-Interaktion (
ref): Ausführung des referenzierten Krypto-SetupsInitialize Cipher(Allokation des Krypto-Kontextes, Import/Bindung des Schlüssels aus dem definierten KeySlot viaara::crypto). - Transformation:
:Persistencyübergibt die serialisierten Nutzdatenblöcke viaProcessBlock()synchron an:Cryptographyund erhält den Chiffretext zurück.
- Guard-Bedingung:
- Persistenter I/O-Schreibzugriff:
:Persistencyschreibt den Datenstrom (Plaintext oder Chiffretext, ggf. erweitert um konfigurierte Redundanz-/CRC-Header) über den POSIX-Aufrufwrite()an das:Operating System. Nach Rückkehr des I/O-Aufrufs terminiertSyncToStorage().
4. Normative Relevanz & Entwickler-Hinweise
- Pufferungs- & Transaktionssemantik:
SetValue()garantiert keine Ausfallsicherheit gegen Power-Loss oder Crash. Persistenz wird erst mit dem erfolgreichen Abschluss vonSyncToStorage()sichergestellt.SyncToStorage()ist ein blockierender, I/O- und rechenintensiver Aufruf. In harten Echtzeitkontexten darfSyncToStorage()nicht hochfrequent/zyklisch aufgerufen werden; Modifikationen sind perSetValue()zu aggregieren und gezielt transaktionsorientiert zu flashen.
- Transparente Verschlüsselung via Manifest:
- Die Anwendungssoftware interagiert rein mit Klartextdaten über
SetValue(). Die Verschlüsselung ist vollkommen entkoppelt und wird ausschließlich über die Manifest-Modellierung gesteuert (KeySlotMapping).
- Die Anwendungssoftware interagiert rein mit Klartextdaten über
- Fehler- und Determinismusbehandlung:
- Schlägt
open(),ProcessBlock()oderwrite()fehl (z. B. Speicher voll, Krypto-Schlüssel im Slot ungültig/gesperrt, I/O-Fehler), propagiertSyncToStorage()einen entsprechendenara::core::Result<void>-Fehlercode (ara::per::PerErrc). Die Applikation muss diesen Rückgabewert zwingend auswerten, um Datenverlust zu detektieren.
- Schlägt
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.