AUTOSAR_AP_EXP_ARAComAPI
FIG-42642e42f482688b
833 × 586 px
10 Release(s)
Figure 7.7: Multiple Instantiation in Implementation Contexts
SHA-256 Inhalts-Fingerabdruck:
42642e42f482688b1776b7f39f9b6cb54703990e3e65425b3662b2b8f5080a43
✦
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: Metamodell-basiertes Architektur- und Deployment-Strukturdiagramm (Instanziierungs- und Komponenten-Mapping-Modell).
- Technischer Zweck: Das Diagramm illustriert das Problem und die Modellierung der Mehrfachinstanziierung (Multiple Instantiation) von Softwarekomponenten-Typen (
SoftwareComponentType) und deren Dienstschnittstellen (ara::comService Proxies und Skeletons) über Prozess- und Ausführungsgrenzen hinweg. - Architektur-Einordnung: In der AUTOSAR Adaptive Platform (Release R18-03 / 1.4.0) werden Komponenten als C++-Klassen implementiert und in POSIX-Prozessen (
Executable) deployt. Das Schaubild visualisiert die Divergenz zwischen Entwurfs-/Implementierungsartefakten (statische Typ-Ebene) und den konkreten Laufzeit-Instanzen auf Executable- und Composite-Ebene sowie die Herausforderung der eindeutigen Bindung über Instanz-Identifikatoren (InstanceIdentifiervs.InstanceSpecifier).
2. Komponenten, Entitäten & Schnittstellen
- Entwurfsebene (Klassentyp- / Implementierungs-Kontext, oben):
Implementation of SoftwareComponentType A: Repräsentiert die statische Implementierung des Dienst-Konsumenten (Client).RadarService Proxy instance:ara::com-Client-Endpunkt (ProxyClass), zuständig für Konsumierung von Events, Fields und Methodenaufrufen des Radar-Dienstes.InstanceId: radarservice: Konfigurierter bzw. logisch assoziierter Instanzbezeichner für den konsumierten Dienst.
Implementation of SoftwareComponentType B: Repräsentiert die statische Implementierung des Dienst-Anbieters (Server).RadarService Skeleton instance:ara::com-Server-Endpunkt (SkeletonClass), zuständig für das Bereitstellen der Service-Methoden, Field-Getter/Setter und Event-Emissionen.InstanceId: Radar: Konfigurierter bzw. assoziierter Instanzbezeichner des angebotenen Dienstes.
- Laufzeitebene (Deployment- / Prozess-Kontext, unten):
Executable 1(Eigenständiger OS-Prozess / Adressraum):- Beherbergt zwei separate Laufzeitinstanzen von Typ
A(A,A). - Beherbergt eine Laufzeitinstanz von Typ
B(B).
- Beherbergt zwei separate Laufzeitinstanzen von Typ
Executable 2(Zweiter eigenständiger OS-Prozess / Adressraum):- Beherbergt eine Laufzeitinstanz von Typ
B(B) auf oberster Ebene. - Beherbergt eine
Composite Component(hierarchische Kapselung), welche wiederum:- eine Laufzeitinstanz von Typ
A(A) und - eine Laufzeitinstanz von Typ
B(B) enthält.
- eine Laufzeitinstanz von Typ
- Beherbergt eine Laufzeitinstanz von Typ
- Beziehungen & Multiplizitäten:
Instance of(N:1-Beziehung): Insgesamt 3 Instanzen von KomponenteA(2 in Executable 1, 1 in Executable 2/Composite) referenzieren dieselbe Implementierung von TypA.Instance of(N:1-Beziehung): Insgesamt 3 Instanzen von KomponenteB(1 in Executable 1, 1 in Executable 2, 1 in Executable 2/Composite) referenzieren dieselbe Implementierung von TypB.Composite Component(Aggregation/Komposition): Strukturiert Subkomponenten logisch innerhalb des Adressraums vonExecutable 2.
3. Dynamisches Verhalten & Sequenzablauf
Das Diagramm selbst ist statisch-strukturell, induziert jedoch folgende deterministische Laufzeitabläufe bei der Dienstbindung:
- Skeleton-Initialisierung & Service Offer (
OfferService):- Jede
B-Instanz erzeugt zur Laufzeit eine eigene C++-Instanz der generierten Skeleton-Klasse. OfferService()publiziert das Service-Angebot über den Kommunikations-Stack (SOME/IP-Daemon oder prozessinternes IPC-Binding).- Problemstellung bei Mehrfachinstanz: Würden alle drei
B-Instanzen denselben statischen BezeichnerInstanceId: Radarregistrieren, entstünde ein Konflikt im Service Discovery (Kollision identischer Service-Instanz-IDs im selben Netzwerk/Host).
- Jede
- Proxy-Auflösung & Service Discovery (
FindService):- Jede
A-Instanz initiiert einFindService()nach demRadarService. - Bei intra-prozessualer Ausführung (
Executable 1enthält sowohlAals auchB) optimiert dieara::com-Laufzeitumgebung Methodenaufrufe und Events typischerweise auf direkte Pointer- bzw. Shared-Memory-/Zero-Copy-Mechanismen. - Zwischen
AinExecutable 1undBinExecutable 2(oder Inter-ECU) greift das IPC-/Netzwerk-Binding (SOME/IP-Routing).
- Jede
4. Normative Relevanz & Entwickler-Hinweise
- Notwendigkeit von
InstanceSpecifier(Port-to-Service-Instance Mapping):- Entwickler dürfen
InstanceIdentifier(Strings/IDs wie"Radar") niemals hardcodiert im Quellcode der Komponenten-Klassen übergeben. - Der C++-Konstruktor von Proxies und Skeletons muss mit einem
ara::core::InstanceSpecifierparametrisiert werden (z. B.InstanceSpecifier{"Executable1/RootSwc/RPort_Radar"}). Erst über das Execution Manifest und Service Instance Manifest erfolgt die Bindung des konkreten Modell-Ports auf die tatsächlicheInstanceIdentifier(z. B. SOME/IPservice_instance_id).
- Entwickler dürfen
- Zustandslosigkeit & Reentrancy der Komponenten-Implementierung:
- Da derselbe
SoftwareComponentType Amehrfach innerhalb desselben Prozesses (Executable 1) instanziiert wird, dürfen in der Implementierung keine globalen oder statischen Variablen (static) für instanzspezifische Daten (z. B. Event-Puffer, Handler, Konfigurationswerte) verwendet werden. - Jede Instanz muss ihren eigenen Zustand strikt über Member-Attribute kapseln.
- Da derselbe
- Callback- & Event-Handling (
SetReceiveHandler):- Bei mehrfacher Proxy-Instanziierung im selben Prozess müssen Callback-Registrierungen thread-sicher und isoliert je Instanz registriert werden; Event-Queues müssen pro Proxy-Instanz dimensioniert sein.
- Hierarchieauflösung bei
Composite Component:- Auf POSIX-OS-Ebene existiert kein nativer "Composite-Container": Die Sub-Instanzen
AundBin derComposite Componentteilen sich denselben OS-Thread-Pool, Scheduling-Kontext und Adressraum wie die umgebendeExecutable 2. Die Composite-Struktur dient rein dem Modellierungsentwurf (ARXML) und wird beim Build/Deployment auf flache C++-Instanzen abgebildet.
- Auf POSIX-OS-Ebene existiert kein nativer "Composite-Container": Die Sub-Instanzen
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.