DE112017002779T5 - Formatspezifische Datenverarbeitungsoperationen - Google Patents

Formatspezifische Datenverarbeitungsoperationen Download PDF

Info

Publication number
DE112017002779T5
DE112017002779T5 DE112017002779.9T DE112017002779T DE112017002779T5 DE 112017002779 T5 DE112017002779 T5 DE 112017002779T5 DE 112017002779 T DE112017002779 T DE 112017002779T DE 112017002779 T5 DE112017002779 T5 DE 112017002779T5
Authority
DE
Germany
Prior art keywords
data
graph
format
version
computer program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112017002779.9T
Other languages
English (en)
Inventor
Marshall A. Isman
John Joyce
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.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of DE112017002779T5 publication Critical patent/DE112017002779T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Abstract

Ein Verfahren beinhaltet Analysieren, durch einen Prozessor, einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine Operation an Daten mit einem ersten Format durchzuführen; und, durch einen Prozessor, Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, eines oder mehrerer zweiter Prozesse, die dazu ausgelegt sind, eine zweite Operation an Daten eines zweiten Formats, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.

Description

  • PRIORITÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht die Priorität auf die vorläufige US-Anmeldung mit der Serien-Nr. 62/345,217, eingereicht am 3. Juni 2016, und auf die US-Anmeldung mit der Serien-Nr. 15/433,467, eingereicht am 15. Februar 2017, deren Inhalte hiermit unter Bezugnahme in ihrer Gesamtheit eingeschlossen werden.
  • HINTERGRUND
  • Komplexe Berechnungen können häufig als ein Datenfluss durch einen gerichteten Graphen (ein „Datenflussgraph“ genannt) ausgedrückt werden, wobei Komponenten der Berechnung mit den Ecken des Graphen assoziiert sind und Datenflüsse zwischen den Komponenten Verbindungen (Bögen, Kanten) des Graphen entsprechen. Die Komponenten können Datenverarbeitungskomponenten, die Daten an einem oder mehreren Eingangsports empfangen, die Daten verarbeiten und Daten von einem oder mehreren Ausgangsports bereitstellen, und Datensatzkomponenten, die als eine Quelle oder Senke der Datenflüsse fungieren, beinhalten.
  • KURZBESCHREIBUNG
  • Bei einem Aspekt beinhaltet ein Verfahren Analysieren, durch einen Prozessor, einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten eines ersten Formats durchzuführen; und, durch einen Prozessor, Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, eines oder mehrerer zweiter Prozesse, die dazu ausgelegt sind, eine zweite Operation an Daten eines zweiten Formats, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  • Ausführungsformen können ein oder mehrere der folgenden Merkmale beinhalten.
  • Das Identifizieren eines ersten Prozesses beinhaltet ein Identifizieren eines ersten Prozesses, in dem die erste Operation vom Format der Daten abhängt.
  • Das Identifizieren eines ersten Prozesses beinhaltet ein Identifizieren eines ersten Prozesses, der nicht in der Lage ist, die erste Operation an Daten des zweiten Formats durchzuführen.
  • Das Verfahren beinhaltet Bestimmen eines Formats von Daten, die durch den ersten Prozess zu verarbeiten sind. Das Identifizieren eines ersten Prozesses beinhaltet ein Identifizieren eines ersten Prozesses, der nicht in der Lage ist, die erste Operation an Daten durchzuführen, die das Format der Daten, die durch den ersten Prozess zu verarbeiten sind, aufweisen.
  • Das Identifizieren eines ersten Prozesses beinhaltet ein Identifizieren eines ersten Datenverarbeitungselements des Computerprogramms, wobei das erste Datenverarbeitungselement dazu ausgelegt ist, den ersten Prozess auszuführen. Das Einschließen des einen oder der mehreren zweiten Prozesse in die zweite Version des mindestens einen Teils des Computerprogramms beinhaltet ein Einschließen eines oder mehrerer zweiter Datenverarbeitungselemente in die zweite Version des mindestens einen Teils des Computerprogramms, wobei das zweite Datenverarbeitungselement dazu ausgelegt ist, den einen oder die mehreren zweiten Prozesse auszuführen.
  • Das erste Format beinhaltet einen Datentyp.
  • Das erste Format beinhaltet eine Größe eines Datenelements.
  • Der erste Prozess ist dazu ausgelegt, die erste Operation an Datensätzen eines ersten Datensatzformats durchzuführen, und wobei der eine oder die mehreren zweiten Prozesse dazu ausgelegt sind, die zweite Operation an Datensätzen eines zweiten Datensatzformats durchzuführen. Das erste Datensatzformat umfasst einen Namen eines Feldes in den Datensätzen.
  • Das Verfahren beinhaltet Darlegen, in einer Benutzeroberfläche, einer Kennung der ersten Menge von einer oder mehreren Operationen.
  • Das Erzeugen der zweiten Version von mindestens einem Teil des Computerprogramms beinhaltet ein Erzeugen einer Kopie des Teils des Computerprogramms.
  • Das Verfahren beinhaltet Modifizieren der Kopie des Teils des Computerprogramms, sodass der erste Prozess weggelassen wird und der eine oder die mehreren zweiten Prozesse eingeschlossen werden.
  • Das Verfahren beinhaltet Ausführen der zweiten Version des Computerprogramms.
  • Der eine oder die mehreren zweiten Prozesse werden durch eine Overlay-Spezifikation definiert. Das Erzeugen der zweiten Version des Computerprogramms beinhaltet ein Erzeugen der zweiten Version basierend auf der ersten Version des Computerprogramms und der Overlay-Spezifikation. Die Overlay-Spezifikation identifiziert einen dem ersten Prozess vorgelagerten Prozess und/oder einen dem ersten Prozess nachgelagerten Prozess. Das Verfahren beinhaltet ein Identifizieren des ersten Prozesses basierend auf einer Analyse von ausführbarem Code, der den ersten Prozess definiert.
  • Das Computerprogramm umfasst einen Graphen. Der erste Prozess ist ein ausführbarer Prozess, der durch eine erste Komponente des Graphen repräsentiert wird, und wobei der eine oder die mehreren zweiten Prozesse ausführbare Prozesse sind, die durch eine oder mehrere zweite Komponenten des Graphen repräsentiert werden. Die eine oder die mehreren zweiten Komponenten sind dazu ausgelegt, Datensätze von einer vorgelagerten Komponente des Graphen zu empfangen. Die eine oder die mehreren zweiten Komponenten sind dazu ausgelegt, Datensätze einer nachgelagerten Komponente des Graphen bereitzustellen.
  • Bei einem Aspekt beinhaltet ein System Mittel zum Analysieren, durch einen Prozessor, einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Mittel zum Erzeugen, durch einen Prozessor, einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, eines oder mehrerer zweiter Prozesse, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  • Bei einem Aspekt beinhaltet ein System einen Prozessor, der mit einem Speicher gekoppelt ist, wobei der Prozessor und der Speicher ausgelegt sind zum Analysieren einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, eines oder mehrerer zweiter Prozesse, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  • Bei einem Aspekt speichert ein nicht flüchtiges computerlesbares Medium Befehle ab, um ein Datenverarbeitungssystem zu veranlassen zum Analysieren einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, eines oder mehrerer zweiter Prozesse, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  • Andere Merkmale und Vorteile werden aus der folgenden Beschreibung und aus den Ansprüchen ersichtlich.
  • Figurenliste
    • 1-3 sind Beispiele für Graphen.
    • 4 ist ein Beispiel für eine Overlay-Spezifikation.
    • 5 ist ein Blockdiagramm.
    • 6 ist ein Flussdiagramm.
    • 7-9 sind Blockdiagramme.
    • 10 ist ein Flussdiagramm.
  • BESCHREIBUNG
  • Eine ausführbare Anwendung, wie etwa ein Graph, kann einen oder mehrere Prozesse beinhalten, die für ein spezielles Format oder spezielle Formate von Datensätzen, die durch die ausführbare Anwendung zu verarbeiten sind, spezifisch sind. Derartige Prozesse sind in der Lage, Operationen an Daten nur des speziellen Formats oder der speziellen Formate durchzuführen, und der Versuch, diese Prozesse an Daten eines anderen Formats auszuführen, kann zu Fehlern oder einer fehlerhaften Verarbeitung führen. Wir beschreiben hier einen Ansatz zum Identifizieren von Prozessen einer ausführbaren Anwendung, die für ein spezielles Format oder spezielle Formate von Daten spezifisch sind. Um zu ermöglichen, dass die ausführbare Anwendung an Daten eines anderen Formats arbeitet, kann eine zweite Version der ausführbaren Anwendung erzeugt werden, in der diese formatspezifischen Prozesse weggelassen und ein oder mehrere andere Prozesse eingeschlossen werden. Diese anderen Prozesse, manchmal als Ersatzprozess bezeichnet, können eine Operation durchführen, die auf der Operation basiert, die durch die weggelassenen formatspezifischen Prozesse durchgeführt wird, die aber entweder für ein oder mehrere andere Datenformate spezifisch ist oder in der Lage ist, Operationen an einem beliebigen Datenformat durchzuführen. Der Einschluss eines Ersatzprozesses in eine zweite Version einer ausführbaren Anwendung ermöglicht der ausführbaren Anwendung, Daten eines anderen Formats als das Format, für das die ursprüngliche Version der ausführbaren Anwendung konfiguriert wurde, zu verarbeiten.
  • Ersatzprozesse können durch eine Overlay-Spezifikation definiert werden, die eine Datei ist, die von der ursprünglichen ausführbaren Anwendung (manchmal auch als die erste Anwendung bezeichnet) getrennt ist. Die Ersatzprozesse, die in der Overlay-Spezifikation definiert sind, können in die zweite Version der Anwendung (manchmal auch als die zweite Anwendung bezeichnet) hinzugefügt werden, ohne ein Teil der ursprünglichen Anwendung zu werden. Wenn beispielsweise die Anwendung kompiliert wird, zieht ein Compiler die Overlay-Datei in Betracht und erzeugt die zweite Anwendung, in der ein oder mehrere Prozesse weggelassen werden und ein oder mehrere entsprechende Ersatzprozesse eingeschlossen werden. Mit weggelassen meinen wir, dass ein Prozess, der in der ersten Anwendung eingeschlossen ist, nicht in der zweiten Anwendung eingeschlossen ist. Die entsprechende Ersatzkomponente wird in die zweite Anwendung eingefügt, z. B. an die Stelle, an der sich der weggelassene Prozess in der ersten Anwendung befand.
  • Ersatzprozesse sind Beispiele für Einfügungen. Andere Beispiele für Einfügungen beinhalten Testquellen und Sondierungen, die auch durch eine Overlay-Spezifikation definiert werden können. Eine Testquelle ist eine Ersatzdatenquelle, die Daten, wie etwa Testdaten, zur Verarbeitung durch die ausführbare Anwendung bereitstellen kann. Eine Sondierung ist ein alternatives Ziel, in das Daten durch die ausführbare Anwendung geschrieben werden. Einfügungen können z. B. zum Testen oder Debuggen einer ausführbaren Anwendung, wie etwa eines Graphen, nützlich sein. Beispielsweise will ein Tester oder Entwickler möglicherweise einen Test unter Verwendung einer speziellen Menge von Eingangsdaten durchführen, um die Effekte von Veränderungen an der Anwendung zu beobachten. Durch das Ausführen der Anwendung unter Verwendung einer konsistenten Menge von Eingangsdaten sowohl vor als auch nach der Änderung, kann der Effekt dieser Veränderung an der Datenausgabe durch die Anwendung überwacht werden. In manchen Beispielen kann der Tester eine spezifische Menge von Testdaten aufweisen, die zu verwenden sind, wenn die Anwendung getestet wird, wie etwa eine Menge von Testdaten, die bewirken, dass alle Funktionen der Anwendung mindestens einmal ausgeführt werden. Gleichermaßen wünscht der Tester möglicherweise, die Datenausgabe durch die Anwendung in ein spezielles Ziel zu schreiben, das sich von dem standardmäßigen Ziel, in das die Anwendung die Ausgangsdaten schreibt, unterscheidet.
  • Bei manchen Beispielen können die Einfügungen automatisch basierend auf einer automatisierten Analyse der Anwendung definiert werden. Ersatzkomponenten können beispielsweise automatisch basierend auf einer automatisierten Identifikation von formatspezifischen Prozessen in der Anwendung definiert werden. Testquellen und Sondierungen können automatisch basierend auf einer automatisierten Identifikation der Datenquellen und Ausgangsdatensenken der Anwendung definiert werden.
  • Bei manchen Beispielen ist die ausführbare Anwendung ein graphbasierter Prozess. Ein graphbasierter Prozess beinhaltet eine oder mehrere Komponenten, die jeweils einen ausführbaren Prozess repräsentieren und durch Flüsse, die einen Fluss von Daten von einer Komponente zu einer anderen angeben, verbunden sind. Ersatzprozesse sind Objekte, die mit einer Komponente im graphbasierten Prozess assoziiert sind. Ein Ersatzprozess (manchmal auch eine Ersatzkomponente genannt) kann eine bestehende Komponente in einem Graphen ersetzen, sodass Daten, die durch die bestehende Komponente verarbeitet worden wären, stattdessen durch die Ersatzkomponente verarbeitet werden. Testquellen- und Sondierungseinfügungen sind Objekte, die mit einem Fluss im graphbasierten Prozess assoziiert sind. Eine Testquelle kann Daten, die durch einen Fluss laufen (z. B. vorgelagerte Daten), mit neuen Daten ersetzen, sodass vorgelagerte Berechnungen nicht erneut für jede Ausführung des Graphen ausgeführt werden müssen. Eine Testquelle kann beispielsweise eine Datenquelle ersetzen, sodass dem Graphen Testdaten von der Testquelle anstatt von der Datenquelle bereitgestellt werden. Eine Sondierung kann Daten, die durch einen Fluss laufen, überwachen, wenn der Graph ausgeführt wird, und kann bewirken, dass die Daten für eine spätere Untersuchung oder Wiederverwendung gespeichert werden. Eine Sondierung kann beispielsweise Daten empfangen, die ansonsten in eine Ausgangsdatensenke gespeichert worden wären, wie etwa eine Datenbank.
  • Die in der Overlay-Spezifikation definierten Einfügungen können während der Ausführung in die Anwendung hinzugefügt werden, ohne ein Teil der ursprünglichen Anwendung zu werden. Wenn die Anwendung kompiliert wird, zieht ein Compiler die Overlay-Datei in Betracht und erzeugt eine ausführbare Anwendung, die die Einfügungen beinhaltet. Wir beziehen uns manchmal auf die ursprüngliche Anwendung als die erste Version der Anwendung und auf die Anwendung, die die Einfügungen beinhaltet, als die zweite Version der Anwendung. Bei dem Beispiel für einen graphbasierten Prozess kann der ausführbare Graph beispielsweise visuell als eine zweite Version des Graphen repräsentiert werden, die die Komponenten einer ersten Version des Graphen kombiniert mit den Einfügungsobjekten, die in der Overlay-Spezifikation definiert sind, beinhaltet. Bei manchen Beispielen ist der ausführbare Graph ein Shell-Skript und wird nicht in einer Datei abgespeichert. Bei manchen Beispielen werden der ausführbare Graph und der Graph in separaten Dateien abgespeichert.
  • Die Einbeziehung der Einfügungen in die zweite Version des Graphen modifiziert nicht die erste Version des Graphen. Stattdessen bleiben die Einfügungsdefinitionen in einer separaten Datei (z. B. der separaten Overlay-Spezifikation) und können in gewöhnliche Graphkomponenten zur Einfügung in den modifizierten Graphen zu Beginn der Codeerzeugung umgewandelt werden. Demzufolge besteht kein Risiko, den ursprünglichen Graphen versehentlich zu beschädigen.
  • 1 stellt ein Beispiel für einen Graphen 100 dar. Der Graph 100 ist eine visuelle Repräsentation eines Computerprogramms, das Datenverarbeitungskomponenten beinhaltet, die durch Flüsse verbunden sind. Ein Fluss, der zwei Komponenten verbindet, gibt an, dass Datensätze, die von der ersten Komponente ausgegeben werden, zu der zweiten Komponente weitergegeben werden. Eine erste Komponente referenziert eine zweite Komponente, wenn die erste Komponente durch einen Fluss mit einer zweiten Komponente verbunden ist.
  • Eine Datenquelle 102, wie etwa eine Datenbank (wie dargestellt), eine Datei, eine Warteschlange, eine ausführbare Anweisung (z. B. SQL-Anweisung) oder ein anderer Typ von Datenquelle, die sich extern zum Graphen 100 befindet, beinhaltet einen oder mehrere Datensätze, die durch den Graphen 100 zu verarbeiten sind. Mit extern meinen wir, dass die Daten der Datenquelle 102 nicht im Graphen 100 abgespeichert sind. Die Datenquelle 102 ist durch einen Fluss mit einer Filterkomponente 103 verbunden. Im Allgemeinen filtert oder entfernt eine Filterkomponente Datensätze, die vorbestimmte Kriterien nicht erfüllen. In diesem Beispiel erlaubt die Filterkomponente 103 Datensätze von Kunden, die in Ohio, USA, leben und weist die anderen Datensätze zurück. Die vierte Komponente 103 ist mit einer Sortierungskomponente 104 verbunden, die die gefilterten Datensätze nach Postleitzahl sortiert. Die Sortierungskomponente 104 ist mit einer Replikationskomponente 106 verbunden, die eine Kopie von Datensätzen erzeugt, sodass sie auf zwei unterschiedliche Weisen verarbeitet werden können. Die Replikationskomponente ist mit einer Neuformatierungskomponente 108 und einer Filtern-nach-Ausdruck-Komponente 110 verbunden. Eine Instanz von Datensätzen von Kunden, die in Ohio, USA, leben, die nach Postleitzahl sortiert sind, wird zum Beispiel zu der Neuformatierungskomponente 108 gesendet, und eine andere Instanz der Datensätze wird zu der Filtern-nach-Ausdruck-Komponente 110 gesendet. Die Neuformatierungskomponente 108 ändert das Format der Datensätze zu einem anderen Datenformat und die Filtern-nach-Ausdruck-Komponente 110 entfernt Datensätze basierend auf einem mit dem Datensatz assoziierten Ausdruck. Die Neuformatierungskomponente 108 und die Filtern-nach-Ausdruck-Komponente 110 sind mit einer Erfassungskomponente 112 verbunden, die die empfangenen Datensätze kombiniert, und die Erfassungskomponente ist mit einer Ausgangsdatensenkenkomponente 114 verbunden, die sich extern zum Graphen befindet, wie etwa einer Datenbank (wie dargestellt), einer Datei, einer Warteschlange oder einer nachgelagerten Verarbeitungskomponente. Mit extern meinen wir, dass die Daten der Ausgangsdatensenke 114 nicht im Graphen 100 abgespeichert sind. Obwohl der Graph 100 viele Flüsse zwischen Komponenten beinhaltet, sind in diesem Beispiel ein Fluss 116 zwischen der Datenquelle 102 und der Filterkomponente 103 (den wir manchmal als den Quellen-Filter-Fluss 116 bezeichnen) und ein Fluss 118 zwischen der Erfassungskomponente 112 und der Ausgangsdatensenke 114 (den wir manchmal als den Erfassungs-Ausgabe-Fluss 118 bezeichnen) von besonderem Interesse.
  • Eine oder mehrere der Komponenten eines Graphen können eine formatspezifische Komponente sein. Eine formatspezifische Komponente ist eine Komponente, die nur in der Lage ist, Daten eines oder mehrerer spezieller Formate zu verarbeiten. Ein Datenformat ist eine Charakteristik eines individuellen Datenelements (z. B. eine Charakteristik eines Werts in einem Feld eines Datensatzes) oder eine Charakteristik eines Datensatzes (manchmal als Datensatzformat bezeichnet). Beispiele für eine Charakteristik eines individuellen Datenelements beinhalten eine Anzahl von Bytes für das Datenelement, wie etwa eine Größe des Datenelements (z. B. Einzelbyte-ASCII-Datenelemente oder Mehrbyte-Datenelemente), einen Typ des Datenelements (z. B. String, Integer, Boolean oder einen anderen Datentyp) oder eine andere Charakteristik eines individuellen Datenelements. Beispiele für ein Datensatzformat beinhalten den Namen eines Feldes in einem Datensatz, die Position eines Feldes in einem Datensatz, die Anzahl von Feldern in einem Datensatz, einen hierarchischen Datensatz, ein Array oder sich wiederholende Gruppen von Feldern, ein verschachteltes Array, einen Teildatensatz oder eine andere Charakteristik eines Datensatzes
  • Wenn ein Graph eine Komponente beinhaltet, die für ein spezielles Datenformat spezifisch ist, ist der Graph möglicherweise nur in der Lage, Daten des speziellen Formats zu verarbeiten. Falls der Graph verwendet wird, um Daten mit einem anderen Format bearbeiten, kann ein Fehler auftreten oder die Daten können fehlerhaft verarbeitet werden. Um zu ermöglichen, dass der Graph die Daten mit dem anderen Format verarbeitet, können eine oder mehrere der formatspezifischen Komponenten mit Komponenten ersetzt werden, die in der Lage sind, die Daten des anderen Formats zu verarbeiten. Die Ersatzkomponenten können formatspezifische Komponenten sein, die für die anderen Komponenten spezifisch sind, oder können Komponenten sein, die Daten eines beliebigen Formats verarbeiten können (die wir manchmal formatagnostische Komponenten nennen).
  • Im Beispiel von 1 sortiert die Sortierungskomponente 104 beispielsweise Datensätze nach dem Wert im Postleitzahl-Feld. Die Sortierungskomponente 104 ist in diesem Beispiel eine formatspezifische Komponente, die nur in der Lage ist, Integer zu verarbeiten. Ein Operator des Graphen 100 will den Graphen 100 möglicherweise verwenden, um eine neue Datenmenge zu verarbeiten, in der das Postleitzahl-Feld alphanumerische Strings beinhalten kann.
  • Mit Bezug auf 2 wird eine zweite Version 200 des Graphen 100 erzeugt, in der die Sortierungskomponente 104 weggelassen und eine Ersatzsortierungskomponente 204 eingeschlossen wird. Die Ersatzsortierungskomponente 204 wird in der zweiten Version 200 des Graphen an dieselbe Stelle platziert wie die Sortierungskomponente 104 und ist in der Lage, alphanumerische Strings zu sortieren. Die anderen Komponenten des Graphen sind unverändert. Die zweite Version 200 des Graphen ist somit in der Lage, die neue Datenmenge zu verarbeiten.
  • Manche Komponenten können in der Lage sein, Daten eines beliebigen Formats zu empfangen und an diesen zu arbeiten, können aber Daten eines spezifischen Formats ausgeben. Falls Daten eines anderen Formats als Ausgabe gewünscht werden (z. B. als Eingabe in eine andere Anwendung bereitgestellt werden sollen, die ein spezielles Format spezifiziert), ist der Graph möglicherweise nicht in der Lage, diese Daten bereitzustellen. Um zu ermöglichen, dass der Graph die Daten des gewünschten Formats ausgibt, können eine oder mehrere der formatspezifischen Komponenten mit Komponenten ersetzt werden, die in der Lage sind, die Daten des gewünschten Formats auszugeben.
  • Wiederum mit Bezug auf 1 ist die Neuformatierungskomponente 108 eine formatspezifische Komponente, die Daten eines speziellen Formats ausgibt. Die Neuformatierungskomponente 108 kann beispielsweise Datensätze mit vier Feldern ausgeben: Name, Konto_Num, Kontostand und Trans_Datum. Ein Operator des Graphen 100 will möglicherweise, dass der Graph 100 Ausgangsdaten eines anderen Formats erzeugt, sodass die Ausgangsdaten beispielsweise durch eine andere Anwendung mit spezifischen Anforderungen für das Datensatzformat ihrer Eingangsdaten verarbeitet werden können. In diesem Beispiel beinhaltet das gewünschte Format der Ausgangsdaten vier Felder: Kunden_Name, Kontostand, Konto_Num und Trans_Datum. Das heißt, das erste Feld der Ausgangsdaten muss umbenannt werden und das zweite und dritte Feld müssen getauscht werden.
  • Mit Bezug auf 3 wird eine zweite Version 300 des Graphen 100 erzeugt, in der die Neuformatierungskomponente 108 weggelassen und eine Ersatzneuformatierungskomponente 308 eingeschlossen wird. Die Ersatzneuformatierungskomponente 308 wird in der zweiten Version 300 des Graphen an dieselbe Stelle platziert wie die Neuformatierungskomponente 108 und ist in der Lage, Ausgangsdaten des gewünschten Formats zu erzeugen. Die anderen Komponenten des Graphen sind unverändert.
  • Bei manchen Beispielen können auch andere Komponenten eines Graphen weggelassen werden, wie etwa eine oder mehrere Komponenten, die einer formatspezifischen Komponente vorgelagert oder nachgelagert sind. In manchen Fällen kann eine Ersatzkomponente anstelle einer oder mehrerer der anderen weggelassenen Komponenten eingeschlossen werden.
  • Bei manchen Beispielen kann ein Tester des Graphen 100 wünschen, den Graphen 100 zu debuggen, um seine Funktionalität zu verifizieren. In manchen Fällen will ein Tester möglicherweise Daten verifizieren, wenn sie von einer Komponente zu einer anderen fließen. In manchen Fällen will ein Tester möglicherweise vorgelagerte Komponenten in einem Graphen 100 umgehen und stattdessen Daten an den Stellen der umgangenen Komponenten einfügen. In manchen Fällen will ein Tester möglicherweise die Arbeitsweise des Graphen 100 unter Verwendung einer konsistenten Menge von Eingangsdaten testen, um den Effekt des Änderns des Graphen an den durch den Graphen ausgegebenen Daten zu überwachen. In manchen Fällen will ein Tester möglicherweise die Arbeitsweise des Graphen 100 unter Verwendung einer Menge von Eingangsdaten testen, von denen der Tester weiß, dass sie bewirken, dass alle Funktionen des Graphen mindestens einmal ausgeführt werden, wodurch ein vollständiges Testen des Graphen ermöglicht wird.
  • Beim Debuggen des Graphen 100 kann es wünschenswert sein, davon abzusehen, den Graphen zu modifizieren. Ein Tester kann zum Beispiel wünschen, nicht zu riskieren, die Funktionalität des Graphen zu beschädigen. Bei manchen Beispielen kann ein Tester einen eingeschränkten oder keinen Zugriff auf den Graphen besitzen (z. B. können dem Tester die notwendigen Berechtigungen fehlen, den Graphen zu editieren). Um den Graphen 100 zu debuggen, ohne den Graphen zu modifizieren, kann ein Overlay zum Debuggen des Graphen verwendet werden. Bei manchen Beispielen kann das Overlay automatisch, z. B. basierend auf einer automatisierten Analyse des Graphen, spezifiziert werden. Eine zweite Version von mindestens einem Teil des Graphen 100 kann basierend auf dem ursprünglichen Graphen 100 (manchmal die erste Version des Graphen genannt) und der Overlay-Spezifikation erzeugt werden.
  • Eine Sondierung sammelt oder überwacht Daten, wenn sie durch einen Fluss zwischen Komponenten des Graphen laufen, z. B. entlang eines Flusses von einer ersten Komponente zu einer zweiten Komponente oder entlang eines Flusses zu einer Ausgangsdatensenke. Daten können zum Beispiel überwacht, für eine spätere Untersuchung gespeichert oder zur Wiederverwendung gespeichert werden, wenn sie durch einen Fluss laufen, wenn der Graph 100 ausgeführt wird. Die Overlay-Spezifikation kann eine Sondierung definieren, die sich auf einen Fluss bezieht, der Daten, die gesammelt oder überwacht werden sollen, führt. Die Sondierung spezifiziert den Fluss, durch den Daten gesammelt oder überwacht werden sollen. Die Sondierung kann dazu ausgelegt sein, spezielle Werte zu melden, oder zu melden, wenn sich ein spezieller Wert innerhalb oder außerhalb eines vorbestimmten Bereichs befindet. Daten, die durch die Sondierung weitergegeben werden, können für eine spätere Analyse oder Verwendung gespeichert werden, die Daten können zum Beispiel in einer flachen Datei oder relationalen Datenbank abgespeichert werden.
  • Bei manchen Beispielen kann sich die Sondierung auf einen Fluss von einer Komponente des Graphen 100 zu einer Ausgangsdatensenke, wie etwa einer Datei oder einer Datenbank, beziehen. Durch das Platzieren einer Sondierung entlang eines Flusses zu einer Datensenke während des Debuggens des Graphen 100 empfängt die Sondierung die Daten, die vom Graphen 100 ausgegeben werden. Jedes Mal, wenn der Graph 100 in einem Debugging-Modus ausgeführt wird, können die Ausgangsdaten beispielsweise durch eine Sondierung empfangen und in eine Datei geschrieben werden, sodass die Ausgangsdaten von verschiedenen Graphausführungen verglichen oder anderweitig evaluiert werden können. In manchen Beispielen wird eine Ausgangsdatensenke automatisch identifiziert und ein Overlay wird automatisch spezifiziert, um eine Sondierung zur Einfügung vor der identifizierten Ausgangsdatensenke zu definieren.
  • Bei manchen Beispielen kann sich die Sondierung auf einen Fluss von einer vorgelagerten Komponente des Graphen 100 zu einer nachgelagerten Komponente beziehen. Durch das Platzieren einer Sondierung entlang eines Flusses zu einer nachgelagerten Komponente während des Debuggens des Graphen 100 empfängt die Sondierung die Daten, die ansonsten durch die nachgelagerte Komponente empfangen worden wären, wodurch verhindert wird, dass die nachgelagerte Komponente ausgeführt wird. Ein Tester kann beispielsweise wünschen, die Ergebnisse der Graphverarbeitung vor der nachgelagerten Komponente zu überwachen. Die nachgelagerte Komponente kann beispielsweise eine Funktionalität aufweisen, die einen Effekt extern zum Graphen aufweist, z. B. kann die nachgelagerte Komponente eine Textnachricht zu jeder Person senden, deren Kreditkartendatensatz durch die nachgelagerte Komponente verarbeitet wird. Während des Debuggens des Graphen kann ein Tester wünschen, derartige Komponenten zu deaktivieren, die einen Effekt extern zum Graphen aufweisen.
  • Eine Testquelle fügt Daten in den Graphen 100 bei einem speziellen Fluss zwischen zwei Komponenten des Graphen 100 ein. Die Overlay-Spezifikation kann eine Testquelle definieren, die sich auf einen Fluss bezieht, der Daten, die mit Daten von der Testquelle ersetzt werden sollen, führt. Bei manchen Beispielen ersetzt die Testquelle Daten, die normalerweise durch einen Fluss laufen würden, mit neuen Daten. Bei manchen Szenarien kann die Testquelle dazu ausgelegt sein, zuvor gespeicherte Daten zu lesen und die Daten zu der nachgelagerten Komponente weiterzugeben. Bei manchen Beispielen fügt eine Testquelle Daten in den Graphen 100 an einem Fluss von einer Datenquelle, wie etwa einer Datenbank oder Datei, ein. Die Testquelle kann Daten mit demselben Format wie die Daten, die ansonsten durch die Datenquelle bereitgestellt worden wären, einfügen. Bei manchen Beispielen wird eine Datenquelle automatisch identifiziert und ein Overlay wird automatisch spezifiziert, um eine Testquelle zum Ersetzen der identifizierten Datenquelle zu definieren.
  • Bei manchen Beispielen können die Ergebnisse der Ausführung des Graphen 100 bis zu einem gewissen Punkt (z. B. bis zu einer gewissen Komponente) zuvor verifiziert worden sein. Mit anderen Worten können vorgelagerte Prozessfunktionen bis zu einem gewissen Punkt verifiziert worden sein. In derartigen Fällen kann es ineffizient sein, dass vorgelagerte Komponenten Funktionen jedes Mal, wenn der Graph 100 ausgeführt wird, erneut verarbeiten. Die Testquelle kann Daten (z. B. die zuvor verifizierten Daten) in die Graphen an diesem gewissen Punkt einfügen. Auf diese Art und Weise können ganze Abschnitte eines Graphen 100, die zuvor ausgeführt wurden, umgangen werden.
  • 4 stellt ein Beispiel für eine Overlay-Spezifikation 200 dar, die eine oder mehrere Einfügungen definiert. Eine Einfügung kann ein Objekt sein, das mit einem Fluss eines Graphen (z. B. des Graphen 100) assoziiert ist, und kann die Form einer Sondierung, einer Testquelle oder einer Ersatzkomponente annehmen. Im Beispiel von 4 beinhaltet die Overlay-Spezifikation 200 eine Testquellendefinition 201 und eine Sondierungsdefinition 213. Die Overlay-Spezifikation 200 kann in einer Datei abgespeichert werden, wie etwa einer Datei, die von einer Datei, die die Spezifikation für den Graphen 100 enthält, separat ist.
  • Die Overlay-Spezifikation 200 startet mit einem 3-zeiligen Header, der den Graphen spezifiziert, dem die Einfügungsdefinitionen entsprechen können. Dem Header folgt eine Testquellendefinition 201, die Sondierungsdefinition 213 und eine Ersatzkomponentendefinition (nicht dargestellt).
  • Die Testquellendefinition 201 beinhaltet einen Namen 202, einen vorgelagerten Port 204, einen nachgelagerten Port 206, einen Einfügungstyp 208, einen Prototyppfad 210 und einen Layout-Parameter 212.
  • Der vorgelagerte Port 204 der Testquellendefinition 201 referenziert einen Ausgangsport der Komponente, die direkt vorgelagert vom Fluss liegt, wo die Testquelle in den Graphen 100 eingefügt werden soll. Eine Komponente, die vorgelagert von einem Fluss liegt, ist eine Komponente, von deren Ausgangsport Daten in den Fluss ausgegeben werden. Im Beispiel von 4 zeigt der vorgelagerte Port 204 der Testquellendefinition 201 zum Ausgang der Datenbank 102. Der nachgelagerte Port 206 der Testquellendefinition 201 referenziert einen Eingangsport der Komponente, die direkt nachgelagert vom Fluss liegt, wo die Testquelle in den Graphen 100 eingefügt wird. Eine Komponente, die nachgelagert von einem Fluss liegt, ist eine Komponente, an deren Eingangsport Daten vom Fluss empfangen werden. Im Beispiel von 4 zeigt der nachgelagerte Port 206 der Testquellendefinition zum Eingang der Filterkomponente 103. Die Testquellendefinition 201 in diesem Beispiel gibt somit an, dass eine Testquelle in den Fluss zwischen dem Ausgang der Datenbank 102 und dem Eingang der Filterkomponente 103 platziert werden soll, sodass Daten, die durch die Testquelle bereitgestellt werden, Eingangsdaten von der Datenbank 102 ersetzen können.
  • Der Einfügungstyp 208 definiert, ob die Einfügung eine Testquelle, eine Sondierung oder eine Ersatzkomponente ist. Im Beispiel von 4 definiert ein Wert von „0“ eine Testquelle, ein Wert von „1“ definiert eine Sondierung und ein Wert von „2“ definiert eine Ersatzkomponente. Andere Werte können auch zum Definieren des Typs der Einfügung verwendet werden. Da diese Einfügung eine Testquelle ist, ist der Wert des Einfügungstyps 208 ,,0".
  • Der Prototyppfad 210 gibt den Typ der Einfügung an. In diesem Beispiel, da diese Einfügung eine Testquelle ist, spezifiziert der Prototyppfad 210 eine Eingabedateikomponente. Der Prototyppfad 210 zeigt zu einer Datei, die den Code enthält, der eine Einfügung des speziellen Typs definiert. Ein Layout-Parameter 212 definiert einen Ort einer Quelldatei, die Daten enthält, die die Testquelle enthalten wird. Bei manchen Beispielen ist der Ort ein Dateipfad. Die Daten in der Quelldatei sollen die Daten ersetzen, die normalerweise durch den Fluss, der durch den vorgelagerten Port 204 und den nachgelagerten Port 206 definiert wird, laufen würden. Das heißt, wenn die Testquelle am Graphen 100 angewendet wird, empfängt die Filterkomponente 103 die Daten in der Quelldatei, anstatt Daten von der Datenbank 102 zu empfangen.
  • Die Quelldatei enthält Daten mit demselben Format wie die Daten, die ansonsten durch die Komponente, die der Testquelle nachgelagert ist, empfangen werden würden. Bei manchen Beispielen können die Daten in der Quelldatei dieselben sein wie die Daten in der Datenquelle (z. B. der Datenbank), die sich vorgelagert von der Testquelle befindet. Beispielsweise können Datensätze von der Datenbank 102 in die Quelldatei kopiert werden. Bei manchen Beispielen gibt die Datenquelle eine ausführbare Anweisung an, wie etwa eine SQL-Abfrage. Bei diesen Beispielen kann die SQL-Abfrage ausgeführt werden und die Ergebnisse der Abfrageausführung können in der Quelldatei abgespeichert werden. Bei manchen Beispielen können die Daten der Quelldatei von irgendwo außer der Datenquelle erhalten werden. Beispielsweise können die Daten in der Quelldatei erzeugt werden, um zu gewährleisten, dass gewisse Daten (z. B. gewisse Wertebereiche) für ein vollständiges Debuggen des Graphen 100 verarbeitet werden. Bei manchen Beispielen bleiben die Daten der Quelldatei dieselben, selbst wenn sich die Daten in der Datenquelle ändern, wodurch ermöglicht wird, dass ein Debuggen mit einer konsistenten Menge von Eingangsdaten fortgesetzt wird.
  • Bei manchen Beispielen können die Daten in der Quelldatei dieselben sein wie die Daten, die durch den Fluss während einer normalen Ausführung des Graphen 100 laufen würden, aber durch das Einfügen der Daten unter Verwendung einer Testquelle kann davon abgesehen werden, dass vorgelagerte Komponenten eine Verarbeitung durchführen. Eine vorgelagerte Komponente, wie etwa die Replikationskomponente 106, kann zum Beispiel erfordern, dass große Mengen an Systemressourcen die Daten verarbeiten, oder kann im Vergleich zu anderen Komponenten im Datenflussgraph 100 eine relativ lange Zeit brauchen, die Daten zu verarbeiten. Demzufolge können bekannte Daten (z. B. dieselben Daten, die während einer normalen Ausführung durch den Fluss laufen würden) in den Fluss eingefügt werden, um Zeit zu sparen oder Systemressourcen einzusparen.
  • Die Sondierungsdefinition 213 beinhaltet einen Namen 214, einen vorgelagerten Port 216, einen nachgelagerten Port 218, einen Einfügungstyp 220 und einen Prototyppfad 222.
  • Der vorgelagerte Port 216 der Sondierungsdefinition 213 referenziert einen Ausgangsport der Komponente, die direkt vorgelagert vom Fluss liegt, wo die Sondierung in den Graphen 100 eingefügt wird. Im Beispiel von 4 zeigt der vorgelagerte Port 216 der Sondierungsdefinition 213 zum Ausgang der Erfassungskomponente 112. Der nachgelagerte Port 218 der Sondierungsdefinition 213 referenziert einen Eingangsport der Komponente, die direkt nachgelagert vom Fluss liegt, wo die Sondierung in den Graphen 100 eingefügt werden soll. Im Beispiel von 4 zeigt der nachgelagerte Port 218 der Sondierungsdefinition 213 zur Ausgangsdatensenkenkomponente 114. Die Sondierungsdefinition 213 in diesem Beispiel gibt somit an, dass eine Sondierung in den Fluss zwischen dem Ausgang der Erfassungskomponente 112 und der Ausgangsdatensenkenkomponente 114 platziert werden soll, sodass die Sondierung Daten empfängt, die ansonsten in die Ausgangsdatensenkenkomponente geschrieben worden wären.
  • Der Einfügungstyp 220 der Sondierungsdefinition 213 definiert, ob die Einfügung eine Testquelle, eine Sondierung oder eine Ersatzkomponente ist. Da diese Einfügung eine Sondierung ist, ist der Wert des Einfügungstyps 220 „1“.
  • Der Prototyppfad 222 gibt den Typ der Einfügung an. In diesem Beispiel, da diese Einfügung eine Sondierung ist, spezifiziert der Prototyppfad 222 eine Ausgabedateikomponente. Der Prototyppfad 222 zeigt zu einer Datei, die den Code enthält, der eine Einfügung des speziellen Typs definiert.
  • Bei manchen Beispielen werden die Daten, die durch die Sondierung zu überwachen sind, in einer Datei abgespeichert, die automatisch durch das System erzeugt wird. Die Datei kann an einem Ort abgespeichert werden, der durch das System bestimmt wird. Die Sondierung überwacht Daten, die durch den Fluss, der durch den vorgelagerten Port 216 und den nachgelagerten Port 218 definiert wird, laufen. Das heißt, wenn die Sondierung am Graphen 100 angewendet wird, werden die Daten, die vom Ausgang der Erfassungskomponente 112 zum Eingang der Ausgangsdatensenkenkomponente 114 laufen, überwacht und in der Datei abgespeichert, die automatisch durch das System erzeugt wird. Bei manchen Beispielen können die Daten überwacht werden, bevor sie abgespeichert werden. Die Datei ist in der Lage, Daten desselben Formats zu empfangen, die durch die Komponente, die durch die Sondierungsdefinition referenziert wird (in diesem Beispiel die externe Datensenkenkomponente 114), empfangen worden wären.
  • Bei manchen Beispielen können eine oder mehrere Sondierungs- oder Testquelleneinfügungen durch die Overlay-Spezifikation infolge einer automatisierten Analyse des Graphen 100 definiert werden. Beispielsweise kann eine automatisierte Analyse des Graphen 100 durchgeführt werden, um jegliche Datenquellen, wie etwa Datenbanken, Dateien oder andere Typen von Datenquellen, zu identifizieren. Eine oder mehrere der identifizierten Datenquellen können automatisch mit einer Testquelle ersetzt werden. Mit einer ersetzten Datenquelle meinen wir, dass eine Testquelle in den Fluss direkt nachgelagert der Datenquelle eingefügt wird, sodass der nachgelagerten Komponente Daten von der Testquelle anstatt Daten von der Datenquelle bereitgestellt werden. Gleichermaßen kann eine automatisierte Analyse des Graphen 100 jegliche Ausgangsdatensenken, wie etwa Datenbanken, Dateien oder andere Typen von Ausgangsdatensenken, identifizieren. Eine oder mehrere der identifizierten Ausgangsdatensenken können automatisch mit einer Sondierung ersetzt werden. Mit einer ersetzten Ausgangsdatensenke meinen wir, dass eine Sondierung in den Fluss direkt vorgelagert der Ausgangsdatensenke eingefügt wird, sodass Daten von der vorgelagerten Komponente anstatt durch die Ausgangsdatensenke durch die Sondierung empfangen werden. Eine automatisierte Analyse des Graphen 100 kann auch verwendet werden, um andere Komponenten zu identifizieren, wie etwa einen speziellen Komponententyp (z. B. einen speziellen Komponententyp, dessen Ausführung einen Effekt extern zum Graphen 100 besitzt).
  • Eine weitere Beschreibung von Testquellen- und Sondierungseinfügungen ist in der US-Patentanmeldung mit der Serien-Nr. 14/715,807 bereitgestellt, deren Inhalte hiermit unter Bezugnahme in ihrer Gesamtheit aufgenommen werden.
  • Die Ersatzkomponentendefinition beinhaltet einen Namen, einen vorgelagerten Port, einen nachgelagerten Port, einen Einfügungstyp, einen Prototyppfad und einen Layout-Parameter. Der vorgelagerte Port der Ersatzkomponentendefinition referenziert einen Ausgangsport der Komponente, die direkt vorgelagert liegt, wo die Ersatzkomponente in den Graphen 100 eingefügt werden soll. Der nachgelagerte Port der Ersatzkomponentendefinition referenziert einen Eingangsport der Komponente, die direkt nachgelagert von dort liegt, wo die Ersatzkomponente in den Graphen eingefügt werden soll. Basierend auf dem vorgelagerten Port und dem nachgelagerten Port kann die bestehende Komponente im Graphen 100, die mit der Ersatzkomponente ersetzt werden soll, identifiziert werden. Der Einfügungstyp definiert, dass die Einfügung eine Ersatzkomponente ist.
  • Der Prototyppfad gibt den Typ der Einfügung an. Bei diesem Beispiel, da diese Einfügung eine Ersatzkomponente ist, zeigt der Prototyppfad zu einer Datei, die den Code enthält, der die Ersatzkomponente definiert. Der Code, der die Ersatzkomponente definiert, basiert auf dem Code, der die bestehende Komponente definiert, die ersetzt werden soll, aber in der Lage ist, Daten des gewünschten Formats zu verarbeiten.
  • Bei manchen Beispielen können eine oder mehrere Ersatzkomponenten für einen Graphen durch die Overlay-Spezifikation infolge einer automatisierten Analyse des Graphen definiert werden. Beispielsweise kann die Spezifikation jeder Komponente im Graphen analysiert werden. Die Spezifikation für eine Komponente beinhaltet oder zeigt zu Code, der die Komponente definiert, der z. B. die Datenverarbeitungsoperation(en) definiert, die durch die Komponente repräsentiert wird bzw. werden. Eine Analyse des Codes kann offenlegen, ob die Datenverarbeitungsoperation(en), die durch eine Komponente repräsentiert wird bzw. werden, vom Format der Daten abhängt bzw. abhängen.
  • Eine Ersatzkomponente wird für eine oder mehrere der identifizierten formatspezifischen Komponenten definiert. Bei manchen Beispielen werden die zu ersetzenden formatspezifischen Komponenten basierend auf einer Benutzereingabe identifiziert. Ein Benutzer kann beispielsweise seine Kenntnis über das Format der eingehenden Daten, die Prozesse, die durch jede der formatspezifischen Komponenten repräsentiert werden, oder beides verwenden, um zu bestimmen, welche der Komponenten zu ersetzen sind. Bei manchen Beispielen kann eine automatische Analyse des Formats von eingehenden Daten relativ zum Format von zuvor durch den Graphen verarbeiteten Daten durchgeführt werden, um zu identifizieren, welche der formatspezifischen Komponenten zu ersetzen sind.
  • Bei manchen Beispielen können für Computerprogramme, die nicht graphbasiert sind, ein oder mehrere formatspezifische Prozesse in einem Computerprogramm identifiziert und mit einem oder mehreren anderen Prozessen, z. B. Prozessen, die an Daten eines spezifischen Formats arbeiten können, oder Prozessen, die an Daten eines beliebigen Formats arbeiten können, ersetzt werden.
  • Mit Bezug auf 5 analysiert eine Analyse-Engine 300, um Testquellen, Sondierungen oder beides einzufügen, automatisch den Graphen 100, um Datenquellen 302 und Ausgangsdatensenken 304 zu identifizieren. Die Analyse-Engine 300 kann beispielsweise auf die Parameter und Verbindungen für jeden Knoten des Graphen 100 zugreifen (wir verwenden manchmal die Ausdrücke „Knoten“ und „Komponente“ austauschbar). Falls ein gegebener Knoten eingehende Verbindungen aufweist, identifiziert die Analyse-Engine 300 den Knoten als eine Datenquelle. Gleichermaßen, falls ein gegebener Knoten keine ausgehenden Verbindungen aufweist, identifiziert die Analyse-Engine 300 den Knoten als eine Ausgangsdatensenke. Um auf jeden Knoten eines Graphen zuzugreifen und diesen zu analysieren, „geht“ die Analyse-Engine entlang aller Verbindungen des Graphen (wir verwenden manchmal die Ausdrücke „Verbindung“ und „Fluss“ austauschbar). Bei manchen Beispielen wird der Graph 100 nicht bis zur Laufzeit (z. B. wenn die Verarbeitung für Debugging-Zwecke startet) instanziiert oder parametrisiert. Die Analyse-Engine 300 kann eine automatisierte Analyse zur Laufzeit durchführen, um Datenquellen und Ausgangsdatensenken im Graphen 100 zu identifizieren.
  • Die Analyse-Engine 300 sendet Kennungen der Datenquellen 302 und der Ausgangsdatensenken 304 zu einer Einfügungs-Engine 306, die bestimmt, welche der Datenquellen und Ausgangsdatensenken durch Testquellen bzw. Sondierungen zu ersetzen sind. Bei manchen Beispielen stellt ein Tester 308 eine Liste 310 von Datenquellen und Ausgangsdatensenken bereit, die durch Testquellen und Sondierungen zu ersetzen sind. Die Liste 310 kann als eine Datei, eine Datenbank oder in einem anderen Format bereitgestellt werden. Der Tester 308 könnte in der Liste 310 beispielsweise eine beliebige Datenquelle einschließen, von der er erwartet, dass sie sich häufig ändert. Durch das Ersetzen einer derartigen Datenquelle mit einer Testquelle kann der Tester 308 gewährleisten, dass der Graph unter Verwendung von konsistenten Eingangsdaten getestet werden kann.
  • Die Einfügungs-Engine 306 vergleicht jede identifizierte Datenquelle 302 und Ausgangsdatensenke 304 mit den Datenquellen und Ausgangsdatensenken in der Liste 310. Die Einfügungs-Engine erzeugt eine Overlay-Spezifikation 312 für eine jegliche Datenquelle 302 oder Ausgangsdatensenke 304, die in der Liste 310 erscheint. Bei manchen Beispielen werden der Einfügungs-Engine 306 durch die Analyse-Engine 300 Parameter für die Overlay-Spezifikation 312, wie etwa vorgelagerte und nachgelagerte Ports, bereitgestellt. Bei manchen Beispielen greift die Einfügungs-Engine 306 auf den Graphen 100 zu, um die relevanten Parameter zu erhalten.
  • Um eine Overlay-Spezifikation 312 für eine Testquelle zu erzeugen, befüllt die Einfügungs-Engine 306 die Quelldatei mit Daten. Bei manchen Beispielen befüllt die Einfügungs-Engine 306 die Quelldatei für eine Testquelle, die eine spezielle Datenquelle 302 ersetzen wird, mit Daten, die von der Datenquelle 302 kopiert werden. Bei manchen Beispielen beinhaltet die Datenquelle 302 einen ausführbaren Ausdruck, wie etwa eine SQL-Anweisung, und die Einfügungs-Engine 306 führt den ausführbaren Ausdruck aus und befüllt die Quelldatei mit den Ergebnissen der Ausführung. Bei manchen Beispielen kann die Einfügungs-Engine 306 den Tester 308 über eine Benutzeroberfläche 314 nach Daten für die Quelldatei abfragen. Die Einfügungs-Engine 106 kann beispielsweise dem Tester 308 eine Liste der identifizierten Datenquellen 302 darlegen, sodass der Tester 308 auswählen kann, welche der identifizierten Datenquellen 302 durch eine Testquelle zu ersetzen sind. Der Tester 308 kann auch die Daten spezifizieren, die in der Quelldatei für die Testquelle einzuschließen sind. In manchen Fällen kann der Tester 308 einen Ort (z. B. einen Pfad) einer Datei identifizieren, die Daten für die Testquelle beinhaltet. In manchen Fällen kann der Tester 308 die Einfügungs-Engine 308 anweisen, eine Quelldatei zu erzeugen, die eine Kopie der Daten in der ursprünglichen Datenquelle 302 ist. In manchen Fällen kann der Tester 308 die Einfügungs-Engine 308 anweisen, einen ausführbaren Ausdruck, wie etwa eine SQL-Anweisung, der in der ursprünglichen Datenquelle 302 enthalten oder mit dieser assoziiert ist, auszuführen. In manchen Fällen kann der Tester 308 bewirken, dass Daten für die Quelldatei der Testquelle erzeugt werden. Der Tester 308 kann beispielsweise eine Datenmenge, wie etwa echte Daten oder erzeugte Daten, bereitstellen, die bewirken wird, dass jede Funktion im Graphen mindestens einmal ausgeführt wird.
  • Um eine Overlay-Spezifikation 312 für eine Sondierung zu erzeugen, bestimmt die Einfügungs-Engine 308 den Ort der Datei, in den die Ausgangsdaten abzuspeichern sind. Bei manchen Beispielen wird der Ort standardmäßig, z. B. durch einen Systemarchitekten, festgelegt. Bei manchen Beispielen kann die Einfügungs-Engine 306 den Tester 308 über die Benutzeroberfläche 314 auffordern, einen Ort für die Ausgangsdatendatei zu spezifizieren.
  • Um eine Ersatzkomponente einzufügen, analysiert die Analyse-Engine 300 den Graphen 100, um eine oder mehrere formatspezifische Komponenten 305 im Graphen zu identifizieren. Um jede Komponente des Graphen zu identifizieren, „geht“ die Analyse-Engine 300 entlang aller Verbindungen des Graphen. Bei manchen Beispielen kann die Analyse-Engine 300 an einer am weitesten vorgelagerten Komponente des Graphen starten und entlang jedes Ausgangsflusses von dieser vorgelagerten Komponente „gehen“, wodurch letztendlich alle Komponenten des Graphen analysiert werden. Umgekehrt kann die Analyse-Engine 300 an einer am weitesten nachgelagerten Komponente des Graphen starten und entlang jedes Eingangsflusses zu dieser nachgelagerten Komponente „gehen“, wodurch letztendlich alle Komponenten des Graphen analysiert werden.
  • Die Analyse-Engine 300 kann auf die Spezifikation jeder Komponente im Graphen 100 zugreifen. Die Spezifikation für eine Komponente beinhaltet oder zeigt zu Code, der die Komponente definiert, der z. B. die Datenverarbeitungsoperation(en) definiert, die durch die Komponente repräsentiert wird bzw. werden. Basierend auf einer Analyse des Codes kann die Analyse-Engine 300 bestimmen, ob die Datenverarbeitungsoperation(en) vom Format der Daten abhängt bzw. abhängen. Die Analyse-Engine 300 sendet Kennungen der formatspezifischen Komponenten zu der Einfügungs-Engine 306, die bestimmt, welche der formatspezifischen Komponenten zugunsten einer Ersatzkomponente weggelassen werden soll.
  • Bei manchen Beispielen analysiert die Analyse-Engine 300 den Graphen 100 auf eine Benutzeranfrage. Ein Benutzer kann beispielsweise wünschen, den Graphen 100 zum Verarbeiten von Daten eines anderen Formats als die Daten, die gewöhnlich durch den Graphen verarbeitet werden, zu verwenden. Der Benutzer kann eine Analyse des Graphen 100 anfordern, um zu gewährleisten, dass der Graph 100 in der Lage ist, die Daten des anderen Formats zu verarbeiten.
  • Bei manchen Beispielen analysiert die Analyse-Engine 300 den Graphen 100 einmal, z. B. wenn der Graph erstmals definiert wird oder wenn der Graph erstmals instanziiert oder parametrisiert wird (z. B. bei der ersten Laufzeit des Graphen), um eine Liste aller formatspezifischen Komponenten im Graphen zu erzeugen. Die Liste von formatspezifischen Komponenten im Graphen kann für eine zukünftige Referenz abgespeichert werden, sodass sie z. B. als Reaktion auf eine Benutzeranfrage zum Verwenden des Graphen 100, um Daten eines anderen Formats zu verarbeiten, verwendet wird.
  • Bei manchen Beispielen bestimmt die Analyse-Engine 300 automatisch, wann der Graph zu analysieren ist. Eine Spezifikation des Graphen kann beispielsweise eine Beschreibung des Formats von Daten, die zuvor durch die Graphen verarbeitet wurden, beinhalten. Falls sich das Format von eingehenden Daten vom Format von zuvor verarbeiteten Daten unterscheidet, kann die Analyse-Engine den Graphen analysieren, um zu bestimmen, ob irgendwelche Komponenten ersetzt werden müssen, um die eingehenden Daten des anderen Formats zu verarbeiten.
  • Die Einfügungs-Engine 306 bestimmt, welche der formatspezifischen Komponenten, die durch die Analyse-Engine 300 identifiziert werden, weggelassen werden sollen. Die Einfügungs-Engine 306 erzeugt eine Overlay-Spezifikation, die die Ersatzkomponente für jede der wegzulassenden Komponenten definiert.
  • Bei manchen Beispielen werden die wegzulassenden formatspezifischen Komponenten durch einen Benutzer identifiziert. Die Einfügungs-Engine 306 kann beispielsweise bewirken, dass die Liste von identifizierten formatspezifischen Komponenten auf der Benutzeroberfläche 314 angezeigt wird, und ein Benutzer wählt die Komponenten aus, die zu ersetzen sind. Der Benutzer kann eine Komponente, die als die Ersatzkomponente zu verwenden ist, für jede der Komponenten, die zu ersetzen sind, angeben. Der Benutzer kann beispielsweise seine Kenntnis über das Format der eingehenden Daten, die Prozesse, die durch jede der formatspezifischen Komponenten repräsentiert werden, oder beides verwenden, um zu bestimmen, welche der Komponenten wegzulassen sind und welche Komponenten als Ersatzkomponenten einzuschließen sind. Basierend auf einer Benutzereingabe, die die wegzulassenden Komponenten identifiziert, die Ersatzkomponenten identifiziert oder beides, erzeugt die Einfügungs-Engine 306 die Overlay-Spezifikation.
  • Bei manchen Beispielen kann die Einfügungs-Engine 306 automatisch bestimmen, welche der formatspezifischen Komponenten wegzulassen sind und welche Komponenten als Ersatzkomponenten einzuschließen sind. Die Einfügungs-Engine kann beispielsweise die Spezifikation von jeder der formatspezifischen Komponenten analysieren, um zu bestimmen, welche Komponenten in der Lage oder nicht in der Lage sind, die eingehenden Daten zu verarbeiten. Die Einfügungs-Engine 306 kann automatisch eine Ersatzkomponente identifizieren, z. B. eine Ersatzkomponente, die dieselbe Datenverarbeitungsoperation repräsentiert, die durch die entsprechende zu ersetzende Komponente repräsentiert wird, aber in der Lage ist, Daten des Formats der eingehenden Daten zu verarbeiten. Die Einfügungs-Engine 306 erzeugt die Overlay-Spezifikation für die automatisch identifizierten Ersatzkomponenten. Bei manchen Beispielen wird eine Benutzereingabe in der automatisierten Bestimmung integriert. Ein Benutzer kann beispielsweise aufgefordert werden, die Ersatzkomponenten, die durch die Einfügungs-Engine 306 identifiziert werden, zu genehmigen.
  • 6 stellt einen allgemeinen Ansatz zum Definieren einer Ersatzkomponente für einen Graphen dar. Eine Datenmenge mit einem speziellen Format wird zur Verarbeitung durch den Graphen empfangen (400). Eine Bestimmung wird vorgenommen, ob der Graph für seine Fähigkeit, das spezielle Format der empfangenen Daten zu verarbeiten, analysiert werden soll (402). Bei manchen Beispielen kann ein Benutzer eine Indikation, z. B. über eine Benutzeroberfläche, bereitstellen, dass der Graph analysiert werden soll. Der Benutzer kann beispielsweise wissen, dass die Datenmenge ein anderes Format aufweist als zuvor durch den Graphen verarbeitete Daten. Bei manchen Beispielen kann die Bestimmung automatisch vorgenommen werden. Das Format der empfangenen Daten kann beispielsweise bestimmt und z. B. mit Informationen, die in der Spezifikation des Graphen abgespeichert sind und das Datenformat, für das der Graph konfiguriert ist, angeben, verglichen werden. Falls das Format der empfangenen Daten nicht mit dem Datenformat, für das der Graph konfiguriert ist, übereinstimmt, wird der Graph analysiert.
  • Der Graph wird z. B. durch einen Prozessor analysiert, um eine oder mehrere Komponenten des Graphen zu identifizieren, die vom Format von Daten, die durch die Komponente verarbeitet werden, abhängen (404). Insbesondere wird die Spezifikation für jede von einer oder mehreren der Komponenten des Graphen analysiert, um formatspezifische Komponenten im Graphen zu identifizieren. Bei manchen Beispielen wird der Graph durch einen schrittweisen Verlauf durch die Komponenten des Graphen analysiert. Jede Komponente wird beispielsweise analysiert, sowohl um zu bestimmen, ob die Komponente eine formatspezifische Komponente ist, als auch um ihre eingehenden und ausgehenden Flüsse zu identifizieren. Jeder Fluss davon wird zu der benachbarten Komponente gefolgt und jede dieser Komponenten wird analysiert, um zu bestimmen, ob die Komponente formatspezifisch ist, und um die eingehenden und ausgehenden Flüsse zu identifizieren. Auf diese Weise können alle Komponenten des Graphen analysiert werden. Bei manchen Beispielen kann die Analyse automatisch zur Laufzeit, z. B. nachdem der Graph parametrisiert worden ist, durchgeführt werden. Bei manchen Beispielen kann die Analyse automatisch und dynamisch, z. B. während der Graph ausgeführt wird, durchgeführt werden. Eine dynamische Analyse kann beispielsweise durchgeführt werden, wenn gewisse Parameter während der Ausführung des Graphen gelöst werden. Bei manchen Beispielen wird der Graph in einem Kurzzeitspeicher empfangen, von dem der Graph durch einen Prozessor analysiert wird, um formatspezifische Komponenten zu identifizieren.
  • Eine oder mehrere der als formatspezifisch identifizierten Komponenten werden evaluiert, um zu bestimmen, ob die Komponenten weggelassen und Ersatzkomponenten eingeschlossen werden sollen (406). Eine formatspezifische Komponente kann beispielsweise weggelassen werden, falls die Komponente nicht in der Lage ist, Daten mit dem Format der empfangenen Datenmenge zu verarbeiten. Bei manchen Beispielen wird eine Liste der formatspezifischen Komponenten auf einer Benutzeroberfläche angezeigt und ein Benutzer gibt an, welche der Komponenten weggelassen werden soll. Bei manchen Beispielen wird die Spezifikation jeder formatspezifischen Komponente evaluiert, um automatisch zu bestimmen, ob die Komponenten in der Lage sind, Daten mit dem Format der empfangenen Datenmenge zu verarbeiten. Bei manchen Beispielen werden alle der als formatspezifisch identifizierten Komponenten weggelassen.
  • Eine Overlay-Spezifikation wird für eine Ersatzkomponente für jede von einer oder mehreren der formatspezifischen Komponenten, die weggelassen werden sollen, definiert (408). Die Spezifikationen für eine gegebene Ersatzkomponente basiert auf der Spezifikation der entsprechenden weggelassenen formatspezifischen Komponente, definiert aber eine oder mehrere Datenverarbeitungsoperationen, die an Daten mit dem Format der empfangenen Datenmenge durchgeführt werden können. Bei manchen Beispielen können die Ersatzkomponenten formatspezifisch für das Format der empfangenen Datenmenge sein. Bei manchen Beispielen können die Ersatzkomponenten generisch sein, z. B. in der Lage sein, Daten eines beliebigen Formats zu verarbeiten.
  • Vor der Ausführung des Graphen kann ein Compiler den Graphen in einen ausführbaren Graphen kompilieren (410). Als Teil der Kompilierung zieht der Compiler die Overlay-Spezifikation 200, die die Ersatzkomponenten definiert, in Betracht. Der Compiler kann zum Beispiel die Overlay-Spezifikation 200 als eine Eingabe annehmen. Eine zweite Version des Graphen wird erzeugt, die zum Ersetzen identifizierten formatspezifischen Komponenten werden entfernt und die eine oder die mehreren Ersatzkomponenten werden in die zweite Version des Graphen als Objekte anstelle der entfernten Komponenten eingefügt. Die Ersatzkomponenten können in der zweiten Version des Graphen zusammen mit den Datenverarbeitungskomponenten, die in der ersten Version des Graphen 100 enthalten sind (außer den entfernten Komponenten), repräsentiert werden. Die Overlay-Spezifikation 200 oder die Datei, die die Overlay-Spezifikation abspeichert, bleibt von einer Datei, die den Graphen enthält, getrennt. Das heißt, obwohl die Ersatzkomponenten in der zweiten Version des Graphen zusammen mit den Datenverarbeitungskomponenten, die in der ersten Version des Graphen enthalten sind, erscheinen, enthält die Datei, die die erste Version des Graphen enthält, nicht die Definitionen der Ersatzkomponenten.
  • Einfügungen, wie etwa Testquellen, Sondierungen oder Ersatzkomponenten, die in der Overlay-Spezifikation definiert sind, können unter Verwendung eines von mindestens zwei Modi ausgeführt werden: Einzelausführungsmodus und Gespeicherter-Zustand-Modus.
  • 7 veranschaulicht ein beispielhaftes System zum Ausführen von Einfügungsdefinitionen im Einzelausführungsmodus. Bei diesem Beispiel erzeugt oder referenziert ein Client 602 eine erste Version eines Graphen 602 und eine Overlay-Datei 606 (z. B. eine Overlay-Spezifikation), die Einfügungen definiert. Die Overlay-Datei 606 kann zum Beispiel die Overlay-Spezifikation 200 von 4 sein. Der Graph 604 wird dann durch den Compiler 608 kompiliert. Der Compiler 608 zieht die Overlay-Datei 606 in Betracht und erzeugt eine zweite Version des Graphen. Die zweite Version des Graphen ist ausführbar und beinhaltet die durch die Overlay-Datei 606 definierten Einfügungen. Die zweite Version des Graphen kann dann ausgeführt werden. Bei manchen Beispielen finden die Kompilierung und die Ausführung gleichzeitig statt. Falls die zweite Version des Graphen erneut ausgeführt werden soll, wird dieser Prozess wiederholt, einschließlich eines erneuten Spezifizierens, eines erneuten Kompilierens des Graphen 604 und eines erneuten Ausführens der zweiten Version des Graphen. Keine Informationen werden von einer Ausführung des ausführbaren Graphen zur nächsten gespeichert.
  • 8 veranschaulicht ein beispielhaftes System zum Ausführen von Einfügungsdefinitionen im Gespeicherter-Zustand-Modus mit einem Gespeicherter-Zustand-Manager 708. Bei diesem Beispiel erzeugt oder referenziert ein Client 702 einen Graphen 704 und eine Overlay-Datei 706 (z. B. eine Overlay-Spezifikation), die Einfügungen definiert. Die Overlay-Datei 706 kann zum Beispiel die Overlay-Spezifikation 200 von 4 sein. Das Gespeicherter-Zustand-Repositorium 710 wird durch den Gespeicherter-Zustand-Manager 708 und einen Compiler 712 verwaltet. Der Gespeicherter-Zustand-Manager 708 kann auch identifizieren, wo sich die Gespeicherter-Zustand-Daten innerhalb des Gespeicherter-Zustand-Repositoriums 710 befinden. Der Graph 704 wird durch den Compiler 712 kompiliert. Der Compiler 712 zieht die Overlay-Datei 706 in Betracht und erzeugt eine zweite Version des Graphen, die die durch die Overlay-Datei 706 definierten Einfügungen beinhaltet. Die zweite Version des Graphen kann dann ausgeführt werden. Bei manchen Beispielen finden die Kompilierung und die Ausführung gleichzeitig statt. Der Gespeicherter-Zustand-Modus unterscheidet sich vom Einzelausführungsmodus darin, dass der Gespeicherter-Zustand-Modus ermöglicht, dass der ausführbare Graph eine Anzahl von Malen ausgeführt wird, während Informationen zwischen Ausführungen gespeichert werden.
  • Der Gespeicherter-Zustand-Manager 708, der sich in einem Gespeicherter-Zustand-Managerverzeichnis befinden kann, verwaltet den gespeicherten Zustand. Beispiele für Informationen, die im Gespeicherter-Zustand-Repositorium 710 gespeichert werden können, beinhalten Informationen bezüglich Sondierungseinfügungen, Informationen bezüglich Testquelleneinfügungen, Informationen bezüglich Ersatzkomponenteneinfügungen, Informationen bezüglich der Overlay-Datei 706 und Parameter (z. B. Attribute), die mit Graphkomponenten assoziiert sind, unter anderen Informationen.
  • Bei manchen Beispielen, wenn ein ausführbarer Graph ausgeführt wird, werden nur spezielle Teile des Graphen ausgeführt. Das heißt, nur spezielle Komponenten des Graphen werden ausgeführt. Bei manchen Beispielen werden weniger als alle Komponenten des Graphen ausgeführt. Der ausführbare Graph führt möglicherweise nur Komponenten aus, die eine Einfügung beeinflussen werden. Bei manchen Beispielen ist die zweite Version des Graphen eine zweite Version des gesamten ursprünglichen Graphen. Bei manchen Beispielen ist die zweite Version des Graphen eine zweite Version von nur einem Teil des gesamten ursprünglichen Graphen, z. B. eine zweite Version von nur jenen Teilen des Graphen, die für die definierten Einfügungen relevant sind. Komponenten, die sich vorgelagert von der am meisten vorgelagerten Ersatzkomponente befinden, können zum Beispiel durch die erste Version des Graphen ausgeführt werden und Komponenten, die an der am meisten vorgelagerten Ersatzkomponente starten, können durch die zweite Version des Graphen ausgeführt werden.
  • 9 stellt ein beispielhaftes Datenverarbeitungssystem 800 dar, in dem die hierin beschriebenen Ersatzkomponententechniken verwendet werden können. Das System 800 beinhaltet eine Datenquelle 802, die eine oder mehrere Quellen von Daten, wie etwa Speichereinrichtungen oder Verbindungen zu Online-Datenströmen, beinhalten kann, die jeweils Daten in einem beliebigen einer Vielfalt von Formaten (z. B. Datenbanktabellen, Tabellenkalkulationsdateien, flachen Textdateien oder einem nativen Format, das durch einen Mainframe verwendet wird) abspeichern oder bereitstellen können. Eine Ausführungsumgebung 804 und eine Entwicklungsumgebung 818 können zum Beispiel auf einem oder mehreren Allgemeincomputem unter Steuerung eines geeigneten Betriebssystems, wie etwa einer Version des UNIX-Betriebssystems, gehostet werden. Die Ausführungsumgebung 804 kann zum Beispiel eine Mehrknoten-Paralleldatenverarbeitungsumgebung beinhalten, einschließlich einer Konfiguration von Computersystemen, die mehrere Zentralverarbeitungseinheiten (CPUs) oder Prozessorkerne verwenden, entweder lokal (z. B. Mehrprozessorsysteme, wie etwa symmetrische Mehrfachverarbeitungscomputer (SMP-Computer)) oder lokal verteilt (z. B. mehrere Prozessoren, die als Cluster oder massive Parallelverarbeitungssysteme (MPP-Systeme) gekoppelt sind) oder entfernt oder entfernt verteilt (z. B. mehrere Prozessoren, die über ein Lokalnetz (LAN) und/oder großflächiges Netz (WAN) gekoppelt sind) oder beliebige Kombinationen davon.
  • Die Ausführungsumgebung 804 liest Daten von der Datenquelle 802 und erzeugt Ausgangsdaten. Speichereinrichtungen, die die Datenquelle 802 bereitstellen, können lokal zur Ausführungsumgebung 804 sein, zum Beispiel auf einem Speichermedium gespeichert sein, das mit einem Computer, der die Ausführungsumgebung 804 hostet, verbunden ist (z. B. Festplatte 808) oder können entfernt zur Ausführungsumgebung 804 sein, zum Beispiel auf einem Fernsystem (z. B. Mainframe 810) gehostet werden, das über eine Fernverbindung (die z. B. durch eine Cloud-Datenverarbeitungsinfrastruktur bereitgestellt wird) in Kommunikation mit einem Computer steht, der die Ausführungsumgebung 804 hostet. Die Datenquelle 802 kann die Daten enthalten, die in einer Testquellendefinition (z. B. der Testquellendefinition 201 von 4) definiert sind. Das heißt, der Layout-Parameter 212 der Testquellendefinition 201 kann zu einem Ort einer Quelldatei in der Datenquelle 802 zeigen.
  • Die Ausgangsdaten können zurück in die Datenquelle 802 oder in ein Datenspeichersystem 816, das für die Ausführungsumgebung 804 zugänglich ist, abgespeichert oder anderweitig verwendet werden. Das Datenspeichersystem 816 ist auch für die Entwicklungsumgebung 818 zugänglich, in der ein Entwickler 820 in der Lage ist, Graphen zu entwickeln, zu debuggen und zu testen. Die Entwicklungsumgebung 818 ist in manchen Implementierungen ein System zur Entwicklung von Anwendungen, wie etwa Graphen, die Ecken (die Datenverarbeitungskomponenten oder Datensätze repräsentieren) beinhalten, die durch gerichtete Flüsse (die Flüsse von Arbeitselementen, d. h. Daten, repräsentieren) zwischen den Ecken verbunden sind. Eine derartige Umgebung ist zum Beispiel ausführlicher in der US-Veröffentlichung mit der Nr. 2007/0011668 , mit dem Titel „Managing Parameters for Graph-Based Applications“ beschrieben, die hiermit unter Bezugnahme aufgenommen wird. Ein System zum Ausführen derartiger graphbasierter Berechnungen ist im US-Patent 5,966,072 mit dem Titel „EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS“ beschrieben, das hiermit unter Bezugnahme aufgenommen wird. Graphen, die gemäß diesem System hergestellt werden, stellen Verfahren bereit, um Informationen in und aus individuellen Prozessen, die durch Graphkomponenten repräsentiert werden, zu bekommen, sodass Informationen zwischen den Prozessen bewegt und eine Ablaufreihenfolge für die Prozesse definiert wird. Dieses System beinhaltet Algorithmen, die Zwischenprozesskommunikationsverfahren aus beliebigen verfügbaren Verfahren wählen (zum Beispiel können Kommunikationspfade gemäß den Flüssen des Graphen TCP/IP- oder UNIX-Domänen-Sockets verwenden oder einen gemeinsam genutzten Speicher verwenden, um Daten zwischen den Prozessen zu übermitteln).
  • Die Entwicklungsumgebung 818 beinhaltet ein Code-Repositorium 822 zum Abspeichern von Quellcode. Bei manchen Beispielen können der Quellcode und die Overlay-Spezifikationen (z. B. die Overlay-Spezifikation 220 von 4) durch einen Entwickler 820 entwickelt werden, der Zugriff auf die Entwicklungsumgebung zum Beispiel über eine Benutzeroberfläche besitzt. Bei manchen Beispielen werden der Quellcode und die Overlay-Spezifikationen automatisch, z. B. durch die oben beschriebenen Analyse-Engine 300 und Einfügungs-Engine 306, bestimmt. Bei manchen Beispielen können Graphen und Overlay-Spezifikationen im Code-Repositorium 822 abgespeichert werden. Bei manchen Beispielen werden Graphen im Code-Repositorium 822 abgespeichert und Overlay-Spezifikationen werden in einem separaten Overlay-Repositorium 824 abgespeichert.
  • Das Code-Repositorium 822 und/oder das Overlay-Repositorium 824 kann bzw. können sich in Kommunikation mit einem Compiler 826 befinden. Der Compiler 826 kann eine erste Version eines Graphen und eine Overlay-Spezifikation (z. B. die Overlay-Spezifikation 200 von 4) in eine ausführbare zweite Version des Graphen 828 kompilieren. Der Compiler kann zum Beispiel die Overlay-Spezifikation als eine Eingabe annehmen. Eine oder mehrere Einfügungen werden verarbeitet und in den Graphen in Form von Objekten eingefügt, die jeweils einer Einfügungsdefinition, die in der Overlay-Spezifikation enthalten ist, entsprechen. Die zweite Version des Graphen 828 kann visuell durch einen modifizierten Graphen repräsentiert werden. Die Einfügungsobjekte können in der zweiten Version des Graphen 500 repräsentiert werden.
  • Die Entwicklungsumgebung 818 kann eine Ausführungsumgebung 830 zum Ausführen der zweiten Version des Graphen 828 beinhalten. Sobald zum Beispiel ein Graph durch den Compiler 826 kompiliert ist, kann die zweite Version des Graphen 828 ausgeführt werden. Das Ausführen der zweiten Version des Graphen 828 kann ein Ausführen von Berechnungen, die mit den Komponenten, Einfügungen (z. B. Testquellen, Sondierungen, Ersatzkomponenten oder einer Kombination von beliebigen zwei oder mehr von diesen) und gerichteten Flüssen der zweiten Version des Graphen 828 assoziiert sind, als Datenflüsse (z. B. Arbeitselementflüsse oder Datensatzflüsse) zwischen Komponenten beinhalten. Bei manchen Beispielen führt die Ausführungsumgebung 830 die zweite Version des Graphen 828 aus, ohne den Quellcode der ersten Version des Graphen, der im Code-Repositorium 822 abgespeichert ist, oder den Quellcode, der im Overlay-Repositorium 824 gespeichert ist, zu modifizieren. Die Ausführungsumgebung 830 kann über eine Schnittstelle der Entwicklungsumgebung 818 zugänglich sein oder kann ihre eigene Schnittstelle aufweisen. Die Schnittstelle kann dazu ausgelegt sein, Informationen bezüglich der Ausführungen anzuzeigen. Die Schnittstelle kann auch dazu ausgelegt sein, Informationen bezüglich der Einfügungen (z. B. der Daten, die durch eine Sondierung überwacht und gespeichert werden, der Daten, die durch eine Testquelle eingefügt werden, Informationen über eine Ersatzkomponente oder andere Informationen) anzuzeigen. Die Ausführungsumgebung 830 kann dem Entwickler 820 ermöglichen, die zweite Version des Graphen 828 mehrere Male auszuführen und Aspekte der zweiten Version des Graphen 828 zwischen Ausführungen zu modifizieren.
  • Bei manchen Beispielen leitet ein Entwickler die Einfügungen und das Kompilieren des Graphen an. Ein Entwickler 820 wählt beispielsweise von einem Code-Repositorium 822 die erste Version des Graphen 100 von 1 aus. Der Entwickler 820 wählt auch vom Overlay-Repositorium 824 die Overlay-Spezifikation 200 von 4 aus. Bei manchen Beispielen kann der Entwickler 820, anstelle die Overlay-Spezifikation 200 auszuwählen, Einfügungsdefinitionen von verschiedenen Overlay-Spezifikationen im Overlay-Repositorium 824 auswählen. Der Entwickler 820 weist den Compiler 826 an, die zweite Version des Graphen 828 basierend auf der ersten Version des Graphen 100 und der Overlay-Spezifikation 200 zu kompilieren.
  • Bei manchen Beispielen werden die Einfügungen automatisch eingefügt. Wie oben beschrieben, werden beispielsweise eine oder mehrere Datenquellen, Ausgangsdatensenken oder formatspezifische Komponenten im Graphen 100 automatisch identifiziert, indem z. B. Komponenten identifiziert werden, die keine eingehenden Verbindungen oder keine ausgehenden Verbindungen aufweisen, oder indem die Spezifikation von Komponenten im Graphen 100 analysiert wird. Die identifizierten Datenquellen und Ausgangsdatensenken können automatisch mit einer Liste von Datenquellen und Ausgangsdatensenken, die mit Einfügungen ersetzt werden sollen, während des Debuggens des Graphen 100 verglichen werden. Die Liste kann beispielsweise durch den Entwickler 820 bereitgestellt werden. Formatspezifische Komponenten können analysiert werden, um zu bestimmen, ob die Komponenten in der Lage sind, Daten eines speziellen Formats, wie etwa des Formats einer eingehenden Datenmenge, zu verarbeiten. Eine Liste von formatspezifischen Komponenten, die nicht in der Lage sind, die Daten zu verarbeiten, wird erzeugt. Bei manchen Beispielen kann die Liste durch den Entwickler 820 bereitgestellt werden. Overlay-Spezifikationen werden automatisch für die Datenquellen, Ausgangsdatensenken oder formatspezifischen Komponenten des Graphen 100 gemäß der Liste erzeugt. Die zweite Version des Graphen wird dann automatisch kompiliert.
  • Bei manchen Beispielen werden Overlay-Spezifikationen nicht permanent als Dateien in einem Code-Repositorium 822 oder einem Overlay-Repositorium 824 abgespeichert. Stattdessen werden die Informationen, die typischerweise in der Overlay-Datei eingeschlossen sein würden (z. B. Einfügungsdefinitionen), durch den Entwickler 820 (z. B. über die Benutzeroberfläche) entwickelt oder automatisch durch die Analyse-Engine 300 und Einfügungs-Engine 306 bestimmt und temporär im Speicher abgespeichert. Die Overlay-Informationen werden dann zum Compiler (z. B. 608 von 8) oder zum Gespeicherter-Zustand-Manager (z. B. 708 von 9) weitergegeben.
  • Mit Bezug auf 10 wird in einem beispielhaften Prozess eine erste Version eines Graphen (z. B. des Graphen 100 von 1) empfangen (902). Die erste Version des Graphen kann zum Beispiel in einem Kurzzeitspeicher empfangen werden, der für einen Prozessor zugänglich ist. Die erste Version des Graphen 100 beinhaltet Komponenten und Flüsse. Die Komponenten repräsentieren Operationen, die an Datensätzen durchgeführt werden, und die Flüsse repräsentieren Flüsse von Datensätzen zwischen Komponenten.
  • Eine Overlay-Spezifikation, die eine oder mehrere Einfügungen definiert, wird empfangen (904). Bei manchen Beispielen wird die Overlay-Spezifikation von einem Entwickler oder Tester empfangen. Bei manchen Beispielen wird die Overlay-Spezifikation automatisch definiert, z. B. wie oben beschrieben. Die Overlay-Spezifikation kann die in 4 dargestellte Overlay-Spezifikation 200 sein. Die Overlay-Spezifikation kann eine oder mehrere Einfügungsdefinitionen (z. B. eine oder mehrere Testquellendefinitionen, eine oder mehrere Sondierungsdefinitionen oder eine oder mehrere Ersatzkomponentendefinitionen) beinhalten. Eine Einfügungsdefinition kann einen Namen, einen vorgelagerten Port, einen nachgelagerten Port, einen Einfügungstyp, einen Prototyppfad und einen Layout-Parameter (für Testquellendefinition) beinhalten. Jede der definierten Testquellen und Sondierungen kann mit einem Fluss des Graphen 100 assoziiert sein. Jede der definierten Ersatzkomponenten kann mit einer Komponente des Graphen 100 assoziiert sein.
  • Ein oder mehrere Objekte werden erzeugt, die jeweils einer der definierten Einfügungen entsprechen (906). Die Objekte können Komponenten eines Graphen sein, wie etwa Testquellen, Sondierungen oder Ersatzkomponenten.
  • Eine zweite Version von mindestens einem Teil des Graphen wird erzeugt, die zumindest manche der Komponenten und Flüsse des Teils des Graphen 100 sowie das eine oder die mehreren erzeugten Objekte beinhaltet (908). Bei manchen Beispielen ist die zweite Version des Graphen eine Kopie des ursprünglichen Graphen 100, der so modifiziert wird, dass er zumindest manche der Komponenten und Flüsse des Teils des Graphen 100 sowie das eine oder die mehreren erzeugten Objekte beinhaltet. Die zweite Version des Graphen kann visuell durch einen modifizierten Graphen (z. B. die zweite Version des Graphen 200 von 2 oder die dritte Version des Graphen 300 von 3) repräsentiert werden. Jedes Objekt wird an dem Fluss, der mit der definierten Einfügung assoziiert ist, die dem Objekt entspricht (für Testquellen oder Sondierungen), oder anstelle der Komponente, die mit der definierten Ersatzkomponente assoziiert ist, die dem Objekt entspricht, eingefügt. Obwohl die erzeugten Einfügungsobjekte in der zweiten Version des Graphen zusammen mit den Datenverarbeitungskomponenten des Graphen 100 erscheinen können, wird die erste Version des Graphen 100 (oder die Datei, die die erste Version des Graphen 100 enthält) nicht modifiziert.
  • Obwohl wir einen Compiler (z. B. den Compiler 608 von 7 und den Compiler 712 von 8) beschrieben, der den Graphen und die Overlay-Spezifikation kompilieren kann, um eine zweite Version des Graphen zu erzeugen, die die Einfügungen, die durch die Overlay-Datei definiert werden, beinhaltet, werden bei manchen Ausführungsformen der Graph und die Overlay-Spezifikation nicht kompiliert. Der Graph und die Overlay-Spezifikation können zum Beispiel direkt ausgeführt werden, ohne kompiliert zu werden. Ein Interpreter kann den Graphen und die Overlay-Spezifikation direkt ausführen, indem jede Anweisung in eine Sequenz von einer oder mehreren Subroutinen übersetzt wird, die schon in Maschinencode kompiliert werden.
  • Obwohl wir Einfügungen in der Form von Sondierungen, Testquellen und Ersatzkomponenten beschrieben haben, können bei manchen Ausführungsformen Einfügungen andere Formen annehmen. Einfügungen können allgemein verwendet werden, um Daten an einem gegebenen Punkt eines Graphen zu injizieren und Daten von einem gegebenen Punkt eines Graphen herauszuziehen. Eine Einfügung kann zum Beispiel konzipiert sein, die Qualität von Daten, die durch einen Fluss eines Graphen laufen, zu überwachen. Falls die Datenqualität unter eine Schwelle fällt, kann ein Benutzer eine automatisierte Warnung empfangen. Eine weitere Beschreibung von Einfügungen kann in der US-Anmeldung mit der Serien-Nr. 14/715,904 gefunden werden, deren Inhalte hiermit unter Bezugnahme in ihrer Gesamtheit aufgenommen werden.
  • Obwohl wir Einfügungen im Zusammenhang von Graphen beschrieben haben, können bei manchen Ausführungsformen Einfügungen ferner in Verbindung mit anderen ausführbaren Anwendungen verwendet werden. Beispielsweise können Datenquellen, Ausgangsdatensenken oder formatspezifische Prozesse für eine generische ausführbare Anwendung über eine automatisierte Analyse der Anwendung identifiziert werden. Eine bzw. ein oder mehrere der identifizierten Datenquellen, Ausgangsdatensenken oder formatspezifischen Prozesse können durch eine geeignete Testquelle, Sondierung bzw. einen geeigneten Ersatzprozess ersetzt werden. Auf diese Weise kann die ausführbare Anwendung Daten von einer Testquelle verarbeiten und Daten zu einer Sondierung ausgeben oder kann befähigt werden, Daten eines anderen Formats zu verarbeiten. Diese Konfiguration kann zum Testen oder Debuggen der ausführbaren Anwendung nützlich sein.
  • Die oben beschriebenen Ansätze können unter Verwendung eines Datenverarbeitungssystems, das geeignete Software ausführt, implementiert werden. Die Software kann zum Beispiel Prozeduren in einem oder mehreren Computerprogrammen beinhalten, das bzw. die ein oder mehrere programmierte oder programmierbare Datenverarbeitungssysteme ausführt bzw. ausführen (die aus verschiedenen Architekturen bestehen können, wie etwa verteilt, Client/Server oder Grid), die jeweils mindestens einen Prozessor, mindestens ein Datenspeichersystem (einschließlich unbeständigen und/oder beständigen Speicher- und/oder Speicherelementen) und mindestens eine Benutzeroberfläche (zum Empfangen von Eingaben unter Verwendung von mindestens einer Eingabeeinrichtung oder eines Eingangsports und zum Bereitstellen einer Ausgabe unter Verwendung von mindestens einer Ausgabeeinrichtung oder eines Ausgangsports) beinhalten. Die Software kann ein oder mehrere Module eines größeren Programms beinhalten, das zum Beispiel Dienste bezüglich der Konstruktion, Konfiguration und Ausführung von Graphen bereitstellt. Die Module des Programms (z. B. Elemente eines Graphen) können als Datenstrukturen oder andere organisierte Daten, die einem in einem Datenspeicher abgespeicherten Datenmodell entsprechen, implementiert werden.
  • Die Software kann auf einem greifbaren nicht flüchtigen Medium, wie etwa einer CD-ROM oder einem anderen computerlesbaren Medium (z. B. durch ein Allgemein- oder Spezialdatenverarbeitungssystem oder eine Allgemein- oder Spezialdatenverarbeitungseinrichtung lesbar), bereitgestellt sein oder über ein Kommunikationsmedium eines Netzes an ein greifbares nicht flüchtiges Medium eines Datenverarbeitungssystems geliefert (z. B. in einem propagierten Signal codiert) werden, wo sie ausgeführt wird. Ein Teil der oder die gesamte Verarbeitung kann auf einem Spezialcomputer oder unter Verwendung einer Spezialhardware, wie etwa Coprozessoren oder feldprogrammierbaren Gate-Arrays (FPGAs), oder dedizierten anwendungsspezifischen integrierten Schaltungen (ASICs) durchgeführt werden. Die Verarbeitung kann auf eine verteilte Weise implementiert werden, bei der unterschiedliche Teile der Berechnung, die durch die Software spezifiziert wird, durch unterschiedliche Datenverarbeitungselemente durchgeführt werden. Jedes derartige Computerprogramm wird vorzugsweise auf einem computerlesbaren Speichermedium (z. B. Halbleiterspeicher oder -medien oder magnetischen oder optischen Medien) einer Speichereinrichtung, die durch einen programmierbaren Allgemein- oder Spezialcomputer zugänglich ist, zum Konfigurieren und Betreiben des Computers gespeichert oder zu diesem heruntergeladen, wenn das Speichereinrichtungsmedium durch den Computer gelesen wird, um die vorliegend beschriebene Verarbeitung durchzuführen. Es kann auch erachtet werden, dass das erfindungsgemäße System als ein greifbares nicht flüchtiges Medium implementiert ist, das mit einem Computerprogramm konfiguriert wird, wobei das so konfigurierte Medium bewirkt, dass ein Computer auf eine spezifische und vordefinierte Art und Weise arbeitet, um einen oder mehrere der vorliegend beschriebenen Verarbeitungsschritte durchzuführen.
  • Eine Anzahl von Ausführungsformen sind beschrieben worden. Nichtsdestotrotz versteht es sich, dass beabsichtigt ist, dass die vorstehende Beschreibung die Erfindung veranschaulicht und nicht deren Schutzumfang einschränkt, der durch den Umfang der folgenden Ansprüche definiert wird. Dementsprechend liegen auch andere Ausführungsformen im Schutzumfang der folgenden Ansprüche. Beispielsweise können verschiedene Modifikationen durchgeführt werden, ohne vom Schutzumfang der Erfindung abzuweichen. Außerdem können manche der oben beschriebenen Schritte Reihenfolge-unabhängig sein und können somit in einer Reihenfolge durchgeführt werden, die sich von der beschriebenen unterscheidet.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2007/0011668 [0091]
    • US 5966072 [0091]

Claims (26)

  1. Verfahren, das Folgendes beinhaltet: Analysieren, durch einen Prozessor, einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten eines ersten Formats durchzuführen; und durch einen Prozessor, Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, von einem oder mehreren zweiten Prozessen, die dazu ausgelegt sind, eine zweite Operation an Daten eines zweiten Formats, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  2. Verfahren nach Anspruch 1, wobei das Identifizieren eines ersten Prozesses ein Identifizieren eines ersten Prozesses beinhaltet, in dem die erste Operation vom Format der Daten abhängt.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Identifizieren eines ersten Prozesses ein Identifizieren eines ersten Prozesses beinhaltet, der nicht in der Lage ist, die erste Operation an Daten des zweiten Formats durchzuführen.
  4. Verfahren nach einem der vorangegangenen Ansprüche, einschließlich Bestimmen eines Formats von Daten, die durch den ersten Prozess zu verarbeiten sind.
  5. Verfahren nach Anspruch 4, wobei das Identifizieren eines ersten Prozesses ein Identifizieren eines ersten Prozesses beinhaltet, der nicht in der Lage ist, die erste Operation an Daten durchzuführen, die das Format der Daten, die durch den ersten Prozess zu verarbeiten sind, aufweisen.
  6. Verfahren nach einem der vorangegangenen Ansprüche, wobei das Identifizieren eines ersten Prozesses ein Identifizieren eines ersten Datenverarbeitungselements des Computerprogramms beinhaltet, wobei das erste Datenverarbeitungselement dazu ausgelegt ist, den ersten Prozess auszuführen.
  7. Verfahren nach Anspruch 6, wobei das Einschließen des einen oder der mehreren zweiten Prozesse in das Computerprogramm ein Einschließen eines oder mehrerer zweiter Datenverarbeitungselemente in die zweite Version des mindestens einen Teils des Computerprogramms beinhaltet, wobei das zweite Datenverarbeitungselement dazu ausgelegt ist, den einen oder die mehreren zweiten Prozesse auszuführen.
  8. Verfahren nach einem vorangegangenen Anspruch, wobei das erste Format einen Datentyp umfasst.
  9. Verfahren nach einem vorangegangenen Anspruch, wobei das erste Format eine Größe eines Datenelements beinhaltet.
  10. Verfahren nach einem vorangegangenen Anspruch, wobei der erste Prozess dazu ausgelegt ist, die erste Operation an Datensätzen eines ersten Datensatzformats durchzuführen, und wobei der eine oder die mehreren zweiten Prozesse dazu ausgelegt sind, die zweite Operation an Datensätzen eines zweiten Datensatzformats durchzuführen.
  11. Verfahren nach Anspruch 10, wobei das erste Datensatzformat einen Namen eines Feldes in den Datensätzen umfasst.
  12. Verfahren nach einem der vorangegangenen Ansprüche, einschließlich Darlegen, in einer Benutzeroberfläche, einer Kennung der ersten Menge von einer oder mehreren Operationen.
  13. Verfahren nach einem der vorangegangenen Ansprüche, wobei das Erzeugen der zweiten Version von mindestens einem Teil des Computerprogramms ein Erzeugen einer Kopie des Teils des Computerprogramms beinhaltet.
  14. Verfahren nach Anspruch 13, einschließlich Modifizieren der Kopie des Teils des Computerprogramms, sodass der erste Prozess weggelassen wird und der eine oder die mehreren zweiten Prozesse eingeschlossen werden.
  15. Verfahren nach einem der vorangegangenen Ansprüche, einschließlich Ausführen der zweiten Version des Computerprogramms.
  16. Verfahren nach einem der vorangegangenen Ansprüche, wobei der eine oder die mehreren zweiten Prozesse durch eine Overlay-Spezifikation definiert werden.
  17. Verfahren nach Anspruch 16, wobei das Erzeugen der zweiten Version des Computerprogramms ein Erzeugen der zweiten Version basierend auf der ersten Version des Computerprogramms und der Overlay-Spezifikation beinhaltet.
  18. Verfahren nach Anspruch 16 oder 17, wobei die Overlay-Spezifikation einen dem ersten Prozess vorgelagerten Prozess und/oder einen dem ersten Prozess nachgelagerten Prozess identifiziert.
  19. Verfahren nach einem der Ansprüche 16 bis 18, einschließlich Identifizieren des ersten Prozesses basierend auf einer Analyse von ausführbarem Code, der den ersten Prozess definiert.
  20. Verfahren nach Anspruch 1, wobei das Computerprogramm einen Graphen umfasst.
  21. Verfahren nach einem der vorangegangenen Ansprüche, wobei der erste Prozess ein ausführbarer Prozess ist, der durch eine erste Komponente des Graphen repräsentiert wird, und wobei der eine oder die mehreren zweiten Prozesse ausführbare Prozesse sind, die durch eine oder mehrere zweite Komponenten des Graphen repräsentiert werden.
  22. Verfahren nach Anspruch 21, wobei die eine oder die mehreren zweiten Komponenten dazu ausgelegt sind, Datensätze von einer vorgelagerten Komponente des Graphen zu empfangen.
  23. Verfahren nach Anspruch 21 oder 22, wobei die eine oder die mehreren zweiten Komponenten dazu ausgelegt sind, Datensätze einer nachgelagerten Komponente des Graphen bereitzustellen.
  24. System, das Folgendes beinhaltet: Mittel zum Analysieren, durch einen Prozessor, einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Mittel zum Erzeugen, durch einen Prozessor, einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, von einem oder mehreren zweiten Prozessen, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  25. System, das Folgendes beinhaltet: einen Prozessor, der mit einem Speicher gekoppelt ist, wobei der Prozessor und der Speicher ausgelegt sind zum: Analysieren einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, von einem oder mehreren zweiten Prozessen, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
  26. Nicht flüchtiges computerlesbares Medium, das Befehle abspeichert, um ein Datenverarbeitungssystem zu Folgendem zu veranlassen: Analysieren einer ersten Version eines Computerprogramms, wobei das Analysieren ein Identifizieren eines ersten Prozesses, der in der ersten Version des Computerprogramms enthalten ist, beinhaltet, wobei der erste Prozess dazu ausgelegt ist, eine erste Operation an Daten mit einem ersten Format durchzuführen; und Erzeugen einer zweiten Version von mindestens einem Teil des Computerprogramms, einschließlich Weglassen des ersten Prozesses und Einschließen, in der zweiten Version des mindestens einen Teils des Computerprogramms, von einem oder mehreren zweiten Prozessen, die dazu ausgelegt sind, eine zweite Operation an Daten mit einem zweiten Format, das sich vom ersten Format unterscheidet, durchzuführen, wobei die zweite Operation auf der ersten Operation basiert.
DE112017002779.9T 2016-06-03 2017-05-18 Formatspezifische Datenverarbeitungsoperationen Pending DE112017002779T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662345217P 2016-06-03 2016-06-03
US62/345,217 2016-06-03
US15/433,467 US10936289B2 (en) 2016-06-03 2017-02-15 Format-specific data processing operations
US15/433,467 2017-02-15
PCT/US2017/033285 WO2017209969A1 (en) 2016-06-03 2017-05-18 Format-specific data processing operations

Publications (1)

Publication Number Publication Date
DE112017002779T5 true DE112017002779T5 (de) 2019-02-28

Family

ID=59009783

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017002779.9T Pending DE112017002779T5 (de) 2016-06-03 2017-05-18 Formatspezifische Datenverarbeitungsoperationen

Country Status (9)

Country Link
US (2) US10936289B2 (de)
EP (1) EP3465422B1 (de)
JP (2) JP2019521430A (de)
CN (1) CN109564507B (de)
AU (2) AU2017274407B2 (de)
CA (1) CA3026334C (de)
DE (1) DE112017002779T5 (de)
SG (1) SG11201810383SA (de)
WO (1) WO2017209969A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US11184271B2 (en) * 2017-04-06 2021-11-23 At&T Intellectual Property I, L.P. Network service assurance system
US11182238B2 (en) * 2019-07-16 2021-11-23 International Buusiness Machines Corporation Problematic characters

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US20070011668A1 (en) 2005-06-27 2007-01-11 Wholey J S Managing parameters for graph-based computations

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626344A (ja) 1985-07-02 1987-01-13 Nec Corp プログラムデバツグ方式
JPS63125088A (ja) * 1986-11-14 1988-05-28 Nec Corp マルチ交換システムにおけるデ−タアクセス方式
JPH02294824A (ja) * 1989-05-10 1990-12-05 Hokuriku Nippon Denki Software Kk テーブル設計書作成装置
JP2555920B2 (ja) * 1993-01-25 1996-11-20 日本電気株式会社 オンラインリアルタイム処理装置
JPH0926897A (ja) * 1995-05-08 1997-01-28 Toshiba Corp プログラム解析装置及びプログラム解析方法
JPH1083328A (ja) 1996-09-05 1998-03-31 Nec Corp 単体テスト用疑似入出力実現方式
US6102968A (en) 1998-05-21 2000-08-15 Lucent Technologies Inc. Method for automatically closing open reactive systems
US6389429B1 (en) 1999-07-30 2002-05-14 Aprimo, Inc. System and method for generating a target database from one or more source databases
US6983317B1 (en) 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6631386B1 (en) 2000-04-22 2003-10-07 Oracle Corp. Database version control subsystem and method for use with database management system
WO2002084879A2 (en) 2001-04-13 2002-10-24 The Code Coproration System and method for encoding and decoding data and references to data in machine-readable graphical codes
GB2379293B (en) * 2001-08-31 2005-07-06 Discreet Logic Inc Processing Data in an Application comprising a plurality of Application Modules
US7529822B2 (en) 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US8020148B2 (en) 2002-09-23 2011-09-13 Telefonaktiebolaget L M Ericsson (Publ) Bi-directional probing and testing of software
US7039645B1 (en) 2002-09-26 2006-05-02 Requisite Technology, Inc. Managing content of an electronic catalog by collaboration with another electronic catalog
US8676720B1 (en) 2002-09-26 2014-03-18 Requisite Software, Inc. Collaborative method for managing electronic catalogs
US7100172B2 (en) * 2002-11-27 2006-08-29 Microsoft Corporation System and method for changing operation of an application without recompiling
US7421621B1 (en) 2003-09-19 2008-09-02 Matador Technologies Corp. Application integration testing
JP2005228183A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd プログラム実行方法、および、プログラム実行のための計算機システム
JP2005301359A (ja) * 2004-04-06 2005-10-27 Denso Corp ソフトウェア部品管理装置
US7506304B2 (en) 2004-05-14 2009-03-17 National Instruments Corporation Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation
US7380171B2 (en) 2004-12-06 2008-05-27 Microsoft Corporation Controlling software failure data reporting and responses
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7587636B2 (en) 2005-08-04 2009-09-08 Microsoft Corporation Unit test generalization
CN100405323C (zh) 2005-09-20 2008-07-23 中国科学院计算技术研究所 一种在指令级随机测试中支持ejtag测试的实现方法
US20070074175A1 (en) 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US7660666B2 (en) 2005-11-18 2010-02-09 Navteq North America, Llc Geographic database with detailed local data
US7617231B2 (en) 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US8079019B2 (en) 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US7644334B2 (en) 2006-11-27 2010-01-05 Honeywell International, Inc. Requirements-based test generation
US7860905B2 (en) 2007-04-24 2010-12-28 Microsoft Corporation Systems and methods for modularizing data flows
US8583613B2 (en) * 2007-08-21 2013-11-12 Oracle International Corporation On demand data conversion
EP2226721B1 (de) 2007-12-28 2017-08-02 Panasonic Intellectual Property Corporation of America Kommunikationsvorrichtung, kommunikationssystem, bilddarstellungsverfahren und programm
US7502972B1 (en) 2008-03-16 2009-03-10 International Business Machines Corporation Reducing log entries using hash keys
US8949140B2 (en) 2008-04-21 2015-02-03 International Business Machines Corporation Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
US20100153928A1 (en) * 2008-12-16 2010-06-17 Microsoft Corporation Developing and Maintaining High Performance Network Services
KR101862235B1 (ko) 2009-12-14 2018-05-29 아브 이니티오 테크놀로지 엘엘시 사용자 인터페이스 요소 지정
US8397195B2 (en) 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
WO2011091388A2 (en) * 2010-01-22 2011-07-28 The Regents Of The University Of California Web application development framework
US8370809B2 (en) 2010-03-18 2013-02-05 Salesforce.Com, Inc. System, method and computer program product for automated test case generation and scheduling
AU2011268459B2 (en) * 2010-06-15 2014-09-18 Ab Initio Technology Llc Dynamically loading graph-based computations
US8627296B1 (en) 2010-09-15 2014-01-07 Google Inc. Unified unit and integration test with automatic mock creation
US20120078731A1 (en) * 2010-09-24 2012-03-29 Richard Linevsky System and Method of Browsing Electronic Catalogs from Multiple Merchants
US20120131559A1 (en) 2010-11-22 2012-05-24 Microsoft Corporation Automatic Program Partition For Targeted Replay
KR101894925B1 (ko) * 2011-01-07 2018-09-04 아브 이니티오 테크놀로지 엘엘시 흐름 분석 계측
US20120185767A1 (en) * 2011-01-14 2012-07-19 Apple Inc. Modifying application behavior
US8874622B2 (en) 2011-03-28 2014-10-28 Microsoft Corporation Flexible order of authoring for data integration solutions
US8386419B2 (en) 2011-05-12 2013-02-26 Narendar Yalamanchilli Data extraction and testing method and system
JP5906789B2 (ja) 2012-02-17 2016-04-20 株式会社ソシオネクスト メッセージ出力制御装置及びメッセージ出力制御方法
US9146750B2 (en) * 2012-08-10 2015-09-29 The Mathworks, Inc. Mechanism for replacing an array creation routine within code
US9002348B2 (en) 2012-11-20 2015-04-07 Aeris Communications, Inc. Utilizing devices nearby
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP2881857B8 (de) * 2013-12-09 2018-09-12 dSPACE digital signal processing and control engineering GmbH Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes
US9430228B2 (en) * 2013-12-16 2016-08-30 International Business Machines Corporation Verification of backward compatibility of software components
EP3084611A1 (de) * 2013-12-18 2016-10-26 AB Initio Technology LLC Datenerzeugung
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US9804946B2 (en) * 2015-05-27 2017-10-31 Oracle International Corporation System and method for providing automated computer language translation and verification
SG11201803929YA (en) * 2015-12-21 2018-06-28 Ab Initio Technology Llc Sub-graph interface generation
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10929122B1 (en) * 2019-10-23 2021-02-23 Microsoft Technology Licensing, Llc Modifying program modules in running applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US20070011668A1 (en) 2005-06-27 2007-01-11 Wholey J S Managing parameters for graph-based computations

Also Published As

Publication number Publication date
JP2019521430A (ja) 2019-07-25
JP2023071664A (ja) 2023-05-23
AU2017274407B2 (en) 2020-12-10
AU2017274407A1 (en) 2018-12-13
US20170351494A1 (en) 2017-12-07
EP3465422B1 (de) 2022-09-14
EP3465422A1 (de) 2019-04-10
AU2021201363B2 (en) 2022-11-24
CA3026334C (en) 2023-07-25
US11347484B2 (en) 2022-05-31
CN109564507A (zh) 2019-04-02
US10936289B2 (en) 2021-03-02
CN109564507B (zh) 2022-06-24
WO2017209969A1 (en) 2017-12-07
AU2021201363A1 (en) 2021-03-18
SG11201810383SA (en) 2018-12-28
CA3026334A1 (en) 2017-12-07
US20210182038A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
DE112018002920T5 (de) Datenflussgraphenkonfiguration
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
US10705807B2 (en) Application testing
DE112015003406T5 (de) Datenherkunftssummierung
CN112368675B (zh) 更新可执行图的方法、系统和介质
US11347484B2 (en) Format-specific data processing operations
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE202016008006U1 (de) Generierung von Integrationstests im Kleinen
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
DE102012210482A1 (de) Verfahren und System zum Migrieren von Geschäftsprozessinstanzen
Thaler et al. The IWi process model corpus
DE112013005831T5 (de) Netzlistenabstraktion
DE102010044039A1 (de) Verfahren und Vorrichtung zur Qualitätsanalyse von Systemmodellen
DE112020002515T5 (de) Statische und laufzeitanalyse von computerprogrammsystemen
DE102017212612A1 (de) Verfahren zum automatischen Erzeugen von Tests für die Software eines Fahrzeugs
DE102022202697A1 (de) Verfahren zum Bereitstellen einer Blockchain
DE102018110112A1 (de) Validierung von Hypothesen mittels Datenbankabfragen für komponentenbasierte Systeme

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)