-
HINTERGRUND DER ERFINDUNG
-
Herkömmlicherweise funktionieren Vorrichtungen mit einer ziemlich spezifischen Gruppe von Funktionen und Merkmalen. Die Funktionen und Merkmale solcher herkömmlicher Vorrichtungen sind spezifisch für die Art einer Vorrichtung. Beispielsweise werden bei einem herkömmlichen Telefon Funktionen wie das Einleiten von Anrufen, das Annehmen von Anrufen und ähnliche telefonbezogene Funktionen verwendet. Ein anderes Beispiel ist eine herkömmliche Musikvorrichtung, bei der Funktionen wie beispielsweise Überspringen zu einem nächsten Song, Abspielen, Pause und dergleichen verwendet werden.
-
Aktuelle Vorrichtungen enthalten häufig zahlreiche Merkmalsgruppen herkömmlicher Vorrichtungen in einer einzigen Vorrichtung. Beispielsweise kann ein Smartphone Funktionen und Merkmale aufweisen, die mit einem Telefon, einem Musikabspielgerät, einem elektronischen Nachrichtensystem, einem Videoabspielgerät, einer Kamera und dergleichen in Zusammenhang stehen. Das Vorhandensein mehrerer Merkmalsgruppen bewirkt, dass die aktuellen Vorrichtungen komplexer als herkömmliche Vorrichtungen sind. Diese Komplexität macht die Gestaltung (Design) und das Debuggen solcher Vorrichtungen zu einer Herausforderung. Es ist daher ein Bedarf an einem einfacheren System zum Debuggen der Gestaltungen solcher Geräte vorhanden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockschaltbild, das eine Vorrichtung veranschaulicht, bei der ein Nachrichtensequenz-Vereinfachungssystem verwendet wird.
-
2 ist ein Blockschaltbild, das ein Nachrichtensequenz-Vereinfachungssystem veranschaulicht.
-
3A ist ein Zustandsdiagramm, das ein Beispiel eines abstrakten Modells 200 zeigt, das mit dem System verwendet werden kann.
-
3B ist ein Schaubild, das einen Abschnitt einer fehlerauslösenden Nachrichtensequenz und Nachrichtenteile zeigt.
-
4 ist ein Ablaufplan, der ein Verfahren zum Vereinfachen einer Nachrichtensequenz veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Die vorliegende Erfindung wird nun unter Bezugnahme auf die angefügten Zeichnungen beschrieben, wobei gleiche Bezugszeichen sich durchgehend auf gleiche Elemente beziehen, und wobei die veranschaulichten Strukturen und Vorrichtungen nicht notwendigerweise maßstabsgerecht gezeichnet sind.
-
Zu den Vorrichtungen von heute können eine mobile Vorrichtung, ein persönlicher Computer sowie eine Tablet-Vorrichtung zählen. Zu den Vorrichtungen können auch System-on-Chip-Systeme (SOC-Systeme) und eingebettete Systeme zählen, die verschiedene Funktions- und Merkmalsgruppen enthalten. Zu diesen Gruppen gehören Telefone, Kameras, Videoabspielen, Multimedia und dergleichen. Eine Technik zur Verbesserung von Entwicklung und Gestaltung dieser Vorrichtungen besteht im Verwenden eines abstrakten Modells zum Prüfen und Debuggen der Entwicklung solcher Vorrichtungen.
-
In seiner einfachsten Form wird ein abstraktes Modell als ein beschriftetes Übergangssystem (Labeled Transition System) dargestellt. Jeder Übergang ist mit einer Nachricht oder einem Ereignis beschriftet, die/das einen Übergang auslöst. Darüber hinaus können Übergänge auch mit Übergangswahrscheinlichkeiten annotiert werden. Das abstrakte Modell ist eine abstrakte Darstellung eines tatsächlichen vollständigen Systems. Das abstrakte Modell gibt verschiedene abstrakte Systemzustände an und auch, wie sich jeder Systemzustand verändert, wenn das System durch eingehende Nachrichten oder Ereignisse angeregt wird.
-
Ein Problem wird erkannt, wenn eine Nachrichtensequenz eine Ausgabe oder ein Verhalten des Systems zur Folge hat, die von einer erwarteten oder gewünschten Reaktion abweicht. Eine solche Nachrichtensequenz wird als eine fehlerauslösende Nachrichtensequenz bezeichnet. Diese fehlerauslösende Nachrichtensequenz kann dann analysiert werden, um die zugrunde liegende Ursache des Fehlers zu ermitteln und die Gestaltung zu korrigieren. Allerdings umfassen solche fehlerauslösenden Nachrichtensequenzen üblicherweise eine relativ große Anzahl von Nachrichten und weisen eine hohe Komplexität auf. Demzufolge kann das Debuggen dieser fehlerauslösenden Nachrichtensequenzen zeitaufwendig und schwierig sein.
-
Es werden Systeme und Verfahren offenbart, die Techniken zum automatischen Kürzen und Vereinfachen fehlerauslösender Nachrichtensequenzen beinhalten. Infolgedessen werden vereinfachte Sequenzen zusammen mit Hinweisen bereitgestellt, durch die der mit dem Debuggen von Vorrichtungen verbundene Debugging-Aufwand drastisch verringert werden kann, insbesondere der Aufwand für manuelles Debuggen. Darüber hinaus können die vereinfachten Sequenzen auch das Erkennen eines bestimmten Technologiebereichs erleichtern, auf den das Debuggen abzielen soll, wie beispielsweise eine bestimmte technische Abteilung, und können daher die Fehler-Triage verbessern.
-
1 ist ein Blockschaltbild, das eine Vorrichtung 50 veranschaulicht, bei der ein Nachrichtensequenz-Vereinfachungssystem 100 verwendet wird. Die Vorrichtung 50 kann zumindest ein Teil einer Vorrichtung sein wie beispielsweise einer mobilen Vorrichtung, eines persönlichen Computers, einer Tablet-Vorrichtung und dergleichen. Die Vorrichtung 50 kann verschiedene Funktions- und/oder Merkmalsgruppen aufweisen.
-
Die Vorrichtung 50 enthält einen oder mehrere Prozessoren 52, einen Speicher 54, eine Eingabe/Ausgabe-Komponente (E/A-Komponente) 56 und ein Nachrichtensequenz-Vereinfachungssystem 100. Der Prozessor 52 ist dafür konfiguriert, mit dem Speicher 54, der E/A-Komponente 56 und dem Nachrichtensequenz-Vereinfachungssystem 100 zu interagieren. Der Prozessor 52 ist außerdem dafür konfiguriert, Anweisungen, darunter Sequenzen, von dem Speicher 54 auszuführen.
-
Der Speicher 54 enthält Programmcode, Daten und dergleichen für den Betrieb der Vorrichtung. Der Speicher 54 kann auch Nachrichtensequenzen enthalten. Die E/A-Komponente 56 ist dafür konfiguriert, Informationen von außerhalb der Vorrichtung 50 zu empfangen und Informationen von der Vorrichtung 50 bereitzustellen.
-
Das Nachrichtensequenz-Vereinfachungssystem 100 empfängt fehlerauslösende Nachrichtensequenzen und erzeugt daraus vereinfachte Sequenzen mit Debugging-Hinweisen. Weitere Einzelheiten zum Betrieb eines derartigen Systems werden nachfolgend angegeben. Die fehlerauslösenden Nachrichtensequenzen können aus dem Speicher 54 oder mithilfe der E/A-Komponente 56 empfangen werden. In ähnlicher Weise können die vereinfachten Sequenzen mit Debugging-Hinweisen in dem Speicher 54 gespeichert und/oder der E/A-Komponente 56 zur Verfügung gestellt werden.
-
Die Vorrichtung 50 wird als ein Beispiel angeführt, um das Verständnis zu erleichtern. Es sollte beachtet werden, dass Nachrichtensequenz-Vereinfachungssysteme bei anderen geeigneten Vorrichtungen verwendet werden können.
-
2 ist ein Blockschaltbild, das ein Nachrichtensequenz-Vereinfachungssystem 100 veranschaulicht, in dem Nachrichten der Sequenz vereinfacht werden können. Das System 100 analysiert automatisch eine eingegebene Nachrichtensequenz, um die Nachrichtensequenz zu kürzen und zu vereinfachen, um eine vereinfachte Sequenz und Debugging-Hinweise zu erzeugen. Die vereinfachte Sequenz und die Debugging-Hinweise erleichtern das Korrigieren oder Abändern einer durch ein abstraktes Modell dargestellten Gestaltung einer Vorrichtung.
-
Es sollte beachtet werden, dass mindestens ein Teil der Komponenten des Systems 100 in auf einem oder mehreren Computern ausgeführter Software, als durch einen oder mehrere Prozessoren ausführbare maschinenlesbare Anweisungen und dergleichen realisiert werden kann. Darüber hinaus können die Komponenten des Systems 100 mindestens teilweise auf einem computerlesbaren Medium gespeichert werden und/oder ein solches verwenden.
-
Das System 100 enthält ein abstraktes Modell 102, eine Sequenzkürzungskomponente 104 und eine Nachrichtenvereinfachungskomponente 106. Das abstrakte Modell 102 ist ein Modell einer Gestaltung oder eines Verhaltens einer Vorrichtung wie beispielsweise einer mobilen Vorrichtung. Die Vorrichtung kann ein System-on-Chip- oder ein eingebettetes System enthalten oder Teil davon sein. Jedoch kann ein abstraktes Modell 102 eine Gestaltung oder ein Verhalten von anderen Vorrichtungen als mobilen Vorrichtungen darstellen, ohne vom Wesensgehalt und Schutzbereich der vorliegenden Offenbarung abzuweichen, zum Beispiel von Vorrichtungen, die ein Softwaresystem, ein Hardwaresystem oder eine beliebige Kombination von Software- und Hardwaresystemen umfassen. Des Weiteren kann die Gestaltung oder das Verhalten von durch das abstrakte Modell 102 dargestellten Vorrichtungen in Software, Hardware, Firmware oder einer beliebigen Kombination von diesen realisiert werden.
-
Das abstrakte Modell 102 ist als ein beschriftetes Übergangssystem dargestellt. Das abstrakte Modell 102 weist eine finite Anzahl von Zuständen und Übergängen auf und beschreibt, wie das dargestellte oder modellierte System Zustandsübergänge ausführt, wenn es durch Nachrichten angeregt wird. Ein Übergang wird durch eine eingehende Nachricht ausgelöst. Jeder Übergang ist mit einer Nachricht oder einem Ereignis beschriftet, die/das einen bestimmten Übergang aus einem bestimmten Zustand auslöst. Außerdem können Übergänge mit Übergangswahrscheinlichkeiten annotiert werden.
-
Das abstrakte Modell 102 annotiert eine fehlerauslösende Nachrichtensequenz 108 bzw. wird dazu verwendet, eine fehlerauslösende Nachrichtensequenz zu annotieren und eine annotierte Nachrichtensequenz 109 bereitzustellen, wobei in dem abstrakten Modell 102 jede Nachricht mit ihrem auslösenden Übergang annotiert wird. Die fehlerauslösende Nachrichtensequenz 108 ist eine Nachrichtensequenz, die einen bestimmten Fehler zur Folge hat. Die mit annotierte Nachrichtensequenz 109 ist die fehlerauslösende Nachrichtensequenz 108, aber mit Übergangsannotationen.
-
Das abstrakte Modell 102 kann definieren, welche Nachrichtensequenzen gültig sind und welche ungültig sind, d. h. zu einem oder mehreren Fehlern führen. Das abstrakte Modell 102 kann als eine ausführbare Spezifikation einer öffentlichen Anwendungsprogrammierschnittstelle aufgefasst werden. Es kann dazu verwendet werden, zu definieren, welche Nachrichtensequenzen gültig und welche ungültig sind. Ungültige Nachrichtensequenzen führen das Modell 102 in einen dedizierten Fehlerzustand und verstoßen gegen die Spezifikation. Nachstehend wird ein beispielhaftes abstraktes Modell beschrieben. Die Beschreibung des Systems 100 wird jedoch nach dem Beispiel fortgesetzt.
-
3A ist ein Zustandsdiagramm, das ein Beispiel eines abstrakten Modells 200 zeigt, das mit dem System 100 verwendet werden kann. Das abstrakte Modell 200 dient zur Veranschaulichung.
-
Das Modell 200 wird mit einem ersten Zustand 202, einem zweiten Zustand 204 und einem dritten Zustand 206 gezeigt. Übergänge zu und zwischen den Zuständen werden als „a” und „b” gezeigt, wobei „a” und „b” abstrakte Nachrichten sind. Die Übergänge treten als Reaktion auf eine in einem bestimmten Zustand empfangene Nachricht auf. Zum Beispiel löst eine Anfangs- oder Start-Nachricht den Übergang des Modells in den ersten Zustand 202 aus. Eine „a”-Nachricht bewirkt einen Übergang aus diesem Zustand in den dritten Zustand 206, und eine „b”-Nachricht bewirkt einen Übergang in den zweiten Zustand 204.
-
Eine Nachrichtensequenz ist eine Sequenz von Nachrichten, die eine Reihe von Übergängen zu oder zwischen verschiedenen Zuständen des Modells verursacht. Beispielsweise kann S0 – a > S1 – a > S3 – b> S2 einen anfänglichen Übergang zu dem Zustand 1 202 (S1) bezeichnen, gefolgt von einem Übergang „a” zu dem Zustand 3 206 (S3), gefolgt von einem Übergang „b” zu dem Zustand 2 204 (S2).
-
Wieder auf das System 100 und 2 bezogen: Die Nachrichtensequenz 108 wird mithilfe der Kürzungskomponente 104 durch das abstrakte Modell 102 bzw. in diesem simuliert. Das Ergebnis ist die annotierte Nachrichtensequenz 109. Die Kürzungskomponente 104 versucht, die Nachrichtensequenz 109 durch Minimieren oder Verringern der Anzahl von Nachrichten in der Sequenz zu kürzen oder zu vereinfachen. Es sollte beachtet werden, dass Varianten der Nachricht Varianten einschließen, bei denen die Kürzungskomponente 104 auf die nicht annotierte Sequenz, die fehlerauslösende Nachrichtensequenz 108, einwirkt.
-
Die Kürzungskomponente 104 versucht systematisch, Teile der Sequenz 108 abzutrennen, und prüft anschließend das durch das Modell 102 dargestellte System mit der verbleibenden Sequenz, die als ein Kandidat bezeichnet wird, oder regt es mit dieser erneut an. Ein Kürzungsversuch bzw. -kandidat wird als erfolgreich betrachtet, wenn das System denselben Fehler zeigt, der durch die fehlerauslösende Nachrichtensequenz 108 erzeugt wird. Ein Kürzungsversuch wird als nicht erfolgreich betrachtet, wenn das System nicht mit demselben Fehler reagiert, der durch die fehlerauslösende Nachrichtensequenz 108 erzeugt wird. Die Kürzungskomponente 104 fährt mit einem weiteren Kürzungsversuch fort, bis eine geeignete Abbruchbedingung erfüllt ist. Einige Beispiele für geeignete Abbruchbedingungen sind unter anderem das Erreichen eines Zeitlimits oder bis alle möglichen Kürzungsversuche unternommen wurden. Zu diesem Zeitpunkt wird die verbleibende Sequenz, die zu demselben Fehler führt, der von der fehlerauslösenden Nachrichtensequenz 108 erzeugt wird, als eine gekürzte oder teilweise vereinfachte Sequenz 110 bereitgestellt. Bei einem Beispiel weist die gekürzte Sequenz 110 eine Anzahl von Nachrichten von weniger als 10 Prozent der Anzahl der in der ursprünglichen fehlerauslösenden Nachrichtensequenz 108 vorhandenen Nachrichten auf.
-
Die Nachrichtenkürzungskomponente 104 verwendet Informationen aus dem Modell 102, um Teilsequenzen und die Kandidaten zu erkennen, anstatt eine Sequenz auf beliebige Weise zu trennen. Infolgedessen wird das Prüfen oder Beurteilen von gültigen Teilsequenzen und ungültigen Kandidaten vermieden, und das Kürzen wird verhältnismäßig schneller ausgeführt.
-
Ein Beispiel für derartige Sequenzaufteilungs- und -kürzungsversuche wird nachfolgend anhand des beispielhaften Modells 200 aus 3A gegeben. Eine beispielhafte fehlerauslösende Nachrichtensequenz wird gezeigt als:
S0 – a > S1 – b > S2 – a > S2 – b > S1 – b > S2 – b > S1 – b > S2 – a > S2
-
Wobei „a” und „b” übergangsauslösende Nachrichten darstellen und S0 einen Anfangszustand darstellt, S1 den ersten Zustand 202, S2 den zweiten Zustand 204 und S3 den dritten Zustand 206 darstellt.
-
Die Sequenz kann in ein Präfix, Teilsequenzen und ein Postfix aufgeteilt werden. Das Präfix ist gegeben durch:
S0 – a > S1
-
Das Präfix ist eine Nachricht, die von einem Start- oder Anfangszustand aus einen Übergang zu einem Normalzustand des Modells auslöst. Hier ist S0 ein Anfangszustand und S1 ist einer der Normalzustände.
-
Eine Teilsequenz ist eine Sequenz von Nachrichten, die mit demselben Zustand beginnt und endet. Bei diesem Beispiel sind mehrere Teilsequenzen vorhanden, die bei dem Zustand S1 beginnen und bei dem Zustand S1 enden. Eine erste Teilsequenz wird gezeigt durch:
S1 – b > S2 – a > S2 – b > S1
-
Eine zweite Teilsequenz wird gezeigt durch:
S1 – b > S2 – b > S1
-
Ein Postfix wird bereitgestellt durch:
S1 – b > S2 – a > S2
-
Bei dem Postfix handelt es sich um eine Nachrichtensequenz an dem Ende der fehlerauslösenden Nachrichtensequenz. Bei einem Beispiel ist das Postfix eine Nachrichtensequenz, die von dem Zustand aus fortfährt, mit dem die vorstehenden Teilsequenzen beginnen und enden.
-
Ein erster Vereinfachungskandidat wird durch Entfernen der ersten Teilsequenz und der zweiten Teilsequenz bereitgestellt:
S0 – a > S1 – b > S2 – a > S2
-
Ein zweiter Vereinfachungskandidat wird durch Entfernen der ersten Teilsequenz bereitgestellt:
S0 – a > S1 – b > S2 – b > S1 – b > S2 – a > S2
-
Ein dritter Vereinfachungskandidat wird durch Entfernen der zweiten Teilsequenz wie gezeigt bereitgestellt:
S0 – a > S1 – b > S2 – a > S2 – b > S1 – b > S2 – a > S2
-
Die Vereinfachungskandidaten können von der Sequenzkürzungskomponente 104 geprüft werden, um zu ermitteln, ob die Kandidaten denselben Fehler ergeben wie die beispielhafte fehlerauslösende Nachricht. Wenn ja, kann einer der erfolgreichen Kandidaten als die teilweise vereinfachte oder gekürzte Sequenz bereitgestellt werden. Wenn mehrere erfolgreiche Kandidaten vorhanden sind, wird einer gemäß einem Auswahlkriterium ausgewählt. Bei einem Beispiel besteht das Kriterium in einer Länge des Vereinfachungskandidaten. Gemäß dem beispielhaften Kriterium würde der erste Vereinfachungskandidat, wenn er erfolgreich wäre, als die gekürzte Sequenz ausgewählt.
-
Die vorstehende fehlerauslösende Nachrichtensequenz wird angeführt, um das Verständnis zu erleichtern. Die fehlerauslösende Nachrichtensequenz 108 kann eine relativ große Anzahl von Nachrichten und Teilsequenzen aufweisen, was jede manuelle Vereinfachung undurchführbar macht. Beispielsweise kann die fehlerauslösende Nachrichtensequenz 108 bis zu 10.000 einzelne Nachrichten enthalten.
-
Demzufolge kann die Kürzungskomponente 104 eine geeignete Technik anwenden, um Teilsequenzen zu erkennen und Vereinfachungskandidaten zu erzeugen. Ein Beispiel für eine geeignete Technik ist das Delta-Debugging (Delta Debugging). Allgemein ausgedrückt handelt es sich bei Delta-Debugging um eine Technik, die fehlerauslösende Eingaben automatisch vereinfacht und isoliert. Diese Technik kann verwendet werden, um nach dem Aufteilen Teilsequenzen zu entfernen. Nach dem Kürzen der Nachrichtensequenz 109, um die gekürzte Sequenz 110 zu erzeugen, können einzelne Nachrichten der Sequenz 110 weiter vereinfacht und Debugging-Hinweise erzeugt werden wie nachfolgend beschrieben.
-
Die Nachrichtenvereinfachungskomponente 106 vereinfacht Nachrichten in einer Nachrichtensequenz. Die Nachrichtenvereinfachungskomponente 106 empfängt die gekürzte Sequenz 110 von der Sequenzkürzungskomponente 104 und stellt eine vereinfachte Sequenz mit Hinweisen bereit. Die Nachrichtenvereinfachungskomponente 106 analysiert die Nachrichten in der gekürzten Sequenz 110 und zieht verschiedene Werte für die Nachrichten in der Sequenz 110 in Betracht. Als ein Ergebnis der Analyse erzeugt die Nachrichtenkomponente 106 eine vereinfachte Sequenz 112 und mit verbleibenden Nachrichtenteilen in Zusammenhang stehende Hinweise.
-
Durch die Hinweise wird gekennzeichnet, welche Sequenz- und/oder Nachrichtenteile sich darauf auswirken, ob der Fehler beobachtbar ist.
-
Mithilfe der Hinweise kann auch eine Technologiegruppe oder ein Technologiebereich zum Analysieren der möglichen Fehler gekennzeichnet werden. Wenn sich die Hinweise zum Beispiel hauptsächlich auf Energieverwaltungsnachrichten beziehen, könnte die vereinfachte Sequenz einer Energieverwaltungs-Technikgruppe zur Analyse zur Verfügung gestellt werden.
-
3B ist ein Schaubild, das einen Abschnitt 300 einer fehlerauslösenden Nachrichtensequenz und Nachrichtenteile zeigt. Der Abschnitt 300 wird als ein Beispiel angeführt, um einzelne Nachrichten und Nachrichtenteile in einer Nachrichtensequenz zu veranschaulichen und zu beschreiben.
-
Der Abschnitt 300 wird mit einer ersten Nachricht 302 und einer zweiten Nachricht 304 gezeigt. Die erste Nachricht 302 verfügt über eine Vielzahl von Nachrichtenteilen 1 bis n. Die zweite Nachricht 304 verfügt über eine Vielzahl von Nachrichtenteilen 1 bis m. Jeder Nachrichtenteil kann einen oder mehrere Werte aufweisen, darunter einen Standardwert, einen deaktivierten Wert und dergleichen. Wie zu sehen ist, kann die Anzahl von Nachrichtenteilen pro Nachricht unterschiedlich sein.
-
Wieder auf 2 bezogen: Die Nachrichtenkomponente 106 analysiert gesetzte Werte für die Nachrichtenteile in der gekürzten Sequenz 110. Die Nachrichtenkomponente 106 kann auch Werte von Nachrichtenteilen abändern und die gekürzte Sequenz 110 mit den abgeänderten Nachrichtenteil-Werten prüfen.
-
Standardwerte werden im Allgemeinen als üblicher betrachtet, und es wird als weniger wahrscheinlich angesehen, dass sie einen bestimmten Fehler auslösen. Fehler treten üblicherweise bei Nachrichtenteilen auf, die auf nicht standardmäßige Werte gesetzt sind. Infolgedessen wird es bei Nachrichtenteilen, die auf Standardwerte gesetzt werden können, als unwahrscheinlich angesehen, dass sie mit dem erkannten Fehler in Zusammenhang stehen. Daher kann es bei Nachrichtenteilen, die nicht auf Standardwerte gesetzt werden können, als wahrscheinlich angesehen werden, dass sie mit dem erkannten Fehler in einem Zusammenhang stehen.
-
Zusätzlich können Nachrichtenteile auf einen deaktivierten Wert gesetzt werden, der den Nachrichtenteil und/oder ein zugehöriges Systemmerkmal wirkungsvoll deaktiviert. Bei Nachrichtenteilen, die deaktiviert sind, während die Nachrichtensequenz noch immer den erkannten Fehler ergibt, wird es ebenfalls als unwahrscheinlich angesehen, dass sie mit dem erkannten Fehler in Zusammenhang stehen.
-
Infolgedessen gibt die Nachrichtenkomponente 106 eine gekürzte Nachrichtensequenz zurück, bei der einzelne Nachrichtenteile auf Standardwerte gesetzt wurden. Darüber hinaus enthält die Nachrichtensequenz Debugging-Hinweise und löst denselben beobachtbaren Fehler aus wie die ursprüngliche Nachrichtensequenz 108.
-
4 ist ein Ablaufplan, der ein Verfahren 400 zum Vereinfachen einer Nachrichtensequenz veranschaulicht. Das Verfahren 400 vereinfacht eine fehlerauslösende Nachrichtensequenz und erzeugt Debugging-Hinweise. Eine vereinfachte Sequenz und die Debugging-Hinweise erleichtern das Erkennen einer Ursache eines bestimmten Fehlers.
-
Das Verfahren 400 beginnt bei Block 402, wo ein oder mehrere Vereinfachungskandidaten für eine Nachrichtensequenz erkannt werden. Die Nachrichtensequenz ist eine Sequenz von Nachrichten, die in einem ereignis- oder nachrichtengesteuerten System verwendet werden kann. Die Nachrichtensequenz verursacht üblicherweise einen Fehler in einem System. Die Nachrichtensequenz kann Annotationen enthalten, wie beispielsweise auslösende Übergänge für jede Nachricht in der Sequenz, Übergangswahrscheinlichkeiten und dergleichen.
-
Die Vereinfachungskandidaten können in der Nachrichtensequenz mithilfe einer geeigneten Technik erkannt werden, wie beispielsweise der vorstehend beschriebenen. Verschiedene Abschnitte der Nachrichtensequenz werden erkannt, darunter ein Präfix-Abschnitt (Anfangsabschnitt), ein Postfix-Abschnitt (ein Endabschnitt) und eine oder mehrere Teilsequenzen. Die Teilsequenzen werden mithilfe einer geeigneten Technik wie beispielsweise einem Greedy-Verfahren (Greedy Algorithm) erkannt, um Abschnitte der Nachrichtensequenz zu erkennen, die mit einem bestimmten Zustand beginnen und enden. Die Teilsequenzen werden dann mit dem Präfix-Abschnitt und dem Postfix-Abschnitt zusammengestellt, um den oder die Vereinfachungskandidaten zu erzeugen.
-
Der oder die Vereinfachungskandidaten werden dann bei Block 404 geprüft, um einen oder mehrere erfolgreiche Kandidaten zu erkennen. Ein erfolgreicher Kandidat ist ein Kandidat, der in einem zu dem ursprünglichen Fehler führt bzw. diesen reproduziert.
-
Eine gekürzte Nachrichtensequenz wird bei Block 406 gemäß dem oder den erfolgreichen Kandidaten erzeugt. Der erfolgreiche Kandidat oder die erfolgreichen Kandidaten können analysiert werden, um zu ermitteln, welche der Kandidaten die einfachsten sind. Bei einem Beispiel wird eine einer Anzahl von Nachrichten in dem Kandidaten entsprechende Länge berechnet und bei allen erfolgreichen Kandidaten verglichen. Der Kandidat mit der geringsten Länge wird ausgewählt und als die gekürzte Nachrichtensequenz bereitgestellt.
-
Eine Liste von Nachrichtenteilen und möglichen Werten für die Nachrichtenteile wird bei Block 408 erkannt. Die Nachrichtenteile sind Abschnitte einzelner Nachrichten wie beispielsweise in 3B gezeigt, die auf die möglichen Werte gesetzt werden können. Zu den möglichen Werten können ein Standardwert, ein deaktivierter Wert andere Werte und dergleichen zählen. Der Standardwert gibt einen Wert an, auf den der Nachrichtenteil am häufigsten oder üblicherweise gesetzt wird. Im Allgemeinen ist es bei einem Nachrichtenteil, der aktuell auf einen Standardwert gesetzt ist, nicht wahrscheinlich, dass er eine direkte oder unmittelbare Ursache des Fehlers ist. Außerdem ist es bei einem Nachrichtenteil, der deaktiviert werden kann, nicht wahrscheinlich, dass er eine Ursache des Fehlers ist.
-
Daher werden bei Block 410 die Nachrichtenteile auf Standardwerte gesetzt, und ein Teil der Nachrichtenteile wird als mögliche Fehler erkannt und als Debugging-Hinweise bereitgestellt. Aus Nachrichtenteilen, die auf Standardwerte gesetzt sind, die den Fehler nicht reproduzieren, wird eine Gruppe erkannt. Die Nachrichtenteile können auch verwendet werden, um nicht relevante Nachrichten zu erkennen und aus der gekürzten Nachrichtensequenz zu entfernen, um eine vereinfachte Nachrichtensequenz zu erzeugen.
-
Die vereinfachte Nachrichtensequenz und die Debugging-Hinweise können verwendet werden, um ein System zu debuggen, das mit der Nachrichtensequenz in Zusammenhang steht. Außerdem können die Nachrichtensequenz und/oder die Debugging-Hinweise verwendet werden, um für das Ausführen des Debugging Technologiebereiche zu erkennen oder zuzuweisen.
-
Obwohl die hier zur Verfügung gestellten Verfahren als eine Reihe von Handlungen oder Ereignissen veranschaulicht und beschrieben werden, ist die vorliegende Offenbarung nicht durch die veranschaulichte Anordnung solcher Handlungen oder Ereignisse eingeschränkt. Zum Beispiel können einige Handlungen in anderer Reihenfolge und/oder gleichzeitig mit anderen Handlungen oder Ereignissen als den hier veranschaulichten und/oder beschriebenen auftreten. Des Weiteren sind nicht alle veranschaulichten Handlungen erforderlich, und die Wellenformen sind lediglich veranschaulichend, und andere Wellenformen können beträchtlich von den veranschaulichten abweichen. Außerdem können eine oder mehrere der hier gezeigten Handlungen als eine oder mehrere voneinander getrennte Handlungen bzw. in einer oder mehreren voneinander getrennten Phasen ausgeführt werden.
-
Es sollte beachtet werden, dass der beanspruchte Gegenstand als ein Verfahren, eine Vorrichtung oder ein Erzeugnis realisiert werden kann, das/die standardmäßige Programmier- und/oder technische Verfahren verwendet, um Software, Firmware, Hardware oder eine beliebige Kombination von diesen herzustellen, um einen Computer so zu steuern, dass er den offenbarten Gegenstand realisiert (z. B. sind die vorstehend gezeigten Systeme nicht einschränkende Beispiele für Schaltungen, die verwendet werden können, um offenbarte Verfahren und/oder Varianten davon zu realisieren). Der Begriff „Erzeugnis” soll hier so verstanden werden, dass er ein Computerprogramm umfasst, auf das von jeder computerlesbaren Vorrichtung, jedem solchen Träger oder jedem solchen Medium aus zugegriffen werden kann. Fachleute werden erkennen, dass an dieser Konfiguration zahlreiche Änderungen vorgenommen werden können, ohne von dem Schutzumfang oder Wesensgehalt des offenbarten Gegenstands abzuweichen.
-
Es wird ein System zum Vereinfachen von Nachrichtensequenzen offenbart. Das System weist eine Kürzungskomponente und eine Nachrichtenvereinfachungskomponente auf. Die Kürzungskomponente ist dafür konfiguriert, eine fehlerauslösende Nachrichtensequenz zu empfangen und auf der Grundlage der fehlerauslösenden Nachrichtensequenz eine gekürzte Sequenz bereitzustellen. Die gekürzte Sequenz weist eine kleinere oder gleiche Anzahl von Nachrichten auf wie die ursprüngliche fehlerauslösende Nachrichtensequenz. Die Nachrichtenvereinfachungskomponente ist dafür konfiguriert, die gekürzte Sequenz zu empfangen und Nachricht in der gekürzten Sequenz zu vereinfachen, um eine vereinfachte Nachrichtensequenz zu erzeugen.
-
Es wird ein Verfahren zum Vereinfachen einer Nachrichtensequenz offenbart. Ein oder mehrere Vereinfachungskandidaten werden aus einer Nachrichtensequenz erkannt. Der oder die Vereinfachungskandidaten werden geprüft, um mindestens einen erfolgreichen Kandidaten zu erkennen. Eine gekürzte Nachrichtensequenz wird auf der Grundlage des erfolgreichen Kandidaten erzeugt. Außerdem können Nachrichtenteile der gekürzten Nachrichtensequenz erkannt und geprüft werden, um Hinweise auf wahrscheinlich fehlerhafte Nachrichtenteile zu erkennen.
-
Es wird ein Verfahren zum Vereinfachen einer Liste von Nachrichtenteilen offenbart. Eine Liste von Nachrichtenteilen aus einer Nachrichtensequenz wird offenbart. Der Nachrichtenteil oder die Nachrichtenteile werden auf einen ersten Wert gesetzt. Erfolgreiche Kandidaten werden als auf den ersten Wert gesetzte Nachrichtenteile erkannt, die einen Fehler der ursprünglichen Nachrichtensequenz reproduzieren. Nicht erfolgreiche Kandidaten-Nachrichtenteile werden erkannt und als Debugging-Hinweise bereitgestellt.
-
Obwohl die Erfindung im Hinblick auf eine oder mehrere Realisierungen veranschaulicht wurde, können Änderungen und/oder Abwandlungen an den veranschaulichten Beispielen vorgenommen werden, ohne von dem Wesensgehalt und Schutzbereich der angefügten Ansprüche abzuweichen. Darüber hinaus sollen, insbesondere im Hinblick auf die verschiedenen von den vorstehend beschriebenen Komponenten oder Strukturen (Baugruppen, Vorrichtungen, Schaltungen, Systeme usw.) ausgeführten Funktionen die zum Beschreiben derartiger Komponenten verwendeten Begriffe (eingeschlossen eine Bezugnahme auf ein „Mittel”), wenn nicht anders angegeben, jeder Komponente oder Struktur entsprechen, die die angegebene Funktion der beschriebenen Komponente ausführt (die z. B. funktionell gleichwertig ist), selbst wenn diese der offenbarten Struktur, die die Funktion in den hier veranschaulichten beispielhaften Realisierungen der Erfindung ausführt, strukturell nicht gleichwertig ist. Des Weiteren kann, obwohl ein bestimmtes Merkmal der Erfindung möglicherweise nur im Hinblick auf eine von mehreren möglichen Realisierungen offenbart wurde, ein solches Merkmal mit einem oder mehreren anderen Merkmalen der anderen Realisierungen kombiniert werden, je nachdem, wie es für eine beliebige gegebene oder eine bestimmte Anwendung gewünscht wird oder von Vorteil ist. Darüber hinaus sollen die Begriffe „enthaltend”, „enthält”, „aufweisend”, „weist auf”, „mit” oder deren Varianten, soweit sie in der ausführlichen Beschreibung oder den Ansprüchen verwendet werden, auf ähnliche Weise einschließend sein wie der Begriff „umfassend”.