DE112020002515T5 - Statische und laufzeitanalyse von computerprogrammsystemen - Google Patents

Statische und laufzeitanalyse von computerprogrammsystemen Download PDF

Info

Publication number
DE112020002515T5
DE112020002515T5 DE112020002515.2T DE112020002515T DE112020002515T5 DE 112020002515 T5 DE112020002515 T5 DE 112020002515T5 DE 112020002515 T DE112020002515 T DE 112020002515T DE 112020002515 T5 DE112020002515 T5 DE 112020002515T5
Authority
DE
Germany
Prior art keywords
computer program
ecosystem
program ecosystem
computer
analysis
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
DE112020002515.2T
Other languages
English (en)
Inventor
John Joyce
Marshall A. Isman
Sam Kendall
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 DE112020002515T5 publication Critical patent/DE112020002515T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • 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/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Verfahren zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, beinhaltet Durchführen einer statischen Analyse des Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Ökosystemelementen basierend auf Werten von Parametern in Parametersätzen, die mit dem Ökosystem assoziiert sind, wobei die Elemente die Computerprogramme und Datenressourcen, die mit den Computerprogrammen assoziiert sind, beinhalten. Das Verfahren beinhaltet Durchführen einer Laufzeitanalyse des Ökosystems, einschließlich Identifizieren von Elementen, die während einer Ausführung des Ökosystems genutzt wurden, um Datensätze zu verarbeiten. Das Verfahren beinhaltet Durchführen einer Zeitplanungsanalyse des Ökosystems, einschließlich Identifizieren eines Computerprogramms, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm aufweist. Das Verfahren beinhaltet Identifizieren einer Teilmenge der Elemente als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen, Laufzeit- und Zeitplanungsanalysen; und Migrieren der Ökosystemeinheit von einem ersten zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beides.

Description

  • PRIORITÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht die Priorität der am 17. Januar 2020 eingereichten US-Patentanmeldung mit der Serien-Nr. 16/746,392 , die gemäß 35 USC §119(e) die Priorität der am 22. Mai 2019 eingereichten US-Patentanmeldung mit der Seriennummer 62/851,295 beansprucht, deren jeweiliger gesamter Inhalt hiermit durch Bezugnahme aufgenommen wird.
  • Hintergrund
  • Datenverarbeitungssysteme können mehrere Computerprogramme beinhalten, die ausgeführt werden können, um Eingabedaten zu verarbeiten. Innerhalb eines Datenverarbeitungssystems können Daten von einem Computerprogramm zu einem anderen weitergegeben werden, bevor ein Satz von Ausgabedaten erzeugt wird.
  • Kurzdarstellung
  • Hier werden Ansätze zum Analysieren von Computerprogrammen und assoziierten Datenressourcen (hier als Computerprogramm-Ökosystem bezeichnet), um eine Teilmenge der Computerprogramme und Datenressourcen als Ökosystemeinheit zu identifizieren, und zum Durchführen einer oder mehrerer Systemaufgaben unter Verwendung der durch die Analyse identifizierten Ökosystemeinheit beschrieben. Die Computerprogramme und Datenressourcen in der Ökosystemeinheit lassen sich basierend auf ihren statischen Abhängigkeiten und/oder Laufzeitabhängigkeiten voneinander identifizieren. Wenn das Computerprogramm-Ökosystem ausgeführt wird, werden gewisse der Computerprogramme ausgeführt, und auf gewisse Datenressourcen wird durch die ausgeführten Computerprogramme zugegriffen. Durch Vergleichen der statischen Abhängigkeiten mit Informationen, die angeben, welche Computerprogramme ausgeführt wurden und auf welche Datenressourcen zugegriffen wurde, lässt sich die Ökosystemeinheit identifizieren. Das Behandeln der Computerprogramme und Datenressourcen, die die Ökosystemeinheit bilden, als eine einzige Einheit zum Durchführen von Systemaufgaben, wie etwa Migration von einem Rechensystem zu einem anderen oder Testen des Computerprogramm-Ökosystems, kann die Systemaufgaben erleichtern. Indem die Ökosystemeinheit für die Systemaufgabe als Ganzes behandelt wird, können Rechendatenressourcen des Systems (z. B. Speicher, Verarbeitungsleistung, Verarbeitungszeit) eingespart werden, während das Aufnehmen aller relevanten Elemente des Computerprogramm-Ökosystems in die Durchführung der Systemaufgabe ermöglicht wird, wodurch z. B. eine effizientere Durchführung der Systemaufgabe ermöglicht wird, bei der weniger Verarbeitungsleistung verbraucht wird.
  • In einem Aspekt beinhaltet ein computerimplementiertes Verfahren zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten. Das Verfahren beinhaltet Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten. Das Verfahren beinhaltet Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist. Das Verfahren beinhaltet Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse. Das Verfahren beinhaltet Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beides.
  • Ausführungsformen können eine beliebige Kombination eines oder mehrerer der folgenden Merkmale beinhalten.
  • Das Durchführen der Laufzeitanalyse beinhaltet Erhalten von Laufzeitprotokollinformationen, die durch die Ausführung des Computerprogramm-Ökosystems erzeugt werden; und Analysieren der Laufzeitprotokollinformationen, um das eine oder die mehreren Elemente des Computerprogramm-Ökosystems zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden. Das Analysieren der Laufzeitprotokollinformationen beinhaltet Analysieren der Werte von Parametern in den Laufzeitprotokollinformationen, um ein oder mehrere Computerprogramme zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden. Das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit beinhaltet Identifizieren der Computerprogramme, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden, als Teile der Ökosystemeinheit. Das Identifizieren eines oder mehrerer Computerprogramme des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden, beinhaltet Identifizieren von Laufzeitabhängigkeiten zwischen den ausgeführten Computerprogrammen. Das Identifizieren der Laufzeitabhängigkeiten zwischen den ausgeführten Computerprogrammen beinhaltet Identifizieren der Laufzeitabhängigkeiten basierend auf den Werten der Parameter in den Laufzeitprotokollinformationen. Das Analysieren der Werte der Parameter in den Laufzeitprotokollinformationen beinhaltet Generalisieren eines oder mehrerer der Werte. Das Analysieren der Laufzeitprotokollinformationen beinhaltet Analysieren der Werte von Parametern in den Laufzeitprotokollinformationen, um eine oder mehrere Datenressourcen zu identifizieren, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde. Das Verfahren beinhaltet Analysieren der Werte der Parameter in den Laufzeitprotokollinformationen, um den Namen jeder Datenressource zu bestimmen, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde. Das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit beinhaltet Identifizieren der Datenressourcen, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde, als Teile der Ökosystemeinheit.
  • Das Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit beinhaltet das Aufnehmen des einen oder der mehreren Elemente, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, in die Ökosystemeinheit.
  • Das Durchführen einer Zeitplanungsanalyse beinhaltet Erhalten von Zeitplanungsinformationen von einem Scheduler, wobei sich der Scheduler von dem Computerprogramm-Ökosystem unterscheidet.
  • Das Durchführen einer Zeitplanungsanalyse beinhaltet Identifizieren eines ersten Computerprogramms des Computerprogramm-Ökosystems, dessen Ausführung nach einer Ausführung eines zweiten Computerprogramms des Computerprogramm-Ökosystems geplant ist. Das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit beinhaltet Identifizieren des ersten Computerprogramms und des zweiten Computerprogramms als Teil der Ökosystemeinheit.
  • Das Verfahren beinhaltet Ausführen des Computerprogramm-Ökosystems, um Daten zu verarbeiten. Das Ausführen des Computerprogramm-Ökosystems beinhaltet Instanziieren eines oder mehrerer der Computerprogramme des Computerprogramm-Ökosystems gemäß Werten von Parametern in einem oder mehreren der mit dem Computerprogramm-Ökosystem assoziierten Parametersätze. Das Ausführen des Computerprogramm-Ökosystems beinhaltet Ausführen des einen oder der mehreren instanziierten Computerprogramme, um die Daten zu verarbeiten. Die Laufzeitprotokollinformationen beinhalten Informationen, die das eine oder die mehreren ausgeführten instanziierten Computerprogramme angeben. Das Ausführen des Computerprogramm-Ökosystems beinhaltet Zugreifen auf eine oder mehrere der Datenressourcen, die mit dem Computerprogramm-Ökosystem assoziiert sind. Die Laufzeitprotokollinformationen beinhalten Informationen, die die eine oder die mehreren Datenressourcen angeben, auf die zugegriffen wird. Das Zugreifen auf eine Datenressource, die mit dem Computerprogramm-Ökosystem assoziiert ist, beinhaltet Lesen von Daten aus einer Datei und/oder einer Datenbank und/oder einem Objekt. Das Zugreifen auf eine Datenressource, die mit dem Computerprogramm-Ökosystem assoziiert ist, beinhaltet Schreiben von Daten in eine Datei und/oder eine Datenbank und/oder ein Objekt. Das Ausführen des Computerprogramm-Ökosystems beinhaltet Erzeugen der Laufzeitprotokollinformationen. Das Erzeugen der Laufzeitprotokollinformationen beinhaltet Schreiben der Laufzeitprotokollinformationen in eine Protokolldatei.
  • Das eine oder die mehreren Computerprogramme beinhalten Datenflussgraphen.
  • In einem Aspekt beinhaltet ein Computersystem zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, einen oder mehrere Prozessoren, die mit einem Speicher gekoppelt sind. Der eine oder die mehreren Prozessoren sind zum Durchführen einer statischen Analyse des Computerprogramm-Ökosystems ausgelegt, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten. Der eine oder die mehreren Prozessoren sind zum Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems ausgelegt, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten. Der eine oder die mehreren Prozessoren sind zum Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems ausgelegt, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist. Der eine oder die mehreren Prozessoren sind ausgelegt zum Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse. Der eine oder die mehreren Prozessoren sind ausgelegt zum Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, zum Testen der Ökosystemeinheit oder zu beidem.
  • In einem Aspekt speichert ein computerlesbares Medium Anweisungen zum Bewirken, dass ein Computersystem ein Computerprogramm-Ökosystem, das mehrere Computerprogramme beinhaltet, analysiert. Die Anweisungen bewirken, dass das Computersystem, eine statische Analyse des Computerprogramm-Ökosystems durchführt, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten. Die Anweisungen bewirken, dass das Computersystem eine Laufzeitanalyse des Computerprogramm-Ökosystems durchführt, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten. Die Anweisungen bewirken, dass das Computersystem eine Zeitplanungsanalyse des Computerprogramm-Ökosystems durchführt, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist. Die Anweisungen bewirken, dass das Computersystem, eine Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse identifiziert. Die Anweisungen bewirken, dass das Computersystem die Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem migriert, die Ökosystemeinheit testet oder beides.
  • In einem Aspekt beinhaltet ein Computersystem zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme umfasst, Mittel zum Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten. Das Computersystem beinhaltet Mittel zum Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten. Das Computersystem beinhaltet Mittel zum Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist. Das Computersystem beinhaltet Mittel zum Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse. Das Computersystem beinhaltet Mittel zum Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, zum Testen der Ökosystemeinheit oder zu beidem.
  • Die Details einer oder mehrerer Implementierungen sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Weitere Merkmale und Vorteile ergeben sich aus der Beschreibung und den Zeichnungen sowie aus den Ansprüchen.
  • Figurenliste
    • 1A-1D sind Diagramme eines Computerprogramm-Ökosystems.
    • 2 ist ein Diagramm einer Migration einer Ökosystemeinheit.
    • 3 ist ein Diagramm des Testens einer Ökosystemeinheit.
    • 4 ist ein Diagramm eines Systems zum Analysieren eines Computerprogramm-Ökosystems.
    • 5A ist ein Datenflussgraph.
    • 5B ist eine Laufzeitkonfiguration des Datenflussgraphen von 5A.
    • 6 ist ein Flussdiagramm für eine Laufzeitanalyse eines Computerprogramm-Ökosystems.
    • 7 ist ein Flussdiagramm.
    • 8 ist ein Diagramm eines Computersystems.
  • Ausführliche Beschreibung
  • Hier werden Ansätze zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet und mit dem mehrere Datenressourcen assoziiert sind, um eine Teilmenge der Computerprogramme und Datenressourcen als eine Ökosystemeinheit zu identifizieren, beschrieben. Ein Computerprogramm-Ökosystem ist ein Satz von mehreren Computerprogrammen zusammen mit Datenressourcen, die mit den Computerprogrammen assoziiert sind. Eine Datenressource ist ein Datenrepositorium, wie etwa eine Quelle von Daten (z. B. Datensätze) zur Verarbeitung durch eines oder mehrere der Computerprogramme in dem Computerprogramm-Ökosystem, die als Referenzdaten während der Verarbeitung durch eines oder mehrere der Computerprogramme in dem Computerprogramm-Ökosystem zu verwenden sind, oder ein Ziel für Daten (z. B. Datensätze) nach Verarbeitung der Daten durch eines oder mehrere der Computerprogramme in dem Computerprogramm-Ökosystem. Eine Ökosystemeinheit wird basierend auf Ergebnissen von statischen, Laufzeit- und Zeitplanungsanalysen des Computerprogramm-Ökosystems identifiziert, die Abhängigkeiten zwischen den Elementen des Computerprogramm-Ökosystems angeben. Eine Systemaufgabe, wie etwa Migration von Computerprogrammen und Ressourcen oder Testen von Computerprogrammen, kann unter Verwendung der Ökosystemeinheit anstatt des gesamten Computerprogramm-Ökosystems ausgeführt werden, wodurch Systemressourcen, wie etwa Verarbeitungsleistung oder Speicher, eingespart werden.
  • Die Computerprogramme und Datenressourcen des Computerprogramm-Ökosystems können statische Abhängigkeiten voneinander aufweisen. Eine statische Abhängigkeit zwischen zwei Elementen (z. B. Computerprogrammen und/oder Datenressourcen) ist eine Abhängigkeit, die durch Werte in zuvor gespeicherten Parametersätzen, die mit dem Computerprogramm-Ökosystem assoziiert sind, definiert wird. Statische Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems lassen sich durch eine statische Analyse der Werte in den gespeicherten Parametersätzen identifizieren.
  • Die Computerprogramme und Datenressourcen des Computerprogramm-Ökosystems können auch Abhängigkeiten voneinander aufweisen, die erst zur Laufzeit des Computerprogramm-Ökosystems definiert sind. Wird das Computerprogramm-Ökosystem ausgeführt, um Datensätze zu verarbeiten, so kann ein Ausführungsbefehl Parameterwerte enthalten, z. B. zusätzlich zu oder anstelle von Parameterwerten in den zuvor gespeicherten Parametersätzen, die die statischen Abhängigkeiten definieren. Während einer Ausführung des Computerprogramm-Ökosystems erzeugte Laufzeitprotokolle können diese Parameterwerte angeben, die angeben, welche Computerprogramme ausgeführt wurden, auf welche Datenressourcen zugegriffen wurde. Eine Laufzeitanalyse, z. B. eine Analyse von Laufzeitprotokollen, kann Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems identifizieren, die aus der statischen Analyse nicht ersichtlich waren.
  • Die Computerprogramme des Computerprogramm-Ökosystems können auch Zeitplanungsabhängigkeiten voneinander aufweisen. Eine Ausführung des Computerprogramm-Ökosystems, um Datensätze zu verarbeiten, lässt sich durch einen Scheduler steuern, der vorschreibt, wann bestimmte Elemente (z. B. Computerprogramme) auszuführen sind. In manchen Fällen kann der Scheduler vorschreiben, dass ein erstes Computerprogramm oder eine Gruppe von Computerprogrammen nach einer Ausführung eines zweiten Computerprogramms oder einer Gruppe von Computerprogrammen auszuführen ist. Eine Zeitplanungsanalyse, z. B. eine Analyse von Zeitplanungsinformationen, die durch den Scheduler vorgeschrieben werden, kann Zeitplanungsabhängigkeiten zwischen Computerprogrammen identifizieren, selbst wenn diese Computerprogramme keine statischen oder Laufzeitabhängigkeiten voneinander aufweisen.
  • Durch Vergleichen der statischen Abhängigkeiten, der Ergebnisse einer Laufzeitanalyse und der Zeitplanungsabhängigkeiten kann ein vollständiges Bild der Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems entwickelt werden. Elemente, die von einem anderen Element abhängen oder von denen ein anderes Element abhängt, werden durch die Kombination von statischer, Laufzeit- und Zeitplanungsanalyse identifiziert. Diese identifizierten Elemente bilden zusammen eine Ökosystemeinheit. Das Behandeln der Computerprogramme und Datenressourcen, die die Ökosystemeinheit bilden, als eine einzige Einheit kann Systemaufgaben erleichtern, wie etwa eine Migration von einem Computersystem zu einem anderen oder das Testen des Computerprogramm-Ökosystems.
  • Unter Bezugnahme auf 1A beinhaltet ein Computerprogramm-Ökosystem 100 mehrere Computerprogramme 102a-102h (zusammen als Computerprogramme 102 bezeichnet). Zumindest einige der Computerprogramme 102 hängen statisch von einem oder mehreren anderen der Computerprogramme 102 ab. Zum Beispiel empfängt ein Computerprogramm 102d als Eingabe Daten (z. B. Datensätze), die durch ein stromaufwärts des Computerprogramms 102d gelegenen Computerprogramm 102a verarbeitet und von diesem ausgegeben werden. Eine statische Abhängigkeit ist eine Abhängigkeit, die sich in einer statischen Analyse vor der Laufzeit des Computerprogramms bestimmen lässt, z. B. basierend auf einer Analyse der gespeicherten Parameterwerte oder eines mit dem Computerprogramm assoziierten Quellcodes.
  • In dem Beispiel von 1A handelt es sich bei den Computerprogrammen 102 des Computerprogramm-Ökosystems 100 um Datenflussgraphen. Ein Datenflussgraph ist ein ausführbares Computerprogramm in Form eines Graphen, der Knoten enthalten kann, die ausführbare Datenverarbeitungskomponenten und Datenressourcen wie Datenquellen und Datensenken sind. Datenressourcen können beispielsweise Dateien, Datenbanktabellen oder andere Arten von Datenquellen oder - senken sein, die Daten (z. B. Datensätze) zur Verarbeitung durch den Graphen bereitstellen können oder durch die Datenverarbeitungskomponenten des Graphen verarbeitete Daten empfangen können. Datenverarbeitungskomponenten und Datenressourcen werden mitunter gemeinsam als Knoten des Graphen bezeichnet. Eine Verbindungsstrecke, die zwei Knoten eines Graphen verbindet, ist für einen Fluss von Informationen, wie etwa Daten oder Steuersignalen, zwischen den Knoten vorgesehen. Solche Datenflussgraphen (mitunter als Graphen bezeichnet) können Datenverarbeitungsgraphen oder Pläne, die eine Ausführung eines oder mehrerer Graphen steuern, sein. Datenflussgraphen können ausgeführt werden, um eine Verarbeitung der Informationen durchzuführen. In einigen Beispielen können eine oder mehrere Datenverarbeitungskomponenten eines Datenflussgraphen ein Teilgraph sein.
  • Eine oder mehrere Datenressourcen 104a-104j (zusammen als Datenressourcen 104 bezeichnet) können mit dem Computerprogramm-Ökosystem 100 assoziiert sein. Eine Datenressource ist ein Datenrepositorium, z. B. eine Quelle von Daten, die während einer Verarbeitung durch das Computerprogramm-Ökosystem (z. B. während einer Verarbeitung durch die Computerprogramme des Computerprogramm-Ökosystems) zu verarbeiten oder zu verwenden sind, oder ein Ziel für eine Datenausgabe durch das Computerprogramm-Ökosystem. Zu Beispielen für Datenressourcen gehören Dateien, Datenbanken (z. B. Tabellen von Datenbanken), Warteschlangen, Objekte und andere Arten von Datenressourcen. Mit Zugreifen auf eine Ressource ist gemeint, dass Daten aus der Datenressource gelesen oder in diese geschrieben werden. Zumindest einige der Datenressourcen 104 hängen statisch von einem oder mehreren der Computerprogramme 102 des Computerprogramm-Ökosystems 100 ab oder zumindest einige der Computerprogramme 102 hängen statisch von einer oder mehreren der Datenressourcen 104 ab oder beides. Zum Beispiel können gespeicherte Parameterwerte statische Abhängigkeiten zwischen einem Computerprogramm 102a und Datenressourcen 104a, 104f angeben: Daten von der Datenressource 104a werden als Eingabe an das zugehörige Computerprogramm 102a geliefert, das wiederum Datensätze an die Datenressource 104f ausgibt.
  • Die statischen Abhängigkeiten zwischen den Elementen des Computerprogramm-Ökosystems (z. B. den Computerprogrammen 102 in dem Computerprogramm-Ökosystem 100 und den mit dem Computerprogramm-Ökosystem 100 assoziierten Datenressourcen 104) werden durch einen oder mehrere mit dem Computerprogramm-Ökosystem 100 assoziierte Parametersätze spezifiziert. Die Parametersätze können mit bestimmten Computerprogrammen 102, mit bestimmten Ressourcen 104 oder allgemein mit dem Computerprogramm-Ökosystem 100 assoziiert sein. Ein Parametersatz kann durch eine Datei definiert werden, die mit dem/der jeweiligen Computerprogramm 102, Ressource 104 oder Ökosystem 100 assoziiert ist, wobei die Datei Werte (oder zum Bestimmen von Werten verwendbare Informationen) für Parameter des Parametersatzes enthält. Eine statische Analyse des Computerprogramm-Ökosystems kann durchgeführt werden, um die statischen Abhängigkeiten zwischen den Elementen des Computerprogramm-Ökosystems basierend auf aufgelösten Parameterwerten für die Parameter in den Parametersätzen zu identifizieren, wie nachstehend erörtert.
  • Unter Bezugnahme auf 1B kann das Computerprogramm-Ökosystem 100 ausgeführt werden, um Eingabedaten, wie beispielsweise Eingabedatensätze, zu verarbeiten. Nicht alle der Elemente (z. B. Computerprogramme 102 und Datenressourcen 104) des Computerprogramm-Ökosystems 100 werden notwendigerweise bei der Verarbeitung eines gegebenen Satzes von Eingabedaten genutzt. Zum Beispiel können während einer Ausführung des Computerprogramm-Ökosystems 100 weniger als alle Computerprogramme 102 des Computerprogramm-Ökosystems 100 ausgeführt werden und/oder es kann auf weniger als alle mit dem Computerprogramm-Ökosystem 100 assoziierten Datenressourcen 104 zugegriffen werden.
  • In dem Beispiel von 1B werden während einer Ausführung des Computerprogramm-Ökosystems 100, um die Eingabedaten 110 zu verarbeiten, die Computerprogramme 102a, 102b und 102d-102f ausgeführt und es wird auf die Datenressourcen 104a, 104b und 104f zugegriffen. Die anderen Elemente (z. B. das Computerprogramm 102c, 102g und 102h und die Datenressourcen 104c, 104d, 104e und 104g-104j) werden nicht genutzt, wie durch die graue Schattierung in 1B gezeigt.
  • Ein Computerprogramm-Ökosystem wird als Reaktion auf einen Ausführungsbefehl ausgeführt, der Parameterwerte als dem Ausführungsbefehl zugeführte Argumente z. B. zusätzlich zu oder anstelle von zuvor gespeicherten Parametersätzen empfangen kann. Die statische Analyse eines Computerprogramm-Ökosystems bestimmt statische Abhängigkeiten nur basierend auf gespeicherten Parametersätzen; als solche werden Parametersätze, die mit Parameterwerten assoziiert sind, die aus einem Ausführungsbefehl zugeführten Argumenten stammen, nicht in den statischen Abhängigkeiten, die in der statischen Analyse bestimmt werden, repräsentiert. Eine Identifizierung einer Ökosystemeinheit allein aufgrund einer statischen Analyse kann daher zu einer unvollständigen oder falschen Identifizierung der Elemente führen, aus denen die Ökosystemeinheit besteht.
  • Eine Laufzeitanalyse kann durchgeführt werden, um die Elemente des Computerprogramm-Ökosystems 100 zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems 100 genutzt werden, wodurch die durch die statische Analyse bereitgestellte Charakterisierung des Computerprogramm-Ökosystems ergänzt wird. Während einer Ausführung des Computerprogramm-Ökosystems 100 werden Laufzeitprotokollinformationen erzeugt, die Werte von Parametern in einem oder mehreren der mit dem Computerprogramm-Ökosystem 100 assoziierten Parametersätze angeben. Zu einer Laufzeitanalyse gehört das Analysieren der Werte der Parameter in den Laufzeitprotokollinformationen, um die Elemente zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden. Zum Beispiel können während einer Ausführung des Computerprogramm-Ökosystems in eine Datei oder eine Tabelle geschriebene Protokollinformationen Kennungen der Elemente des Computerprogramm-Ökosystems beinhalten, die ausgeführt wurden oder auf die zugegriffen wurde. Eine Laufzeitanalyse kann die Protokollinformationen interpretieren, um eine Liste von Elementen zu erhalten, die während einer Ausführung ausgeführt wurden oder auf die zugegriffen wurde.
  • In einigen Beispielen kann eine Ausführung eines Computerprogramm-Ökosystems 100 durch einen Scheduler gesteuert werden. In einigen Beispielen kann eine Ausführung zu bestimmten Zeiten geplant werden (z. B. kann eine Ausführung eines Kreditkartenaufzeichnungsverarbeitungs-Ökosystems für jede Nacht um 23:00 Uhr geplant werden; eine Ausführung eines Telefonaufzeichnungsverarbeitungs-Ökosystems kann für samstags um 2:00 Uhr geplant werden). In einigen Beispielen kann eine Ausführung so geplant werden, dass ein oder mehrere Computerprogramme des Computerprogramm-Ökosystems planungsgemäß vor oder nach einem oder mehreren anderen Computerprogrammen des Computerprogramm-Ökosystems ausgeführt werden, was als Zeitplanungsabhängigkeit bezeichnet wird. In einigen Beispielen können die Zeitplanungsabhängigkeiten von Computerprogrammen 102 bei der Identifizierung einer Ökosystemeinheit berücksichtigt werden. Zum Beispiel können Computerprogramme mit einer Zeitplanungsabhängigkeit in der Ökosystemeinheit enthalten sein, selbst wenn diese Computerprogramme in der statischen oder Laufzeitanalyse des Computerprogramm-Ökosystems 100 nicht identifiziert werden.
  • Unter Bezugnahme auf 1C kann eine Zeitplanungsanalyse Computerprogramme in dem Computerprogramm-Ökosystem 100 identifizieren, die Zeitplanungsabhängigkeiten voneinander aufweisen. In dem Beispiel von Figur IC zeigt eine Zeitplanungsanalyse, dass das Computerprogramm 102h eine Zeitplanungsabhängigkeit von dem Computerprogramm 102f aufweist, was bedeutet, dass das Computerprogramm 102h planungsgemäß ausgeführt wird, nachdem das Computerprogramm 102f seine Ausführung abgeschlossen hat.
  • In einigen Beispielen kann eine Zeitplanungsanalyse Abhängigkeiten zwischen Computerprogrammen 102 erfassen, die weder durch eine statische Analyse noch durch eine Laufzeitanalyse widergespiegelt werden. In dem Beispiel von Figur IC weist das Computerprogramm 102h eine Zeitplanungsabhängigkeit, jedoch keine statische Abhängigkeit, von dem Computerprogramm 102f auf. Außerdem wurde, wie in 1B gezeigt, keine Laufzeitabhängigkeit zwischen dem Computerprogramm 102h und dem Computerprogramm 102f identifiziert. Dies kann zum Beispiel daran liegen, dass die Zeitplanung des Computerprogramms 102h als nach dem Computerprogramm 102f ausgeführt nur bestimmte Wochentage betrifft und somit nicht durch die Laufzeitanalyse erfasst wurde.
  • Die Ergebnisse einer statischen Analyse, einer Laufzeitanalyse und einer Zeitplanungsanalyse des Computerprogramm-Ökosystems können verwendet werden, um eine Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit zu identifizieren. Zum Beispiel können die Elemente, die während einer Ausführung des Computerprogramm-Ökosystems genutzt werden, zusätzlich zu beliebigen anderen Elementen, die statisch abhängig sind von den genutzten Elementen oder beliebigen anderen Elementen, von denen die genutzten Elemente statisch abhängig sind, und beliebige Elemente, die eine Zeitplanungsabhängigkeit mit einem genutzten Element teilen, eine Ökosystemeinheit bilden. Unter Bezugnahme auf 1D bilden in dem Computerprogramm-Ökosystem 100 die Computerprogramme 102xxx und die Ressourcen 104xxx eine Ökosystemeinheit. Diese Computerprogramme und Ressourcen wurden mittels statischer und Laufzeitanalyse (1A und 1B) und Zeitplanungsanalyse (1C) identifiziert. Die restlichen Computerprogramme 102xx und Ressourcen 104xxx (grau schattiert) sind nicht Teil der Ökosystemeinheit.
  • Ein Benutzer, wie etwa ein Systementwickler oder Systemingenieur, oder eine automatisierte computerimplementierte Operation kann mitunter eine Systemaufgabe unter Verwendung des Computerprogramm-Ökosystems durchführen, wie z. B. Testen des Computerprogramm-Ökosystems, Migration des Computerprogramm-Ökosystems von einem Computersystem zu einem anderen oder Archivieren oder Entfernen von ungenutztem Code aus dem Computerprogramm-Ökosystem. Um Systemressourcen (z. B. Verarbeitungs- oder Speicherkapazität) einzusparen und gleichzeitig sicherzustellen, dass alle entsprechenden Elemente des Computerprogramm-Ökosystems in einer gegebenen Systemaufgabe adressiert werden, kann die Systemaufgabe unter Verwendung einer Ökosystemeinheit anstatt des Computerprogramm-Ökosystems als Ganzes durchgeführt werden.
  • 2 zeigt ein Beispiel einer Migration des Computerprogramm-Ökosystems 100 von einem ersten Rechensystem 202 zu einem zweiten Cloudbasierten Rechensystem 204. Um das Computerprogramm-Ökosystem 100 zu migrieren, werden nur die Elemente des Computerprogramm-Ökosystems, die als Teil einer Ökosystemeinheit 150 des Computerprogramm-Ökosystems identifiziert wurden, von dem ersten Rechensystem 202 zu dem zweiten Rechensystem 204 migriert. Eine Migration des gesamten Computerprogramm-Ökosystems 100 von dem ersten Rechensystem 202 zu dem zweiten Rechensystem 204 kann ein aufwendiger Prozess sein, z. B. in Bezug auf Zeit, Bandbreite, Speicher oder andere Faktoren. Eine Migration von Teilen des Computerprogramm-Ökosystems 100 ohne Verständnis der Beziehungen zwischen den Elementen des Computerprogramm-Ökosystems 100 oder des Status jedes Elements während einer Ausführung des Computerprogramm-Ökosystems 100 kann dazu führen, dass nicht alle Elemente, die für eine gegebene Aufgabe relevant sind, migriert werden. Indem die Ökosystemeinheit 150 als Ganzes migriert wird, ohne dass Elemente migriert werden, die keinen Teil der Ökosystemeinheit bilden, können Systemressourcen eingespart werden, während eine Migration aller relevanten Elemente des Computerprogramm-Ökosystems ermöglicht wird.
  • 3 zeigt ein Beispiel des Testens des Computerprogramm-Ökosystems 100. Das Computerprogramm-Ökosystem 100 kann eine oder mehrere Datenverarbeitungsregeln (z. B. spezifiziert und angewendet durch die Computerprogramme) implementieren, von denen jede mit mindestens einem Eingabewert arbeitet und mindestens einen Ausgabewert erzeugt. Ob eine gegebene Datenverarbeitungsregel während einer Verarbeitung einer Datenmenge, z. B. während einer Verarbeitung eines gegebenen Datensatzes, ausgeführt wird, kann direkt oder indirekt von einem Wert in der Datenmenge, wie etwa einem Wert in jedem von einem oder mehreren Feldern des Datensatzes, abhängen.
  • Um ein Computerprogramm-Ökosystem 100 zu testen, werden Ressourcen, wie etwa Datenquellen (z. B. Dateien oder Tabellen), in eine niedrigere Umgebung 310 kopiert, z. B. von einem Server 312, der das Computerprogramm-Ökosystem 100 hostet, und das Testen findet in der niedrigeren Umgebung unter Verwendung von Instanziierungen der Computerprogramme des Computerprogramm-Ökosystems 100 statt. Um für eine effizientere Vorbereitung zum Testen des Computerprogramm-Ökosystems 100 zu sorgen, werden nur diejenigen Ressourcen, die Teil der Ökosystemeinheit 150 des Computerprogramm-Ökosystems 100 sind, in die niedrigere Umgebung kopiert. Der Testprozess kann dann stattfinden, wobei nur die Ressourcen kopiert wurden, die für das Testen relevant sind.
  • In dem Testprozess werden Testdaten 304 und keine tatsächlichen Produktionsdaten bereitgestellt und durch das Computerprogramm-Ökosystem 100 verarbeitet, und Testergebnisse 306 werden von dem Computerprogramm-Ökosystem 100 ausgegeben. Die Testdaten 304 sind Daten, die speziell für das Testen vorbereitet oder ausgewählt wurden und können Daten beinhalten, die ausreichen, um zu bewirken, dass einige oder alle der Datenverarbeitungsregeln in dem Computerprogramm-Ökosystem 100 (z. B. einige oder alle der Datenverarbeitungsregeln der mehreren Computerprogramme 102 des Computerprogramm-Ökosystems 100) ausgeführt werden. Um das Testen effizienter und weniger ressourcenintensiv zu gestalten, kann die Ökosystemeinheit 150 in dem Computerprogramm-Ökosystem 100 vor dem Testen identifiziert werden, und Testdaten 304, die ausreichen, um zu bewirken, dass einige oder alle der Datenverarbeitungsregeln (z. B. der Computerprogramme) in der Ökosystemeinheit 150 ausgeführt werden. Da die Ökosystemeinheit 150 weniger umfangreich sein kann als das gesamte Computerprogramm-Ökosystem 100, kann die Menge und/oder Vielfalt von Testdaten, die ausreichen, um eine Ausführung der Datenverarbeitungsregeln in der Ökosystemeinheit 150 zu bewirken, geringer sein, wodurch ein effizienteres Testen ermöglicht wird, bei dem weniger Verarbeitungsleistung verbraucht wird.
  • Unter Bezugnahme auf 4 führt ein beispielhaftes Analysesystem 420 eine statische und Laufzeitanalyse und eine Zeitplanungsanalyse an einem Computerprogramm-Ökosystem 400 durch, um eine Teilmenge der Elemente des Computerprogramm-Ökosystems 400 als eine Ökosystemeinheit 430 zu identifizieren. Das Computerprogramm-Ökosystem 400 wird auf einem Computersystem 410 gehostet und beinhaltet mehrere Computerprogramme 402, z. B. Datenflussgraphen, und eine oder mehrere Datenressourcen 408 sind mit dem Computerprogramm-Ökosystem 400 assoziiert.
  • Das Analysesystem 420 beinhaltet eine Statische-Analyse-Engine 422 zum Identifizieren statischer Abhängigkeiten zwischen den Elementen des Computerprogramm-Ökosystems 400, wie etwa zwischen den mehreren Computerprogrammen 402 und der einen oder den mehreren Datenressourcen 408. Die Statische-Analyse-Engine arbeitet, indem sie die Computerprogramme 402 des Computerprogramm-Ökosystems 400 instanziiert und Parameter in einem oder mehreren Parametersätzen 404, die mit dem Computerprogramm-Ökosystem assoziiert sind, auflöst. Die Statische-Analyse-Engine 422 analysiert dann die aufgelösten Parameterwerte, um die statischen Abhängigkeiten zwischen den Computerprogrammen 402 und den Datenressourcen 408 zu identifizieren. Die Ausgabe des statischen Analyseprozesses ist eine Identifizierung der statischen Abhängigkeiten der Elemente des Computerprogramm-Ökosystems. In einigen Beispielen kann der statische Analyseprozess ein grafisches Datenherkunftsdiagramm als Ausgabe erzeugen.
  • Wenn das Computerprogramm-Ökosystem 400 ausgeführt wird, um einen Satz von Eingabedaten, z. B. Datensätze, zu verarbeiten, werden ein oder mehrere Laufzeitprotokolle 406, wie beispielsweise Laufzeitprotokolldateien, erzeugt. Die Laufzeitprotokolle 406 beinhalten Parametersätze und assoziierte aufgelöste Parameterwerte, die zur Laufzeit des Computerprogramm-Ökosystems 400 anwendbar sind, die z. B. zusammen mit einem Ausführungsbefehl als Eingabe in das Computerprogramm-Ökosystem bereitgestellt werden. Das Analysesystem 420 beinhaltet eine Laufzeitanalyse-Engine 424 zum Identifizieren der Elemente (z. B. Computerprogramme 402 und Datenressourcen 408) des Computerprogramm-Ökosystems 400, die während der Ausführung genutzt wurden, durch Analyse der Parametersätze und der assoziierten aufgelösten Parameterwerte in den Laufzeitprotokollen 406.
  • Die Ergebnisse der Analysen durch die Statische-Analyse-Engine 422 und die Laufzeitanalyse-Engine 424 werden einer Vergleichs-Engine 426 zur Identifizierung der Teilmenge von Elementen des Computerprogramm-Ökosystems 400, die die Ökosystemeinheit 430 bilden, bereitgestellt. Die Vergleichs-Engine 426 ergänzt die Identifizierung der durch die statische Analyse erzeugten statischen Abhängigkeiten durch Einbeziehen der Parametersätze und der assoziierten aufgelösten Parameterwerte, die durch die Laufzeitanalyse-Engine 424 identifiziert wurden, um eine Identifizierung aller Elemente des Computerprogramm-Ökosystems 400 zu erhalten, die die Ökosystemeinheit 420 bilden, z. B. aller Elemente, die entweder eine statische Abhängigkeit zu oder von einem anderen Element des Computerprogramm-Ökosystems aufweisen, aller Elemente, die während einer Ausführung genutzt werden, und aller Elemente, die eine statische Abhängigkeit zu oder von jedem der Elemente, das während einer Ausführung genutzt wird, aufweisen.
  • Eine Zeitplanungsanalyse-Engine 428 analysiert Zeitplanungsabhängigkeiten zwischen den Computerprogrammen 402 des Computerprogramm-Ökosystems 400, z. B. durch Analyse der Parametersätze 404 oder Zeitplanungsinformationen 408, die mit einem Scheduler 440 assoziiert sind. Elemente des Computerprogramm-Ökosystems 400, die durch die Zeitplanungsanalyse-Engine 428 als Zeitplanungsabhängigkeiten aufweisend identifiziert werden (z. B. mit den bereits für die Ökosystemeinheit identifizierten Elementen), sind auch in der Ökosystemeinheit 430 enthalten.
  • Die Identifizierung der Ökosystemeinheit 430 kann die Durchführung einer Systemaufgabe, wie etwa Testen von Computerprogrammen oder Migration von einem Computersystem zu einem anderen, erleichtern.
  • 5A und 5B zeigen einen beispielhaften Ansatz einer Analyse statischer Abhängigkeiten zwischen Elementen eines Computerprogramm-Ökosystems. Der beispielhafte Ansatz der 5A und 5B beinhaltet die Auflösung von Parametern für ein und Instanziierung eines beispielhaften Datenflussgraphen eines Computerprogramm-Ökosystems. Eine weitere Beschreibung der statischen Analyse ist der US-Patentanmeldung mit der Veröffentlichungs-Nr. US 2016/0019057 zu entnehmen, deren Inhalt hier durch Bezugnahme vollumfänglich aufgenommen wird.
  • Unter Bezugnahme auf 5A beinhaltet ein Beispiel eines Datenflussgraphen 500, der einen Teil eines Computerprogramm-Ökosystems bildet, einen ersten Teilgraphen 502 mit der Bezeichnung gather.mp und einen zweiten Teilgraphen 504 mit der Bezeichnung process.mp.
  • Der erste Teilgraph 502 empfängt eine erste logische Datenmenge DS1 506 und eine zweite logische Datenmenge DS2 508 als Eingabe, verarbeitet die Daten aus der ersten und zweiten logischen Datenmenge 506, 508 und schreibt ein Ergebnis der Verarbeitung in eine dritte logische Datenmenge DS3 510. Der zweite Teilgraph 504 empfängt eine vierte logische Datenmenge DS4 512 (die zufällig auf dieselbe physische Datei wie die dritte logische Datenmenge 510 zeigt), verarbeitet die Daten aus der vierten logischen Datenmenge 512 und schreibt das Ergebnis der Verarbeitung in eine Tabelle 514.
  • Jede der vier logischen Datenmengen 506, 508, 510, 512 ist mit einem parametrisierten Pfad assoziiert, der zur Laufzeit in einen Pfad zu einer physischen Datei aufgelöst wird. Insbesondere wird die erste logische Datenmenge 506 unter Verwendung des parametrisierten Pfads /${FEED}/inv_${DATE}.dat identifiziert, wird die zweite logische Datenmenge 508 unter Verwendung des parametrisierten Pfads /${FEED}/cust_${DATE}.dat identifiziert, wird die dritte logische Datenmenge 510 unter Verwendung des parametrisierten Pfads /trans_${DATE}.dat identifiziert, und wird die vierte logische Datenmenge 512 unter Verwendung des parametrisierten Pfads /trans_${DATE}.dat identifiziert.
  • Der erste Teilgraph 502 empfängt zwei Parameter, P1 = FEED und P2 = DATE als Argumente und verwendet, wie nachstehend ausführlicher beschrieben wird, die Parameter, um die Pfade zu den jeweiligen physischen Orten der ersten logischen Datenmenge 506, der zweiten logischen Datenmenge 508 und der dritten logischen Datenmenge 510 durch Ersetzen der FEED- und DATE-Platzhalter in den parametrisierten Pfaden durch die Werte der empfangenen FEED- und DATE-Parameter aufzulösen. Außerdem beinhaltet der erste Teilgraph 502 einen „Statische-Analyse“-Wert für den DATE-Parameter. Wie nachstehend ausführlicher beschrieben wird, ist der Statische-Analyse-Wert für den DATE-Parameter ein Platzhalterwert, der während der statischen Analyse des Datenflussgraphen 500 (d. h. wenn die Datenherkunft des Datenflussgraphen 500 bestimmt wird) als Parameterwert verwendet wird.
  • Gleichermaßen empfängt der zweite Teilgraph 504 einen einzigen Parameter P1 = DATE und verwendet ihn, um den Pfad zu dem physischen Ort der vierten logischen Datenmenge 512 aufzulösen, indem der DATE-Platzhalter in dem parametrisierten Pfad für die vierte logische Datenmenge 512 durch den Wert des empfangenen DATE-Parameters ersetzt wird. Außerdem beinhaltet der zweite Teilgraph 504 einen „Statische-Analyse“-Wert für den DATE-Parameter. Wie nachstehend ausführlicher beschrieben wird, ist der Static-Analysis-Wert für den DATE-Parameter ein Platzhalterwert, der während der statischen Analyse des Datenflussgraphen 517 (d. h. wenn die Datenherkunft des Datenflussgraphen 517 bestimmt wird) als Parameterwert verwendet wird.
  • Da der Betrieb des Datenflussgraphen 500 und seiner Teilgraphen von den Parametern abhängt, die er empfängt, werden der Datenflussgraph und seine Teilgraphen mitunter als „generische“ Datenflussgraphen oder „generische“ Computerprogramme bezeichnet.
  • Parameter können entweder als „Entwurfszeit“-Parameter oder als „Laufzeit“-Parameter bezeichnet werden. Zusätzlich zur oben beschriebenen Verwendung zur Pfadauflösung beeinflussen Entwurfszeitparameter die logische Operation ihres assoziierten Datenflussgraphen. Dagegen werden Laufzeitparameter dem Graphen auf einer Job-für-Job-Basis zugeführt und haben keinen Einfluss auf die logische Operation des Graphen. In einigen Beispielen bezieht sich die logische Operation eines Datenflussgraphen sowohl auf die Funktionalität des Graphen als auch auf die durch den Graphen genutzten logischen Datenmengen. In einigen Beispielen kann ein Parameter ein Hybridparameter sein, der sowohl Entwurfszeit- als auch Laufzeitanteile umfasst.
  • In 5A ist der FEED-Parameter ein Entwurfszeitparameter, der die logische Operation des gather.mp-Teilgraphen beeinflusst. Beispielsweise kann eine Sortierkomponente 516 in dem ersten Teilgraphen 502 für einen Wert des FEED-Parameters die Daten, die sie empfängt, in aufsteigender Reihenfolge sortieren, während ein weiterer, anderer Wert des FEED-Parameters bewirken kann, dass die Sortierkomponente 516 die Daten in absteigender Reihenfolge sortiert. In einigen Beispielen wird ein Datenflussgraph, der Entwurfszeitparameter beinhaltet, als „generischer Graph“ bezeichnet, da sich seine logische Operation basierend auf dem zugeführten Wert des Entwurfszeitparameters ändert.
  • Der DATE-Parameter ist ein Laufzeitparameter, der keine Auswirkung auf die logische Operation des Teilgraphen 502 hat und auf einer Job-für-Job-Basis zugeführt wird.
  • In einigen Beispielen werden allgemein verwendete Parametersätze für Datenflussdiagramme als „Parametersätze“ (mitunter als „psets“ bezeichnet) gespeichert, die auf einer Festplatte gespeichert und leicht wiederverwendet werden können. Beispielsweise sind in 5A drei psets mit dem ersten Teilgraphen 502 assoziiert, PSET_mexico 518, PSET_canada 520 und PSET_usa 522. PSET_mexico 518 beinhaltet einen allgemein verwendeten FEED-Parameterwert „mexico“ und einen allgemein verwendeten DATE-Parameterwert „today( )“, bei dem es sich um eine Funktion handelt, die das heutige Datum zurückgibt. PSET canada 520 beinhaltet einen allgemein verwendeten FEED-Parameterwert „canada“ und den allgemein verwendeten DATE-Parameterwert „today( )“. PSET_usa 522 beinhaltet einen allgemein verwendeten FEED-Parameterwert „usa“ und den allgemein verwendeten DATE-Parameterwert „today( )“. Gleichermaßen ist ein einziger pset mit dem zweiten Teilgraphen 504 assoziiert, PSET 523. PSET 523 beinhaltet den allgemein verwendeten DATE-Parameterwert „today( )“, bei dem es sich um eine Funktion handelt, die das heutige Datum zurückgibt.
  • In einigen Beispielen werden vor der Ausführung des Datenflussgraphen 500 (z. B. als Teil der Ausführung des Computerprogramm-Ökosystems, zu dem der Datenflussgraph 500 gehört) ein oder mehrere mit dem Datenflussgraphen 500 (und seinen assoziierten Teilgraphen 502, 504) assoziierte psets identifiziert, und eine Anzahl eindeutiger Entwurfszeitparameter in dem einen oder den mehreren psets wird bestimmt. Für jeden eindeutigen Entwurfszeitparameter für einen gegebenen Datenflussgraphen wird eine separate ausführbare Instanz des Datenflussgraphen instanziiert.
  • Unter Bezugnahme auf 5B werden beispielsweise für den Datenflussgraphen 500 von 5B drei Instanzen des ersten Teilgraphen 502 gather.mp instanziiert (PSET_mexico->gather.mp 502a, PSET_canada-> gather.mp 502b, PSET_usa->gather.mp 502c), wobei jede Instanz gemäß einem anderen der drei eindeutigen Feed-Parameter in den psets von 5A konfiguriert ist: mexico, canada und usa. Da der zweite Teilgraph 504 mit nur einem einzigen pset 523 assoziiert ist, der keine Entwurfszeitparameter beinhaltet, wird nur eine einzige Instanz (process.mp 504a) des zweiten Teilgraphen 504 zur Ausführungszeit instanziiert.
  • Sobald die entsprechenden Instanzen der Teilgraphen 502, 504 instanziiert sind, werden die Parameterwert-Platzhalter in den parametrisierten Pfaden für die Datenmengen durch tatsächliche Parameterwerte aus den psets ersetzt, wodurch die Pfade zu den physischen Orten der Datenmengen aufgelöst werden. Beispielsweise wird für die PSET-mexico->gather.mp-Instanz 502a des ersten Teilgraphen 502 der Pfad für die erste Datenmenge 506 zu/mexico/inv_031014 aufgelöst, da der FEED-Parameterwert ,mexico' ist und der DATE-Parameterwert ,031014' ist.
  • Sobald der Datenflussgraph 500, einschließlich seiner Teilgraphen 502, 504, instanziiert wurde und die physischen Pfade zu den Datenmengen des Datenflussgraphen aufgelöst wurden, der Datenflussgraph 500. Während einer Ausführung lesen die drei Instanzen 502a, 502b, 502c des ersten Teilgraphen 502 Daten aus ihren jeweiligen Eingabedatenmengen, verarbeiten die Daten und speichern die verarbeiteten Daten in der physischen Datei /trans_031014.dat. Da die Eingabedatenmenge (z. B. DS4 512) für die Instanz 504a des zweiten Teilgraphen 502 in dieselbe physische Datei wie die Ausgabedatenmenge des ersten Teilgraphen aufgelöst wird, wird die physische Datei /trans_031014.dat durch die Instanz von process.mp gelesen und dann verarbeitet und in der Tabelle 514 gespeichert.
  • 6 zeigt einen beispielhaften Ansatz für eine Laufzeitanalyse eines Computerprogramm-Ökosystems. Wie oben angemerkt, kann ein Computerprogramm-Ökosystem als Reaktion auf einen Ausführungsbefehl ausgeführt werden, der Parameterwerte als Argumente empfängt. Da mit solchen Parameterwerten assoziierte psets bei einer statischen Analyse des Computerprogramm-Ökosystems nicht berücksichtigt werden, kann die statische Analyse des Computerprogramm-Ökosystems mitunter unvollständig oder falsch sein. Die Ergebnisse einer Laufzeitanalyse können verwendet werden, um die Ergebnisse einer statischen Analyse zu erweitern, indem Parametersätze berücksichtigt werden, die in einem Laufzeitprotokoll, das mit einer oder mehreren Ausführungen von Instanzen des Computerprogramm-Ökosystems assoziiert ist, identifiziert werden. Eine weitere Beschreibung der Laufzeitanalyse ist der US-Patentanmeldung mit der Veröffentlichungs-Nr. US 2016/0019057 zu entnehmen, deren Inhalt hier durch Bezugnahme vollumfänglich aufgenommen wird.
  • Bei einer Laufzeitanalyse beinhaltet ein beispielhaftes Computerprogramm, wie etwa ein Datenflussgraph (z. B. der Teilgraph 502 von 5A) zwei Parameter, P1 und P2, von denen jeder entweder als Entwurfszeitparameter oder als Laufzeitparameter bezeichnet werden kann. Die Laufzeitanalyse verwendet eine Parameterklassifizierung 626, die die Klassifizierung jedes Parameters entweder als Entwurfszeitparameter oder als Laufzeitparameter spezifiziert. In einigen Beispielen kann die Laufzeitanalyse einen Parameterklassifizierungsschritt 624 beinhalten. In einigen Beispielen sind die Parameter vorklassifiziert.
  • Die Laufzeitanalyse verwendet einen Laufzeitprotokolldatenspeicher 628, der ein oder mehrere Laufzeitprotokolle 629 beinhaltet, von denen jedes Informationen enthält, die mit einer Ausführung einer oder mehrerer Instanzen des Computerprogramm-Ökosystems assoziiert sind. Die Laufzeitprotokolle 629 können eine Aufzeichnung eines Ausführungsbefehls enthalten, der verwendet wurde, um ein oder mehrere Computerprogramme des Computerprogramm-Ökosystems zur Ausführung zu instanziieren. Der Ausführungsbefehl für einen gegebenen Protokolleintrag beinhaltet eine Kennung des Computerprogramms und einen oder mehrere Parameterwerte, die dem Ausführungsbefehl als Argumente zugeführt wurden. In einigen Beispielen wird ein Computerprogramm instanziiert, ohne auf Parametersätze zuzugreifen, sondern empfängt stattdessen Parameterwerte als dem Ausführungsbefehl zugeführte Argumente.
  • Die Parameterklassifizierung 626 und der Laufzeitprotokolldatenspeicher 628 werden einer Verarbeitungsschleife 630 bereitgestellt, die für jedes Laufzeitprotokoll 629 in dem Laufzeitprotokolldatenspeicher 628 einen neuen logischen pset für den Ausführungsbefehl erzeugt, bestimmt, ob der neue pset bereits in einem Repositorium 648 bestehender logischer psets existiert, und den neuen logischen pset zu dem Repositorium 648 hinzufügt, wenn er nicht bereits existiert.
  • In der Verarbeitungsschleife 630 wird ein Laufzeitprotokoll Jn 632 aus dem Laufzeitprotokolldatenspeicher 628 gemäß der Parameterklassifizierung 626 in einem Logischer-pset-Konstruktionsschritt 634 analysiert, um einen logischen pset 636 zu erzeugen. Dabei analysiert der Logischer-pset-Konstruktionsschritt 634 den in dem Laufzeitprotokoll 632 enthaltenen Ausführungsbefehl, um die Parameterwerte zu extrahieren, die als Argumente für den Graphenausführungsbefehl enthalten sind. Der Logischer-pset-Konstruktionsschritt 634 gleicht dann jeden extrahierten Parameterwert mit einem entsprechenden Parameter in der Parameterklassifizierung 626 ab. Bestimmt der Logischer-pset-Konstruktionsschritt 634, dass ein extrahierter Parameterwert einem Entwurfszeitparameter in der Parameterklassifizierung 626 entspricht, so nimmt der Logischer-pset-Konstruktionsschritt 634 den Wert des extrahierten Entwurfszeitparameters in den logischen pset 636 auf. Bestimmt der Logischer-pset-Konstruktionsschritt 634, dass ein extrahierter Parameterwert einem Laufzeitparameter in der Parameterklassifizierung 626 entspricht, so wird der extrahierte Parameterwert nicht in den logischen pset 636 aufgenommen.
  • Eine Kennung 644 des logischen pset 636 wird bestimmt 642 und mit Kennungen aller psets in dem Repositorium 648 bestehender logischer psets verglichen 646. Stimmt die Kennung 644 mit einer Kennung mindestens eines bestehenden logischen pset in dem Repositorium 648 überein, so wird keine Maßnahme ergriffen, da bereits ein logischer pset zur Ausführungsbefehlsinstanziierung des Computerprogramms in dem Repositorium 648 existiert. Besteht keine Übereinstimmung, werden der logische pset 636 und seine Kennung 644 durch einen Neuer-logischer-pset-Hinzufügungsschritt 650 als ein neuer logischer pset zu dem Repositorium 648 bestehender logischer psets 648 hinzugefügt.
  • Unter Bezugnahme auf 7 wird in einem beispielhaften Verfahren zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, eine statische Analyse des Computerprogramm-Ökosystems durchgeführt (700). Als Teil der statischen Analyse werden statische Abhängigkeiten zwischen den mehreren Computerprogrammen und Datenressourcen, die mit dem Computerprogramm-Ökosystem assoziiert sind, identifiziert (702). Zum Beispiel können die statischen Abhängigkeiten basierend auf aufgelösten Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen identifiziert werden.
  • Das Computerprogramm-Ökosystem wird ausgeführt, um Datensätze zu verarbeiten (704). Zum Beispiel werden eines oder mehrere der Computerprogramme des Computerprogramm-Ökosystems gemäß Werten von Parametern in einem oder mehreren der mit dem Computerprogramm-Ökosystem assoziierten Parametersätze instanziiert, und die instanziierten Computerprogramme werden ausgeführt, um die Daten zu verarbeiten. In einigen Beispielen kann das Ausführen des Computerprogramm-Ökosystems Zugreifen auf eine oder mehrere der mit dem Computerprogramm-Ökosystem assoziierten Datenressourcen beinhalten, z. B. Lesen von Daten aus einer Datei und/oder einer Datenbank und/oder einem Objekt; Schreiben von Daten in eine Datei und/oder eine Datenbank und/oder ein Objekt; oder beides.
  • Laufzeitprotokollinformationen werden durch die Ausführung des Computerprogramm-Ökosystems (706) erzeugt. Zum Beispiel werden die Laufzeitprotokollinformationen in eine Protokolldatei geschrieben. Die Laufzeitprotokollinformationen können Werte von Parametern in einem oder mehreren der mit dem Computerprogramm-Ökosystem assoziierten Parametersätze beinhalten. Zum Beispiel können die Laufzeitprotokollinformationen Informationen, die das eine oder die mehreren instanziierten Computerprogramme angeben, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden, Informationen, die die eine oder die mehreren Datenressourcen angeben, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde, beinhalten.
  • Es wird eine Laufzeitanalyse des Computerprogramm-Ökosystems durchgeführt (708). Als Teil der Laufzeitanalyse werden die Laufzeitprotokollinformationen erhalten. Ebenfalls als Teil der Laufzeitanalyse werden die Werte der Parameter in den Laufzeitprotokollinformationen analysiert (710), um eines oder mehrere der Elemente des Computerprogramm-Ökosystems zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, wie etwa Computerprogramme, die ausgeführt wurden, oder Datenressourcen, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde. Zum Beispiel können Laufzeitabhängigkeiten zwischen den ausgeführten Computerprogrammen identifiziert werden, z. B. basierend auf den Werten der Parameter in den Laufzeitprotokollinformationen. In einigen Beispielen beinhaltet die Analyse der Werte der Parameter in den Laufzeitprotokollinformationen Generalisieren eines oder mehrerer der Werte.
  • Eine Zeitplanungsanalyse des Computerprogramm-Ökosystems wird durchgeführt (712), um ein Computerprogramm des Computerprogramm-Ökosystems zu identifizieren, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist. Die Zeitplanungsanalyse kann zum Beispiel Zeitplanungsinformationen von einem Scheduler erhalten und ein Computerprogramm identifizieren, dessen Ausführung nach Abschluss der Ausführung eines anderen Computerprogramms geplant ist.
  • Eine Teilmenge der Elemente des Computerprogramm-Ökosystems wird basierend auf den Ergebnissen der statischen Analyse, den Ergebnissen der Laufzeitanalyse und den Ergebnissen der Zeitplanungsanalyse des Computerprogramm-Ökosystems als eine Ökosystemeinheit (714) identifiziert. Zum Beispiel sind das eine oder die mehreren Computerprogramme, die ausgeführt wurden, und die eine oder mehreren Datenressourcen, auf die zugegriffen wurde, zusammen mit anderen Computerprogrammen oder Datenressourcen, die statische Abhängigkeiten von den ausgeführten Computerprogrammen oder den Datenressourcen, auf die zugegriffen wurde, aufweisen, in der Ökosystemeinheit enthalten.
  • Eine Systemaufgabe wird unter Verwendung der Ökosystemeinheit (716) durchgeführt. In einigen Beispielen beinhaltet die Systemaufgabe Migrieren der Ökosystemeinheit von einer ersten Rechenplattform zu einer zweiten Rechenplattform. In einigen Beispielen beinhaltet die Systemaufgabe Testen der Ökosystemeinheit.
  • 8 zeigt ein Beispiel eines Datenverarbeitungssystems 800 zum Entwickeln und Ausführen von Datenflussgraphen, in dem die hier beschriebenen Techniken verwendet werden können. Das System 800 beinhaltet eine Datenquelle 802, die eine oder mehrere Quellen von Daten, wie etwa Speichervorrichtungen 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 durch einen Großrechner verwendeten nativen Format) speichern oder bereitstellen können. Die Daten können logistische Daten, analytische Daten oder industrielle Maschinendaten sein. Eine Ausführungsumgebung oder Laufzeitumgebung 804 beinhaltet ein Vorverarbeitungsmodul 806 und ein Ausführungsmodul 812. Die Ausführungsumgebung 804 kann beispielsweise auf einem oder mehreren Allzweckrechnern unter der Steuerung eines geeigneten Betriebssystems, wie etwa einer Version des UNIX-Betriebssystems, gehostet werden. Die Ausführungsumgebung 804 kann beispielsweise eine Mehrknoten-Parallelrechenumgebung beinhalten, einschließlich einer Konfiguration von Computersystemen, die mehrere Verarbeitungseinheiten (wie etwa 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 lokales Netzwerk (LAN) und/oder großflächiges Netz (WAN) gekoppelt sind) oder beliebige Kombinationen davon.
  • Speichervorrichtungen, die die Datenquelle 802 bereitstellen, können sich lokal in der Ausführungsumgebung 804 befinden, beispielsweise auf einem Speichermedium (z. B. einer Festplatte 808), das mit einem Computer verbunden ist, der die Ausführungsumgebung 804 hostet, oder sie können sich entfernt von der Ausführungsumgebung 804 befinden, beispielsweise auf einem entfernten System (z. B. einem Großrechner 810) in Kommunikation mit einem Computer, der die Ausführungsumgebung 804 hostet, über eine Fernverbindung (z. B. durch eine Cloud-Computing-Infrastruktur bereitgestellt) gehostet werden.
  • Das Vorverarbeitungsmodul 806 liest Daten aus der Datenquelle 802 und bereitet Datenverarbeitungsanwendungen (z. B. einen ausführbaren Datenflussgraphen) zur Ausführung vor. Zum Beispiel kann das Vorverarbeitungsmodul 806 die Datenverarbeitungsanwendung kompilieren, eine kompilierte Datenverarbeitungsanwendung auf einem Datenspeichersystem 816, das für die Ausführungsumgebung 804 zugänglich ist, speichern und/oder daraus laden, und andere Aufgaben durchführen, um eine Datenverarbeitungsanwendung zur Ausführung vorzubereiten.
  • Das Ausführungsmodul 812 führt die durch das Vorverarbeitungsmodul 806 vorbereitete Datenverarbeitungsanwendung aus, um eine Datenmenge zu verarbeiten und Ausgabedaten 814 zu erzeugen, die aus der Verarbeitung resultieren. Die Ausgabedaten 814 können zurück in die Datenquelle 802 oder in ein für die Ausführungsumgebung 804 zugängliches Datenspeichersystem 816 gespeichert oder anderweitig verwendet werden. Das Datenspeichersystem 816 ist auch für eine optionale Entwicklungsumgebung 818 zugänglich, bei der ein Entwickler 820 die durch das Ausführungsmodul 812 auszuführenden Datenverarbeitungsanwendungen entwerfen und bearbeiten kann. Die Entwicklungsumgebung 818 ist in einigen Implementierungen ein System zur Entwicklung von Anwendungen, wie etwa Datenflussgraphen, die Ecken (die Datenverarbeitungskomponenten oder Datenmengen repräsentieren) beinhalten, die durch gerichtete Verbindungsstrecken (die Flüsse von Arbeitselementen, d. h. Daten, repräsentieren) zwischen den Ecken verbunden sind. Eine derartige Umgebung ist beispielsweise ausführlicher in dem US-Patent mit der Veröffentlichungs-Nr. 2007/0011668 mit dem Titel „Managing Parameters for Graph-Based Applications“ beschrieben, die hier durch 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, dessen Inhalt hier durch Bezugnahme vollumfänglich aufgenommen wird. Datenflussgraphen, die gemäß diesem System erstellt werden, stellen Verfahren bereit, um Informationen in und aus individuellen Prozessen, die durch Graphenkomponenten dargestellt werden, zu bekommen, um Informationen zwischen den Prozessen zu bewegen und um eine Ablaufreihenfolge für die Prozesse zu definieren. Dieses System beinhaltet Algorithmen, die Zwischenprozesskommunikationsverfahren aus beliebigen verfügbaren Verfahren wählen (zum Beispiel können Kommunikationspfade gemäß den Verbindungsstrecken des Graphen TCP/IP oder UNIX-Domänen-Sockets verwenden oder einen gemeinsam genutzten Speicher verwenden, um Daten zwischen den Prozessen zu übermitteln).
  • Das Vorverarbeitungsmodul 806 kann Daten aus einer Vielzahl von Systemarten empfangen, die die Datenquelle 802 darstellen können, einschließlich verschiedener Formen von Datenbanksystemen. Die Daten können als Datensätze organisiert sein, die Werte für jeweilige Felder (auch „Attribute“ oder „Spalten“ genannt) aufweisen, einschließlich möglicherweise Nullwerte. Beim ersten Lesen von Daten aus einer Datenquelle beginnt das Vorverarbeitungsmodul 806 in der Regel mit einigen anfänglichen Formatinformationen über Datensätze in der betreffenden Datenquelle. Unter Umständen ist die Datensatzstruktur der Datenquelle anfänglich nicht bekannt und kann stattdessen erst nach einer Analyse der Datenquelle oder der Daten bestimmt werden. Die Anfangsinformationen über Datensätze können beispielsweise die Anzahl der Bits, die einen bestimmten Wert darstellen, die Reihenfolge der Felder innerhalb eines Datensatzes und die Art des Wertes (z. B. Zeichenfolge, ganze Zahl mit/ohne Vorzeichen), die durch die Bits dargestellt wird, beinhalten.
  • Mit anderen Worten und allgemein auf die hierin beschriebenen ausführbaren Datenflussgraphen anwendbar, implementiert der ausführbare Datenflussgraph eine graphbasierte Berechnung, die an Daten durchgeführt wird, die von einer oder mehreren Eingabedatenmengen einer Datenquelle 802 über die Datenverarbeitungskomponenten zu einer oder mehreren Ausgabedatenmengen fließen, wobei der Datenflussgraph durch Datenstrukturen in dem Datenspeicher 814 spezifiziert ist, wobei der Datenflussgraph die Knoten aufweist, die durch die Datenstrukturen spezifiziert sind, und die Datenverarbeitungskomponenten darstellt, die durch die eine oder die mehreren Verbindungsstrecken verbunden sind, wobei die Verbindungsstrecken durch die Datenstrukturen spezifiziert sind und Datenflüsse zwischen den Datenverarbeitungskomponenten darstellen. Die Ausführungsumgebung oder Laufzeitumgebung 804 ist mit dem Datenspeicher 814 gekoppelt und wird auf einem oder mehreren Computern gehostet, wobei die Laufzeitumgebung 804 das Vorverarbeitungsmodul 806 beinhaltet, das zum Lesen der gespeicherten Datenstrukturen, die den Datenflussgraphen spezifizieren, und zum Zuweisen und Konfigurieren von Systemressourcen (z. B. Prozesse, Speicher, CPUs usw.) zum Durchführen der Berechnung der Datenverarbeitungskomponenten, die dem Datenflussgraphen durch das Vorverarbeitungsmodul 806 zugewiesen sind, ausgelegt ist, wobei die Laufzeitumgebung 804 das Ausführungsmodul 812 zur Planung und Steuerung einer Ausführung der Berechnung der Datenverarbeitungskomponenten beinhaltet. Mit anderen Worten ist die Laufzeit- oder Ausführungsumgebung 804, die auf einem oder mehreren Computern gehostet wird, dazu ausgelegt, Daten aus der Datenquelle 802 zu lesen und die Daten mittels eines in Form des Datenflussgraphen ausgedrückten ausführbaren Computerprogramms zu verarbeiten.
  • Die oben beschriebenen Ansätze können unter Verwendung eines Rechensystems, das geeignete Software ausführt, implementiert werden. Die Software kann beispielsweise Prozeduren in einem oder mehreren Computerprogrammen beinhalten, das bzw. die ein oder mehrere programmierte oder programmierbare Rechensysteme 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 (darunter flüchtiger und/oder nichtflüchtiger Speicher und/oder Speicherelemente) und mindestens eine Benutzeroberfläche (zum Empfangen einer Eingabe unter Verwendung mindestens einer Eingabevorrichtung oder eines Eingangsports und zum Bereitstellen einer Ausgabe unter Verwendung mindestens einer Ausgabevorrichtung oder eines Ausgangsports) beinhalten. Die Software kann ein oder mehrere Module eines größeren Programms beinhalten, das beispielsweise Dienste bezüglich des Entwurfs, der Konfiguration und der 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 Datenrepositorium gespeicherten Datenmodell entsprechen, implementiert werden.
  • Die Software kann auf einem greifbaren nichtflüchtigen Medium, wie etwa einer CD-ROM oder einem anderen computerlesbaren Medium (z. B. durch ein(e) Allzweck- oder Spezialrechensystem oder -vorrichtung lesbar), bereitgestellt sein oder über ein Kommunikationsmedium eines Netzwerks an ein greifbares nichtflüchtiges Medium eines Rechensystems 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 Rechenelemente durchgeführt werden. Jedes derartige Computerprogramm wird vorzugsweise auf einem computerlesbaren Speichermedium (z. B. Halbleiterspeicher oder -medien oder magnetischen oder optischen Medien) einer Speichervorrichtung, die durch einen programmierbaren Allzweck- oder Spezialcomputer zugänglich ist, zum Konfigurieren und Betreiben des Computers gespeichert oder zu diesem heruntergeladen, wenn das Speichervorrichtungsmedium durch den Computer gelesen wird, um die vorliegend beschriebene Verarbeitung durchzuführen. Es kann auch in Betracht gezogen werden, dass das erfindungsgemäße System als ein greifbares nichtflü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 hier beschriebenen Verarbeitungsschritte durchzuführen.
  • Eine Anzahl von Ausführungsformen sind beschrieben worden. Trotzdem versteht es sich, dass verschiedene Modifikationen vorgenommen werden können, ohne vom Wesen und Schutzumfang der Erfindung abzuweichen. Zum Beispiel können einige der oben beschriebenen Schritte unabhängig von der Reihenfolge sein und können somit in einer Reihenfolge durchgeführt werden, die sich von der beschriebenen unterscheidet.
  • Andere Implementierungen liegen ebenfalls innerhalb des Schutzumfangs der folgenden Ansprüche.
  • 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 16/746392 [0001]
    • US 2016/0019057 [0044, 0059]
    • US 5966072 [0075]

Claims (28)

  1. Computerimplementiertes Verfahren zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, wobei das Verfahren Folgendes beinhaltet: Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten; Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten; Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist; Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse; und Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beides.
  2. Verfahren nach Anspruch 1, wobei das Durchführen der Laufzeitanalyse Folgendes beinhaltet: Erhalten von Laufzeitprotokollinformationen, die durch eine Ausführung des Computerprogramm-Ökosystems erzeugt werden; und Analysieren der Laufzeitprotokollinformationen, um das eine oder die mehreren Elemente des Computerprogramm-Ökosystems zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden.
  3. Verfahren nach Anspruch 2, wobei das Analysieren der Laufzeitprotokollinformationen Analysieren der Werte von Parametern in den Laufzeitprotokollinformationen beinhaltet, um ein oder mehrere Computerprogramme zu identifizieren, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden.
  4. Verfahren nach Anspruch 3, wobei das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit Identifizieren der Computerprogramme, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden, als Teile der Ökosystemeinheit beinhaltet.
  5. Verfahren nach Anspruch 3 oder 4, wobei das Identifizieren eines oder mehrerer Computerprogramme des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems ausgeführt wurden, Identifizieren von Laufzeitabhängigkeiten zwischen den ausgeführten Computerprogrammen beinhaltet.
  6. Verfahren nach einem der Ansprüche 3 bis 5, wobei das Identifizieren der Laufzeitabhängigkeiten zwischen den ausgeführten Computerprogrammen Identifizieren der Laufzeitabhängigkeiten basierend auf den Werten der Parameter in den Laufzeitprotokollinformationen beinhaltet.
  7. Verfahren nach einem der Ansprüche 3 bis 6, wobei das Analysieren der Werte der Parameter in den Laufzeitprotokollinformationen Generalisieren eines oder mehrerer der Werte beinhaltet.
  8. Verfahren nach einem der Ansprüche 3 bis 7, wobei das Analysieren der Laufzeitprotokollinformationen Analysieren der Werte von Parametern in den Laufzeitprotokollinformationen beinhaltet, um eine oder mehrere Datenressourcen zu identifizieren, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde.
  9. Verfahren nach Anspruch 8, das Analysieren der Werte der Parameter in den Laufzeitprotokollinformationen beinhaltet, um den Namen jeder Datenressource zu bestimmen, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde.
  10. Verfahren nach Anspruch 8 oder 9, wobei das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit Identifizieren der Datenressourcen, auf die während einer Ausführung des Computerprogramm-Ökosystems zugegriffen wurde, als Teile der Ökosystemeinheit beinhaltet.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit Aufnehmen des einen oder der mehreren Elemente, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, in die Ökosystemeinheit beinhaltet.
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Durchführen einer Zeitplanungsanalyse Erhalten von Zeitplanungsinformationen von einem Scheduler beinhaltet, wobei sich der Scheduler von dem Computerprogramm-Ökosystem unterscheidet.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Durchführen einer Zeitplanungsanalyse Identifizieren eines ersten Computerprogramms des Computerprogramm-Ökosystems beinhaltet, dessen Ausführung nach der Ausführung eines zweiten Computerprogramms des Computerprogramm-Ökosystems geplant ist.
  14. Verfahren nach Anspruch 13, wobei das Identifizieren der Teilmenge von Elementen als die Ökosystemeinheit Identifizieren des ersten Computerprogramms und des zweiten Computerprogramms als Teil der Ökosystemeinheit beinhaltet.
  15. Verfahren nach einem der vorhergehenden Ansprüche, das das Ausführen des Computerprogramm-Ökosystems beinhaltet, um Daten zu verarbeiten.
  16. Verfahren nach Anspruch 15, wobei das Ausführen des Computerprogramm-Ökosystems Instanziieren eines oder mehrerer der Computerprogramme des Computerprogramm-Ökosystems gemäß Werten von Parametern in einem oder mehreren der mit dem Computerprogramm-Ökosystem assoziierten Parametersätze beinhaltet.
  17. Verfahren nach Anspruch 16, wobei das Ausführen des Computerprogramm-Ökosystems Ausführen des einen oder der mehreren instanziierten Computerprogramme beinhaltet, um die Daten zu verarbeiten.
  18. Verfahren nach Anspruch 17, wobei die Laufzeitprotokollinformationen Informationen beinhalten, die das eine oder die mehreren ausgeführten instanziierten Computerprogramme angeben.
  19. Verfahren nach einem der Ansprüche 15 bis 18, wobei das Ausführen des Computerprogramm-Ökosystems Zugreifen auf eine oder mehrere der mit dem Computerprogramm-Ökosystem assoziierten Datenressourcen beinhaltet.
  20. Verfahren nach Anspruch 19, wobei die Laufzeitprotokollinformationen Informationen beinhalten, die die eine oder die mehreren Datenressourcen angeben, auf die zugegriffen wird.
  21. Verfahren nach Anspruch 19 oder 20, wobei das Zugreifen auf eine mit dem Computerprogramm-Ökosystem assoziierte Datenressource Lesen von Daten aus einer Datei und/oder einer Datenbank und/oder einem Objekt beinhaltet.
  22. Verfahren nach einem der Ansprüche 19 bis 21, wobei das Zugreifen auf eine mit dem Computerprogramm-Ökosystem assoziierte Datenressource Schreiben von Daten in eine Datei und/oder eine Datenbank und/oder ein Objekt beinhaltet.
  23. Verfahren nach einem der Ansprüche 19 bis 22, wobei das Ausführen des Computerprogramm-Ökosystems Erzeugen der Laufzeitprotokollinformationen beinhaltet.
  24. Verfahren nach Anspruch 23, wobei das Erzeugen der Laufzeitprotokollinformationen Schreiben der Laufzeitprotokollinformationen in eine Protokolldatei beinhaltet.
  25. Verfahren nach einem der vorhergehenden Ansprüche, wobei das eine oder die mehreren Computerprogramme Datenflussgraphen beinhalten.
  26. Computersystem zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, wobei das Computersystem Folgendes beinhaltet: einen oder mehrere Prozessoren, die mit einem Speicher gekoppelt sind, wobei der eine oder die mehreren Prozessoren zu Folgendem ausgelegt sind: Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten; Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten; Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist; Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse; und Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beides.
  27. Computerlesbares Medium, das Anweisungen speichert, um zu bewirken, dass ein Computersystem ein Computerprogramm-Ökosystem analysiert, das mehrere Computerprogramme beinhaltet, wobei die Anweisungen bewirken, dass das Computersystem Folgendes ausführt: Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten; Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten; Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist; Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse; und Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beides.
  28. Computersystem zum Analysieren eines Computerprogramm-Ökosystems, das mehrere Computerprogramme beinhaltet, wobei das Computersystem Folgendes beinhaltet: Mittel zum Durchführen einer statischen Analyse des Computerprogramm-Ökosystems, einschließlich Identifizieren statischer Abhängigkeiten zwischen Elementen des Computerprogramm-Ökosystems basierend auf Werten von Parametern in einem oder mehreren mit dem Computerprogramm-Ökosystem assoziierten Parametersätzen, wobei die Elemente des Computerprogramm-Ökosystems die mehreren Computerprogramme des Computerprogramm-Ökosystems und mit den Computerprogrammen assoziierte Datenressourcen beinhalten; Mittel zum Durchführen einer Laufzeitanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines oder mehrerer der Elemente des Computerprogramm-Ökosystems, die während einer Ausführung des Computerprogramm-Ökosystems genutzt wurden, um Datensätze zu verarbeiten; Mittel zum Durchführen einer Zeitplanungsanalyse des Computerprogramm-Ökosystems, einschließlich Identifizieren eines Computerprogramms des Computerprogramm-Ökosystems, das eine Zeitplanungsabhängigkeit von einem anderen Computerprogramm des Computerprogramm-Ökosystems aufweist; Mittel zum Identifizieren einer Teilmenge der Elemente des Computerprogramm-Ökosystems als eine Ökosystemeinheit basierend auf den Ergebnissen der statischen Analyse, der Laufzeitanalyse und der Zeitplanungsanalyse; und Mittel zum Migrieren der Ökosystemeinheit von einem ersten Computersystem zu einem zweiten Computersystem, Testen der Ökosystemeinheit oder beidem.
DE112020002515.2T 2019-05-22 2020-05-21 Statische und laufzeitanalyse von computerprogrammsystemen Pending DE112020002515T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962851295P 2019-05-22 2019-05-22
US62/851,295 2019-05-22
US16/746,392 US10996946B2 (en) 2019-05-22 2020-01-17 Static and runtime analysis of computer program ecosystems
US16/746,392 2020-01-17
PCT/US2020/033998 WO2020237051A1 (en) 2019-05-22 2020-05-21 Static and runtime analysis of computer program systems

Publications (1)

Publication Number Publication Date
DE112020002515T5 true DE112020002515T5 (de) 2022-03-24

Family

ID=73457034

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002515.2T Pending DE112020002515T5 (de) 2019-05-22 2020-05-21 Statische und laufzeitanalyse von computerprogrammsystemen

Country Status (11)

Country Link
US (2) US10996946B2 (de)
EP (1) EP3973400B1 (de)
JP (1) JP7204011B2 (de)
CN (1) CN114207594B (de)
AU (1) AU2020279774B2 (de)
BR (1) BR112021023350A2 (de)
CA (1) CA3141609A1 (de)
DE (1) DE112020002515T5 (de)
SG (1) SG11202112004VA (de)
WO (1) WO2020237051A1 (de)
ZA (1) ZA202110741B (de)

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
US20160019057A1 (en) 2014-07-18 2016-01-21 Ab lnitio Technology LLC Managing parameter sets

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US20150347600A1 (en) * 2005-10-21 2015-12-03 Joseph Akwo Tabe Broadband Centralized Transportation Communication Vehicle For Extracting Transportation Topics of Information and Monitoring Terrorist Data
US8286149B2 (en) * 2007-10-15 2012-10-09 International Business Machines Corporation Apparatus for and method of implementing feedback directed dependency analysis of software applications
JP5294675B2 (ja) 2008-03-31 2013-09-18 株式会社野村総合研究所 ソフトウェアマイグレーションシステム及び方法
CA2713247C (en) 2009-08-31 2015-06-16 Accenture Global Services Gmbh Integration environment generator
US9098616B2 (en) 2009-12-11 2015-08-04 International Business Machines Corporation Analyzing computer programs to identify errors
CN101739339B (zh) * 2009-12-29 2013-03-27 北京航空航天大学 一种基于程序动态依赖关系的软件故障定位方法
US8522217B2 (en) 2010-04-20 2013-08-27 Microsoft Corporation Visualization of runtime analysis across dynamic boundaries
JP5800724B2 (ja) 2012-01-30 2015-10-28 三菱電機株式会社 モジュール依存関係抽出装置、モジュール依存関係抽出方法、及び、プログラム
GB2506596A (en) * 2012-10-02 2014-04-09 Ibm Managing a set of software modules in a runtime environment
US9122490B2 (en) * 2012-10-17 2015-09-01 Microsoft Technology Licensing, Llc Code dependency calculation
US9282166B2 (en) * 2012-11-29 2016-03-08 International Business Machines Corporation Management infrastructure analysis for cloud migration
US9092837B2 (en) * 2012-11-29 2015-07-28 International Business Machines Corporation Use of snapshots to reduce risk in migration to a standard virtualized environment
US9692632B2 (en) * 2012-11-29 2017-06-27 International Business Machines Corporation Migration to managed clouds
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
CN103699432B (zh) * 2013-12-17 2017-04-12 华中科技大学 一种异构环境下的多任务运行时协同调度系统
JP2018116517A (ja) 2017-01-19 2018-07-26 株式会社システムズ 開発支援装置、開発支援方法、およびプログラム
JP2019046001A (ja) 2017-08-30 2019-03-22 京セラドキュメントソリューションズ株式会社 アプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法

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
US20160019057A1 (en) 2014-07-18 2016-01-21 Ab lnitio Technology LLC Managing parameter sets

Also Published As

Publication number Publication date
CA3141609A1 (en) 2021-11-26
BR112021023350A2 (pt) 2022-04-19
US20200371781A1 (en) 2020-11-26
CN114207594B (zh) 2023-02-21
EP3973400B1 (de) 2023-12-20
EP3973400A1 (de) 2022-03-30
AU2020279774B2 (en) 2022-07-28
US20210263734A1 (en) 2021-08-26
CN114207594A (zh) 2022-03-18
JP2022525250A (ja) 2022-05-11
ZA202110741B (en) 2023-10-25
AU2020279774A1 (en) 2021-11-25
SG11202112004VA (en) 2021-11-29
JP7204011B2 (ja) 2023-01-13
US10996946B2 (en) 2021-05-04
WO2020237051A1 (en) 2020-11-26
US11487534B2 (en) 2022-11-01

Similar Documents

Publication Publication Date Title
EP2951736B1 (de) Auswahl von datensätzen
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
DE102016214786A1 (de) Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112018002920T5 (de) Datenflussgraphenkonfiguration
KR20170031750A (ko) 계보 정보의 관리
KR20090039803A (ko) 데이터 프로파일링
US10705807B2 (en) Application testing
DE112013001747T5 (de) Optimieren des Verbindens von Anweisungen
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE112022000878T5 (de) Datensatzmultiplexer für datenverarbeitungssystem
DE112017002779T5 (de) Formatspezifische Datenverarbeitungsoperationen
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE112020000657T5 (de) Dienstverwaltung in einem dbms
WO2021037684A1 (en) System for persisting application program data objects
DE112020002515T5 (de) Statische und laufzeitanalyse von computerprogrammsystemen
DE102019008598A1 (de) Identifikation und Visualisierung von Assoziationen zwischen Code, der von einem Modell generiert ist, und Quellen, welche die Codegeneration beeinflussen
DE112020003634T5 (de) Automatische verifizierung der optimierung von konstrukten auf hoher ebene unter verwendung von prüfvektoren
DE102021201597A1 (de) Verwenden von hardware-beschleunigten befehlen
DE102016201614A1 (de) Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung
US20230112179A1 (en) Automated modification of computer programs
CA3233392A1 (en) Automated modification of computer programs
DE102022210228A1 (de) Verfahren und Vorrichtung zum gemeinsamen Optimieren eines neuronalen Netzes und einer für das neuronale Netz dedizierten Hardware