DE19518266A1 - Kommunikationssystem mit Mitteln zum Austausch von Software - Google Patents

Kommunikationssystem mit Mitteln zum Austausch von Software

Info

Publication number
DE19518266A1
DE19518266A1 DE19518266A DE19518266A DE19518266A1 DE 19518266 A1 DE19518266 A1 DE 19518266A1 DE 19518266 A DE19518266 A DE 19518266A DE 19518266 A DE19518266 A DE 19518266A DE 19518266 A1 DE19518266 A1 DE 19518266A1
Authority
DE
Germany
Prior art keywords
component
software
messages
state
software component
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.)
Withdrawn
Application number
DE19518266A
Other languages
English (en)
Inventor
Martin Dr Rer Nat Elixmann
Ralf Guenther
Steffen Dr Ing Hauptmann
Josef Dr Rer Nat Wasel
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.)
Philips Intellectual Property and Standards GmbH
Original Assignee
Philips Patentverwaltung 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 Philips Patentverwaltung GmbH filed Critical Philips Patentverwaltung GmbH
Priority to DE19518266A priority Critical patent/DE19518266A1/de
Priority to DE1996511113 priority patent/DE59611113D1/de
Priority to EP96201281A priority patent/EP0743595B1/de
Priority to US08/649,745 priority patent/US5987511A/en
Priority to JP8123090A priority patent/JPH0934700A/ja
Publication of DE19518266A1 publication Critical patent/DE19518266A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Description

Die Erfindung bezieht sich auf ein Kommunikationssystem mit einer Steuer­ schaltung, welche ein Betriebssystem und Anwendersoftware und Mittel zum Austausch von Software enthält.
Kommunikationssysteme enthalten Computersysteme oder Steuerschaltungen, deren Software langlebig und praktisch dauernd verfügbar sein soll. Bei Fehlern in der Software oder auch aufgrund neuer Anforderungen müssen bestimmte Software­ komponenten erneuert werden. Dabei sollte die Ausfallzeit des Kommunikations­ systems minimiert werden.
Ein Kommunikationssystem, welches paktisch keine Ausfallzeit bei dem Austausch einer Software einer Komponente eines Vermittlungssystem aufweist, ist aus der US-A-5 155 837 bekannt. Vor dem Austausch werden zuerst die Inhalte und Zustände aller Register, Prozesse und Speichereinheiten in einem speziellen Speicher während des Betriebes der alten Software gesichert (Spalte 7, Zeilen 30 bis 36). Die alte Version der Software ist dabei in einer ersten Partition geladen. Die neue Software wird anschließend in eine zweite Partition geladen. Nachdem die neue Software geladen und getestet worden ist, werden aus dem Speicher die Inhalte und Zustände aller Register, Prozesse und Speichereinheiten auf die neue Software übertragen. Diese wird dann in Betrieb genommen. Die neue Software beginnt dabei jedoch nicht an dem Prozeßpunkt zu arbeiten, an dem die alte Software angehalten worden ist, sondern an einem definierten Programmpunkt. Es werden auch nicht einzelne Softwaremodule oder -komponenten, sondern eine in sich geschlossene Software ausgetauscht.
Der Erfindung liegt daher die Aufgabe zugrunde, Softwarekomponenten auszutauschen, bei welcher außer einer kurzen Verzögerung keine Einschränkung des Betriebes erfolgt.
Die Aufgabe wird durch ein Kommunikationssystem der eingangs genannten Art dadurch gelöst, daß das Betriebssystem zum Austausch von Nachrichten vorgesehen ist und daß eine neue geladene Softwarekomponente (Nachfolgerkomponente) zum Empfang der Zustände und der Nachrichten von einem Dienst-Port einer angehaltenen, zu ersetzenden Softwarekomponente (Vorgängerkomponente) und zum Neustart mit den übertragenen Zuständen und Nachrichten vorgesehen ist.
Die Erfindung ermöglicht den Neustart der neuen Softwarekomponente an dem Programmpunkt, an dem die alte Softwarekomponente angehalten worden ist. Außerdem werden alle Zustände der alten Softwarekomponente zur neuen Software­ komponente übertragen. Dies kann aber nur für solche Systeme gelten, die ein Betriebssystem aufweisen, welches den Austausch von Nachrichten zwischen Softwarekomponenten ermöglicht. Hierbei werden Nachrichten über Softwareschnittstellen, die im folgenden als Ports bezeichnet werden, zwischen verschiedenen Prozessen ausgetauscht. Erfindungsgemäß werden also in der alten Softwarekomponente alle Zustände und alle an einem Dienst-Port anliegenden Nachrichten eingesammelt und zur neuen Softwarekomponente übertragen. Über einen Dienst-Port empfängt die Softwarekomponente alle Nachrichten von anderen Prozessen. Die neue Softwarekomponente übernimmt die neuen Zustände, führt gegebenenfalls eine Zustandstransformation durch und startet die neue Software in dem Programmpunkt der neuen Softwarekomponente, der dem der alten Software­ komponente entspricht.
Der Austausch einer Softwarekomponente erfolgt dabei so, daß keine andere Softwarekomponente davon berührt wird. Die von einer anderen Softwarekomponente eintreffenden Nachrichten werden nämlich auf die neue Softwarekomponente übertragen und nach dem Austausch weiterverarbeitet. Der Austausch erfolgt dabei so, daß nur eine kurze Verzögerung bei der Bearbeitung entsteht. Praktische Untersuchungen haben ergeben, daß die Verzögerungszeit im Bereich weniger Millisekunden liegt.
Ein Kommunikationssystem kann ein Computersystem sein, eine Vermittlungsstelle, ein Computernetzwerk oder auch Serversysteme, wie z. B. ein Vide-On-Demand- Server. Ein Computersystem enthält wenigstens einen Computer, in dem eine Softwarekomponente ausgetauscht werden soll.
Eine Softwarekomponente oder ein Prozeß enthält genau einen Thread. Ein Thread ist ein in sich selbst sequentiell ablaufendes Programmstück. Der Thread weist einen ersten Teil zur Übernahme und geeigneten Umsetzung der Zustände und Nachrichten des Dienst-Ports einer alten Softwarekomponente und einen zweiten Teil zum Einsammeln der Zustände des Prozesses und der Nachrichten des Dienst- Ports auf.
Der Austausch einer Softwarekomponente wird von einem Austauschmanager gesteuert, welcher zum Laden und Starten einer Softwarekomponente vorgesehen ist.
Die neue Softwarekomponente kann dabei von einer Wartungsvorrichtung an den Austauschmanager geliefert worden sein, an der auch neue Softwarekomponenten entwickelt werden können. Als Übertragungsmedium kann beispielsweise das Telefonnetz dienen.
Ausführungsbeispiele der Erfindung werden nachstehend anhand der Figuren näher erläutert. Es zeigen:
Fig. 1 ein Computersystem mit einer Wartungsvorrichtung und einem Computer, der austauschbare Softwarekomponenten enthält,
Fig. 2 den Nachrichtenfluß zwischen dem Austauschmanager, einer neuen und alten Softwarekomponente,
Fig. 3 ein Vermittlungssystem mit einer Wartungsvorrichtung und einer Steuerschaltung, die austauschbare Softwarekomponenten enthält,
Fig. 4 ein Zustandsdiagramm einer nicht austauschbaren Software­ komponente und
Fig. 5 ein Zustandsdiagramm einer austauschbaren Softwarekomponente.
In Fig. 1 ist ein Computersystem mit einem Computer 1 und einer Wartungs­ vorrichtung 2 dargestellt. Der Computer enthält Hardwarekomponenten 3, ein Betriebssystem 4, Anwendersoftware 5 und einen Austauschmanager 11. Das Betriebssystem 4 muß eine Kommunikation zwischen Softwarekomponenten der Anwendersoftware 5 über Nachrichten ermöglichen (z. B. nachrichtenorientiertes Betriebssystem (message based operating system)). Die Nachrichten oder Daten werden dabei über Softwareschnittstellen ausgetauscht. Im folgenden wird eine Softwareschnittstellen als Port bezeichnet.
Der Austauschmanager 11 ist eine Softwareprogramm, mit dessen Hilfe Kompo­ nenten der Anwendersoftware 5 ausgetauscht werden können. In der Fig. 1 sind die einzelnen Softwarekomponenten durch Kreise dargestellt. Die Verbindungen zwischen den Kreisen sollen Nachrichtenflüsse zwischen den Softwarekomponenten andeuten.
Die Wartungsvorrichtungsvorrichtung 2 könnte ein entfernt liegender Computer sein, von dem aus eine neue Softwarekomponente geliefert wird. Hierbei ist es denkbar, daß die neue Softwarekomponente an diesem Computer entwickelt und getestet wird. Zur Übertragung der neuen Softwarekomponente können bekannte Übertragungs­ medien und Protokolle verwendet werden. Beispielsweise ist eine Übertragung über ein Telefonnetz möglich. Die neue Softwarekomponente könnte aber auch direkt in den Computer 1 geladen werden (z. B. mit Hilfe einer lokalen Wartungsvorrichtung (Laptop).
Der Austauschmanager 11 lädt die neue Softwarekomponente in den Computer 1 und startet sie dort. Die neue Komponente meldet sich bei dem Austausch­ manager 11 an und bekommt mitgeteilt, ob sie eine existierende alte Komponente ersetzen soll. Falls das der Fall ist, sendet die neue Komponente, die eine Nachfolgerkomponente darstellt, einen Austauschbefehl (request) an die alte Komponente, die eine Vorgängerkomponente darstellt. Die Vorgängerkomponente sammelt ihre Zustandsinformationen und überträgt diesen Zustand zur Nachfolgerkomponente. Außerdem meldet die Vorgängerkomponente dem Austauschmanager 11, daß sie gestoppt hat. Danach setzt die Nachfolgerkomponente die Arbeit exakt an der Stelle fort, an der die Vorgängerkomponente gestoppt wurde. Damit dieser Austausch, ohne daß der Computer außer Betrieb genommen wird, durchgeführt werden kann, sind in den Komponenten der Anwendersoftware noch bestimmte Veränderungen gegenüber nicht austauschbaren Komponenten vorgenommen worden.
Wie oben erwähnt müssen die Softwarekomponenten, welche austauschbar sein sollen, gegenüber konventionellen Softwarekomponenten Erweiterungen besitzen. Eine Softwarekomponente weist genau einen Thread auf, der einen Dienst-Port für den Empfang von Nachrichten (messages) von einem Klienten und einen Teil zur Antwort auf die Nachrichten an einen Klienten aufweist. Ein Thread ist ein in sich selbst sequentiell ablaufendes Programmstück. Ein Klient ist eine andere Softwarekomponente (Prozeß). Damit eine Softwarekomponente austauschbar wird, muß sie einen Austausch-Punkt bzw. Restart-Punkt im Thread aufweisen. In der Regel sind der Austausch-Punkt und der Restart-Punkt identisch.
In Fig. 2 ist schematisch der Nachrichtenfluß zwischen dem Austauschmanager 11 (hier als AM bezeichnet), der Vorgängerkomponente VK und der Nachfolger­ komponente NK dargestellt. Nachdem die neue Komponente NK vom Austauschmanager gestartet worden ist (Pfeil ST), werden von dieser bestimmte Informationen geholt (Punkt P1). Die Vorgängerkomponente VK ermöglicht am Punkt P2 die Erfüllung ihrer Aufgaben, d. h. z. B. die Bearbeitung externer, anliegender Nachrichten. Die Nachfolgerkomponente NK meldet sich dann beim Austauschmanager 11 (AM) an (Pfeil AN), der anschließend der Nachfolger­ komponente NK den Befehl zum Austausch der Komponenten gibt (Pfeil EX1). Dieser Befehl wird von der Nachfolgerkomponente NK weiter an die Vorgänger­ komponente VK gegeben (Pfeil EX2). Daraufhin sammelt die Vorgängerkomponente VK ihren Zustand (Punkt P3) und liefert diesen an die Nachfolgerkomponente NK (Pfeil ZU). Die Nachfolgerkomponente NK rekonstruiert aus den empfangenen Zuständen die Objekte und führt gegebenenfalls eine Zustandstransformation durch. Alle Nachrichten die während des Austauschvorgangs für einen Dienst-Port der Vorgängerkomponente VK bestimmt waren, werden dadurch zum Dienst-Port der Nachfolgerkomponente NK gegeben. Anschließend meldet die Vorgängerkomponente VK dem Austauschmanager 11 (AM), daß sie gestoppt hat (Pfeil VG) und löscht sich (Punkt P4). Die neue Komponente NK übernimmt danach die Bearbeitung der externe Nachrichten (Punkt P5).
Der Computer 1 könnte beispielsweise auch ein Server in einem Computernetzwerk sein. Eine weitere Anwendungsmöglichkeit besteht für Systeme, welche zur Übertragung von Nachrichten vorgesehen sind. Ein Beispiel ist ein Vermittlungs­ system, deren wesentliche Blöcke in Fig. 3 gezeigt sind. Das Vermittlungssystem enthält ein Koppelfeld 6 welches auf Eingangsleitungen 7 empfangene Signale an eine oder mehrere Ausgangsleitungen 8 weitergibt. Zur Steuerung des Koppelfeldes dient eine Steuerschaltung 9, die außer den notwendigen Hardwarebestandteilen ein Betriebssystem, Anwendersoftware und einen Austauschmanager enthält. Zum Austausch von Komponenten der Anwendersoftware ist eine Wartungsvorrichtung 10 vorgesehen, die mit der Steuerschaltung 9 auf dieselbe Weise wie die Wartungs­ vorrichtung 2 mit dem Computer 1 zusammenarbeitet.
Anhand eines in der Programmiersprache C++ geschriebenen Prozesses soll im folgenden etwas detaillierter der Aufbau einer austauschbaren Softwarekomponente erläutert werden. Zuerst wird der konventionelle Aufbau des Prozesses ohne die für den Austausch notwendigen, erfindungsgemäßen Maßnahmen beschrieben. Der Prozeß ermöglicht mittels Spracheingaben ein Telefonbuch zu verwalten. Der Telefonbuch-Prozeß stellt anderen Prozessen drei Methoden zur Verfügung. Das ist erstens das Hinzufügen eines Eintrages zum Telefonbuch, zweitens das Löschen eines Eintrages aus dem Telefonbuch und drittens das Ermitteln eines Eintrages aus vorgegebenen Sprachdaten. Ein Prozeß liefert dazu dem Telefonbuch-Prozeß eine Nachricht, aus der die entsprechende gewünschte Methode herausgefunden wird. Die Implementation des Telefonbuch-Prozesses ist im folgenden aufgeführt:
Bei der oben dargestellten Implementation sind nur die Deklarationen aufgeführt, welche zum Verständnis des Telefonbuch-Prozesses erforderlich sind. Das Programm enthält zur Bezugnahme Abschnittsnummern, welche nicht Bestandteil des Programmtextes sind. Einzelne Programmabschnitte werden jeweils durch vorangestellte, in Klammern angegebene Zahlen gekennzeichnet.
In den Abschnitten (1) und (3) sind Importe und Deklarationen von Klassen von Objekten enthalten, die im Telefonbuch-Prozeß verwendet werden. In dem Ab­ schnitt (1) werden einige Bibliotheken (Headerdateien) in den Prozeß eingebunden, die verschiedene weitere Klassen zur Verfügung stellen. Die jeweilige Bedeutung der einzelnen Bibliotheken ist in den Kommentarzeilen erläutert.
Abschnitt (3) zeigt die Definition einer internen Telefonbuch-Klasse "PhoneBook". Die Implementationen für "Enter", "Remove" und "Give" sind nicht im einzelnen aufgeführt. Die Methode "Enter" erlaubt das Einfügen eines Namens mit Telefonnummer und Sprachreferenz (Sprachprobe) in das Telefonbuch, die Methode "Remove" erlaubt das Löschen eines durch den Namen referenzierten Eintrages aus dem Telefonbuch und die Methode "Give" ermöglicht das Finden eines Eintrages im Telefonbuch der auf einer Sprachreferenz basiert. In diesem Fall sucht jemand also Einträge unter einen Namen, den er sprachlich vorgibt. Die Methoden "Enter", "Remove" und "Give" erhalten und übergeben jeweils die in den Klammern zu den jeweiligen Methoden angegebenen Parameter.
In Abschnitt (8) sind die Methoden aufgeführt, die der Telefonbuch-Prozeß anderen Prozessen zur Verfügung stellt. In Abschnitt (9) ist der Port (Dienst-Port) definiert, über den die Methodenaufrufe von anderen Prozessen an das Telefonbuch erfolgen.
Ein Port dient zur Versendung von Nachrichten an andere Prozesse. In Abschnitt (9) wird auch das Telefonbuch-Objekt "PhoneBook" deklariert, das ebenso wie die vorherige Port-Deklaration den Zustand des Softwareobjektes bildet. Das Objekt "PhoneBook" verwaltet alle relevanten Daten des Telefonbuchs.
In den Abschnitt (10) bis (16) wird die Hauptfunktion des Telefonbuch-Prozesses angegeben. Diese Funktion wird als Thread ausgeführt. Der Thread besteht aus einen Initialisierungsteil im Abschnitt (13) und einer Endlosschleife (ab Ab­ schnitt (14)), in der Methodenaufrufe empfangen werden (Abschnitt (15)) und in der die Methodenaufrufe ausgeführt werden (Abschnitt (16)). Im Initialisierungsteil im Abschnitt (13) wird der Anfangszustand des Softwareobjektes gesetzt. In der Schleife, die mit Abschnitt (14) beginnt, wird auf eine Anforderung gewartet. Falls eine Nachricht von dem Dienst-Port empfangen worden ist (Abschnitt (15)) wird diese im Puffer "message" abgelegt. Die Nachricht enthält immer zuerst den Typ der aufgerufenen Methode und je nach Methode noch zusätzliche Parameter. In Abhängigkeit vom Typ (Request) wird entweder zur Methode "Enter", zur Methode "Remove" oder zur Methode "Give" gesprungen. Die Methode "Enter" fügt in das Telefonbuch-Objekt "phoneBook" den Namen, die Telefonnummer und eine Sprachreferenz ein. Die Methode "Remove" entfernt aus dem Telefonbuch-Objekt "phoneBook" den Namen mit den entsprechenden Eintragungen. Für die Methode "Give" wird z. B. noch eine Sprachreferenz übermittelt, die in eine Variable "reference" vom Typ "AudioData" abgelegt wird. Über einen Aufruf der Methode "Give" des internen Objekts "phoneBook" werden dazu ein Nutzername "name" und eine Telefonnummer "phoneNumber" ermittelt und mittels des Befehls "reply" an den Klienten gesendet, der nach der entsprechenden Telefonnummer gefragt hat. In Abschnitt (18) ist eine Deklaration aufgeführt, durch die der Thread instantiiert, mit der die Funktion "phoneBookService" verbunden und gestartet wird. Die Funktion "phoneBookService" beginnt ab Abschnitt (10).
Der Ablauf des Threads kann durch das in der Fig. 4 dargestellte Zustandsdiagramm noch weiter veranschaulicht werden. Block 23 bezeichnet den Zustand (Zustand L, loaded), in den das gesamte Softwareobjekt von dem Austauschmanager 11 in den Arbeitsspeicher des Computers 1 oder der Steuerschaltung 9 geladen wurde. Nach der Initialisierung tritt der Thread in einen Initialisierungszustand (Zustand I, initialized), was der Block 24 angibt. Der nächste Zustand RAC (running application code) zeigt die eigentliche Ausführung des Threads (Block 25) und wird im Programm durch die Abschnitte (14) bis (16) beschrieben. Der Zustand RAC weist weitere Unterzustände WFR (Block 26, waiting for requests), ME (Block 27, processing "enter"), MR (Block 28, processing "remove") und MG (Block 29, processing "give") auf. Der Pfeil mit dem Punkt auf der linken Seite des Blockes 26 kennzeichnet den Unterzustand, der eingenommen wird, wenn das Programm in den übergeordneten Zustand eintritt. Im konkreten Beispiel heißt das, daß der Zustand RAC immer mit dem Unterzustand WFR beginnt. Im Zustand WFR wird auf Nachrichten gewartet. Nach Eintreffen einer Nachricht wird in einen der Zustände ME, MR oder MG gesprungen. Diese Zustände korrespondieren mit der Ausführung der Methoden "Enter", "Remove" und "Give". Nach Beenden einer der Methoden wird in den Zustand WFR zurückgesprungen.
Um den Austausch einer Softwarekomponente durchzuführen, ist der oben dargestellte Telefonbuch-Prozeß durch weitere Deklarationen zu erweitern. Diese zusätzlichen Abschnitte und die schon oben beschriebenen Abschnitte des Telefonbuch-Prozesses sind im folgenden aufgeführt:
Der oben gezeigte Programmablauf ist für den Fall vorgesehen, daß diese Software­ komponente eine andere (Vorgängerkomponente) ersetzen soll, und für den anderen Fall, daß diese Softwarekomponente durch eine andere neue Softwarekomponente (Nachfolgerkomponente) ersetzt wird. Die Softwarekomponente, welche die erfindungsgemäßen Maßnahmen enthält, verwendet ein zusätzliches Modul "exchange.hxx" (Abschnitt (2)), das zwei Methoden "getExcInfo" und "setExcInfo" zur Verfügung stellt. Die Methode "getExcInfo" stellt die Zustandsinformationen der zu ersetzenden Komponente der neuen Komponente zur Verfügung. Demgegenüber übergibt die Methode "setExcInfo" Zustandsinformationen der aktuellen Komponente an eine sie ersetzende neue Komponente. Jeder Thread ruft also zu Beginn seiner Abarbeitung genau einmal die Methode "getExcInfo" und beendet seine Abarbeitung mit "setExcInfo" (vgl. die unten aufgeführten Programmabläufe).
Die Deklarationen im Abschnitt (3) werden um zusätzliche Methodenaufrufe erweitert, die in den auf den Abschnitt (3) folgenden Abschnitten (4) und (5) aufgeführt sind. Prinzipiell werden alle internen Objekte, soweit noch nicht vorhanden, um zwei weitere Methoden erweitert. Eine Methode ist erforderlich, um den neuen Zustand des Objektes der Nachfolgerkomponente aus dem Zustand eines ähnlichen Objektes der Vorgängerkomponente zu konstruieren (Abschnitt (4)) und eine weitere Methode, um den Zustand der Vorgängerkomponente in eine als Nachricht versendbare Form zu verpacken (Abschnitt (5)). Es wird der Methodenaufruf "PhoneBook (Bin buf)" verwendet, der ein Objekt aus einem Pufferabbild konstruiert (Abschnitt (4)). Dieser Methodenaufruf wird benötigt, wenn die beschriebene Softwarekomponente den Zustand ihres internen Objektes "phoneBook" aus dem übertragenen Zustand vom "phoneBook" der Vorgänger­ komponente gewinnt. Zusätzlich wird in Abschnitt (5) eine Methode aufgerufen, die das Ablegen des Objektzustandes in einen Puffer erlaubt. Diese Methode ist erforderlich, wenn die hier beschriebene Softwarekomponente (Vorgängerkompo­ nente) den Zustand ihres internen Objektes "phoneBook" an eine Nachfolger­ komponente übertragen möchte.
Prinzipiell ist es zulässig, daß die internen Objekte einer Nachfolgerkomponente nicht identisch mit den internen Objekten der zu ersetzenden Komponente (Vorgängerkomponente) sind. In dem Ausführungsbeispiel soll das für das interne Objekt "phoneBook" der Fall sein. Gelöst wird diese Inkompatibilität durch die Bereitstellung einer Transferfunktion "stateTransformation" (Abschnitt (7)). Diese Funktion muß in der Lage sein, den alten Typ "OldPhoneBook" (Abschnitt (6)) des internen Objektes "phoneBook" in seine neue Repräsentation umzuwandeln. Das erfolgt unmittelbar, nachdem der Zustand der alten Objekte empfangen wurde (siehe Abschnitt (12)).
Der Abschnitt (8) gibt einen vom Objekt bereitgestellten weiteren Dienst an. Dieser Dienst "exchange" ermöglicht den Austausch der Softwarekomponente.
Der Thread des Telefonbuchprozesses enthält zwei zusätzliche Programmteile. Einer ist für die Übernahme der Zustände von einer Vorgängerkomponente und der andere Teile für die Übergabe der Zustände an eine Nachfolgerkomponente verantwortlich. Ob eine Vorgängerkomponente existiert wird mittels der Methode "getExcInfo" (siehe unten) ermittelt. Existiert eine solche, dann übermittelt "getExcInfo" auch den Zustand der Vorgängerkomponente. Dieser wird zur Rekonstruktion der internen Objekte "phoneBookEntry" und "phoneBook" benutzt (Abschnitt (12)). Existiert keine Vorgängerkomponente, dann wird die Komponente ganz normal gestartet (Abschnitt (13)). Das Erzeugen des neuen Dienst-Ports wird mit den Anweisungen in den Abschnitten (12) und (13) realisiert. Alle noch nicht abgearbeiteten Nachrichten des Dienst-Ports der alten Softwarekomponente sind Bestandteil von diesem Zustand und werden übergeben. Weiter wird im Abschnitt (12) der alte Zustand des Telefonbuches aus dem Puffer "state" extrahiert und in der Variablen "oldPhoneBook" abgelegt. Die oben beschriebene Zustandstransferfunktion, die den Zustand eines alten Telefonbuches in den Zustand eines neuen Telefonbuches abbildet, wird in Abschnitt (12) angewendet. Ein solcher Transfer ist beispielsweise erforderlich, wenn ein neues Feld "Postleitzahlen" hinzukommt oder dieses Feld einen anderen Typ erhält (z. B. 5 anstatt 4 Zeichen).
Der zweite neue Programmteil (Abschnitt (17)) realisiert den für den Austausch der Komponente gegen eine Nachfolgerkomponente notwendigen Dienst "Exchange". Zuerst wird in Abschnitt (17) der augenblickliche Zustand der alten Software­ komponente (Vorgängerkomponente) in einem Puffer "state" abgelegt. Es werden z. B. der Zustand einschließlich der Nachrichten des Dienst-Ports "phoneBookEntry" in dem Puffer "state" gespeichert. Der in dem Puffer "state" abgelegte Zustand der alten Softwarekomponente wird mittels "setExcInfo" an die neu einzusetzende Softwarekomponente (Nachfolgerkomponente) gesendet. Die Methode "setExcInfo" bricht gleichzeitig die Softwarekomponente ab.
Der Ablauf des Threads in der Softwarekomponente mit den erfindungsgemäßen Maßnahmen kann ebenfalls durch ein Zustandsdiagramm beschrieben werden, welches in der Fig. 5 gezeigt ist. Alle Zustände, die mit denen in der Fig. 4 identisch sind, weisen dieselben Bezeichnungen auf. Der Zustand RS (Block 30, receiving state) gibt den Zustand nach einem Neustart der Softwarekomponente an, bei der auf die Übertragung des Zustandes der alten Komponente gewartet wird. Erhält die Softwarekomponente am Ende ihrer Lebensdauer dann selbst ein Austauschsignal, wechselt sie in den Zustand CS (Block 31, collecting state). In diesem Zustand sammelt sie die Zustände ihrer internen Objekte. Der Zustand TS (Block 32, transferring state) gibt die Übertragung der Zustände von der alten auf die neue Softwarekomponente an. Das Beenden einer alten Softwarekomponente wird durch den Zustand TE (Block 33, terminated) angegeben.
Das Modul "exchange.hxx", welches die Methoden "getExcInfo" und "setExcInfo" definiert, wird im folgenden aufgelistet:
In Abschnitt (1) wird ein Symbol "FLYER-EXCHANGE" getestet und, falls es nicht definiert ist, gesetzt. Das verhindert das mehrfache Inkludieren (Einfügen) dieses Moduls. Abschnitt (2) inkludiert die Definition der Klasse "bin". Die Methode "getExcInfo", welche die Zustandinformationen für die Nachfolger­ komponente liefert, wird in Abschnitt (3) definiert. Die Methode besitzt die Parameter "portName", "excReqCode", "maxState", "state" und "return". "portName" gibt den Namen des Ports an, über den die Leistungen dieser Softwarekomponente in Anspruch genommen werden. "excReqCode" ist ein Anforderungskode, der zur Einleitung des Austauschvorganges an die alte, zu ersetzende Softwarekomponente gesendet werden soll. Die maximale Größe des erwarteten Zustandes in Byte gibt "maxState" an. In "state" wird der zu über­ tragende Zustand des Threads abgelegt. Der Rückkehrwert der Funktion "getExcInfo" ist gleich 0 (FALSE), falls kein Austausch stattfinden soll, d. h. falls die Komponente einfach nur neu gestartet werden soll.
In Abschnitt (4) wird die Methode definiert, welche die Zustandsinformationen des alten Threads der Vorgängerkomponente, die in "state" abgelegt sind, an die Nachfolgerkomponente überbringt. Die Funktion "setExcInfo" kehrt nicht zurück. Der aufrufende Thread wird gelöscht.
Das Modul "exchange.cxx", dessen Programmablauf unten dargestellt ist, beinhaltet die Implementierung der in dem Modul "exchange.hxx" beschriebenen Schnittstelle:
Abschnitt (1) enthält Importe bzw. Deklarationen verwendeter Klassen. So stellt z. B. "excstub_.hxx" eine Schnittstelle zum Austauschmanager 11 zur Verfügung.
Abschnitt (2) definiert die Konstanten "False" und "True".
Abschnitt (3) deklariert ein Objekt "excStub", über das der Austauschmanager 11 angesprochen wird. Abschnitt (4) deklariert ein String-Objekt, das lediglich zum Informationstransfer (Namenstransfer) zwischen "getExcInfo" und "setExcInfo" benutzt wird.
Im Abschnitt (5) beginnt die Implementation der Methode "getExcInfo". Im Abschnitt (6) meldet sich die Softwarekomponente beim Austauschmanager 11 an und erfährt, ob sie neu gestartet wird oder ob sie eine existierende Komponente (Vorgängerkomponente) ersetzen soll.
Soll eine Vorgängerkomponente ersetzt werden, so wird im Abschnitt (7) ein Referenz-Port geschaffen, der den Dienst-Port der zu ersetzenden Komponente referenziert. Der Vorgängerkomponente wird nun ein Austauschbefehl mittels "servicePort.call" gesendet. Sie schickt daraufhin ihren Zustand zurück, der in "state" abgespeichert und als Parameter "state" von "getExcInfo" übergeben wird.
Abschnitt (8) enthält die Implementierung von "setExcInfo". Dabei wird zuerst der eingesammelte Zustand "state" an den Sender des Austauschbefehls zurückgeschickt ("reply(state)"). Dann wird der Austauschmanager 11 informiert, daß die Softwarekomponente (Vorgängerkomponente) gestoppt hat ("excStub.stopped(servicePortName)") und die Softwarekomponente löscht sich selbst.

Claims (6)

1. Kommunikationssystem mit einer Steuerschaltung (3, 9), welche ein Betriebssystem (4) und Anwendersoftware (5) und Mittel (11) zum Austausch von Software enthält, dadurch gekennzeichnet, daß das Betriebssystem (4) zum Austausch von Nachrichten vorgesehen ist und daß eine neue geladene Softwarekomponente (Nachfolgerkomponente) zum Empfang der Zustände und der Nachrichten von einem Dienst-Port einer angehaltenen, zu ersetzenden Softwarekomponente (Vorgängerkomponente) und zum Neustart mit den übertragenen Zuständen und Nachrichten vorgesehen ist.
2. Kommunikationssystem nach Anspruch 1, dadurch gekennzeichnet, daß eine austauschbare Softwarekomponente einen Thread enthält und daß der Thread einen ersten Teil zur Übernahme und geeigneten Umsetzung der Zustände und Nachrichten des Dienst-Ports einer alten Softwarekomponente und einen zweiten Teil zum Einsammeln der Zustände des Prozesses und der Nachrichten des Dienst-Ports enthält.
3. Kommunikationssystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß ein Austauschmanager (11) zum Laden und Starten einer Softwarekomponente vorgesehen ist.
4. Kommunikationssystem nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, daß eine Wartungsvorrichtung (2, 10) zur Lieferung einer neuen Software­ komponente über ein Übertragungsmedium an den Austauschmanager (11) vorgesehen ist.
5. Kommunikationssystem nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß bei einer veränderten Struktur der Nachfolgerkomponente zur Vorgängerkomponente die Nachfolgerkomponente zur Durchführung einer Zustandstransformation vorgesehen ist.
6. Computersystem mit wenigstens einem Computer (1), welcher ein Betriebs­ system (4) und Anwendersoftware (5) und Mittel (11) zum Austausch von Software enthält, dadurch gekennzeichnet, daß das Betriebssystem zum Austausch von Nachrichten vorgesehen ist und daß eine neue geladene Softwarekomponente (Nachfolgerkomponente) zum Empfang der Zustände und der Nachrichten von einem Dienst-Port einer angehaltenen, zu ersetzenden Softwarekomponente (Vorgängerkomponente) und zum Neustart mit den übertragenen Zuständen und Nachrichten vorgesehen ist.
DE19518266A 1995-05-18 1995-05-18 Kommunikationssystem mit Mitteln zum Austausch von Software Withdrawn DE19518266A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE19518266A DE19518266A1 (de) 1995-05-18 1995-05-18 Kommunikationssystem mit Mitteln zum Austausch von Software
DE1996511113 DE59611113D1 (de) 1995-05-18 1996-05-10 Kommunikationssystem mit Mitteln zum Austausch von Software
EP96201281A EP0743595B1 (de) 1995-05-18 1996-05-10 Kommunikationssystem mit Mitteln zum Austausch von Software
US08/649,745 US5987511A (en) 1995-05-18 1996-05-15 Communication system capable of exchanging software and restarting with all information preserved
JP8123090A JPH0934700A (ja) 1995-05-18 1996-05-17 通信システム及びコンピュータシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19518266A DE19518266A1 (de) 1995-05-18 1995-05-18 Kommunikationssystem mit Mitteln zum Austausch von Software

Publications (1)

Publication Number Publication Date
DE19518266A1 true DE19518266A1 (de) 1996-11-21

Family

ID=7762252

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19518266A Withdrawn DE19518266A1 (de) 1995-05-18 1995-05-18 Kommunikationssystem mit Mitteln zum Austausch von Software
DE1996511113 Expired - Fee Related DE59611113D1 (de) 1995-05-18 1996-05-10 Kommunikationssystem mit Mitteln zum Austausch von Software

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE1996511113 Expired - Fee Related DE59611113D1 (de) 1995-05-18 1996-05-10 Kommunikationssystem mit Mitteln zum Austausch von Software

Country Status (4)

Country Link
US (1) US5987511A (de)
EP (1) EP0743595B1 (de)
JP (1) JPH0934700A (de)
DE (2) DE19518266A1 (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19701322A1 (de) * 1997-01-16 1998-07-23 Hartmann & Braun Gmbh & Co Kg Verfahren zur Aktualisierung der Betriebssoftware
DE19856975A1 (de) * 1998-12-10 2000-06-21 Alcatel Sa Verfahren, System, Rechner und Vermittlungsstelle zum Betreiben eines Rechners
DE19810784B4 (de) * 1998-03-12 2006-03-16 Telefonaktiebolaget Lm Ericsson (Publ) Rechnersystem
US7580992B2 (en) 1999-09-29 2009-08-25 Fisher Controls International Llc Downloadable code in a distributed process control system

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
JP3612105B2 (ja) * 1995-03-13 2005-01-19 株式会社東芝 Atm通信システムとatm通信システムにおけるプロセスマイグレーション方法
US8574074B2 (en) 2005-09-30 2013-11-05 Sony Computer Entertainment America Llc Advertising impression determination
US7895076B2 (en) 1995-06-30 2011-02-22 Sony Computer Entertainment Inc. Advertisement insertion, profiling, impression, and feedback
MXPA98006863A (es) 1996-12-25 2005-02-25 Sony Corp Sistema de maquina de juegos, sistema de transmision, sistema y metodo de distribucion de datos, yaparato y metodo para ejecutar el programa.
US6321258B1 (en) * 1997-12-11 2001-11-20 Hewlett-Packard Company Administration of networked peripherals using particular file system
DE19843048C2 (de) * 1998-09-19 2000-08-17 Nokia Networks Oy Verfahren für einen Softwarezugriffswechsel in einem Netzwerkknoten eines Telekommunikationsnetzwerkes sowie ein zum Durchführen eines solchen Verfahrens geeigneter Netzwerkknoten
US6237091B1 (en) * 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US7213061B1 (en) 1999-04-29 2007-05-01 Amx Llc Internet control system and method
US6609127B1 (en) * 1999-06-09 2003-08-19 Amx Corporation Method for dynamically updating master controllers in a control system
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
GB2362064A (en) * 2000-05-04 2001-11-07 Marconi Comm Ltd Switching of software in a communications system
US6691070B1 (en) 2000-11-03 2004-02-10 Mack Information Systems System and method for monitoring a controlled environment
US8751310B2 (en) 2005-09-30 2014-06-10 Sony Computer Entertainment America Llc Monitoring advertisement impressions
DE10254531A1 (de) * 2002-11-22 2004-06-09 Abb Research Ltd. Verfahren und System zur Transformation von Programmen, die sich auf die Softwarekonfiguration eines verteilten Leitsystems beziehen
US8763157B2 (en) 2004-08-23 2014-06-24 Sony Computer Entertainment America Llc Statutory license restricted digital media playback on portable devices
CA2621713C (en) 2005-09-07 2016-01-26 Amx Llc Method and computer program for device configuration
US8626584B2 (en) 2005-09-30 2014-01-07 Sony Computer Entertainment America Llc Population of an advertisement reference list
US11004089B2 (en) 2005-10-25 2021-05-11 Sony Interactive Entertainment LLC Associating media content files with advertisements
US10657538B2 (en) 2005-10-25 2020-05-19 Sony Interactive Entertainment LLC Resolution of advertising rules
US8676900B2 (en) 2005-10-25 2014-03-18 Sony Computer Entertainment America Llc Asynchronous advertising placement based on metadata
US20070118425A1 (en) 2005-10-25 2007-05-24 Podbridge, Inc. User device agent for asynchronous advertising in time and space shifted media network
CN103279874B (zh) 2006-05-05 2016-08-03 美国索尼电脑娱乐公司 广告旋转
US8416247B2 (en) 2007-10-09 2013-04-09 Sony Computer Entertaiment America Inc. Increasing the number of advertising impressions in an interactive environment
US8769558B2 (en) 2008-02-12 2014-07-01 Sony Computer Entertainment America Llc Discovery and analytics for episodic downloaded media
US8763090B2 (en) 2009-08-11 2014-06-24 Sony Computer Entertainment America Llc Management of ancillary content delivery and presentation
US10846779B2 (en) 2016-11-23 2020-11-24 Sony Interactive Entertainment LLC Custom product categorization of digital media content
US10860987B2 (en) 2016-12-19 2020-12-08 Sony Interactive Entertainment LLC Personalized calendar for digital media content-related events
US10931991B2 (en) 2018-01-04 2021-02-23 Sony Interactive Entertainment LLC Methods and systems for selectively skipping through media content

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954941A (en) * 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
US5155837A (en) * 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
JP2582956B2 (ja) * 1991-05-07 1997-02-19 三菱電機株式会社 プログラマブル制御装置
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
ATE176953T1 (de) * 1993-01-18 1999-03-15 Siemens Ag Realzeit-steuerungssystem
US5613133A (en) * 1994-09-09 1997-03-18 Unisys Corporation Microcode loading with continued program execution
US5764992A (en) * 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US5797016A (en) * 1996-10-29 1998-08-18 Cheyenne Software Inc. Regeneration agent for back-up software

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DE-Z: Elektrisches Nachrichtenwesen, Bd. 64, Nummer 4, 1990, S. 327-333 *
DE-Z: Unixmagazin, Ausgabe 5, Juni 1992, S. 80-83 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19701322A1 (de) * 1997-01-16 1998-07-23 Hartmann & Braun Gmbh & Co Kg Verfahren zur Aktualisierung der Betriebssoftware
DE19701322C2 (de) * 1997-01-16 2002-10-10 Abb Patent Gmbh Verfahren zur Aktualisierung der Betriebssoftware
DE19810784B4 (de) * 1998-03-12 2006-03-16 Telefonaktiebolaget Lm Ericsson (Publ) Rechnersystem
DE19856975A1 (de) * 1998-12-10 2000-06-21 Alcatel Sa Verfahren, System, Rechner und Vermittlungsstelle zum Betreiben eines Rechners
US7580992B2 (en) 1999-09-29 2009-08-25 Fisher Controls International Llc Downloadable code in a distributed process control system

Also Published As

Publication number Publication date
US5987511A (en) 1999-11-16
EP0743595A3 (de) 1997-04-02
DE59611113D1 (de) 2004-11-18
EP0743595B1 (de) 2004-10-13
JPH0934700A (ja) 1997-02-07
EP0743595A2 (de) 1996-11-20

Similar Documents

Publication Publication Date Title
EP0743595B1 (de) Kommunikationssystem mit Mitteln zum Austausch von Software
EP0849666B1 (de) Verfahren zum Instantiieren einer versionsbehafteten Klasse
EP0525432B1 (de) Verfahren zur Änderung von Systemkonfigurationsdatensätzen in einem Fernmeldevermittlungssystem
EP0807883B1 (de) Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen
EP0635784B1 (de) Multiprozessorsystem
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE4125389C1 (de)
DE4244266A1 (de)
DE3127349A1 (de) Signalverarbeitungssystem mit verteilten elementen
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE3016452A1 (de) Steuereinrichtung, insbesondere fuer fernsprechvermittlungsanlagen
DE19803697A1 (de) Software Aktualisierung
EP0492251B1 (de) Kommunikationssystem mit Anschlussbaugruppen, einem der Durchschaltung von Verbindungen dienenden Koppelfeld, einem zentralen Zeichenkanal sowie einem der zentralen Steuerung dienenden Multiprozessorsystem
EP0840912B1 (de) Rechnersystem
EP0466948A1 (de) Kommunikationssystem mit einem der zentralen Steuerung dienenden Multiprozessorsystem
DE60217248T2 (de) Verfahren und Vorrichtung zur Durchführung einer "In-Betrieb" Aktualisierung eines Koppelfeldes in einem Netzelement
EP1437655A2 (de) Rechner- und/oder Software-Architektur unter Verwendung von Micro-Kernel- und Multi-Tier-Konzept mit Komponententechnik
EP0763954B1 (de) Verfahren zur Auswertung von leistungsmerkmalbezogenen Nachrichten in einer programmgesteuerten Kommunikationseinrichtung
DE1549428A1 (de) Vermittlungs- und Steuergeraete in einem Rechenmaschinensystem
EP0850545A1 (de) Ablaufumgebungssystem für service-applikationen eines kommunikationsnetzes
DE19843048C2 (de) Verfahren für einen Softwarezugriffswechsel in einem Netzwerkknoten eines Telekommunikationsnetzwerkes sowie ein zum Durchführen eines solchen Verfahrens geeigneter Netzwerkknoten
DE2507405A1 (de) Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage
EP0939515A1 (de) Verfahren und Netzelement zum Weiterleiten von Ereignisnachrichten
DE19704288A1 (de) Lokales Netzwerk mit einer verteilten Vermittlungsoftware
DE3023024A1 (de) Einrichtung zur erfassung und vorbehandlung von informationen fuer die ueberwachung von rechnern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee