DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-752c5253e01f91f4 724 × 696 px 1 Release(s)

Figure 11.14: Scenario: Read Persistent Data from File

SHA-256 Inhalts-Fingerabdruck: 752c5253e01f91f4e0b989010f439fec5cc97d33915b190234c702d0443c4ca2
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

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.
      • reader = OpenFileReadOnly(): ReadAccessor: Erzeugt ein schreibgeschütztes Stream-/Accessor-Objekt auf einer dedizierten Datei (Rückgabeinstanz reader).
      • line = ReadLine(): Synchroner Lesevorgang einer textuellen Zeile bis zum Delimiter/EOF.
      • reader.IsEof(): Abfrage der Abbruchbedingung (End of File) über das Reader-Objekt.
    • Persistency-to-OS (POSIX Syscalls):
      • open() («aapInformative»): Öffnen des Dateideskriptors im zugrunde liegenden Filesystem (als informativer Aufruf gekennzeichnet).
      • read() («aapInformative»): Blockweises/gepuffertes Einlesen von Binärdaten vom Festspeicher (als informativer Aufruf gekennzeichnet).
    • 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 reader = 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 reader.IsEof()]):
    • Äußere Schleife: Die Applikation ruft zyklisch line = ReadLine() am Reader (ReadAccessor) auf, bis reader.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)

R24-11 → R25-11 redaktionell Vorgänger: FIG-81e9ad61e4f05dc7
  • OpenFileReadOnly(): Umbenennung der Rückgabevariablen von readAccessor zu reader (reader= OpenFileReadOnly(): ReadAccessor).
  • Guard-Bedingung / loop: Anpassung der Abbruchbedingung von [not readAccessor.IsEof()] auf [not reader.IsEof()] entsprechend der umbenannten Referenzvariable.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

:Adaptive Application | «aapFunctionalCluster» | :Persistency | loop | [not reader.IsEof()] | :Operating System | «aapFunctionalCluster» | :Cryptography | 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 | ProcessBlock() | line= ReadLine() | read() | «aapInformative» | reader= OpenFileReadOnly(): ReadAccessor | open() | «aapInformative» | OpenFileStorage(): FileStorage

Begleitender Spezifikationstext:

Explanation of Adaptive Platform Software Architecture AUTOSAR AP R25-11 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 loop [not reader.IsEof()] :Operating System «aapFunctionalCluster» :Cryptography 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 ProcessBlock() line= ReadLine() read() «aapInformative» reader= OpenFileReadOnly(): ReadAccessor open() «aapInformative» OpenFileStorage(): FileStorage Figure 11.14: Scenario: Read Persistent Data from File Figure 11.14 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 calling OpenFileReadOnly() or OpenFileReadWrite() depending if the Adaptive Application needs to write data to the file as well. Then, the Adaptive Application can read data via the methods provided by ReadAccessor either as binary data or text data. If enabled in the Manifest, Persistency will detect and try to correct data errors when reading from a file. If the file or FileStorage is configured to use encryption, the contents of the file will be transparently decrypted during

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R25-11 AUTOSAR_AP_EXP_SWArchitecture S. 227 11.14 Figure 11.14: Scenario: Read Persistent Data from File