DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-43ba94e83e3b8379 724 × 696 px 1 Release(s)

Figure 11.10: Scenario: Read Persistent Data from File

SHA-256 Inhalts-Fingerabdruck: 43ba94e83e3b8379d64b6a6d0cc9c9180c0506e0ca9b7962e708b83e0109e447
✦ 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-Sequenzdiagramm (Interaktionsdiagramm mit kombinierten Fragmenten alt, loop und ref).
  • Architektur-Kontext: AUTOSAR Adaptive Platform (Release R23-11), Spezifikation AUTOSAR_AP_EXP_SWArchitecture (Doc-ID 982), Kapitel 11.3 Storage / Persistency.
  • Technischer Zweck: Darstellung des synchronen Standardablaufs beim sequenziellen, zeilenbasierten Lesen persistenter Daten über die ara::per-Dateischnittstelle (FileStorage / ReadAccessor). Es visualisiert die Kapselung von Low-Level-OS-Dateizugriffen, hardware- bzw. dateibasierter Redundanz/Fehlerkorrektur und transparenter Krypto-Entschlüsselung (ara::crypto) unterhalb der Persistency-Clustergrenze.

2. Komponenten, Entitäten & Schnittstellen

  • Lifelines & Funktionale Einheiten:
    • :Adaptive Application: Anwendungsinstanz im User-Space, die typisierte Persistenzdienste konsumiert.
    • «aapFunctionalCluster» :Persistency: AUTOSAR Adaptive Platform Functional Cluster (ara::per), verantwortlich für Datenhaltung, Caching, Integritätssicherung und Krypto-Orchestrierung.
    • :Operating System: POSIX-kompatibles Betriebssystem / Kernel mit VFS/Dateisystemtreiber.
    • «aapFunctionalCluster» :Cryptography: AUTOSAR Adaptive Platform Functional Cluster (ara::crypto), zuständig für kryptografische Operationen und Schlüsselverwaltung.
  • Schnittstellen & Methodenaufrufe:
    • Application-to-Persistency API:
      • OpenFileStorage(): FileStorage: Öffnet den logischen Speicherraum anhand der Manifest-Konfiguration.
      • readAccessor = OpenFileReadOnly(): ReadAccessor: Erzeugt ein schreibgeschütztes Stream-/Accessor-Objekt auf einer dedizierten Datei.
      • line = ReadLine(): Synchroner Lesevorgang einer textuellen Zeile bis zum Delimiter/EOF.
      • readAccessor.IsEof(): Abfrage der Abbruchbedingung (End of File).
    • Persistency-to-OS (POSIX Syscalls):
      • open(): Öffnen des Dateideskriptors im zugrunde liegenden Filesystem.
      • read(): Blockweises/gepuffertes Einlesen von Binärdaten vom Festspeicher.
    • Persistency-to-Crypto API:
      • ProcessBlock(): Symmetrische Blockentschlüsselung des eingelesenen Ciphertexts im flüchtigen Speicher.
  • Manifest-Artefakte & Konfigurations-Prädikate:
    • Redundancy enabled in Manifest: Steuert aktivierte Mechanismen zur Datenintegrität (z. B. CRC, Checksums, M-out-of-N-Replikation).
    • KeySlotMapping exists in Manifest and keySlotUsage = encryption: Deklariert die Zuordnung eines CryptoKeySlot zur Persistenzdatei zwecks transparenter In-Flight-Entschlüsselung.

3. Dynamisches Verhalten & Sequenzablauf

  1. Initialisierungs- & Öffnungsphase:
    • :Adaptive Application ruft synchron OpenFileStorage() auf :Persistency auf und erhält eine Referenz auf FileStorage.
    • Die Applikation fordert über readAccessor = OpenFileReadOnly() den Lese-Zugriff an.
    • :Persistency delegiert die Anforderung per open() an das :Operating System.
  2. Integritäts- & Redundanzprüfung (alt [Redundancy enabled in Manifest]):
    • Bedingung: Redundanz ist im Manifest konfiguriert.
    • Ausführung: Sub-Sequenz ref Detect and Correct Data Errors wird durchlaufen. Persistency prüft Prüfsummen/Spiegeldateien und korrigiert etwaige Bitkipper/Datenkorruptionen vor der Freigabe.
  3. Cipher-Initialisierung (alt [KeySlotMapping exists in Manifest and keySlotUsage = encryption]):
    • Bedingung: Datei ist im Manifest als verschlüsselt deklariert und besitzt ein valides Key-Slot-Mapping.
    • Ausführung: Sub-Sequenz ref Initialize Cipher interagiert mit :Cryptography (Laden des symmetrischen Schlüssels, Allokation des Cipher-Kontexts, z. B. AES-CBC/GCM, IV/Nonce-Initialisierung).
  4. Iterative Lese-Schleife (loop [not readAccessor.IsEof()]):
    • Äußere Schleife: Die Applikation ruft zyklisch line = ReadLine() am ReadAccessor auf, bis IsEof() == true signalisiert wird.
    • Innere Pufferung & Entschlüsselung (loop):
      • :Persistency triggert read() gegen das :Operating System, um Raw-Blöcke in interne Zwischenpuffer einzulesen.
      • alt [KeySlotMapping exists in Manifest and keySlotUsage = encryption]: Liegt Verschlüsselung vor, übergibt Persistency den Block via ProcessBlock() an :Cryptography zur synchronen Entschlüsselung.
    • Rückgabe: Die assemblierte Klartext-Zeile wird als line synchron an :Adaptive Application zurückgegeben.

4. Normative Relevanz & Entwickler-Hinweise

  • Transparenz & Abstraktion: Weder Krypto-Handling (ara::crypto) noch Integritätschecks (Redundanz) sind in der Applikationslogik sichtbar. Die Adaptive Application interagiert ausschließlich gegen die abstrakte ara::per::ReadAccessor-Schnittstelle.
  • Manifest-Abhängigkeit: Die funktionale Tiefe von OpenFileReadOnly() und ReadLine() wird zur Deployment-Zeit im Execution-/Instance-Manifest festgelegt (PersistencyFileProxy, KeySlotMapping, Redundanz-Attribute). Fehlt das Key-Mapping bei verschlüsselten Dateien, schlägt das Öffnen fehl (kConfigError / kSecurityError).
  • Performance & Blockgrenzen: Obwohl die Applikation zeilenbasiert (ReadLine()) liest, operiert das Back-End blockbasiert (read(), ProcessBlock()). Bei harten Latenzanforderungen muss beachtet werden, dass ReadLine() bei Puffer-Misses synchrone OS-I/O und synchrone Krypto-Berechnungen blockierend im Thread-Kontext des Aufrufers ausführt.
  • Fehlersemantik: Entwickler müssen die standardisierten Fehlercodes (über ara::core::Result<...>) abfangen, da I/O-Fehler, Validierungsfehler der Redundanzschicht oder Fehlschläge bei ProcessBlock() unmittelbar zum Scheitern von ReadLine() bzw. OpenFileReadOnly() führen.

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

R23-11 → R24-11 redaktionell Nachfolger: FIG-81e9ad61e4f05dc7
  • open(): Ergänzung des Stereotyps «aapInformative» am Methodenaufruf von :Persistency an :Operating System.
  • read(): Ergänzung des Stereotyps «aapInformative» am blockweisen Leseaufruf von :Persistency an :Operating System innerhalb der inneren loop-Schleife.

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 | loop | [not readAccessor.IsEof()] | alt | [KeySlotMapping exists in Manifest and keySlotUsage = encryption] | loop | alt | [KeySlotMapping exists in Manifest and keySlotUsage = encryption] | alt | [Redundancy enabled in Manifest] | ref | Initialize Cipher | ref | Detect and Correct Data Errors | OpenFileStorage(): FileStorage | open() | readAccessor= OpenFileReadOnly(): ReadAccessor | ProcessBlock() | line= ReadLine() | read()

Begleitender Spezifikationstext:

Explanation of Adaptive Platform Software Architecture AUTOSAR AP R23-11 After the occurrence one of these 3 cases, the Time Synchronization Slave informs the Adaptive Application about the change by invoking the call-back function. If the Adaptive Application no longer wants to receive notifications it may unregister by calling the method UnregisterStatusChangeNotifier(). 11.3 Storage 11.3.1 Persistency 11.3.1.1 Read Persistent Data from File 11.3.1.1.1 Scenario: Read Persistent Data from File :Adaptive Application «aapFunctionalCluster» :Persistency :Operating System «aapFunctionalCluster» :Cryptography loop [not readAccessor.IsEof()] alt [KeySlotMapping exists in Manifest and keySlotUsage = encryption] loop alt [KeySlotMapping exists in Manifest and keySlotUsage = encryption] alt [Redundancy enabled in Manifest] ref Initialize Cipher ref Detect and Correct Data Errors OpenFileStorage(): FileStorage open() readAccessor= OpenFileReadOnly(): ReadAccessor ProcessBlock() line= ReadLine() read() Figure 11.10: Scenario: Read Persistent Data from File Figure 11.10 shows the default scenario for Read Persistent Data from File. The Adaptive Application needs to open a FileStorage by calling OpenFileStorage(). Afterwards, the Adaptive Application needs to open an individual file by 172 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. 172 11.10 Figure 11.10: Scenario: Read Persistent Data from File