DEENESPTFRRUARHIKOZHNL
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 von ara::per.
    • «aapFunctionalCluster» :Persistency (Plattform-Basisdienst): Realisiert den Functional Cluster ara::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 Cluster ara::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

  1. Initialisierung des Storage-Handles:
    • :Adaptive Application ruft synchron OpenKeyValueStorage() auf. :Persistency instanziiert bzw. bindet die KeyValueStorage-Ressource und gibt das Handle zurück.
  2. In-Memory-Modifikation (Entkoppelter Schreibvorgang):
    • Die Applikation ruft SetValue() auf. :Persistency aktualisiert 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.
  3. Flush-Trigger (SyncToStorage):
    • Die Applikation stößt über SyncToStorage() die eigentliche Persistierungskette an.
  4. Storage-Öffnung:
    • :Persistency initiiert den I/O-Kanal über den Aufruf open() am :Operating System.
  5. Konditionale Verschlüsselung (alt-Fragment):
    • Guard-Bedingung: [KeySlotMapping exists in Manifest and keySlotUsage = encryption].
    • Sub-Interaktion (ref): Ausführung des referenzierten Krypto-Setups Initialize Cipher (Allokation des Krypto-Kontextes, Import/Bindung des Schlüssels aus dem definierten KeySlot via ara::crypto).
    • Transformation: :Persistency übergibt die serialisierten Nutzdatenblöcke via ProcessBlock() synchron an :Cryptography und erhält den Chiffretext zurück.
  6. Persistenter I/O-Schreibzugriff:
    • :Persistency schreibt den Datenstrom (Plaintext oder Chiffretext, ggf. erweitert um konfigurierte Redundanz-/CRC-Header) über den POSIX-Aufruf write() an das :Operating System. Nach Rückkehr des I/O-Aufrufs terminiert SyncToStorage().

4. Normative Relevanz & Entwickler-Hinweise

  • Pufferungs- & Transaktionssemantik:
    • SetValue() garantiert keine Ausfallsicherheit gegen Power-Loss oder Crash. Persistenz wird erst mit dem erfolgreichen Abschluss von SyncToStorage() sichergestellt.
    • SyncToStorage() ist ein blockierender, I/O- und rechenintensiver Aufruf. In harten Echtzeitkontexten darf SyncToStorage() nicht hochfrequent/zyklisch aufgerufen werden; Modifikationen sind per SetValue() 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).
  • Fehler- und Determinismusbehandlung:
    • Schlägt open(), ProcessBlock() oder write() fehl (z. B. Speicher voll, Krypto-Schlüssel im Slot ungültig/gesperrt, I/O-Fehler), propagiert SyncToStorage() einen entsprechenden ara::core::Result<void>-Fehlercode (ara::per::PerErrc). Die Applikation muss diesen Rückgabewert zwingend auswerten, um Datenverlust zu detektieren.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R23-11 → R24-11 normative Änderung Nachfolger: FIG-884a6a447fcf4783
  • Kombiniertes Fragment (alt): Ergänzung des bedingten Fragments [Redundancy enabled in Manifest] mit der referenzierten Interaktion ref Store Redundant Data am Ende des Persistierungsablaufs.
  • Stereotyp «aapInformative»: Ergänzung des Stereotyps «aapInformative» an den POSIX-Systemaufrufen open() und write() zwischen :Persistency und :Operating System.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

:Adaptive Application | «aapFunctionalCluster» | :Persistency | :Operating System | «aapFunctionalCluster» | :Cryptography | alt | [KeySlotMapping exists in Manifest and keySlotUsage = encryption] | ref | Initialize Cipher | SetValue() | write() | open() | SyncToStorage() | OpenKeyValueStorage(): KeyValueStorage | ProcessBlock()

Begleitender Spezifikationstext:

Explanation of Adaptive Platform Software Architecture AUTOSAR AP R23-11 :Adaptive Application «aapFunctionalCluster» :Persistency :Operating System «aapFunctionalCluster» :Cryptography alt [KeySlotMapping exists in Manifest and keySlotUsage = encryption] ref Initialize Cipher SetValue() write() open() SyncToStorage() OpenKeyValueStorage(): KeyValueStorage ProcessBlock() Figure 11.13: Scenario: Store Persistent Data with Unique ID Figure 11.13 shows the default scenario for Store Persistent Data with Unique ID. The Adaptive Application needs to open a KeyValueStorage by calling OpenKeyValueStorage(). Then, the Adaptive Application can store data associated to a key by calling SetValue(). The data is updated in memory by calling SetValue() but not written to persistent storage. The Adaptive Application needs to call SyncToStorage() to write one or more such changes to persistent storage. If enabled in the Manifest, Persistency stores redundant data to detect and correct errors when reading from a KeyValueStorage later. If the key or KeyValueStorage is configured to use encryption, data will be encrypted before it is written to the underlying storage. 11.3.1.5 Get Storage Size 11.3.1.5.1 Scenario: Get FileStorage Size :Adaptive Application «aapFunctionalCluster» :Persistency :Operating System GetCurrentFileStorageSize() getSize() Figure 11.14: Scenario: Get FileStorage Size 175 of 198 Document ID 982: AUTOSAR_AP_EXP_SWArchitecture

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R23-11 AUTOSAR_AP_EXP_SWArchitecture S. 175 11.13 Figure 11.13: Scenario: Store Persistent Data with Unique ID