-
Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur systematischen Aufdeckung von vorwiegend zufälligen Fehlern auf einem für einen Ablauf einer Anwendungssoftware benutzten Computersystem.
-
Als Verfahren zur systematischen Aufdeckung von Fehlern sind verschiedene eingebettete Diagnosemechanismen in Hardware und Software bekannt, die jedoch zumeist hochspezifische und/oder komplexe Lösungen darstellen.
-
Sicherheitsstandards bieten eine Vielzahl von Maßnahmen zur Lösung jeweils eines Teilproblems, beispielsweise zur Überwachung eines Speicherbausteins. Die bekannten Maßnahmen greifen jedoch meist tief in das Design von Computersystemen ein. Daher sind derartige Maßnahmen meist teuer und solche Maßnahmen in kommerziell attraktiven Standard-Produkten (commercial-off-theshelf, COTS) üblicherweise weder vorhanden noch nachrüstbar.
-
Des Weiteren sind rein software-basierte Verfahren bekannt, wie zum Beispiel Coded Processing. Nachteilig an diesen Verfahren ist jedoch, dass sie bisher nur unzulänglich erforscht sind und in der gängigen Technik daher nur selten eine Anwendung finden.
-
Ferner ist das Prinzip der Feststellung eines Fehlers durch gegenseitigen Vergleich von Rechenergebnissen mittels einer Abstimmungsvorrichtung (Voter) und die maschinelle Erzeugung von Software-Code beispielsweise aus einem Modell (CodeGenerator) oder durch einen Übersetzer (Compiler) bekannt.
-
Werden die angesprochenen Computersysteme nun in sicherheitskritischen Anwendungen eingesetzt so stellt dies hohe Anforderungen an die Verlässlichkeit derartiger Systeme (Dependability) auf allen Systemebenen. Hierbei wird die Verlässlichkeit wesentlich durch einen Fehleraufdeckungsgrad bestimmt, welchen Diagnosefunktionen während einer Laufzeit bestimmter Anwendungssoftware auf dem Computersystem, beispielsweise einer Rechnerplattform, leisten und sich letztlich in einem bestimmten Diagnosedeckungsgrad abbildet.
-
Es wird ein Verfahren und eine Vorrichtung beschrieben, die vorhandene Software auf verschiedenen Abstraktionsebenen analysiert und an geeigneten Stellen automatisch zusätzlichen Code einfügt, der zur Laufzeit der modifizierten Software fehlerkritische Daten sammelt, vorzugsweise mit Metadaten versieht, und anderen Instanzen (Vergleichssystemen) im System zum Vergleich zur Verfügung stellt. Zudem kann Code hinzugefügt werden, der den Ablauf der Software an geeigneten Stellen vorübergehend anhält und Vergleichsdaten von anderen Instanzen im System sammelt, bewertet, Fehler per Vergleich feststellt, und Mitigationsmaßnahmen zur Laufzeit initiiert.
-
Die erfindungsgemäße Einrichtung ist besonders geeignet zur Aufdeckung und Mitigation von Fehlern in Rechner-Hardware, hardware-naher Firmware, Middleware oder Software, und in maschinell erzeugten Zwischenformaten der AnwendungsSoftware. Durch den während der Laufzeit der Anwendungssoftware erreichbaren hohen Fehleraufdeckungsgrad (Diagnostic Coverage) vereinfacht die Einrichtung insbesondere die Verwendung von wenig verlässlichen Rechnerplattformen für fehlerkritische Anwendungen, beispielsweise die Nutzung von COTS IT-Servern für sicherheitskritische Anwendungen.
-
Mittels der vorliegenden Erfindung kann also sicherheitskritische Software zunächst ohne Rücksicht auf die zur Laufzeit zu nutzende Rechnerplattform entwickelt werden. Die Software kann vorzugsweise anschließend so instrumentiert werden, dass zur Laufzeit eine angemessen intensive und vorzugsweise plattformspezifische Inspektion der Ausführung und der berechneten Daten erfolgt. Dies kann vorzugsweise durch sehr häufigen Vergleich kritischer Zwischenergebnisse mit anderen Instanzen erfolgen, wodurch ein sehr hoher Diagnosedeckungsgrad erzielt werden kann. In Verbindung mit einer geeigneten Systemarchitektur kann somit funktionale Sicherheit auf Rechnerplattformen erreicht werden, die an sich nicht sicher ausgelegt sind, beispielsweise auf COTS-Produkten. Die Erfindung ermöglicht so erhebliche Einsparungen von Lebenszykluskosten und Leistungssteigerungen für sicherheitskritische Anwendungen.
-
Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren und eine Vorrichtung vorzusehen um in komplexen Rechnerplattformen/Computersystemen möglichst effizient und wiederholbar einen hohen Diagnosedeckungsgrad zu erreichen.
-
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren nach Anspruch 1 sowie eine Vorrichtung nach Anspruch 13 gelöst. Weitere Ausgestaltungen der Erfindung ergeben sich aus den jeweiligen Unteransprüchen.
-
Insbesondere ist ein Verfahren zum automatisierten Erfassen von Fehlern in Computersystemen vorgesehen, wobei das Verfahren das Bereitstellen von Code basierend auf einer Beschreibung eines funktionalen Modells oder einer programmiersprachlichen Beschreibung aufweist. Ferner wird der erzeugte Code hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten automatisch analysiert, mittels eines Code-Analysierers, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden. Anschließend werden zusätzliche Codeabschnitte automatisch, mittels eines Code-Instrumentierers, in den erzeugten Code eingefügt um ein automatisiertes Überwachen der analysierten kritischen Operationen bzw. Daten zu ermöglichen, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem erzeugt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert. Abschließend wird ein Abstimmungscode in den erzeugten Code auf dem ersten und vorzugsweise auch auf dem zweiten Computersystem eingefügt, mittels dessen jeweils ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt und ein Fehler ausgegeben wird sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine (signifikante) Abweichung ergibt.
-
Vorzugsweise bedeutet signifikant in diesem Zusammenhang eine Abweichung von der Mehrheit der beteiligten Computersysteme. Hierzu sind verschiedene Verfahren für Mehrheitsentscheide bekannt (Voting).
-
In einer vorteilhaften Ausprägung wird die Analyse automatisiert nach definierten Code-Bewertungs-Regeln ausgeführt, vorzugsweise mittels eines Code-Analysierers, wobei die Code-Bewertungs-Regeln beispielsweise die Sicherheitskritikalität oder Schreibvorgänge berücksichtigen. Beispielsweise werden hierzu Schreibvorgänge in kritische Speicherbereiche von einer weiteren Bearbeitung, z.B. einer Instrumentierung, die im Folgenden näher erläutert wird, ausgeschlossen, wenn hierfür bereits andere Sicherungsmechanismen vorgesehen sind.
-
In einem weiteren Ausführungsbeispiel werden vorzugsweise nur interne Register eines Mikroprozessors einbezogen um nur den Prozessor selbst mit der erfindungsgemäßen Einrichtung zu überwachen. Ferner können Zugriffe auf Adressregister identifiziert werden, um den Programmablauf (die Programmsequenz) zu überwachen. Vorzugsweise können auch Pufferspeicher einer seriellen Kommunikation einbezogen werden und somit die Kommunikation selbst überwacht werden.
-
Eine bevorzugte Ausführungsform identifiziert besonders kritische Operationen und identifiziert ferner z.B. Speicherorte oder Register, aus denen zur Laufzeit der Software kritische Eingangsdaten geholt werden, und die Speicherorte oder Register, in denen zur Laufzeit kritische Ergebnisdaten gespeichert werden.
-
In einem alternativen Ausführungsbeispiel wird das Bereitstellen des Codes basierend auf dem funktionalen Modell, sowie die Anwendung des Übersetzers zur Erzeugung des Maschinen- bzw. eines Zwischencodes unabhängig voneinander auf dem ersten und dem zweiten Computersystem, d.h. auf beiden Vergleichssystemen ausgeführt. Gleiches gilt hierbei für das Einfügen von vorübersetztem Code, beispielsweise eines Betriebssystems, der entweder nur in den Maschinencode des ersten Computersystems eingefügt wird oder auch in den bereitgestellten Code des zweiten Computersystems. Dieses gilt analog ebenfalls für den Fall bei dem eine Vielzahl von Vergleichssystemen vorgesehen ist, wobei die oben beschriebenen Schritte dann auf jedem einzelnen System separat ausgeführt werden.
-
In einer weiteren vorteilhaften Ausprägung ist der bereitgestellte Code mehrfach vorhanden, beispielsweise durch mehrere Instanzen des Übersetzers und/oder mehrere Instanzen der Software-Beschreibung erzeugt bzw. beschrieben. Dies ist vorteilhaft da hiermit auch zufällige Fehler der eingesetzten Software-Werkzeuge oder zufällige Fehler in Beschreibungen der Software erkannt werden können. Dies können beispielsweise Fehler in einer aus einem Modell erzeugten hochsprachlichen Beschreibung oder ein zufälliger Fehler eines Assemblers sein. In Folge können durch die Erfindung auch wenig verlässliche Software-Werkzeuge für die Entwicklung kritischer Anwendungen eingesetzt werden, und die Aufdeckung deren zufälliger Fehler erfolgt zur Laufzeit der Software.
-
Ferner kann dem bereitgestellten Code in einem Ausführungsbeispiel ein Paketierungscode ein- oder mehrfach hinzugefügt werden. Der Paketierungscode kann in einer vorteilhaften Weise die zu überwachenden kritischen Operationen und/oder Daten sammeln und zur Kommunikation aufbereiten.
-
Weiterhin kann der Paketierungscode Metadaten umfassen, die die zu überwachenden Daten in einem Paket beschreiben. Mit Hilfe derartiger Metadaten kann eine Überwachung der Daten durch andere Instanzen, beispielsweise weiterer Computersysteme, die als Vergleichssystem fungieren, ermöglicht, vereinfacht oder abgesichert werden. Entsprechende Daten können hierbei vorzugsweise Daten zur Verschlüsselung, Redundanzen, Zeitstempel, Sequenznummern, Blockchains oder Quellenangaben sein.
-
Ferner kann dem bereitgestellten Code in einer weiteren Ausführungsform wenigstens ein Kommunikationscode automatisch, mittels des Code-Instrumentierers, hinzugefügt werden, der geeignet ist mittels einer Kommunikationseinrichtung die paketierten und zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem zu übertragen, wobei das wenigstens eine weitere Computersystem als weiteres Vergleichssystem fungiert. Hierdurch kann die Kommunikation zwischen den einzelnen Systemen vereinfacht werden, was im Besonderen im Fall von räumlich weit getrennten Vergleichssystemen vorteilhaft ist.
-
Vorzugsweise kann dem bereitgestellten Code wenigstens ein Abschaltcode, mittels des Code-Instrumentierers, hinzugefügt werden, wobei der Abschaltcode ein dauerhaftes Abschalten des Computersystems, eine dauerhafte Unterbrechung der Kommunikation oder einen Weiterbetrieb mit reduzierten Eigenschaften bewirkt, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem das Ausgeben eines Fehlers erzeugt. Im Fall eines durch den Vergleich der Daten festgestellten Fehlers kann der Abschaltcode in vorteilhafter Weise dessen genügend sichere Isolierung im System erreichen (wenn eine Fail Safe Eigenschaft erreicht werden soll im Sinn eines sicheren Zustands), beispielsweise durch dauerhaftes Abschalten des Computersystems, durch eine dauerhafte Unterbrechung der Kommunikation, oder durch einen Weiterbetrieb des Computersystems mit reduzierten Eigenschaften (Graceful Degradation).
-
In einer weiteren Ausführungsform kann dem bereitgestellten Code automatisch, mittels des Code-Instrumentierers, zusätzlicher Code hinzugefügt werden, der Information über eine Sequenz und/oder der beabsichtigten Dauer einer Ausführung von Teilen des erzeugten Codes über die Kommunikationseinrichtung zur Abstimmung in die Computersysteme überträgt. Dadurch können Fehler in einem Kontrollfluss des instrumentierten Codes als Abweichung durch Vergleich erkannt und geeignet berücksichtigt werden. Dies kann beispielsweise durch ein Aktivieren von Abschalteinrichtungen erreicht werden, die im Folgenden näher erläutert werden.
-
In einer vorteilhaften Ausführung beinhaltet der Code, und gegebenenfalls weitere Instanzen des Codes, mindestens einen vorübersetzten Code, vorzugsweise den Code eines Betriebssystems oder einer Middleware, der durch die Erfindung gemeinsam mit dem Code überwacht werden kann. Somit können beispielsweise nicht funktional sicher ausgelegte Betriebssysteme mit der erfindungsgemäßen Einrichtung genügend überwacht und für sichere Anwendungen eingesetzt werden.
-
Die der Erfindung zugrundeliegende Aufgabe wird auch durch eine Vorrichtung zum automatisierten Erfassen von potenziellen Fehlerquellen in Computersystemen gelöst. Die Vorrichtung weist hierbei einen Code-Analysierer auf der einen bereitgestellten Code automatisch hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten analysiert, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden. Die Vorrichtung weist ferner einen Code-Instrumentierer auf, der zum automatischen Einfügen von zusätzlichen Codeabschnitten in den bereitgestellten Code und zum automatischen Überwachen der analysierten kritischen Operationen bzw. Daten konfiguriert ist, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem ausgeführt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert. Der Code-Instrumentierer ist ferner konfiguriert einen Abstimmungscode in den bereitgestellten Code auf dem ersten und zweiten Computersystem einzufügen, wobei mittels des Abstimmungscodes, ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt wird. Abschließend wird mittels des Abstimmungscodes ein Fehler ausgegeben, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine signifikante Abweichung ergibt.
-
In einer bevorzugten Ausführungsform kann ein sequentiell angewendeter Übersetzer aus einer Code-Beschreibung einen maschinell ausführbaren Code erzeugen, wobei der Übersetzer ein Compiler, Cross-Compiler oder ein Modell umsetzender Code Erzeuger ist.
-
Hierbei stellen das erste und zweite Computersystem die Systeme des Vergleichssystems dar. In einer alternativen Ausführungsform kann jedoch eine Vielzahl derartiger Computersysteme vorhanden sein, die dann gemeinsam das Vergleichssystem darstellen. Durch eine höhere Anzahl von Vergleichssystemen lässt sich ein höherer Fehleraufdeckungsgrad erzielen, wodurch dieser flexibel an eine geforderte Verlässlichkeit des Systems anpassbar ist.
-
Vorzugsweise können die obigen Computersysteme mit Computerhardware, hardwarenahe Firmware, Middleware oder Software ausgestaltet sein, wobei eine Beschreibung des funktionalen Modells oder der programmiersprachlichen Beschreibung hierbei entweder manuell oder maschinell erzeugt sein kann.
-
Vorzugsweise kann der Code-Instrumentierer dem bereitgestellten Code wenigstens einen Kommunikationscode hinzufügen, der geeignet ist mittels der Kommunikationseinrichtung die zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem zu übertragen, wobei das wenigstens eine weitere Computersystem als weiteres Vergleichssystem fungiert, wobei die Kommunikationseinrichtung ein Datenbus oder ein Kommunikationsnetzwerk ist, und wobei die Kommunikationseinrichtung ferner geeignet ist Metadaten der zu überwachenden Daten zu übertragen. In einer weiteren Ausführung kann der Code-Instrumentierer einen Paketierungscode ein- oder mehrfach in den erzeugten Code einfügen.
-
Das Kommunikationsnetzwerk kann dabei die Metadaten vorzugsweise zur Ausführungszeit von dem Computersystem, das den instrumentierten Code ausführt, an mindestens ein weiteres Computersystem übertragen, das als Vergleichssystem dient. Hierfür wird erfindungsgemäß vorausgesetzt, dass ein Vergleichssystem einen in gleicher oder gleichwertiger Weise instrumentierten Code ausführt.
-
In einer vorteilhaften Ausführung weist die Vielzahl der Vergleichssysteme jeweils Code-Analysierer, Code-Instrumentierer und jeweilige Abschalteinrichtungen auf, wobei ein geeigneter Abstimmungscode die Vielzahl der Vergleichssysteme bezüglich des Vergleichs der Daten synchronisiert. In diesem Fall erfolgt ein Vergleich der Daten bzw. Operationen durch einen alle Instanzen/Vergleichssysteme berücksichtigenden Abstimmungscode, vorzugsweise, durch eine M-out-of-N (MooN) Mehrheitsentscheidung. Vorzugsweise sind die Abschalteinrichtungen der verschiedenen Systeme hierbei logisch verknüpft, wobei diese logischen Verknüpfungen beispielsweise als Relaisausgänge realisiert sind.
-
In einer weiteren Ausführung können die Vergleichssysteme bzw. Vergleichsinstanzen, bestehend aus einem ersten Computersystem und wenigstens einem oder mehreren weiteren Computersystemen, eine hohe räumliche Trennung aufweisen, d.h. dass die Vergleichssysteme im Extremfall an jedem beliebigen Ort aufgestellt sein können und hierbei lediglich durch ein geeignetes Kommunikationssystem, beispielsweise die oben beschriebene Kommunikationseinrichtung, miteinander verbunden sein müssen.
-
Hierbei ist zu beachten, dass die unterschiedlichen zu vergleichenden kritischen Operationen bzw. Daten nicht zwangsläufig synchron überprüft bzw. durchgeführt werden müssen. Im Fall größerer Kommunikationslatentzeiten zwischen dem ersten Computersystem und einem oder mehreren Vergleichssystemen, kann eines der Systeme so lange angehalten werden bis entsprechende Ergebnisse von allen beteiligten Systemen vorliegen.
-
Die vorliegende Erfindung ist somit vorteilhaft, indem, abhängig von einer geforderten Fehlerabdeckung, das System über den automatisiert eingefügten Code flexibel verändert werden kann, damit dort, wo die Anforderungen hoch sind die Überwachung entsprechend aufwendiger erfolgen kann. Falls in bestimmten Fällen durch eine Maßnahme allein der geforderte Fehleraufdeckungsgrad nicht erreicht werden kann so können zusätzliche Testverfahren mit denen des vorliegenden Systems einfach und flexibel, aufgrund des modularen Charakters, kombiniert werden.
-
Die vorliegende Erfindung wird nachfolgend im Detail unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
- 1 zeigt einen Testablauf zur Aufdeckung von Fehlern in Rechnerplattformen.
-
Ein in der nachfolgenden Beschreibung verwendeter Ablauf verschiedener Verfahrensschritte bezieht sich primär auf die Darstellung in der Zeichnung, und sollte daher nicht einschränkend gesehen werden. Einzelne Verfahrensschritte können daher auch in einer anderen Reihenfolge oder als Alternative durchgeführt werden.
-
1 zeigt ein Ausführungsbeispiel eines erfindungsgemäßen Verfahrens zur Erfassung von statistischen Fehlern. Das Verfahren nach 1 umfasst zunächst das Bereitstellen von mindestens einer Beschreibung einer Software-Funktionalität (1a), die in einer mehr oder weniger abstrakten Form, beispielsweise als funktionales Modell, in einer Hochsprache oder Assembler-Sprache vorliegt.
-
Ein oder mehrere sequenziell angewendete Übersetzer (2a) erzeugen aus der Software-Funktionalität (1a) einen mittelbar oder unmittelbar maschinell ausführbaren Maschinen- oder Zwischen-Code (3a), der im Folgenden „Code“ genannt wird.
-
Die Beschreibung der Software-Funktionalität (1a) und die Anwendung des Übersetzers stellen hierbei alternative Schritte dar, die nicht zwangsläufig Teil des erfindungsgemäßen Verfahrens sein müssen und alternativ zum Start des Verfahrens schon ausgeführt sein können.
-
Erfindungsgemäß wird der bereitgestellte Code (3a) durch einen automatisierten Code-Analysierer (5a) nun wie folgt analysiert (inspiziert) und modifiziert (instrumentiert):
- Der bereitgestellte Code (3a) wird mit Hilfe eines geeigneten Moduls, beispielsweise einem Code-Analysierer (5a), bezüglich der in geeigneten Abschnitten des Codes beabsichtigten kritischen Operationen, und/oder bezüglich der benutzten Quellen für die Eingangsdaten einer Kontrollberechnung zur Bereitstellung von Ausgangsdaten untersucht. Der Begriff „Daten“ beinhaltet hier explizit auch Daten zur Adressierung, beispielsweise die Adresse für einen Funktionsaufruf.
-
Das Analysieren kann hierbei vorzugsweise nach definierten Code-Bewertungs-Regeln (6) ausgeführt werden, wobei ferner die Code-Bewertungs-Regeln (6) Operationen und/oder Speichervorgänge auf verschiedenen Abstraktionsebenen des Codes (3a) adressieren, um diese in die Überwachung einzubeziehen. Beispielsweise werden sowohl Funktionsaufrufe in der Hochsprachenebene des Codes (3a), als auch Zugriffe auf Konfigurationsregister eines Prozessors einbezogen und somit überwacht.
-
In einem nächsten Schritt wird nun in den erzeugten Code (3a), mittels eines geeigneten Moduls, beispielsweise eines Code-Instrumentierers (5a), automatisch zusätzlicher Programmcode einfügt und somit mindestens ein instrumentierter Code (8a) erzeugt, und zwar vorzugsweise an Stellen, die durch den Code-Analysierer, mittels der Code-Bewertungskriterien als kritisch identifiziert wurden. Hierbei wird vorzugsweise mindestens ein Kommunikations-Code (7) dem Code (3a) hinzugefügt, der geeignet ist vorzugsweise einem Datenbus oder Kommunikationsnetzwerk, die zu überwachenden Daten zu übermitteln. Wobei die Übertragung der Daten vorzugsweise mittels einer geeigneten Kommunikationseinrichtung erfolgen kann.
-
Alternativ kann hierbei zusätzlich ein Paketierungs-Code (6) ein- oder mehrfach in den Code (3a) eingefügt werden, der die zu überwachenden identifizierten Daten sammelt und kommunikationsgerecht paketiert aufbereitet. In dem Paketierungs-Code (6) werden beispielsweise Metadaten eingeschlossen, die die Eigenschaften der zu überwachenden Daten im Paket beschreiben oder die Überwachung durch andere Instanzen ermöglichen, vereinfachen oder absichern.
-
Im Weiteren wird nun mindestens ein Abstimmungs-Code (7), mittels des Code-Instrumentierers automatisch dem Code (3a) hinzugefügt, der die zu überwachenden Daten und gegebenenfalls die Metadaten mit denen mindestens eines anderen Computersystems bzw. Rechnerinstanz (9b) geeignet vergleicht. Hierzu kann es zunächst erforderlich sein, entsprechende Vergleichsdaten von anderen Computersystemen (9b) zu empfangen, vorzugsweise über die erwähnte alternative Kommunikations-Einrichtung (10).
-
Sofern die beiden Vergleichssysteme räumlich sehr stark voneinander getrennt sind, und dadurch Laufzeiten zwischen den Systemen relevant werden, kann möglicherweise eine Synchronität im Abarbeiten des Codes auf den beiden Systemen nicht sichergestellt werden. In einem derartigen Fall muss das Computersystem (9a) gegebenenfalls mit der Abarbeitung des instrumentierten Codes (8a) warten, bis genügend valide Vergleichsdaten empfangen worden sind. Erfindungsgemäß findet somit inhärent eine Synchronisation der Abläufe des instrumentierten Codes (8a) und (8b) an den Punkten statt, die durch die Code Analyse in Schritt (5a) und gegebenenfalls (5b) bestimmt wurden.
-
Mittels des Abstimmungs-Codes (7), als Bestandteil des instrumentierten Codes (8a), werden nun zur Laufzeit des instrumentierten Codes (8a), die Daten der beteiligten Rechner-Instanzen (9a) und (9b) miteinander verglichen und bei einer erheblichen Abweichung ein Fehler festgestellt. Der Vergleich kann hierbei mittels eines Mehrheitsentscheids (Voting), im Abstimmungs-Code (7) realisiert sein. Ferner kann der Mehrheitsentscheid durch den instrumentierten Code (8a) der beteiligten Rechner (9b) selbst getroffen werden, wenn dies so im Abstimmungs-Code (7) vorgesehen ist.
-
Alternativ kann abschließend durch eine Abschalteinrichtung (11a) ein Abschalten des Systems erfolgen, sofern durch den Vergleich der Systeme ein Fehler festgestellt wurde. Dieser zusätzliche Schritt ist allerdings nur dann vorgesehen, wenn die Gefahr besteht dass durch den festgestellten Fehler ein Schaden an einem der Systeme oder durch das Fehlverhalten eines der Systeme zu befürchten ist.