Die guten ins Töpfchen, die schlechten ins Kröpfchen.

Sie kennen vielleicht die Szene aus Aschenputtel, in der Aschenputtels Stiefschwestern sie mit dem Sortieren von Erbsen schikanieren. Für viele von uns ist das Sortieren und Organisieren eine lästige Pflicht, auch wenn wir wissen, dass Struktur und Ordnung unsere Arbeit erleichtern können. In C++ können Namensräume verwendet werden, um zusammengehörige Code-Elemente zu strukturieren und so den Code zu modularisieren. Diese Reihenfolge gibt dem Entwickler mehr Freiheit bei der Benennung von Funktionen, Klassen oder Variablen, da sie sicherstellt, dass diese Dinge immer nur im jeweiligen Namensraum verstanden werden und es keine Mehrdeutigkeiten geben kann. Besonders in stark verteilten Entwicklungsprozessen können Namensmehrdeutigkeiten in verschiedenen Software-Komponenten zu Problemen führen, die erst spät in der Integrationsphase entdeckt werden. In diesem Blog-Beitrag zeigen wir Ihnen, wie Namensräume aktuell in TargetLink eingesetzt werden können und welche interessanten neuen Funktionen wir mit TargetLink 2023-B veröffentlichen werden.

Vorname: Das Was
Abbildung 1: Erklärung und Definition des Namespaces

Vorname: Das Was

In C++ werden Namensräume mit dem Schlüsselwort namespace definiert. Dem Schlüsselwort folgen geschweifte Klammern, die einen Geltungsbereich für die darin enthaltenen Symbole, d. h. Typen, Funktionen oder Variablen, vorgeben. Sie können Namensräume verschachteln, um Hierarchien zu erstellen, die die modulare Architektur Ihres Codes darstellen. Um ein Symbol aus einem Namensraum zu adressieren, stellen Sie dem Symbol einen Namensraum-Namen voran, wie in Abbildung 1 gezeigt.

Zweitens: Das Warum

Viele von Ihnen wissen wahrscheinlich, dass C++ die Programmiersprache des Adaptive-AUTOSAR-Standards ist. Die dienstorientierte Architektur des Adaptive-AUTOSAR-Standards hat viel zu bieten, wenn es darum geht, zukünftige Herausforderungen im Automobilbereich zu meistern, z. B. autonomes Fahren, Fahrzeugkonnektivität oder den Einsatz von Hochleistungssteuerungen (HPCs). Der Adaptive-AUTOSAR-Standard und die zugehörigen Kodierrichtlinien ermutigen Anwender zur Verwendung von Namensräumen, da diese eine strukturierte, modulare und kontrollierte Entwicklung ermöglichen, was die Flexibilität, Skalierbarkeit und Haltbarkeit verbessert.

Drittens: Das Wie

Das Anlegen und Verwalten von Namensräumen in TargetLink erfolgt im TargetLink Data Dictionary (DD) und ist genauso komfortabel wie bei anderen Daten. Sie können Namensräume und benutzerdefinierte Namensraumgruppen im Pool-Bereich erstellen. Den entsprechenden Namensraum können Sie dann bei AUTOSAR-DD-Objekten wie Service-Interfaces oder TargetLink-DD-Objekten als Typedefs referenzieren.

Abbildung 2: Erstellen und Referenzieren von Namensräumen in TargetLink

Natürlich funktioniert dies auch im empfohlenen Top-Down-Workflow , bei dem Sie mit einer ARXML-Datei aus einem Architekturmodellierungswerkzeug beginnen. Nach dem Import der ARXML in die DD werden alle in der ARXML enthaltenen Namensräume für Sie erstellt und bei den entsprechenden DD-Objekten referenziert. Das bedeutet, dass alles für die Erstellung eines funktionierenden Rahmenmodells und die Modellierung des Verhaltens der AUTOSAR-Software-Komponente bereit ist.

Wir wissen von unseren Kunden, dass Sie sicherstellen wollen, dass Ihr gesamter Anwendungscode in einem Namensraum generiert wird, entweder aufgrund der Adaptive-AUTOSAR-Kodierrichtlinien oder aufgrund anderer Anforderungen. Aus diesem Grund führen wir mit TargetLink 2023-B eine neue Funktion ein: den allgemeinen Namensraum. Mit der allgemeinen Namensraumfunktion können Sie einem Modul oder einer Software-Komponente einen Namensraum zuweisen. Der Namensraum wird dann an alle Objekte im Modul oder in der Software-Komponente vererbt, obwohl Sie weiterhin wie gewohnt auf andere Namensräume für ausgewählte Objekte verweisen können. So wie die Tauben dem Aschenputtel beim Sortieren der Erbsen geholfen haben, erspart Ihnen diese Funktion die manuelle Zuweisung von Namensräumen zu allen Variablen, Funktionen und Typen der Anwendung.

Abbildung 3: Verwendung der allgemeinen Namensraum-Funktion

Abbildung 4: Code-Generator-Option NamespaceQualification auf Reduced und Full eingestellt

Obwohl wir immer versuchen, den bestmöglichen und konformsten Code zu generieren, möchten Sie den generierten Code vielleicht dennoch an Ihre Bedürfnisse anpassen. Es ist uns wichtig, dass Sie genau den Code erhalten, den Sie wünschen, daher haben wir natürlich auch die Anpassung für die Verwendung von Namensräumen vorgesehen. Wenn Sie beispielsweise die Code-Generator-Option NamespaceQualification auf Reduced einstellen, können Sie konfigurieren, ob Elemente im generierten Code mit ihrem vollständigen Namensraum qualifiziert werden oder nur mit dem Namensraum, der sich vom umgebenden Namensraum unterscheidet. Wenn Sie die Code-Generator-Option auf Reduced setzen, erhalten Sie besser lesbaren Code. Nachteilig ist, dass bei der Integration von externem Code Mehrdeutigkeiten in Bezug auf Symbolnamen auftreten können. Daher ist die Code-Generator-Option standardmäßig auf Full eingestellt.

Zuletzt: Ihre Meinung

Der Adaptive-AUTOSAR-Standard hat für den Automobilbereich und seine zukünftigen Herausforderungen viel zu bieten und ist eng mit modernem C++ verknüpft. Wir bei dSPACE wollen Ihnen die beste Lösung für Ihre Herausforderungen bieten. Deshalb freuen wir uns immer, mit Ihnen über Ihre zukünftigen Anforderungen an C++ zu sprechen und Ihr Feedback zu bestehenden Funktionen zu erhalten. Die allgemeine Namensraum-Funktion von TargetLink 2023-B ist eines der Themen, die wir in Kundengesprächen häufig besprochen haben. Wir möchten Sie daher ermutigen, sich mit uns in Verbindung zu setzen, damit wir weiterhin die Tauben sein können, die Ihnen helfen.

Über den Autor

Sven Siemon

Sven Siemon

Technical Author, RD Governance & Competence Partners, dSPACE GmbH

Treiben Sie Innovationen voran. Immer am Puls der Technologieentwicklung.

Abonnieren Sie unser Expertenwissen. Lernen Sie von erfolgreichen Projektbeispielen. Bleiben Sie auf dem neuesten Stand der Simulation und Validierung. Jetzt dSPACE direct und dSPACE direct aeropace & defense abonnieren.

Formularaufruf freigeben

An dieser Stelle ist ein Eingabeformular von Click Dimensions eingebunden. Dieses ermöglicht es uns Ihr Newsletter-Abonnement zu verarbeiten. Aktuell ist das Formular ausgeblendet aufgrund Ihrer Privatsphäre-Einstellung für unsere Website.

Externes Eingabeformular

Mit dem Aktivieren des Eingabeformulars erklären Sie sich damit einverstanden, dass personenbezogene Daten an Click Dimensions innerhalb der EU, in den USA, Kanada oder Australien übermittelt werden. Mehr dazu in unserer Datenschutzbestimmung.