DE102019217047A1 - Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen - Google Patents

Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen Download PDF

Info

Publication number
DE102019217047A1
DE102019217047A1 DE102019217047.1A DE102019217047A DE102019217047A1 DE 102019217047 A1 DE102019217047 A1 DE 102019217047A1 DE 102019217047 A DE102019217047 A DE 102019217047A DE 102019217047 A1 DE102019217047 A1 DE 102019217047A1
Authority
DE
Germany
Prior art keywords
software components
software
interfaces
message broker
allocation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019217047.1A
Other languages
English (en)
Inventor
Udo Schulz
Micha Muenzenmay
Tobias Krug
Mouham Tanimou
Joshua-Niclas Oergele
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102019217047.1A priority Critical patent/DE102019217047A1/de
Priority to PCT/EP2020/079356 priority patent/WO2021089310A1/de
Priority to US17/773,575 priority patent/US20220405070A1/en
Publication of DE102019217047A1 publication Critical patent/DE102019217047A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren (10) zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen, gekennzeichnet durch folgende Merkmale:- anhand von Anforderungen der Softwarekomponenten an die Softwareschnittstellen wird eine zeitliche Zuteilung der Softwarekomponenten an die Softwareschnittstellen statisch berechnet (11) und- angesichts eines beobachteten Laufzeitverhaltens der Softwarekomponenten wird die Zuteilung fortlaufend optimiert (12).

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen. Die vorliegende Erfindung betrifft darüber hinaus eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium.
  • Stand der Technik
  • Hinlänglich bekannt sind Verfahren zum Verteilen oder Aktualisieren von Software (SW) über eine - mitunter als „Luftschnittstelle“ (over the air, OTA) bezeichnete - drahtlose Datenschnittstelle. Gattungsmäßige Verfahren finden Anwendung sowohl auf Anwendungssoftware (SOTA) als auch auf eingebettete Systemsoftware (firmware, FOTA).
  • Nach dem Stand der Technik werden FOTA und SOTA beispielsweise zur Aktualisierung der Steuergeräte (electronic control units, ECUs) vernetzter Kraftfahrzeuge und Landmaschinen eingesetzt. Zur telematischen Verbindung zwischen dem die Steuergeräte koppelnden Bussystem und dem Internet (der sinnbildlichen „Cloud“) dient hierbei typischerweise eine Fahrzeugverbindungsschnittstelle (vehicle connectivity gateway, VCG).
  • Jenseits der Wartung und Fehlerbereinigung bereits installierter Software lässt sich der Funktionsumfang fahrzeuginterner Steuergeräte auf diesem Wege um Leistungsmerkmale (features) erweitern, welche vorhandene Sensoren und Aktoren für neue Anwendungsfälle nutzen. Entsprechende Applikationen können durch Hersteller oder Erstausrüster (original equipment manufacturer, OEM) einer Landmaschine - etwa mittels eines Entwicklungskits (development kit) - erstellt und auf einer digitalen Vertriebsplattform in der Cloud angeboten werden. Als denkbare Erweiterungen kommen zum Beispiel fortgeschrittene Telemetrie- oder agrartechnische Spezialfunktionen wie die gezielte Unkrautbekämpfung in Betracht.
  • DE102015203766A1 offenbart ein Teilsystem für ein Fahrzeug mit einem über eine Luftschnittstelle mit einem Gerätemanagement-Server des Backends verbundenen Gerätemanagement-Client zum Austauschen von Geräte-, Fahrzeug- und von Diagnose- sowie Softwareupdateinformationen, einem über die Luftschnittstelle mit einem Download-Server des Backends verbundenen Download-Client zum Herunterladen eines Softwareupdates von dem Backend in das Fahrzeug, mit dem Download-Client verbundenen Softwareupdate-Clients zum Anwenden des Softwareupdates und einen mit dem Download-Client und den Softwareupdate-Clients verbundenen Fahrzeugupdate-Client zum Koordinieren des Softwareupdates.
  • Im Zuge einer unabhängigen Entwicklung findet die im Rechenzentrumsbetrieb bereits seit Längerem übliche Container- oder Betriebssystem-Virtualisierung in jüngerer Zeit vermehrt Eingang in die Praxis der eingebetteten Systeme (embedded systems). Diese Methode erlaubt es, mehrere Instanzen eines Betriebssystems als sogenannte Gäste (guests) isoliert voneinander auf einem Wirtssystem (host) zu betreiben. Auf diese Weise kann der Wirt jeder innerhalb eines solchen Containers gekapselten Anwendung (application, app) eine vollständige Laufzeitumgebung zur Verfügung stellen, die beispielsweise dynamische Bibliotheken der vom jeweiligen Entwickler genutzten Programmiersprache wie Java, C oder Python umfassen mag. Im Gegensatz zur Nutzung eines Hypervisors erlegt diese „leichtgewichtige“ Form der Virtualisierung den Gästen zwar einige Einschränkungen auf, birgt jedoch den Vorteil, dass alle Container den Kern des nativen Betriebssystems - typischerweise Linux, BSD, Solaris oder ein anderes Unix-ähnliches System - gemeinsam nutzen. Die Nutzung von Containern schont somit die knappen Betriebsmittel eingebetteter Systeme.
  • Logische Berührungspunkte in einem solchen System werden gemeinhin als Softwareschnittstellen oder softwareseitige Datenschnittstellen bezeichnet und ermöglichen den Austausch von Befehlen sowie Daten zwischen verschiedenen Prozessen und Softwarekomponenten. Neben nur zur Kommunikation benutzten, datenorientierte Schnittstellen sind funktionale Schnittstellen bekannt, welche die primär beteiligten Softwarekomponenten synchronisieren oder unterstützen. Manche Schnittstellen ermöglichen gar eine Interprozesskommunikation (interprocess communication, IPC) in verteilten Systemen. Dem Fachmann bekannte IPC-Schnittstellen dieser Gattung umfassen beispielsweise RPC, DCOM, RMI oder Nachrichtenbroker wie CORBA oder den in der Telemetrie genutzten MQTT.
  • Offenbarung der Erfindung
  • Die Erfindung stellt ein Verfahren zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen, eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium gemäß den unabhängigen Ansprüchen bereit.
  • Ein Vorzug dieser Lösung liegt im verbesserten Schnittstellenhandling in sich dynamisch verhaltenden Systemen, sodass eine Ressourcensteuerung und die Gewährleistung eines erwarteten Systemverhalten (z. B. hinsichtlich funktionaler Regelstrecken und des damit verbundenen Regelverhaltens) auch im Hinblick auf funktionale Sicherheit erfolgt.
  • Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen des im unabhängigen Anspruch angegebenen Grundgedankens möglich. So kann vorgesehen sein, dass die zeitliche Zuteilung des Zugriffs von Softwarekomponenten auf Softwareschnittstellen anhand übergeordneter Systemziele optimiert wird. Eine entsprechende Ausführungsform erlaubt beispielsweise die Optimierung und Orchestrierung von Schnittstellenanfragen anhand einer Berechnung von Bandbreitenbedarf (Zugriffen pro Zeiteinheit), Zugriffsdauer, Prioritäten, Echtzeitzielen und Aktualisierungsraten. Dies umfasst auch die Verwaltung von Schnittstellen hinsichtlich deren Arbitrierung und Verfügbarkeit, also die Vermittlung (brokering) zwischen Schnittstellenangebot und Nachfrage. Der geschätzte Bandbreitenbedarf entspricht der Summe aller in den Manifesten der einzelnen Softwarekomponenten definierten Schnittstellenanforderungen und ist auch bezogen auf die Systemmorphologie, bei einer Ventilsteuerung z. B. die Anzahl vorhandener Magnetventile. Es handelt sich bei diesem Bedarf lediglich um eine vorläufige Schätzung insofern, als sie Veränderungen, Nutzerinteraktion und andere Ereignisse zur Laufzeit naturgemäß nicht berücksichtigt. Bei über die Grundfunktionen hinausgehendem Schnittstellenbedarf weiterer optionaler Funktionen wird geprüft, ob dieser unter den geforderten Echtzeitbedingungen erfüllt werden kann. Diese Prüfung erfolgt beispielsweise anhand eines Gütemaßes, das ausgehend vom ursprünglichen Laufzeitverhalten einen gewissen Zeitrasterverlust zulässt.
  • Figurenliste
  • Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
    • 1 das Flussdiagramm eines Verfahrens gemäß einer ersten Ausführungsform.
    • 2 das dynamische Verhalten zweier exemplarischer Softwarekomponenten.
    • 3 schematisch ein Steuergerät gemäß einer zweiten Ausführungsform.
  • Ausführungsformen der Erfindung
  • Die Begriffe „Services“ und „Schnittstellen“ werden im Folgenden teilweise synonym verwendet, da über gewisse Schnittstellen unter Austausch von Daten entsprechende Services abgewickelt bzw. bereitgestellt werden.
  • Im Rahmen einer erfindungsgemäßen Systemarchitektur für Steuerungsprogramme dient dieses Verfahren der Kommunikation zwischen verschiedenen Softwarekomponenten einschlägiger Systeme. Der hierzu genutzte Nachrichtenbroker verwendet hierzu einschlägige Anwendungsprogrammierschnittstellen (application programming interfaces, APIs) und ist ständig aktiv, soweit das unterliegende Betriebssystem es erlaubt. Der Nachrichtenbroker kann mithilfe unterschiedlicher Technologien implementiert werden, darunter MQTT oder DDS.
  • Der Nachrichtenbroker wird zu diesem Zweck so konfiguriert, dass gegenseitiger Zugriffsschutz gewährleistet ist. Jedem Steuerungsprogramm ist hierzu beispielsweise ein eigener Namensraum zugewiesen. Der Nachrichtenbroker besitzt einen generischen Teil sowie an das jeweilige Zielsystem angepasste Konfigurationen hinsichtlich Sichtbarkeit etc. Beispielsweise können hierzu beim Installationsprozess Teile des Manifests in einer Registry abgelegt werden, auf deren Basis in einem gesonderten Teil des Installationsvorgangs eine Konfiguration des Nachrichtenbrokers online auf einer ECU mit und/oder ohne Internet generiert wird. Diese Konfiguration würde im Rahmen einer weiteren Installation oder Veränderung eines Steuerungsprogrammes ständig erneuert, insbesondere bei dessen Deinstallation mit und/oder ohne Internetverbindung.
  • Die Kommunikation zwischen den besagten APIs erfolgt ausschließlich über den Nachrichtenbroker. Dabei lassen sich anhand der Modellierung von Daten und Kontrollfluss drei Arten der Kommunikation unterscheiden. Diese von einer Abstraktionsschicht der Systemarchitektur vorgesehenen Kommunikationstypen und die konkrete Umsetzung der zunächst abstrakt definierten Kommunikation werden durch den Nachrichtenbroker übermittelt. Differenziert werden hierbei Art, Inhalt, Anzahl und Kombinationen von Schnittstellen bzw. deren Services sowie Funktions- und Datensicherheit des Kommunikationskanales. Zudem lässt sich die Kommunikationsart anhand der unterstützten Zugriffsmethoden, Ereignisse (events) und anderweitiger Parameter, z. B. einer Applikationsrate, charakterisieren.
  • 1 illustriert ein Verfahren (10) der Zugriffsverwaltung durch einen erfindungsgemäßen Nachrichtenbroker. Den Ausgangspunkt für die folgenden Betrachtungen bildet das Erfordernis einer Softwarekomponente, auf eine bestimmte Softwareschnittstelle zuzugreifen.
  • In einer ersten Phase (Prozess 11) wird anhand der im jeweiligen Manifest definierten Anforderungen an die Softwareschnittstellen die zeitliche Zuteilung der Softwarekomponenten an die Softwareschnittstellen statisch berechnet. Dies kann bereits während der Entwicklung geschehen. Im Manifest der betreffenden Komponente sind hierzu deren Anforderungen an Typ (Klasse), Anzahl (Wertebereich), Reaktionszeiten, Ausführungsmodell (synchron oder asynchron), Diagnose und Protokollierung (logging) sowie Sicherheitsziele spezifiziert. Etwaige Beschränkungen der Ressourcen oder Leistung werden vorher dem Entwickler mitgeteilt; denkbar ist auch eine entsprechende Budgetierung. Die vorgegebene Latenz kann hierbei veränderlich und zum Beispiel von der Geschwindigkeit des Arbeitsprozesses oder der Maschinenfahrgeschwindigkeit usw. abhängig sein.
  • Eine entsprechende Berechnung (11) kann auch während der Installation auf dem Zielsystem erfolgt. Die Daten der Manifeste werden hierzu aggregiert, korreliert, plausibilisiert, analysiert oder anderweitig weiterverarbeitet und angelegt bzw. abgelegt. In diesem Schritt wird festgestellt, falls beispielsweise drei Services - ggf. zum gleichen Zeitpunkt mit den gleichen Güteanforderungen für den ungünstigsten Fall (worst case) - auf dieselbe Schnittstelle zugreifen möchten. Vorzugsweise erfolgt eine rechteorientierte Zugriffssteuerung, die Lese- und Schreibrechte unterscheidet. Das in bzw. durch eine Cloud erstellte, und auch im Steuergerät verfügbare, Gesamtmanifest setzt den Nachrichtenbroker von derartigen Rechten in Kenntnis und erlaubt ein Abonnement von Schnittstellen, das nach deren Benutzung abgerechnet wird (pay per use).
  • Anschließend wird optional anhand von Teilnehmern nach dem Stand der Technik bekannter Busse oder Kommunikationsprotokolle, z.B. von ISOBUS-Teilnehmern wie einer Feldspritze oder sonstiger bekannter Systeme, die Zuordnung von Anforderungen und Ressourcen vorgenommen. Hieraus ergeben sich Bedarfe nach Ressourcenverwaltung, Ressourcenaus- bzw. -belastung, Bandbreite zum Beispiel des ISOBUS-Systems etc.
  • Diese statische Analyse (11) kann in der Regel keine Änderungen zur Laufzeit und deren Rückwirkung auf Funktionen berücksichtigen - zu denken ist etwa an Regelkreise, Rückwirkung des Systems bzw. der Regelstrecke oder Lernfunktionen -, da zum Zeitpunkt der statischen Betrachtung nicht das Laufzeitverhalten der Steuerungsprogramme und ihrer Services abgeschätzt werden kann. 2 verdeutlicht diese Problematik anhand einer ersten zyklischen Botschaft (21) mit hohen Anforderungen an die Einhaltung des Taktes und einer zweiten zyklischen Botschaft (22) mit geringeren Anforderungen an die Antwortzeit. Angesichts des möglichen Konfliktes zwischen den Botschaften (21, 22) wird die zweite Botschaft (22) vorgezogen. Betrachtet man die Abstände zwischen den einzelnen Botschaften (21 bzw. 22), so wird deutlich, dass deren Frequenzen innerhalb der zulässigen Toleranz schwanken.
  • In einer zweiten Phase (Prozess 12) wird daher angesichts des beobachteten und/oder simulierten und/oder prognostizierten Laufzeitverhaltens der Softwarekomponenten deren Zuteilung fortlaufend, beispielsweise nach einem ggf. simulierten oder prognostizierten sogenannten Beobachter-Muster, optimiert. Diese Optimierung (12) der Ressourcenverteilung setzt voraus, dass die durch die Manifeste definierten Anforderungen hinreichende Freiräume bei der Ressourcenbelegung und -auslastung gewähren, z. B. durch die Angabe von Intervallen anstelle fester Werte für Jitter, Rechenraster und Reaktionszeiten. Innerhalb der auf diesem Wege gesetzten Grenzen kann das System die Zuteilung selbstständig zur Laufzeit bestimmen und anpassen.
  • Für eine derartige Optimierung (12) werden zunächst die Freiheitsgrade des Optimierers bestimmt, welche die Grenzen des Lösungsraumes vorgeben. Anhand übergeordneter Systemziele lässt sich nunmehr eine Kostenfunktion definieren. In Betracht kommen beispielsweise Reaktionszeiten, Betriebssicherheit, Verschleiß, Energieverbrauch oder Betriebskosten (die maximale Prozessgeschwindigkeit ergibt sich aus der Abtastrate des Systems und beeinflusst die Arbeitsdauer).
  • Der Optimierungsalgorithmus sucht den solchermaßen abgegrenzten Lösungsraum nach - im Sinne der Kostenfunktion - optimalen Lösungen ab. Abhängig vom Lösungsraum können bestimmte Algorithmen nicht terminieren und somit keine Lösung finden. (In diesem Fall werden Nutzer und Entwickler über die zur Laufzeit erkannte Inkompatibilität der Konfiguration informiert.) Bei Terminierung des Algorithmus liefert dieser ein lokales oder globales Optimum, das eine bestmögliche zeitliche Verteilung der Ressourcenzugriffe angibt.
  • Im Rahmen einer modularen und serviceorientierten Systemarchitektur erfüllt der Nachrichtenbroker weitere Funktionen. Hierzu zählen An- und Abmeldung der Services, welche durch eine Middleware oder von den in Containern betriebenen Steuerungsprogrammen bereitgestellt werden. Dadurch werden Austauschbarkeit, Veränderung und Ersetzung von Services zur Laufzeit ohne Neustart ermöglicht.
  • Auf Seiten des Erzeugers (Senders) und Verbrauchers (Empfängers) der Daten sind hierbei unterschiedliche Gestaltungen denkbar, ohne den Rahmen der Erfindung zu verlassen.
  • Beispielsweise meldet eine Komponente, welche einen Service anbieten möchte, dem Nachrichtenbroker im Wege einer Bekanntgabe (advertising), dass der - durch gewisse Metainformationen beschriebene - neue Service von ihr bereitgestellt werden kann. Der Nachrichtenbroker kann diesen Service dann anderen Komponenten bekannt machen. Im Rahmen eines Anmeldemechanismus werden die dem Manifest entnommenen Metainformationen der Services vom Nachrichtenbroker ausgewertet und die konkrete Kommunikationsinfrastruktur hinsichtlich Nutzdaten (payload), Kanal, Routing-ID etc. für den anbietenden Service initialisiert. Diese Initialisierung schließt eine Prüfung daraufhin ein, ob die betreffende Information gemäß Manifest angeboten werden darf. Der gemäß dem Beobachter-Muster als Subjekt (publisher) fungierende Sender übermittelt die (Nutz-)Daten und stellt damit die Informationen der beworbenen Services auch tatsächlich bereit. Diese werden in einer entsprechenden Registry hinterlegt.
  • Zum Zwecke der Dienstauffindung (discovery) registriert sich jede Komponente, die als Beobachter (subscriber) einen Service gleichsam „abonnieren“ möchte, beim Nachrichtenbroker. Die Komponente erhält Rückmeldung darüber, ob entsprechende Services verfügbar sind, ohne die abonnierte Information selbst zu erhalten. Bestimmte Services sind möglicherweise zwar verfügbar, dürfen von der nachfragenden Komponente jedoch nicht genutzt werden.
  • Bieten mehrere Services oder mehrere Instanzen desselben Service den gleichen Inhalt (topic) an, so kann das beobachtende Steuerprogramm nach der Discovery die für es relevanten Instanzen auswählen. Diese Auswahl kann nach einer im Steuerprogramm selbst implementierten Vorschrift oder einer in dessen Manifest hinterlegten Regel erfolgen, gemäß derer der Nachrichtenbroker die relevante Instanz selbsttätig bestimmt.
  • Ist ein Empfänger nicht auf die Namen einer Information oder eines Service festgelegt, so können durch die Bezeichnung der Inhalte mittels eines geeigneten Platzhalters (wildcard) alle beim Nachrichtenbroker registrierten Services abgerufen werden, auf welche die Abfrage zutrifft. Anhand dieser Trefferliste kann der Empfänger entscheiden, welche Services er abonnieren möchte. Die Ergebnisse einer in diesem Sinne unspezifischen Discovery können für verschiedene Empfänger angesichts verschiedener Zugriffsrechte unterschiedlich ausfallen.
  • Die solchermaßen aufgefundenen Services können nun in Anspruch genommen werden. Hierzu erhält der Empfänger bei jeder Änderung des beobachteten Objektes eine diesbezügliche Meldung (push notification) oder dessen aktuellen Inhalt (push-update notification). Die Meldung, dass neue Daten vorliegen, kann hierbei an Bedingungen geknüpft sein. Diese können äußere Umstände - z. B. zeitliche Aspekte wie die Aktualität des jeweiligen Datums oder der Zustand von Steuerprogramm, Aktor, Sensor oder System - oder die geänderten Daten selbst betreffen, die etwa durch Wertintervalle, statistische oder anderweitige mathematische Funktionen eingeschränkt werden können.
  • In Betracht kommt ebenfalls eine Umsetzung des Beobachter-Musters, bei welcher der Verbraucher gemäß vorgegebenen Regeln selbstständig die Informationen der Services beim Nachrichtenbroker abruft. Hinsichtlich des oben beschriebenen Routingprozesses und der Ausgestaltung des Kommunikationskanals - insbesondere bezüglich der Erstellung und Bekanntgabe der Services - lassen sich dynamisches und statisches Routing unterscheiden, wobei auch Mischformen denkbar sind. Ein statisches Routing kann zum Zeitpunkt der Entwicklung (Routing-ID im Quellcode), Übersetzung (Variable im Quellcode, die bei der Übersetzung definiert wird), Verteilung (offline erstellte Konfigurationsdatei) oder des Urladens (online erstellte Konfigurationsdatei) festgelegt werden. Eine Discovery ist in diesem Fall entbehrlich.
  • Beim dynamischen Routing wird der spezifische Service dem Verbraucher erst zur Laufzeit bekannt gemacht. Im Rahmen der vorangehenden Implementierung ist lediglich eine generische Beschreibung des Service bekannt. Erst nach der Discovery liegt dem Verbraucher eine Routing-ID vor, unter welcher dessen Daten verfügbar sind.
  • Wie 3 verdeutlicht, müssen Erzeuger (31) und Verbraucher (32) bestimmter Inhalte nicht zeitgleich aktiv sein, ein Erzeuger (31) benötigt also nicht zwingend einen aktiven Verbraucher (32) und umgekehrt, da der Broker (30) die vermittelten Informationen zwischenspeichern kann. Gibt beispielsweise ein Erzeuger (31) dem Broker (30) die Bereitstellung des Inhaltes „Drehzahl“ bekannt (41) und quittiert der Broker (30) dies als zulässig (42), so kann der Erzeuger (31) den entsprechenden Service anmelden (43), woraufhin der Broker (30) dem erzeugten Inhalt beispielsweise das MQTT-Topic „Auto\Motor\Drehzahl_l“ zuweist. Eine Discovery (45) zum Thema „Drehzahl“ durch den Verbraucher (32) liefert die Auskunft (46), dass die Drehzahl unter den Topics „Auto\Motor\Drehzahl_I“ sowie „Auto\Motor\Drehzahl_geglaettet“ verfügbar ist. Veröffentlicht (47) der Erzeuger (31) nun beispielsweise unter dem Topic „Auto\Motor\Drehzahl -l“ den Wert 1199 min-1 und abonniert (48) der Verbraucher (32) das Topic „„Auto\Motor\Drehzahl_geglaettet‟, so meldet der Broker (30) letzterem das einschlägige Ereignis „1200 min-1“ (49).
  • Ein solcher asynchroner Nachrichtenaustausch kann unterschiedlichen Regeln folgen, die im Steuerungsprogramm selbst implementiert oder in dessen Manifest definiert sein können. Beispielsweise können Löschung von Nachrichten und Freigabe der durch diese gebundenen Ressourcen nach Überschreiten einer gewissen Anzahl, bei Auslastung des hierzu genutzten Nachrichtenpuffers, Zeitüberschreitung (timeout) oder ausdrücklichem Verwerfen durch den Nutzer, etwa bei einer erneuten Anmeldung, erfolgen. Stellt etwa der Erzeuger (31) nacheinander 40 Datensätze mit jeweils eigenem Zeitstempel im Rahmen eines Service bereit, so kann der Verbraucher (32) diese Daten auch später, nachdem der Erzeuger (31) nicht mehr verfügbar ist, abrufen und wahlweise entsprechend deren Zeitstempel auswerten.
  • Auch die Abmeldung von Softwarekomponenten wird vom Nachrichtenbroker (30) verwaltet und durchgeführt. Je nach Dringlichkeit lassen sich verschiedene Wege der Abmeldung unterscheiden. Ist etwa ein Steuerprogramm wegen Absturz oder aus unbekannten Gründen unvermittelt ausgefallen und der von ihm erbrachte Service nicht mehr verfügbar, ohne dass der Nachrichtenbroker (30) diesen Ausfall vorbereiten konnte, so bedingt diese Lage eine sofortige Abmeldung. Bemerkt der Nachrichtenbroker (30) indes, dass ein Service nicht mehr funktionssicher bereitgestellt wird, so wird dieser Service bzw. das ihn erbringende Steuerprogramm zwangsweise abgemeldet. Ist schließlich ein verwendeter Service nicht mehr aktuell, und ein Steuerprogramm initiiert die Abmeldung des Service, so kann diese Abmeldung planmäßig erfolgen.
  • Abhängig vom auslösenden Ereignis läuft der Abmeldeprozess folgendermaßen ab: Der Nachrichtenbroker (30) steuert die Kommunikation und führt das Routing durch. Erkennt der Nachrichtenbroker (30), dass ein Service nicht mehr verfügbar ist, keine zufriedenstellenden Informationen bereitstellen kann oder in absehbarer Zeit nicht mehr verfügbar sein wird und wann dieser ggfs. wieder verfügbar sein könnte, so werden etwaige betroffene Verbraucher (32) benachrichtigt und entsprechende Maßnahmen eingeleitet. Die sich aus den Maßnahmen ergebenden Eingriffe können verschiedene Dimensionen betreffen. Beispielsweise müssen weitere, abhängige Services planmäßig abgemeldet werden, falls keine Ersatzservices verfügbar sind. Falls ein Ersatzservice verfügbar ist oder verfügbar gemacht werden kann, muss das Routing vom deaktivierten zum ersetzenden Service umgeschaltet werden. Hierbei sind jedoch etwaige Mindestanforderungen der Verbraucher (32) an die Dienstgüte (quality of service, QoS) zu berücksichtigen. Diese Berücksichtigung und die Einleitung weiterer Maßnahmen bei Bedarf obliegen ebenfalls dem Nachrichtenbroker (30).
  • Wird ein Service heruntergefahren oder ist aus anderen Gründen nicht mehr verfügbar, so löscht der Nachrichtenbroker (30) ihn aus der Liste verfügbarer Services in der Registry. Die damit verbundenen Ressourcen und ggf. dynamisch erzeugte Metadaten zur einmaligen Benutzung (one-time use) wie Zertifikate, IDs oder Passwörter verlieren dabei ihre Gültigkeit. Um für andere Softwarekomponenten wieder gleichsam „sichtbar“ zu werden, muss sich der gelöschte Service erneut registrieren und die oben genannten Metadaten beziehen.
  • Alternativ entscheidet jedes Steuerungsprogramm eigenverantwortlich, welche Services und welche Service-Instanzen es nutzt. Das Routing ergibt sich bei einer entsprechenden Ausführungsform zwangsläufig aus dieser Entscheidung. Der Erzeuger (31), welcher einen Service abmelden möchte, benachrichtigt den Nachrichtenbroker (30) mit einem Signal, welches die Abmeldung des Service in einer bestimmten Zeit anzeigt. Dieser wiederum benachrichtigt alle Steuerungsprogramme, die als Verbraucher (32) auftreten, über die anstehende Abmeldung des Service und versetzt sie in die Lage, sich bei Bedarf für einen geeigneten Ersatzservice aus der Registry anzumelden und somit ein neues Routing aufzubauen. Sollte kein Ersatzservice zur Verfügung stehen und erkennt der Nachrichtenbroker (30) anhand der aggregierten Information der Manifeste, dass ein Steuerungsprogramm daher nicht mehr lauffähig ist, so leitet er mittels der zuständigen Systemkomponenten eine geordnete Beendigung des betreffenden Steuerungsprogrammes ein.
  • Um die Informationssicherheit der Services hinsichtlich Datenintegrität, -authentizität, -sichtbarkeit und -lesbarkeit zu gewährleisten und eine Überlastung der Komponenten durch für sie irrelevante Bekanntgaben zu vermeiden, kann deren Sichtbarkeit auf Basis einer anhand der Manifeste erstellten Positivliste (whitelist) gesteuert werden. Alternativ kann beispielsweise eine Negativliste (blacklist) ausgeschlossener Services verwendet werden. Zur Verbesserung der Informationssicherheit kommt weiterhin eine Transportverschlüsselung der Datenübertragung zwischen Nachrichtenbroker (30) und Softwarekomponenten in Betracht. Die ausgetauschten Inhalte können unabhängig von der Transportschicht ihrerseits verschlüsselt sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 102015203766 A1 [0005]

Claims (11)

  1. Verfahren (10) zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen, gekennzeichnet durch folgende Merkmale: - anhand von Anforderungen der Softwarekomponenten an die Softwareschnittstellen wird eine zeitliche Zuteilung der Softwarekomponenten an die Softwareschnittstellen statisch berechnet (11) und - angesichts eines beobachteten und/oder simulierten und/oder prognostizierten Laufzeitverhaltens der Softwarekomponenten wird die Zuteilung fortlaufend optimiert (12).
  2. Verfahren (10) nach Anspruch 1, gekennzeichnet durch mindestens eines der folgenden Merkmale: - das Berechnen (11) der Zuteilung erfolgt in einer Entwicklungsphase der Softwarekomponenten oder - das Berechnen (11) der Zuteilung erfolgt während einer Installation der Softwarekomponenten.
  3. Verfahren (10) nach Anspruch 1 oder 2, gekennzeichnet durch folgendes Merkmal: - das Optimieren (12) erfolgt anhand übergeordneter Systemziele.
  4. Verfahren (10) nach Anspruch 3, dadurch gekennzeichnet, dass die Systemziele mindestens eines der Folgenden betreffen: - Reaktionszeiten, - Betriebssicherheit, - Verschleiß, - Energieverbrauch oder - Betriebskosten.
  5. Verfahren (10) nach einem der Ansprüche 1 bis 4, gekennzeichnet durch folgendes Merkmal: - die Zugriffe werden durch einen Nachrichtenbroker (30) vermittelt.
  6. Verfahren (10) nach Anspruch 5, gekennzeichnet durch eines der folgenden Merkmale: - der Nachrichtenbroker (30) nutzt MQTT oder - der Nachrichtenbroker (30) nutzt DDS.
  7. Verfahren (10) nach einem der Ansprüche 1 bis 6, gekennzeichnet durch folgendes Merkmal: - die Zugriffe erfolgen nach einem Beobachter-Muster.
  8. Verfahren (10) nach einem der Ansprüche 1 bis 7, gekennzeichnet durch folgendes Merkmal: - bei Ausfall und/oder Unplausibilitäten und/oder unzureichende QoS einer der Softwarekomponenten wird diese abgemeldet und betroffene Komponenten werden abgemeldet, sofern keine Ersatzservices verfügbar sind oder nicht vorgesehen sind.
  9. Computerprogramm, welches eingerichtet ist, das Verfahren (10) nach einem der Ansprüche 1 bis 8 auszuführen.
  10. Maschinenlesbares Speichermedium, auf dem das Computerprogramm nach Anspruch 9 gespeichert ist.
  11. Vorrichtung (30, 31, 32), die eingerichtet ist, das Verfahren (10) nach einem der Ansprüche 1 bis 8 auszuführen.
DE102019217047.1A 2019-11-06 2019-11-06 Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen Pending DE102019217047A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102019217047.1A DE102019217047A1 (de) 2019-11-06 2019-11-06 Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen
PCT/EP2020/079356 WO2021089310A1 (de) 2019-11-06 2020-10-19 Verfahren und vorrichtung zum verwalten von zugriffen mehrerer softwarekomponenten auf softwareschnittstellen
US17/773,575 US20220405070A1 (en) 2019-11-06 2020-10-19 Method and device for managing accesses of multiple software components to software interfaces

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019217047.1A DE102019217047A1 (de) 2019-11-06 2019-11-06 Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen

Publications (1)

Publication Number Publication Date
DE102019217047A1 true DE102019217047A1 (de) 2021-05-06

Family

ID=72964698

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019217047.1A Pending DE102019217047A1 (de) 2019-11-06 2019-11-06 Verfahren und Vorrichtung zum Verwalten von Zugriffen mehrerer Softwarekomponenten auf Softwareschnittstellen

Country Status (3)

Country Link
US (1) US20220405070A1 (de)
DE (1) DE102019217047A1 (de)
WO (1) WO2021089310A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021215009A1 (de) 2021-12-23 2023-06-29 Lenze Se Automatisierungssystem

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019217046A1 (de) * 2019-11-06 2021-06-17 Robert Bosch Gmbh System zum Austausch von Nachrichten durch eine Anwendungssoftware

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
DE102015203766A1 (de) 2015-03-03 2016-09-08 Robert Bosch Gmbh Teilsystem für ein Fahrzeug und entsprechendes Fahrzeug
US20180338019A1 (en) * 2017-05-18 2018-11-22 Bsquare Corp. Message broker system
US10547632B2 (en) * 2017-10-27 2020-01-28 Verizon Patent And Licensing Inc. Brokered communication protocol using information theoretic coding for security

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Richard Bellman. "The theory of dynamic programming." Bull. Amer. Math. Soc. 60 (6) 503 - 515, November 1954. *
Wikipedia: Fault tolerance. 29.10.2019<https://en.wikipedia.org/w/index.php?title=Fault_tolerance&oldid=923583261> *
Wikipedia: Message broker, 1.10.2019<https://en.wikipedia.org/w/index.php?title=Message_broker&oldid=91900268> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021215009A1 (de) 2021-12-23 2023-06-29 Lenze Se Automatisierungssystem

Also Published As

Publication number Publication date
WO2021089310A1 (de) 2021-05-14
US20220405070A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
DE112020005928T5 (de) Masteragent und verteilte Agentenarchitektur für Fahrzeuge
DE102015215480A1 (de) Verfahren und Vorrichtung zum Übertragen einer Nachricht in einem Fahrzeug
WO2021089310A1 (de) Verfahren und vorrichtung zum verwalten von zugriffen mehrerer softwarekomponenten auf softwareschnittstellen
EP3929740A1 (de) Verfahren zur orchestrierung einer container-basierten anwendung auf einem endgerät
DE602005002919T2 (de) Adaptive Softwarekomponententechniken
DE102018116554A1 (de) Computersystem-Infrastruktur sowie Verfahren zum Hosten einer Anwendungssoftware
EP3662364B1 (de) System zum übertragen zumindest eines aktualisierungspakets für zumindest ein steuergerät eines kraftfahrzeugs
WO2022200026A1 (de) Verfahren und vorrichtung zur konfiguration einer applikation
WO2023138721A1 (de) Verfahren zum erzeugen eines fähigkeitenprofils einer recheneinheit
DE102017204212A1 (de) Verfahren und Vorrichtung zum Verwalten von Applikationen für Fahrzeuge
DE102012006046A1 (de) Adaptives Remote-Service-Protokoll
DE102022200755A1 (de) Verfahren zum Hinzufügen und/oder Verwalten von Funktionen auf einer Recheneinheit
EP3746895B1 (de) Verfahren zum erzeugen von prozessprotokollen in einer verteilten it-infrastruktur
DE102020215763A1 (de) Verfahren zur Optimierung der Übertragungsdatenrate in einem Sensornetzwerk im Teilnetzbetrieb in einem Ethernetnetzwerk
EP1844396A1 (de) Verfahren zum unterbrechungsfreien software-update
DE102022115201A1 (de) Verfahren zum Betreiben eines Kraftfahrzeugs, um Software-Updates in mehreren Laufzeitumgebungen zu koordinieren, sowie entsprechend betreibbares Kraftfahrzeug
WO2022238482A1 (de) Verwaltung von laufzeitcontainern für ein industrielles automatisierungssystem
WO2023001437A1 (de) Verfahren zur automatischen anpassung der internen konfiguration einer externen netzwerkschnittstelle, computerprogrammprodukt und vorrichtung
DE102022207594A1 (de) Verfahren zum Bilden einer Kommunikationsschnittstelle zwischen einem Softwaremodul und einem Adressaten
DE102019217052A1 (de) System zum Steuern einer Maschine
EP4297373A1 (de) Betriebsverfahren und netzwerk
WO2022111923A1 (de) Verfahren zur kommunikation zwischen einer drittkomponente auf einem nutzergerät und einer dienstkomponente in der cloud sowie netzwerkanordnung zur umsetzung des verfahrens
WO2021089279A1 (de) System zum steuern einer maschine
DE102022200913A1 (de) System und verfahren zur verwaltung zusammengesetzter systeme unter verwendung von betriebsdaten
DE102021209627A1 (de) System und Verfahren zum Ausführen von funktional gleichen Applikationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication