DE112022004826T5 - Automatisierte modifikation von computerprogrammen - Google Patents

Automatisierte modifikation von computerprogrammen Download PDF

Info

Publication number
DE112022004826T5
DE112022004826T5 DE112022004826.3T DE112022004826T DE112022004826T5 DE 112022004826 T5 DE112022004826 T5 DE 112022004826T5 DE 112022004826 T DE112022004826 T DE 112022004826T DE 112022004826 T5 DE112022004826 T5 DE 112022004826T5
Authority
DE
Germany
Prior art keywords
computer program
data
records
modifying
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112022004826.3T
Other languages
English (en)
Inventor
John Joyce
Marshall A. Isman
Edward Alan Bach
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
Priority claimed from US17/704,469 external-priority patent/US20230112179A1/en
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of DE112022004826T5 publication Critical patent/DE112022004826T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Verfahren zum Aktualisieren eines Computerprogramms beinhaltet das Empfangen eines Computerprogramms, das auf einem ersten Computersystem gehostet wird und konfiguriert ist, um von diesem ausgeführt zu werden. Das Verfahren beinhaltet das Analysieren des Computerprogramms, um eine Charakterisierung einer Abstammung, einer Architektur und einer Operation des Computerprogramms zu erhalten. Die Abstammung beinhaltet Beziehungen zwischen Elementen des Computerprogramms, die Architektur beinhaltet eine Charakteristik der Datenquelle, des Datenziels und eines oder mehrerer Prozessoren, die konfiguriert sind, um die in Datensätzen enthaltenen Daten zu verarbeiten, und die Operation beinhaltet Prozesse, die ausgeführt werden, um die Daten aus den Datensätzen zu verarbeiten. Das Verfahren beinhaltet das Empfangen einer Charakterisierung einer Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, wobei, wenn das Computerprogramm gemäß der Aktualisierung modifiziert wird, mindestens ein Teil des modifizierten Computerprogramms konfiguriert ist, um auf einem zweiten Computersystem gehostet zu werden und von diesem ausgeführt zu werden; und das Modifizieren des Computerprogramms, um die Aktualisierung zu implementieren, um das modifizierte Computerprogramm zu erzeugen.

Description

  • Prioritätsanspruch
  • Diese internationale Patentanmeldung beansprucht die Priorität der am 25. März 2022 eingereichten US-Patentanmeldung Nr. 17/704,469 , die die Priorität nach 35 U.S.C. § 119 (e) der am 8. Oktober 2021 eingereichten US-Patentanmeldung Nr. 63/253,851 beansprucht.
  • Hintergrund
  • Datenverarbeitungssysteme können mehrere Computerprogramme beinhalten, die ausgeführt werden können, um Daten zu verarbeiten, die in Eingangsdatensätzen enthalten sind. In einem Datenverarbeitungssystem können Datensätze von einem Computerprogramm zu einem anderen weitergeleitet werden, was zu einem Satz von Ausgangsdatensätzen führt, die verarbeitete Daten enthalten.
  • Zusammenfassung
  • In einem Aspekt beinhaltet ein Verfahren zum Aktualisieren eines Computerprogramms das Empfangen eines Computerprogramms, das auf einem ersten Computersystem gehostet wird und konfiguriert ist, um von diesem ausgeführt zu werden, wobei das Computerprogramm konfiguriert ist, um, wenn es ausgeführt wird, Datensätze von einer Datenquelle zu empfangen, Daten, die in Feldern der Datensätze enthalten sind, zu verarbeiten und verarbeitete Datensätze an ein Datenziel auszugeben. Das Verfahren beinhaltet das Analysieren des Computerprogramms durch einen oder mehrere Prozessoren, um eine Charakterisierung einer Abstammung, einer Architektur und einer Operation des Computerprogramms zu erhalten. Die Abstammung eines Computerprogramms beinhaltet Beziehungen zwischen Elementen des Computerprogramms, die Architektur eines Computerprogramms beinhaltet eine Charakteristik der Datenquelle, eine Charakteristik des Datenziels und eine Charakteristik eines oder mehrerer Prozessoren, die konfiguriert sind, um die in Datensätzen enthaltenen Daten zu verarbeiten, und die Operation eines Computerprogramms beinhaltet Prozesse des Computerprogramms, die ausgeführt werden, um die Daten aus den Datensätzen zu verarbeiten. Das Verfahren beinhaltet das Empfangen einer Charakterisierung einer Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, wobei, wenn das Computerprogramm gemäß der Aktualisierung modifiziert wird, mindestens ein Teil des modifizierten Computerprogramms konfiguriert ist, um auf einem zweiten Computersystem gehostet zu werden und von diesem ausgeführt zu werden; und das Modifizieren des Computerprogramms, um die Aktualisierung zu implementieren, um das modifizierte Computerprogramm zu erzeugen, einschließlich des Modifizierens einer oder mehrerer der Abstammung des Computerprogramms, der Architektur des Computerprogramms oder der Operation des Computerprogramms.
  • Ausführungsformen können eines oder eine beliebige Kombination von zwei oder mehr der folgenden Merkmale beinhalten.
  • Das zweite Computersystem ist ein cloudbasiertes System.
  • Das Modifizieren des Computerprogramms beinhaltet das Zusammenführen der Charakterisierung der Aktualisierung mit der Charakterisierung der Abstammung, der Architektur und der Operation des Computerprogramms.
  • Die Abstammung des Computerprogramms beinhaltet Beziehungen zwischen dem Computerprogramm und anderen Computerprogrammen.
  • Das Computerprogramm beinhaltet Datenverarbeitungskomponenten, die konfiguriert sind, um Werte in Feldern von Datensätzen zu verarbeiten, wobei die Datenverarbeitungskomponenten durch Verbindungen verbunden sind, die Flüsse von Datensätzen repräsentieren. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Modifizieren eines Werts oder eines Ausdrucks für einen Parameter einer Datenverarbeitungskomponente oder einer Verbindung des Computerprogramms. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Hinzufügen einer neuen Datenverarbeitungskomponente, das Löschen einer Datenverarbeitungskomponente oder beides. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Hinzufügen einer neuen Verbindung, das Löschen einer Verbindung oder beides.
  • Die Charakterisierung der Aktualisierung beinhaltet eine Charakterisierung eines verteilten Verarbeitungsschemas für mindestens einen Teil des Computerprogramms. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Modifizieren eines Layouts des Computerprogramms, um eine Verteilung von Verarbeitungsoperationen gemäß dem verteilten Verarbeitungsschema zu implementieren. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms: Erzeugen einer Spezifikation für eine erste neue Datenverarbeitungskomponente, die konfiguriert ist, um eine Partitionierungsoperation zu implementieren; Erzeugen einer Spezifikation für eine zweite neue Datenverarbeitungskomponente, die konfiguriert ist, um eine Erfassungsoperation zu implementieren; Einfügen der ersten neuen Datenverarbeitungskomponente in das Computerprogramm stromaufwärts des mindestens einen Teils des Computerprogramms; und Einfügen der zweiten neuen Datenverarbeitungskomponente in das Computerprogramm stromabwärts des mindestens einen Teils des Computerprogramms. In einigen Fällen beinhaltet das Verfahren das Identifizieren von Komponenten des Computerprogramms, auf die das verteilte Verarbeitungsschema anzuwenden ist, basierend auf der Charakterisierung der Aktualisierung.
  • Die Datenquelle beinhaltet ein erstes Dateisystem oder eine erste Datenbank und wobei die Charakterisierung der Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, eine Identifizierung eines zweiten Dateisystems oder einer zweiten Datenbank beinhaltet, von der das modifizierte Computerprogramm Datensätze empfangen soll. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Aktualisieren eines Namens der Datenquelle in einer Spezifikation einer Komponente des Computerprogramms. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms: Löschen einer ersten Datenquellenkomponente des Computerprogramms, die dem ersten Dateisystem oder der ersten Datenbank entspricht; und Einfügen einer zweiten Datenquellenkomponente, die dem zweiten Dateisystem oder der zweiten Datenbank entspricht.
  • Das Datenziel beinhaltet ein erstes Dateisystem oder eine erste Datenbank und wobei die Charakterisierung der Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, eine Identifizierung eines Satzes von mehreren zweiten Dateisystemen oder Datenbanken beinhaltet, an die das modifizierte Computerprogramm Datensätze ausgeben soll. In einigen Fällen befindet sich mindestens eines der zweiten Dateisysteme oder Datenbanken an einem Ort, der sich von einem Ort mindestens eines anderen der zweiten Dateisysteme oder Datenbanken unterscheidet. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms: Replizieren eines Flusses im Computerprogramm, der eine Datenverarbeitungskomponente des Computerprogramms mit einer ersten Datenzielkomponente verbindet, die dem ersten Dateisystem oder der ersten Datenbank entspricht; Einfügen einer neuen Komponente, die einem ersten der zweiten Dateisysteme oder Datenbanken entspricht, wobei der replizierte Fluss die Datenverarbeitungskomponente mit der neuen Komponente verbindet. In einigen Fällen ist das zweite Dateisystem oder die zweite Datenbank ein cloudbasiertes Dateisystem oder eine cloudbasierte Datenbank und wobei die Charakterisierung der Aktualisierung eine Identifizierung einer ersten Eigenschaft von Daten, die in einem nicht cloudbasierten Speicherort gespeichert werden sollen, eine Identifizierung einer zweiten Eigenschaft von Daten, die in dem zweiten cloudbasierten Dateisystem oder der zweiten cloudbasierten Datenbank gespeichert werden sollen, oder beides beinhaltet. In einigen Fällen beinhaltet das Analysieren des Computerprogramms das Durchführen einer Datenabstammungsanalyse und das Identifizieren, basierend auf der Datenabstammungsanalyse, einer ersten Komponente, die konfiguriert ist, um Datensätze mit der ersten Eigenschaft zu empfangen oder auszugeben, einer zweiten Komponente, die konfiguriert ist, um Datensätze mit der zweiten Eigenschaft zu empfangen oder auszugeben, oder beides umfasst. In einigen Fällen umfasst die erste Eigenschaft persönlich identifizierbare Informationen (PII). In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Modifizieren einer Spezifikation für eine erste Datenverarbeitungskomponente, die Daten mit der ersten Eigenschaft ausgibt, das Modifizieren einer Spezifikation für eine zweite Datenverarbeitungskomponente, die Daten mit der zweiten Eigenschaft ausgibt, oder beides.
  • Das Modifizieren des Computerprogramms beinhaltet: Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen ersten Typ von Dateiübertragungsprotokoll implementiert; und Modifizieren einer Spezifikation für die Datenverarbeitungskomponente gemäß einem zweiten Typ von Dateiübertragungsprotokoll, wobei die Charakterisierung der Aktualisierung eine Anzeige einer Änderung von dem ersten Typ von Dateiübertragungsprotokoll zu dem zweiten Typ von Dateiübertragungsprotokoll beinhaltet. In einigen Fällen beinhaltet das Modifizieren der Spezifikation für die Datenverarbeitungskomponente das Ändern eines Werts oder Ausdrucks für jeden von einem oder mehreren Parametern der Datenverarbeitungskomponente.
  • Die Charakterisierung der Aktualisierung beinhaltet eine Anforderung zur Anonymisierung von persönlich identifizierbaren Informationen (PII). In einigen Fällen beinhaltet das Analysieren des Computerprogramms das Identifizieren einer Datenverarbeitungskomponente, die konfiguriert ist, um erste Datensätze mit einem oder mehreren Feldern, die PII enthalten, zu empfangen. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Hinzufügen einer Komponente, die konfiguriert ist, um einen Tokenisierungsdienst stromaufwärts der identifizierten Datenverarbeitungskomponente zu implementieren, wobei der Tokenisierungsdienst konfiguriert ist, um die ersten Datensätze zu empfangen und die in den Feldern der empfangenen Datensätze enthaltenen PII zu generalisieren. In einigen Fällen beinhaltet das Modifizieren des Computerprogramms das Modifizieren einer Spezifikation der identifizierten Datenverarbeitungskomponente, um eine Definition eines Datensatzformats für Datensätze zu ändern, die von der identifizierten Datenverarbeitungskomponente verarbeitet werden sollen. In einigen Fällen ist das zweite Computersystem ein cloudbasiertes Computersystem und wobei das Modifizieren des Computerprogramms das Spezifizieren eines nicht cloudbasierten Computersystems zur Ausführung des Tokenisierungsdiensts beinhaltet.
  • Das Verfahren beinhaltet das Testen mindestens eines Teils des modifizierten Computerprogramms, wobei das Testen beinhaltet: Bereitstellen von Eingangstestdatensätzen für den mindestens einen Teil des modifizierten Computerprogramms; und Erhalten von ersten verarbeiteten Datensätzen aus dem mindestens einen Teil des modifizierten Computerprogramms. In einigen Fällen beinhaltet das Verfahren das Testen mindestens eines Teils des Computerprogramms, wobei der mindestens eine Teil des Computerprogramms dem getesteten Teil des modifizierten Computerprogramms entspricht, wobei das Testen des mindestens einen Teils des Computerprogramms beinhaltet: Bereitstellen der Eingangstestdatensätze für den mindestens einen Teil des Computerprogramms und Erhalten von zweiten verarbeiteten Datensätzen aus dem mindestens einen Teil des Computerprogramms; wobei das Testen des mindestens einen Teils des modifizierten Computerprogramms das Vergleichen der ersten verarbeiteten Datensätze und der zweiten verarbeiteten Datensätze beinhaltet.
  • Das Verfahren beinhaltet das Migrieren des modifizierten Computerprogramms zu dem zweiten Computersystem.
  • Das Modifizieren des Computerprogramms beinhaltet: Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen Attributwert aufweist, der mit einem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird; und Ersetzen der identifizierten Datenverarbeitungskomponente durch eine neue Datenverarbeitungskomponente. In einigen Fällen beinhaltet das Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen Attributwert aufweist, der mit einem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird: Erzeugen eines ersten Satzes von Datensätzen, einschließlich Erzeugen eines Datensatzes, der jeder Datenverarbeitungskomponente des Computerprogramms entspricht, wobei jeder Datensatz eine Kennung der jeweiligen Datenverarbeitungskomponente und Attributwerte für Attribute der jeweiligen Datenverarbeitungskomponente enthält; und Filtern des ersten Satzes von Datensätzen basierend auf den Attributwerten, die in den Datensätzen des ersten Satzes enthalten sind, um einen zweiten Satz von Datensätzen zu erhalten, einschließlich Entfernen, durch das Filtern, der Datensätze des ersten Satzes, die keinen Wert für das bestimmte Attribut enthalten, der mit dem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird.
  • Das Modifizieren des Computerprogramms, um die Aktualisierung zu implementieren, um das modifizierte Computerprogramm zu erzeugen, beinhaltet mindestens das Modifizieren der Architektur des Computerprogramms.
  • Das Modifizieren der Architektur beinhaltet mindestens das Anpassen der Charakteristik eines oder mehrerer Prozessoren, die konfiguriert sind, um die in den Datensätzen enthaltenen Daten zu verarbeiten, an Charakteristiken eines oder mehrerer Prozessoren des zweiten Computersystems.
  • Das empfangene Computerprogramm ist eine Kopie eines Computerprogramms, das auf dem ersten Computersystem gehostet wird und von diesem ausführbar ist.
  • Das Modifizieren des Computerprogramms beinhaltet das Erzeugen einer Kopie des empfangenen Computerprogramms und das Modifizieren der erzeugten Kopie, um das modifizierte Computerprogramm zu erzeugen.
  • Das Modifizieren der einen oder mehreren der Abstammung des Computerprogramms, der Architektur des Computerprogramms oder der Operation des Computerprogramms wird unter Berücksichtigung von Charakteristiken des zweiten Computersystems durchgeführt. Die berücksichtigten Charakteristiken des zweiten Computersystems sind Charakteristiken der Hardware, die von dem zweiten Computersystem zum Ausführen des modifizierten Computerprogramms verwendet werden soll.
  • Das zweite Computersystem ist ein cloudbasiertes Computersystem und das Modifizieren des Computerprogramms beinhaltet das Hinzufügen einer Komponente, die konfiguriert ist, um auf einem lokalen Computersystem ausgeführt zu werden und einen Tokenisierungsdienst zu implementieren, der konfiguriert ist, um PII, die in den Feldern von Datensätzen enthalten sind, die von der Datenquelle empfangen werden, zu anonymisieren, vorzugsweise durch Ersetzen eines Tokens für die PII und das Token stellt die PII durch ein Tokenisierungssystem zurück, stellt aber sicher, dass die PII selbst nicht dem cloudbasierten System bereitgestellt wird, wo andere Verarbeitungsoperationen des modifizierten Computerprogramms stattfinden sollen.
  • Jede der Operationen des Verfahrens wird automatisch durch das Computersystem ausgeführt, das das Verfahren implementiert.
  • Das Computersystem, das das Verfahren implementiert, ist ein Programmaktualisierungssystem, das sich von jedem des ersten Computersystems und des zweiten Computersystems unterscheidet, und/oder wobei sich das zweite Computersystem vom ersten Computersystem unterscheidet.
  • In einem Aspekt beinhaltet ein Verfahren zum Aktualisieren eines Datenflussgraphen das Zugreifen auf einen Datenflussgraph, wobei eine Spezifikation des Datenflussgraphen Knoten definiert, wobei mindestens einer der Knoten eine Datenverarbeitungskomponente repräsentiert, die eine Operation definiert, die durchgeführt werden soll, um Daten in einem oder mehreren Feldern eines Datensatzes mit einem Datensatzformat zu verarbeiten, wobei die Datensätze der Datenverarbeitungskomponente bereitgestellt werden, und eine oder mehrere Verbindungen, die die Knoten verbinden und jeweils einen Fluss von Datensätzen repräsentieren. Das Verfahren beinhaltet das Erzeugen eines ersten Satzes von Datensätzen, die den Datenflussgraphen repräsentieren, einschließlich Erzeugen eines Datensatzes, der jeder der Datenverarbeitungskomponenten des Datenflussgraphen entspricht, wobei jeder Datensatz enthält: eine Kennung der Datenverarbeitungskomponente und Attributwerte für Attribute der Datenverarbeitungskomponente. Das Verfahren beinhaltet das Empfangen einer Charakterisierung einer Aktualisierung des Datenflussgraphen, wobei die Charakterisierung der Aktualisierung einen Zielwert für ein bestimmtes Attribut angibt; Filtern des ersten Satzes von Datensätzen basierend auf dem Zielwert, der durch die Charakterisierung der Aktualisierung angegeben wird, um einen zweiten Satz von Datensätzen zu erhalten, einschließlich Entfernen, durch das Filtern, von Datensätzen, die keinen Attributwert für das bestimmte Attribut enthalten, der mit dem Zielwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird; und für jeden Datensatz im zweiten Satz von Datensätzen, Ersetzen der entsprechenden Komponente durch eine neue Komponente, die durch die Charakterisierung der Aktualisierung angegeben wird.
  • Ausführungsformen können eines oder beide der folgenden Merkmale beinhalten.
  • Das Ersetzen einer gegebenen Komponente durch eine neue Komponente umfasst das Aktualisieren der Flüsse, die mit der gegebenen Komponente verbunden sind.
  • Das Ersetzen einer gegebenen Komponente durch eine neue Komponente umfasst das Löschen der Flüsse, die mit dem Knoten verbunden sind, der die gegebene Komponente repräsentiert, und das Erzeugen neuer Flüsse, die mit dem Knoten verbunden sind, der die neue Komponente repräsentiert.
  • Aspekte, wie sie hier beschrieben sind, ermöglichen eine automatische Modifikation eines Computerprogramms, das zu einem neuen Computersystem migriert werden soll, das sich von dem Computersystem unterscheidet, auf dem das Computerprogramm ursprünglich gehostet wurde und konfiguriert ist, um ausgeführt zu werden. Um dieses Computerprogramm für die Migration zum neuen Computersystem und für seine Ausführung durch das neue Computersystem bereit zu machen, berücksichtigt die automatische Modifikation des Computerprogramms Charakteristiken des neuen Computersystems, um den ordnungsgemäßen Betrieb des modifizierten Computerprogramms am neuen Computersystem sicherzustellen, wie etwa einen ordnungsgemäßen Betrieb in Bezug auf Datensicherheit, Durchsatz der Datenverarbeitung, Rechenressourcenverbrauch oder korrekte Ausführung der Prozesse/Funktionen des Computerprogramms. Die beim Modifizieren des Computerprogramms berücksichtigten Charakteristiken des neuen Computersystems können Charakteristiken in Bezug auf die Hardware des neuen Computersystems und/oder den Grad des Datenschutzes am neuen Computersystem beinhalten (Datensicherheit). Diese Aspekte sind besonders vorteilhaft, aber nicht beschränkt auf das Migrieren eines Computerprogramms von einem lokalen Computersystem zu einem cloudbasierten Computersystem. Die Details einer oder mehrerer Implementierungen sind in den beigefügten Zeichnungen und der nachstehenden Beschreibung dargelegt. Andere Merkmale und Vorteile werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen ersichtlich.
  • Kurze Beschreibung der Zeichnungen
    • 1 ist ein Diagramm von Computerprogrammen.
    • 2 ist ein Diagramm eines Systems zum Aktualisieren eines Computerprogramms.
    • 3-8 sind Diagramme von Datenflussgraphen.
    • 9 ist ein Diagramm eines Datenflussgraphen.
    • 10A und 10B sind Diagramme von Abschnitten eines ursprünglichen Datenflussgraphen bzw. eines modifizierten Datenflussgraphen.
    • 11 und 12 sind Flussdiagramme.
    • 13 ist ein Diagramm eines Rechensystems.
  • Detaillierte Beschreibung
  • Wir beschreiben hier Ansätze, vorzugsweise automatisierte Ansätze, zum Modifizieren eines Computerprogramms, wie etwa eines Datenflussgraphen (andere Arten von Programmen sind ebenfalls möglich), z. B. derart, dass mindestens ein Abschnitt des modifizierten Computerprogramms auf einem anderen Rechensystem als dem des ursprünglichen Computerprogramms gehostet und von diesem ausgeführt werden kann. Zum Beispiel kann die Modifikation das modifizierte Computerprogramm konfigurieren, um auf einem cloudbasierten Rechensystem gehostet und von diesem ausgeführt zu werden. Der automatisierte Modifikationsprozess beinhaltet eine automatisierte Analyse des Computerprogramms, um die Abstammung, Architektur und Operation des Computerprogramms zu charakterisieren. Eine oder mehrere der Abstammung, Architektur und Operation werden dann automatisch modifiziert, um eine Aktualisierung zu implementieren, wie etwa eine Aktualisierung, die durch einen Benutzer oder ein Rechensystem spezifiziert wird. Die Aktualisierung kann z. B. die Einführung eines verteilten Verarbeitungsschemas in das modifizierte Computerprogramm, die Modifikation eines Orts zum Abrufen von Eingangsdatensätzen oder Speichern von Ausgangsdatensätzen oder die Einführung eines Prozesses zum Maskieren von persönlich identifizierbaren Informationen (PII) sein, z. B. um Datenschutzbestimmungen einzuhalten.
  • Unter Bezugnahme auf 1 wird ein Computerprogramm 100 auf einem ersten Rechensystem 102 gehostet und von diesem ausgeführt. In einem Beispiel ist das erste Rechensystem 102 ein Rechensystem, das für einen Benutzer, der das Computerprogramm betreibt, lokal ist, z. B. ein Rechensystem, das sich vor Ort in einem Büro befindet. Der Benutzer, wie etwa ein Systemingenieur, möchte das Computerprogramm 100 möglicherweise so aktualisieren, dass mindestens ein Teil einer modifizierten Version des Computerprogramms (als ein modifiziertes Computerprogramm 104 bezeichnet) auf einem zweiten Rechensystem 106, z. B. einem Cloudrechensystem, gehostet und von diesem ausgeführt wird. Zum Beispiel kann das Aktualisieren des Computerprogramms 100 als Teil eines Prozesses zum Migrieren von Anwendungen oder Prozessen von einer lokalen Umgebung (z. B. lokaler Speicherung und Ausführung) zu einer cloudbasierten Umgebung (z. B. cloudbasierter Speicherung und/oder Ausführung) oder zu einer Kombination aus einer lokalen Umgebung und einer cloudbasierten Umgebung durchgeführt werden. Das Aktualisieren des Computerprogramms 100 zum Erzeugen des modifizierten Computerprogramms 104 ist ein automatisierter Prozess, der auf einer Eingabe von dem Benutzer basiert, die das Ziel der Aktualisierung charakterisiert, wie in den folgenden Absätzen beschrieben.
  • Das Computerprogramm 100 wird automatisch analysiert, um verschiedene Charakterisierungen des Computerprogramms zu erhalten. Zum Beispiel kann das Computerprogramm 100 analysiert werden, um eine Charakterisierung einer Abstammung des Computerprogramms 100 zu erhalten, die Beziehungen zwischen Elementen des Computerprogramms, Beziehungen zwischen dem Computerprogramm und anderen Computerprogrammen oder beides beinhaltet. Die Charakterisierung der Abstammung eines Computerprogramms beinhaltet Daten, die diese Beziehungen angeben. Ein Element kann ein Datenverarbeitungsknoten oder eine Komponente, eine Datenressource oder ein Datenziel, ein Link für Datenfluss oder dergleichen sein. Das Computerprogramm 100 kann analysiert werden, um eine Charakterisierung einer Architektur des Computerprogramms zu erhalten, die Charakteristiken einer Datenquelle, Charakteristiken eines Datenziels, Charakteristiken eines oder mehrerer Prozessoren, die konfiguriert sind, um das Computerprogramm auszuführen (z. B. um in Feldern der Datensätze enthaltene Daten zu verarbeiten) oder andere Merkmale der Computerprogrammarchitektur beinhaltet. Die Charakterisierung der Architektur eines Computerprogramms beinhaltet Daten, die diese Charakteristiken angeben. Das Computerprogramm 100 kann analysiert werden, um eine Charakterisierung einer Operation des Computerprogramms zu erhalten, die Prozesse des Computerprogramms beinhaltet, die ausgeführt werden, wenn das Computerprogramm ausgeführt wird, z. B. Prozesse, die ausgeführt werden, um Daten zu verarbeiten, die in Feldern von Datensätzen enthalten sind, die vom Computerprogramm empfangen werden. Die Charakterisierung der Operation eines Computerprogramms beinhaltet Daten, die diese Prozesse angeben.
  • Eine Charakterisierung einer Aktualisierung des Computerprogramms 100 wird empfangen, z. B. als Eingabe von einem Benutzer. Die Aktualisierung ist eine Aktualisierung, die, wenn sie implementiert wird, z. B. wenn das Computerprogramm 100 gemäß der Aktualisierung modifiziert wird, zu dem modifizierten Computerprogramm 104 führt, von dem mindestens ein Teil konfiguriert ist, um auf dem zweiten Computersystem 106 gehostet und von diesem ausgeführt zu werden. Das Computerprogramm 100 kann automatisch modifiziert werden, um die Aktualisierung zu implementieren, wodurch das modifizierte Computerprogramm 104 erzeugt wird. Das Implementieren der Aktualisierung beinhaltet eines oder mehrere des Modifizierens der Abstammung des Computerprogramms, des Modifizierens der Architektur des Computerprogramms oder des Modifizierens der Operation des Computerprogramms. Das modifizierte Computerprogramm 104 wird mindestens teilweise auf dem zweiten Computersystem 106 gehostet und konfiguriert, um von diesem ausgeführt zu werden.
  • Das Computerprogramm 100 und das modifizierte Computerprogramm 104 sind Computerprogramme, die, wenn sie ausgeführt werden, Datensätze von einer Datenquelle empfangen, Daten, die in Feldern der Datensätze enthalten sind, verarbeiten und verarbeitete Daten an ein Datenziel ausgeben. In einigen Beispielen sind das Computerprogramm 100 und das modifizierte Computerprogramm 104 ausführbare Datenflussgraphen. Ein ausführbarer Datenflussgraph ist ein Computerprogramm in Form eines Graphen, der Knoten beinhaltet, die ausführbare Datenverarbeitungskomponenten und Datenressourcen wie Datenquellen und Datenziele sind. Knoten können Datensätze innerhalb des Graphen empfangen, Daten, die in den Datensätzen enthalten sind, wie Werte in Feldern der Datensätze verarbeiten und Ergebnisse der Verarbeitung in Datensätzen ausgeben, die an ein Ziel innerhalb des Graphen weitergeleitet werden, wie eine Datenressource, z. B. ein Datenziel. Datenressourcen sind Speicher von Daten, wie Datensätze, z. B. Quellen von Daten, die während der Ausführung des Datenflussgraphen verarbeitet oder verwendet werden sollen, oder Ziele (Ziele) für verarbeitete Datensätze, die durch den Datenflussgraphen ausgegeben werden. Datenressourcen sind beispielsweise Dateien, Datenbanken (z. B. Tabellen von Datenbanken), Warteschlangen, Objekte oder andere Typen von Datenquellen oder Zielen. Ein Link, der zwei Knoten eines Graphen verbindet, ist für einen Fluss von Informationen und/oder Daten, wie Datensätzen, zwischen den Knoten bereitgestellt. Der ausführbare Datenflussgraph ist konfigurierbar, um, wenn er ausgeführt wird, Daten, die in Feldern von Datensätzen enthalten sind, zu verarbeiten. Datenflussgraphen (manchmal als Graphen bezeichnet) können Datenverarbeitungsgraphen oder -pläne sein, die die Ausführung eines oder mehrerer Graphen steuern. In einigen Beispielen sind eine oder mehrere Datenverarbeitungskomponenten eines Datenflussgraphen ein Untergraph.
  • 2 ist ein schematisches Diagramm eines Rechensystems 230 zum Aktualisieren eines Computerprogramms 200, um ein modifiziertes Computerprogramm 204 zu erzeugen. Das Rechensystem 230 beinhaltet einen oder mehrere Prozessoren und Speicher. Die Computerprogramme 200, 204 sind z. B. ausführbare Datenflussgraphen, die konfigurierbar sind, um Daten, die in Feldern von Datensätzen enthalten sind, zu verarbeiten. Das ursprüngliche Computerprogramm 200 wird auf einem ersten Rechensystem 201 gehostet und von diesem ausgeführt, wie etwa einem Rechensystem, das für ein Unternehmen oder eine Entität mit Interesse an dem Computerprogramm 200 lokal ist. Das modifizierte Computerprogramm 204 wird auf einem zweiten Rechensystem 203 gehostet und von diesem ausgeführt, wie etwa einem cloudbasierten Rechensystem, das sich vom ersten Rechensystem 201 unterscheidet. In einigen Beispielen werden Abschnitte des modifizierten Computerprogramms 204 auf dem ersten Rechensystem 201 gehostet und/oder von diesem ausgeführt und andere Abschnitte werden auf dem zweiten Rechensystem 203 gehostet und/oder von diesem ausgeführt.
  • Das System 230 empfängt eine Kopie des Programms 200 vom System 201 oder das System 230 empfängt das Programm 200, das konfiguriert ist, um auf dem System 201 gehostet zu werden.Das System 230 beinhaltet ein Programmanalysemodul 210, das das empfangene (Kopie des) Computerprogramm 200 analysiert, um eine Charakterisierung einer Abstammung des Computerprogramms 200, einer Architektur des Computerprogramms 200, einer Operation des Computerprogramms 200 oder einer Kombination von zwei oder mehr davon zu erhalten. Diese Charakterisierung 211 wird an ein Modifikationsmodul 220 weitergeleitet.
  • Die Abstammung des Computerprogramms 200 beinhaltet Beziehungen zwischen Elementen des Computerprogramms (z. B. Beziehungen zwischen Knoten, Datenressourcen oder beidem), Beziehungen zwischen dem Computerprogramm und anderen Computerprogrammen oder beides. Die Abstammung des Computerprogramms 200 kann statische Abhängigkeiten, Laufzeitabhängigkeiten oder beides identifizieren oder darauf basieren. Eine statische Abhängigkeit zwischen zwei Elementen oder Programmen ist eine Abhängigkeit, die durch Werte in zuvor gespeicherten Parametersätzen definiert ist, die mit dem/den Computerprogramm(en) assoziiert sind. Statische Abhängigkeiten zwischen Elementen des Computerprogramms oder zwischen Computerprogrammen werden durch eine statische Analyse der Werte in den gespeicherten Parametersätzen identifiziert. Eine Laufzeitabhängigkeit zwischen zwei Elementen oder Computerprogrammen ist eine Abhängigkeit, die zur Laufzeit eines der Computerprogramme definiert ist, die aber aus der statischen Analyse nicht ersichtlich ist. Wenn das Computerprogramm 200 ausgeführt wird, um Datensätze zu verarbeiten, kann ein Ausführungsbefehl Parameterwerte beinhalten, z. B. zusätzlich zu oder anstelle von Parameterwerten in den zuvor gespeicherten Parametersätzen, die die statischen Abhängigkeiten definieren. Laufzeitprotokolle, die während der Ausführung des Computerprogramms erzeugt werden, geben diese Parameterwerte an, die z. B. angeben, welche Knoten ausgeführt wurden oder auf welche Datenressourcen zugegriffen wurde. Laufzeitabhängigkeiten zwischen Elementen des Computerprogramms oder zwischen Computerprogrammen werden durch eine Analyse der Parameterwerte identifiziert, die in den Laufzeitprotokollen angegeben sind.
  • Eine weitere Beschreibung der statischen und Laufzeitanalyse findet sich in der US-Patentanmeldung mit der Veröffentlichungsnummer 2016/0019057 und der US-Patentanmeldung mit der Veröffentlichungsnummer 2016/0019057 , deren Inhalt hier durch Bezugnahme in seiner Gesamtheit aufgenommen wird.
  • Die Architektur des Computerprogramms 200 beinhaltet Charakteristiken einer Datenquelle, Charakteristiken eines Datenziels, Charakteristiken eines oder mehrerer Prozessoren, die konfiguriert sind, um das Computerprogramm auszuführen (z. B. um in Feldern der Datensätze enthaltene Daten zu verarbeiten) oder andere Merkmale der Computerprogrammarchitektur. Die Charakterisierung einer Datenquelle oder eines Datenziels kann einen Namen der Datenquelle oder des Datenziels, einen Typ der Datenquelle oder des Datenziels (z. B. Datenbank, Datei, Warteschlange usw.), einen tatsächlichen Ort der Datenquelle oder des Datenziels (z. B. einen Pfad für eine physische Datei oder einen physischen Datensatz) oder einen parametrisierten Ort der Datenquelle oder des Datenziels beinhalten. Ein parametrisierter Ort ist ein Ausdruck, der sich zur Laufzeit des Computerprogramms auf einen Pfad für die tatsächliche Datenquelle oder das tatsächliche Datenziel auflöst, z. B. einen Pfad für eine physische Datei oder einen physischen Datensatz. Zum Beispiel kann ein Datensatz, wie etwa eine Datenquelle oder ein Datenziel, durch den parametrisierten Pfad /${FEED}/inv_${DATE}.dat charakterisiert werden. Bei der Ausführung empfängt das Computerprogramm Werte für die FEED- und DATE-Parameter, so dass der parametrisierte Pfad auf einen spezifischen physischen Ort aufgelöst werden kann. Die Charakterisierung kann eine Identifizierung oder Anzeige mehrerer Datenquellen oder Datenziele beinhalten, z. B. lokaler und/oder cloudbasierter Datenquellen oder Datenziele. Die Charakterisierung des einen oder der mehreren Prozessoren kann eine Anzahl von Prozessoren, ein Layout für ein verteiltes Verarbeitungsschema (z. B. eine Anzeige eines Partitionierungsschemas für Verarbeitungsoperationen), einen Ort jedes des einen oder der mehreren Prozessoren, einen Ziel- oder tatsächlichen Stromverbrauch für jeden des einen oder der mehreren Prozessoren oder andere Charakteristiken beinhalten.
  • Die Operation des Computerprogramms 200 beinhaltet Prozesse des Computerprogramms, die ausgeführt werden, wenn das Computerprogramm ausgeführt wird, z. B. Prozesse, die ausgeführt werden, um Daten zu verarbeiten, die in Feldern der Datensätze enthalten sind. Prozesse des Computerprogramms können z. B. Dateiübertragungsoperationen, Sortieroperationen, Filteroperationen, Verknüpfungsoperationen und andere geeignete Operationen beinhalten.
  • Das System 230 beinhaltet ein Modifikationsmodul 220, das eine Charakterisierung einer Aktualisierung 222 empfängt, die an dem Computerprogramm 200 vorzunehmen ist. Die Charakterisierung der Aktualisierung 222 kann von einem Benutzer über eine Benutzerschnittstelle 224, z. B. eine Programmentwicklungsschnittstelle, empfangen werden. Eine Aktualisierung ist eine Modifikation, die an dem Computerprogramm 200 vorgenommen werden soll, sodass, wenn das Computerprogramm 200 gemäß der Aktualisierung modifiziert wird, um das modifizierte Computerprogramm 204 zu erzeugen, mindestens ein Teil des modifizierten Computerprogramms 204 konfiguriert ist, um auf dem zweiten Computersystem 203 gehostet und von diesem ausgeführt zu werden. Beispiele für Charakterisierungen einer Aktualisierung beinhalten eines oder mehrere der Folgenden:
    • • Eine Charakterisierung eines verteilten Verarbeitungsschemas, das für mindestens einen Teil des modifizierten Computerprogramms zu implementieren ist, z. B. eine Charakterisierung einer Partitionierung (z. B. eine Änderung der Breite von Verarbeitungsoperationen für mindestens einen Teil des modifizierten Computerprogramms oder eine Änderung einer Regel, durch die Datensätze auf jeden von mehreren Verarbeitungsströmen partitioniert werden (z. B. eine Änderung von Partitionierung basierend auf Kundennummer zu Partitionierung basierend auf Produktnummer),
    • • Eine Änderung der Datenquelle, des Datenziels oder beider für das modifizierte Computerprogramm 204, z. B. eine Identifizierung einer oder mehrerer Datenquellen oder Datenziele, die sich von der/den Datenquelle(n) bzw. Datenziel(en) für das Computerprogramm 200 unterscheiden; oder eine Änderung der Anzahl von Datenquelle(n), Datenziel(en) oder beider (z. B. eine Änderung von einem lokalen Datenziel zu einem cloudbasierten Datenziel oder zu einer Kombination aus lokalen und cloudbasierten Datenzielen),
    • • Eine Änderung eines Typs von Dateiübertragungsprotokoll, das durch das modifizierte Computerprogramm zu implementieren ist, z. B. eine Änderung von einem herkömmlichen Dateiübertragungsprotokoll (FTP) zu einem sicheren Dateiübertragungsprotokoll (SFTP), oder
    • • Eine Einführung einer Anforderung zum Maskieren von persönlich identifizierbaren Informationen (PII) in Datensätzen, die durch das modifizierte Computerprogramm 204 empfangen oder verarbeitet werden.
  • Das Modifikationsmodul 220 implementiert die Aktualisierung 222 durch Verknüpfen der Aktualisierung 222 mit den Charakterisierungen 211 des Computerprogramms 200 und Anwenden des Ergebnisses auf das Computerprogramm 200, wodurch das modifizierte Computerprogramm 204 erzeugt wird. Das Modifizieren des Computerprogramms 200 beinhaltet das Modifizieren der Abstammung des Computerprogramms 200, der Architektur des Computerprogramms, der Operation des Computerprogramms 200 oder einer Kombination von zwei oder mehr davon. In einigen Beispielen beinhaltet das Modifizieren des Computerprogramms 200 das direkte Modifizieren des Computerprogramms 200 selbst, um das modifizierte Computerprogramm 204 zu erzeugen. In einigen Beispielen beinhaltet das Modifizieren des Computerprogramms das Erzeugen einer Kopie des Computerprogramms 200 und das Modifizieren der Kopie, um das modifizierte Computerprogramm 204 zu erzeugen.
  • Wenn das Computerprogramm 200 ein Datenflussgraph ist, können die Modifikationen das Modifizieren eines Werts oder Ausdrucks für einen Parameter einer Datenverarbeitungskomponente oder einer Verbindung des Datenflussgraphen beinhalten. Die Modifikationen können das Hinzufügen einer neuen Datenverarbeitungskomponente oder Verbindung, das Löschen einer Datenverarbeitungskomponente oder Verbindung oder Kombinationen davon beinhalten, um Charakteristiken des Systems 203 (z. B. Hardwarecharakteristiken) zu berücksichtigen. Um beispielsweise eine erste Datenverarbeitungskomponente im Computerprogramm 200 durch eine zweite Datenverarbeitungskomponente zu ersetzen, werden die erste Datenverarbeitungskomponente und ihre zugehörigen Verbindungen gelöscht und eine neue Datenverarbeitungskomponente und geeignete Verbindungen hinzugefügt.
  • In einigen Beispielen identifiziert das Modifikationsmodul 220 automatisch die Komponente(n) des Computerprogramms 200, die modifiziert werden sollen, und implementiert die Aktualisierung bei Empfang der Charakterisierung der Aktualisierung vom Benutzer. Zum Beispiel kann die Charakterisierung der Aktualisierung 222 eine Charakteristik von Komponenten im ursprünglichen Computerprogramm 200 identifizieren, die modifiziert werden sollen, und kann spezifizieren, wie die Komponente, die diese Charakteristik erfüllt, modifiziert werden soll. Das Modifikationsmodul 220 implementiert, basierend auf den Charakterisierungen 211 des Computerprogramms 200, einen Such- und Ersetzungsprozess, der im Folgenden ausführlicher beschrieben wird, um die Komponenten zu identifizieren, die die Charakteristik erfüllen, und um diese identifizierten Komponenten durch Ersatzkomponenten zu ersetzen, die entsprechend modifiziert wurden. In einem spezifischen Beispiel zeigt die Charakterisierung der Aktualisierung an, dass alle Datenziele im ursprünglichen Computerprogramm 200, die einen bestimmten Ortsparameter (z. B. einen Pfad zu einem lokalen Datenspeicherort) aufweisen, so modifiziert werden sollen, dass sie einen anderen Ortsparameter (z. B. einen Pfad zu einem cloudbasierten Datenspeicherort) aufweisen. Das Modifikationsmodul 222 sucht nach allen Datenzielkomponenten mit dem spezifizierten Ortsparameter und ersetzt sie durch Datenzielkomponenten, die den anderen Ortsparameter aufweisen.
  • In einigen Beispielen stellt die Charakterisierung der Aktualisierung 222, die durch den Benutzer bereitgestellt wird, eine Identifizierung oder Anzeige der Komponenten bereit, die durch die Modifikation modifiziert oder betroffen werden sollen, und das Modifikationsmodul 220 implementiert die Aktualisierung für diese Komponenten. Zum Beispiel kann die Charakterisierung der Aktualisierung 222 einen Satz von Prozessen identifizieren und kann spezifizieren, wie dieser Satz von Prozessen modifiziert werden soll. Basierend auf den Charakterisierungen 211 des Computerprogramms 200 kann das Modifikationsmodul 220 die Komponenten identifizieren, die aktualisiert werden sollen. In einem spezifischen Beispiel beinhaltet die Charakterisierung der Aktualisierung eine Identifizierung eines Satzes von Prozessen, die gemäß einem verteilten Verarbeitungsschema in dem modifizierten Computerprogramm ausgeführt werden sollen. Das Modifikationsmodul 220 identifiziert basierend auf den Charakterisierungen 211 der Architektur und Operation des Computerprogramms 200 die Komponenten, die diesen Prozessen entsprechen, und fügt eine Partitionskomponente stromaufwärts der durch den Benutzer identifizierten Komponenten und eine Erfassungskomponente stromabwärts der durch den Benutzer identifizierten Komponenten ein, wie im Folgenden ausführlicher erörtert.
  • In einigen Beispielen kann die Charakterisierung der Aktualisierung 222 vorschreiben, dass irgendwelche persönlich identifizierbaren Informationen (PII) in einem Tokenisierungsprozess anonymisiert werden, bevor sie dem zweiten Computersystem 203 bereitgestellt werden, wie etwa um eine weniger schützende Datensicherheitsumgebung am System 203 zu berücksichtigen. Der Tokenisierungsprozess kann zu einer Änderung des Formats führen, z. B. von einem numerischen Format der PII zu einem alphanumerischen Format für das resultierende Token. Das Modifikationsmodul 220 kann basierend auf der Datenabstammungscharakterisierung des Computerprogramms 200 Komponenten identifizieren, für die das Datensatzformat aktualisiert werden soll, um diese Formatänderung zu berücksichtigen.
  • 3 veranschaulicht Beispiele eines Computerprogramms 300 und eines modifizierten Computerprogramms 304. Das Computerprogramm 300 implementiert kein verteiltes Verarbeitungsschema und wird gemäß einer Aktualisierung modifiziert, um ein verteiltes Verarbeitungsschema in einem Teil 302 des modifizierten Computerprogramms 304 zu implementieren, um Charakteristiken des zweiten Computersystems zu berücksichtigen. Ein verteiltes Verarbeitungsschema ist eine Architektur, in der mehrere Prozessoren verwendet werden, um das Computerprogramm auszuführen. In einigen Beispielen können sich die mehreren Prozessoren auf unterschiedlichen Rechenvorrichtungen befinden. Zum Beispiel können sich einer oder mehrere der Prozessoren auf einem lokalen Computer befinden, wie etwa solche, die Datenschutzbestimmungen einhalten, und ein oder mehrere andere Prozessoren können cloudbasierte Prozessoren sein. Verteilte Verarbeitungsschemata können z. B. verwendet werden, um eine effiziente Verarbeitung zu erreichen; um Elastizität und Skalierbarkeit einzuführen; um eine Migration eines Computerprogramms zu einem cloudbasierten System zu erreichen, während die Datenschutzbestimmungen eingehalten werden, die eine cloudbasierte Verarbeitung von sensiblen Daten, wie etwa persönlich identifizierbaren Informationen (PII), oder aus anderen Gründen verhindern können.
  • Die Implementierung eines verteilten Verarbeitungsschemas in dem modifizierten Computerprogramm 304 kann das Modifizieren eines Layouts des Computerprogramms 300 beinhalten, um eine Verteilung von Verarbeitungsoperationen zu implementieren, wie durch das verteilte Verarbeitungsschema spezifiziert. Die Modifikation beinhaltet das Erzeugen einer Spezifikation für eine erste neue Datenverarbeitungskomponente 306, die eine Partitionierungsoperation implementiert. Die Partitionierungskomponente 306 wird in das modifizierte Computerprogramm 304 stromaufwärts des Teils 302 des modifizierten Computerprogramms 304 eingefügt, der die verteilte Verarbeitung implementieren soll, z. B. zwischen einer stromaufwärtigen Komponente 310 und einer ersten Komponente 312 des verteilten Verarbeitungsteils 302. Die Verbindung, die die stromaufwärtige Komponente 310 mit der ersten Komponente 312 im ursprünglichen Computerprogramm 300 verbindet, wird gelöscht und zwei neue Verbindungen werden erzeugt, um die Partitionierungskomponente 306 mit den Komponenten 310, 312 zu verbinden. Zusätzlich beinhaltet die Modifikation das Erzeugen einer Spezifikation für eine zweite neue Datenverarbeitungskomponente 308, die eine Erfassungsoperation implementiert. Die Erfassungskomponente 308 wird in das modifizierte Computerprogramm 304 stromabwärts des Teils 302 des modifizierten Computerprogramms 304 eingefügt, der die verteilte Verarbeitung implementieren soll, z. B. zwischen einer letzten Komponente 314 des verteilten Verarbeitungsteils 302 und einer stromabwärtigen Komponente 316. Die Verbindung, die die letzte Komponente 314 mit der stromabwärtigen Komponente 316 im ursprünglichen Computerprogramm 300 verbindet, wird gelöscht und zwei neue Verbindungen werden erzeugt, um die Erfassungskomponente 308 mit den Komponenten 314, 316 zu verbinden.
  • In einigen Beispielen implementiert das ursprüngliche Computerprogramm bereits ein verteiltes Verarbeitungsschema und die Aktualisierung ist eine Änderung der Aufteilung des verteilten Verarbeitungsschemas. Die Änderung kann eine Änderung der Anzahl von parallelen Strömen sein (z. B. implementiert das ursprüngliche Computerprogramm N parallele Ströme und die Aktualisierung ist eine Änderung auf M parallele Ströme). Die Änderung kann eine Änderung der Art und Weise sein, in der Datensätze partitioniert werden. Zum Beispiel kann das ursprüngliche Computerprogramm Partitionierung von Datensätzen basierend auf einer ersten Charakteristik von Daten implementieren, die in den Datensätzen enthalten sind (z. B. können Datensätze gemäß Kundennummer partitioniert werden), und das modifizierte Computerprogramm kann Partitionierung von Datensätzen basierend auf einer anderen Charakteristik der Daten implementieren (z. B. können Datensätze gemäß Produktnummer partitioniert werden). Die Änderung kann eine Änderung des Orts der verteilten Prozessoren sein. Zum Beispiel können sowohl das ursprüngliche Computerprogramm als auch das modifizierte Computerprogramm die gleiche Anzahl von parallelen Strömen implementieren, aber die Verarbeitung durch das ursprüngliche Computerprogramm wird durch lokale Prozessoren ausgeführt und die Verarbeitung durch das modifizierte Computerprogramm wird durch cloudbasierte Prozessoren ausgeführt.
  • In einem Beispiel wird die Modifikation des Computerprogramms 300, um ein verteiltes Verarbeitungsschema einzuführen, wie folgt durchgeführt. Die Abstammung, Architektur und Operation des Computerprogramms 300 werden in einem automatisierten Analyseprozess charakterisiert. Ein Benutzer stellt eine Eingabe bereit, die einen oder mehrere Prozesse identifiziert, die gemäß einem verteilten Verarbeitungsschema zu implementieren sind, und eine Eingabe, die Charakteristiken der Partitionierung identifiziert, z. B. eine Anzahl von parallelen Strömen und einen Ort (z. B. Pfad) für jeden der Prozessoren, der einen Teil des verteilten Verarbeitungsschemas ausführen soll. Eine Charakterisierung der Eingabe wird mit der Charakterisierung der Abstammung, Architektur und Operation des Computerprogramms 300 verknüpft und das modifizierte Computerprogramm 304 wird erzeugt. Zum Beispiel wird der Satz von Komponenten des Computerprogramms identifiziert, die zusammen dem einen oder den mehreren in der Benutzereingabe identifizierten Prozessen entsprechen, und Partitions- und Erfassungskomponenten werden stromaufwärts bzw. stromabwärts des identifizierten Satzes von Komponenten eingefügt.
  • 4 veranschaulicht Beispiele eines Computerprogramms 400 und eines modifizierten Computerprogramms 404, das modifiziert wurde, um die Datenquelle zu ändern. Das Computerprogramm 400 empfängt Datensätze von einer ersten Datenquelle (in diesem Beispiel einer Datenbank), die einer Datenquellenkomponente 402 entspricht, die mit einer Verarbeitungskomponente 406 des Computerprogramms 400 durch eine erste Verbindung 408 verbunden ist. Die Aktualisierung ändert die Quelle der Datensätze, sodass das modifizierte Computerprogramm 404 Datensätze von einer zweiten Datenquelle empfängt, die durch eine Datenquellenkomponente 410 repräsentiert wird, die mit der Verarbeitungskomponente 406 durch eine zweite Verbindung 412 verbunden ist. In dem Beispiel von 4 ist die erste Datenquelle, die der Datenquellenkomponente 402 entspricht, eine Datenbank, und die zweite Datenquelle ist ein Dateisystem, wobei die Datenquellenkomponente 410 eine Komponente ist, die konfiguriert ist, um aus einem Hadoop Distributed File System (HDFS) zu lesen. Andere Typen von Datenquellen können für das Computerprogramm 400, das zweite Computerprogramm 404 oder beide verwendet werden. In einigen Beispielen können beide Datenquellen Datenquellen desselben Typs sein, und ein Attribut, wie etwa ein Name oder Ort (z. B. Pfad) der Datenquelle, kann geändert werden.
  • In einigen Beispielen kann die Datenquellenkomponente 410 mit der Datenquellenkomponente 402 identisch sein, mit Ausnahme einer Änderung einer Eigenschaft der Datenquelle, z. B. eines Namens oder Pfads (z. B. Ort) der Datenquelle, z. B. einer Änderung von einer lokalen Datenquelle zu einer cloudbasierten Datenquelle. Zum Beispiel kann ein Parameter der Datenquellenkomponente 402 geändert werden, was zur Datenquellenkomponente 410 führt. In einigen Beispielen beinhaltet die Modifikation des Computerprogramms das Löschen der Datenquellenkomponente 402 und der ersten Verbindung 408 und das Hinzufügen der Datenquellenkomponente 410 und der zweiten Verbindung 412, um die neu hinzugefügte Datenquellenkomponente 410 mit der Verarbeitungskomponente 406 zu verbinden, wobei die neu hinzugefügte Datenquellenkomponente 410 die Datenquelle für das modifizierte Computerprogramm 404 repräsentiert.
  • In einem Beispiel wird die Modifikation des Computerprogramms 400, um die Datenquelle zu ändern, wie folgt durchgeführt. Die Abstammung, Architektur und Operation des Computerprogramms 400 werden in einem automatisierten Analyseprozess charakterisiert. Ein Benutzer stellt eine Eingabe bereit, die eine Änderung der Datenquelle angibt, z. B. eine Identifizierung eines Datenquellenpfads im Computerprogramm, der zu einem anderen Datenquellenpfad im modifizierten Computerprogramm geändert werden soll. Eine Charakterisierung der Eingabe wird mit der Charakterisierung der Abstammung, Architektur und Operation des Computerprogramms 400 verknüpft und das modifizierte Computerprogramm 404 wird erzeugt. Zum Beispiel wird ein Such- und Ersetzungsprozess durchgeführt, um Datenquellen zu identifizieren, die mit dem Datenquellenpfad übereinstimmen, der in der Benutzereingabe spezifiziert ist, und um entsprechende Datenquellenkomponenten durch neue Datenquellenkomponenten zu ersetzen, die Datenquellen mit dem anderen Datenquellenpfad repräsentieren.
  • 5 veranschaulicht Beispiele eines Computerprogramms 500 und eines modifizierten Computerprogramms 504, das modifiziert wurde, um das Datenziel zu ändern. Das Computerprogramm 500 gibt verarbeitete Datensätze an ein erstes Datenziel (in diesem Beispiel eine Datenbank) aus, das durch eine Datenzielkomponente 502 repräsentiert wird, die mit einer Verarbeitungskomponente 506 des Computerprogramms 500 durch eine erste Verbindung 508 verbunden ist. Die Aktualisierung ändert das Ziel für die verarbeiteten Datensätze, sodass das modifizierte Computerprogramm 504 verarbeitete Datensätze an ein zweites Datenziel (in diesem Beispiel ein Dateisystem) ausgibt, das durch eine Datenzielkomponente 510 repräsentiert wird, die mit der Verarbeitungskomponente 506 durch eine zweite Verbindung 512 verbunden ist. Obwohl die Verarbeitungskomponente 506 als dieselbe Komponente zwischen dem Computerprogramm 500 und dem modifizierten Computerprogramm 504 gezeigt ist, kann sich die Verarbeitungskomponente in einigen Beispielen auch zwischen den beiden Computerprogrammen unterscheiden.
  • In einigen Beispielen kann die Datenzielkomponente 510 mit der Datenzielkomponente 502 identisch sein, mit Ausnahme einer Änderung einer Eigenschaft des Datenziels, z. B. eines Namens oder Pfads (z. B. Ort) des Datenziels, z. B. einer Änderung von einem lokalen Datenziel zu einem cloudbasierten Datenziel. In einigen Beispielen beinhaltet die Modifikation des Computerprogramms das Löschen der Datenzielkomponente 502 und der ersten Verbindung 508 und das Hinzufügen der Datenzielkomponente 510 und der zweiten Verbindung 512, um die neu hinzugefügte Datenzielkomponente 510 mit der Verarbeitungskomponente 506 zu verbinden, wobei die neu hinzugefügte Datenzielkomponente 510 das Datenziel für das modifizierte Computerprogramm 504 repräsentiert.
  • In einigen Beispielen können die Datenziele unterschiedliche Typen von Dateiübertragungsprotokollen sein, z. B. kann die Datenzielkomponente 502 einen ersten Typ von Dateiübertragungsprotokoll implementieren und die Datenzielkomponente 510 implementiert einen zweiten Typ von Dateiübertragungsprotokoll, z. B. ein sicheres FTP-Protokoll.
  • In einem Beispiel wird die Modifikation des Computerprogramms 500, um das Datenziel zu ändern, wie folgt durchgeführt. Die Abstammung, Architektur und Operation des Computerprogramms 500 werden in einem automatisierten Analyseprozess charakterisiert. Ein Benutzer stellt eine Eingabe bereit, die eine Änderung des Datenziels angibt, z. B. eine Identifizierung eines Datenzielpfads im Computerprogramm, der zu einem anderen Datenzielpfad im modifizierten Computerprogramm geändert werden soll. Eine Charakterisierung der Eingabe wird mit der Charakterisierung der Abstammung, Architektur und Operation des Computerprogramms 500 verknüpft und das modifizierte Computerprogramm 504 wird erzeugt. Zum Beispiel wird ein Such- und Ersetzungsprozess durchgeführt, um Datenziele zu identifizieren, die mit dem Datenzielpfad übereinstimmen, der in der Benutzereingabe spezifiziert ist, und um entsprechende Datenzielkomponenten durch neue Datenzielkomponenten zu ersetzen, die Datenziele mit dem anderen Datenzielpfad repräsentieren.
  • Ein Computerprogramm kann modifiziert werden, um das Datenziel für Ausgangsdatensätze zu ändern, um Beschränkungen bezüglich der Speicherung von Daten in einem cloudbasierten Datenspeicher, wie etwa einem cloudbasierten Dateisystem oder einer cloudbasierten Datenbank, einzuhalten. Zum Beispiel können Datenschutzregeln vorschreiben, dass bestimmte Daten mit einer bestimmten Eigenschaft, wie etwa Datensätze, die persönlich identifizierbare Informationen (PII) beinhalten, nicht in einem cloudbasierten Datenspeicher gespeichert werden, und dass andere Daten in einem cloudbasierten Datenspeicher gespeichert werden.
  • Die Identifizierung eines Datenziels im Computerprogramm 500, das Datensätze einschließlich PII empfangen wird, kann durch eine Datenabstammungsanalyse, in einigen Fällen in Kombination mit einer semantischen Entdeckungsanalyse, durchgeführt werden.
  • Datenabstammung ist Informationen, die den Lebenszyklus von Datensätzen beschreiben, die durch ein Computerprogramm, wie etwa einen Datenflussgraphen, verarbeitet werden. Datenabstammungsinformationen für einen gegebenen Datensatz beinhalten eine Kennung eines oder mehrerer Datensätze, von denen der gegebene Datensatz abhängt, einen oder mehrere stromabwärtige Datensätze, die von dem gegebenen Datensatz abhängen, eine oder mehrere Komponenten eines Computerprogramms, die Datensätze verarbeiten, um den gegebenen Datensatz zu erzeugen, und eine oder mehrere Komponenten eines Computerprogramms, die den gegebenen Datensatz oder Datensätze, die von dem gegebenen Datensatz abhängen, verarbeiten. Mit einem stromabwärtigen Datensatz, der von einem stromaufwärtigen Datensatz abhängt, ist gemeint, dass die Verarbeitung des stromaufwärtigen Datensatzes durch das Computerprogramm direkt oder indirekt zur Erzeugung des stromabwärtigen Datensatzes führt. Der erzeugte stromabwärtige Datensatz kann ein Datensatz sein, der vom Computerprogramm ausgegeben wird (manchmal als ein Ausgangsdatensatz bezeichnet), oder kann ein Datensatz sein, der durch das Computerprogramm weiter verarbeitet werden soll (manchmal als ein Zwischendatensatz bezeichnet). Der stromaufwärtige Datensatz kann ein Datensatz sein, der in das Computerprogramm eingegeben wird (manchmal als ein Eingangsdatensatz oder ein Referenzdatensatz bezeichnet), oder ein Datensatz, der bereits einer Verarbeitung durch das Computerprogramm unterzogen wurde (manchmal als ein Zwischendatensatz bezeichnet). Eine Datenabstammungsanalyse ist eine Analyse eines Computerprogramms, um Datensätze zu identifizieren, die von einem gegebenen Datensatz abhängen oder von denen ein gegebener Datensatz abhängt, und um Komponenten des Computerprogramms zu identifizieren, die Datensätze verarbeiten, um den gegebenen Datensatz zu erzeugen, die den gegebenen Datensatz verarbeiten oder die Datensätze verarbeiten, die von dem gegebenen Datensatz abhängen.
  • Für das spezifische Beispiel des Sicherstellens, dass Datensätze, die PII enthalten, nicht in einem cloudbasierten System gespeichert oder von diesem verarbeitet werden, kann eine Datenabstammungsanalyse durchgeführt werden, um Komponenten zu identifizieren, die Datensätze, die PII enthalten, verarbeiten, oder Datenziele, die Datensätze empfangen, die PII enthalten. Diese Datenziele können als lokale Datenziele verbleiben und diese Komponenten können unter Verwendung lokaler Prozessoren implementiert werden.
  • In einigen Beispielen werden Datensätze, die PII enthalten, automatisch in einem semantischen Entdeckungsprozess identifiziert. Eine weitere Beschreibung der semantischen Entdeckung findet sich in der US-Patentanmeldung mit der Veröffentlichungsnummer 2020/0380212 , deren Inhalt hier durch Bezugnahme in seiner Gesamtheit aufgenommen wird.
  • 6 veranschaulicht Beispiele eines Computerprogramms 600 und eines modifizierten Computerprogramms 604, das modifiziert wurde, um verarbeitete Datensätze an mehrere Datenziele auszugeben. Das Computerprogramm 600 gibt verarbeitete Datensätze an ein erstes Datenziel (in diesem Beispiel eine Datenbank) aus, das durch eine Datenzielkomponente 602 repräsentiert wird, die mit einer Verarbeitungskomponente 606 des Computerprogramms 600 durch eine erste Verbindung 608 verbunden ist. Die Aktualisierung entfernt das erste Datenziel und führt eine Replikationskomponente 614 ein, um den Datenfluss zu replizieren, und mehrere zweite Datenziele (in diesem Beispiel mehrere Datenbanken), die jeweils durch eine Datenzielkomponente 610a -610c repräsentiert werden, die mit der Verarbeitungskomponente 606 durch eine jeweilige zweite Verbindung 612a -612c verbunden ist. Mindestens eines der zweiten Datenziele kann sich an einem Ort befinden, der sich von dem Ort der anderen zweiten Datenziele unterscheidet. In einigen Beispielen ist eines der zweiten Datenziele das gleiche wie das erste Datenziel, und zusätzliche Datenziele wurden hinzugefügt. In einigen Beispielen unterscheiden sich alle der zweiten Datenziele vom ersten Datenziel. In einigen Beispielen kann die entgegengesetzte Modifikation vorgenommen werden, so dass ein Computerprogramm, das verarbeitete Datensätze an mehrere Datenziele ausgibt, modifiziert werden kann, um verarbeitete Datensätze an nur ein einzelnes Datenziel auszugeben. Andere Typen von Datenzielen, wie beispielsweise Dateisysteme, können für das Computerprogramm 600, das modifizierte Computerprogramm 604 oder beide verwendet werden.
  • In einigen Beispielen beinhaltet die Modifikation des Computerprogramms das Löschen der Datenzielkomponente 602 und der ersten Verbindung 608 und das Hinzufügen der Datenzielkomponenten 610a -610c und der zweiten Verbindungen 612a -612c, um die neu hinzugefügten Datenzielkomponenten 610a -610c mit der Verarbeitungskomponente zu verbinden. Zum Beispiel werden eine der Datenzielkomponenten (z. B. Komponente 610a) und ihre entsprechende Verbindung (z. B. Verbindung 612a) hinzugefügt. Die Komponente 610a und Verbindung 612a werden dann repliziert, um die anderen Datenzielkomponenten 610b, 610c zu erzeugen und zu verbinden. Parameter der Datenzielkomponenten 610b, 610c werden dann geändert, um die jeweiligen Datenziele zu referenzieren.
  • 7 veranschaulicht Beispiele eines Computerprogramms 700 und eines modifizierten Computerprogramms 704. Eine Komponente 706 des Computerprogramms 700 implementiert einen Prozess gemäß einem ersten Parametersatz 710. Die Aktualisierung modifiziert die Komponente 706, sodass der Prozess gemäß einem zweiten (anderen) Parametersatz 712 implementiert wird. Die Modifikation beinhaltet das Analysieren des Computerprogramms 700, um eine Datenverarbeitungskomponente zu identifizieren, die einen bestimmten Parameter, Parameterausdruck oder Parameterwert beinhaltet. In einigen Beispielen wird eine Spezifikation für die identifizierte Komponente modifiziert, z. B. durch Ändern eines Werts oder Ausdrucks für einen oder mehrere Parameter im Parametersatz 710 der identifizierten Komponente, um eine modifizierte Komponente 708 mit dem modifizierten Parametersatz 712 zu erzeugen. In einigen Beispielen wird die identifizierte Komponente 706 gelöscht und durch eine neue Komponente 708 mit einem anderen Parametersatz ersetzt.
  • 8 veranschaulicht Beispiele eines Computerprogramms 800 und eines modifizierten Computerprogramms 804. Das Computerprogramm 800 ist zur Ausführung auf einem lokalen Computersystem konfiguriert und das modifizierte Computerprogramm 804 ist so konfiguriert, dass die Ausführung mindestens eines Teils des modifizierten Computerprogramms 804 auf einem cloudbasierten System stattfindet. Um Beschränkungen bezüglich PII in einem cloudbasierten System einzuhalten, z. B. ein Verbot der Verarbeitung oder Speicherung von PII in einem cloudbasierten System, wird das Computerprogramm so modifiziert, dass irgendwelche PII in den Datensätzen, die durch das Computerprogramm 800 empfangen und verarbeitet werden, durch das modifizierte Computerprogramm 804 anonymisiert werden, bevor sie das cloudbasierte System erreichen.
  • Die Modifikation des Computerprogramms 800 beinhaltet das Analysieren des Computerprogramms, um eine Datenverarbeitungskomponente (z. B. Komponente 806) zu identifizieren, die konfiguriert ist, um von einer Datenquelle, die durch eine Datenquellenkomponente 810 repräsentiert wird, Datensätze zu empfangen und zu verarbeiten, die ein oder mehrere Felder aufweisen, die PII enthalten. Die Analyse kann eine Datenabstammungsanalyse sein, die z. B. in Kombination mit einer semantischen Entdeckungsanalyse durchgeführt wird. Die Komponente 806 ist so modifiziert, dass eine modifizierte Komponente 808 des modifizierten Computerprogramms 804 konfiguriert ist, um auf einem cloudbasierten Rechensystem ausgeführt zu werden, z. B. wie vorstehend beschrieben. Zusätzlich wird eine neue Komponente 812 zwischen der Datenquelle 810 und der Komponente 806 hinzugefügt, sodass die neue Komponente Datensätze von der Datenquelle 810 empfängt und Datensätze an die Komponente 808 ausgibt. Die Komponente 812 ist konfiguriert, um auf einem lokalen (z. B. nicht cloudbasierten) Computersystem ausgeführt zu werden und implementiert einen Tokenisierungsdienst, der konfiguriert ist, um die PII, die in den Feldern von Datensätzen enthalten sind, die von der Datenquelle 810 empfangen werden, zu anonymisieren, z. B. durch Ersetzen eines Tokens für die PII. Das Token stellt die PII durch ein Tokenisierungssystem zurück, stellt aber sicher, dass die PII selbst nicht dem cloudbasierten System bereitgestellt wird, wo andere Verarbeitungsoperationen des modifizierten Computerprogramms 804 stattfinden.
  • In einigen Beispielen weist das Token ein anderes Format als die PII auf. Wenn zum Beispiel die PII eine Sozialversicherungsnummer ist, ist die PII eine neunstellige Nummer, aber das Token kann ein alphanumerischer Wert mit einer anderen Anzahl von Stellen sein. Wenn sich das Format des Tokens vom Format der PII unterscheidet, wird die Komponente 808 modifiziert, um eine Definition eines Datensatzformats für Datensätze zu ändern, die von der Komponente 808 verarbeitet werden sollen, um die Komponente 808 mit dem Format des Tokens kompatibel zu machen. In einigen Fällen werden auch andere stromabwärtige Komponenten entsprechend modifiziert, um Datensätze des anderen Datensatzformats zu handhaben.
  • In einigen Beispielen, wenn die Datensätze, die vom Computerprogramm 800 ausgegeben werden, PII beinhalten, beinhalten die Datensätze, die vom modifizierten Computerprogramm 804 ausgegeben werden, die jeweiligen Token für die PII. In einigen Beispielen wird eine Detokenisierungskomponente zum modifizierten Computerprogramm 804 hinzugefügt, z. B. direkt stromaufwärts des Datenziels, um die PII in einem Prozess, der auf einem lokalen Computersystem ausgeführt wird, wieder in die Datensätze einzuführen. Die Detokenisierungskomponente wird in einem Prozess hinzugefügt, der der Art ähnlich ist, in der die Tokenisierungskomponente 812 hinzugefügt wird.
  • In einigen Beispielen werden die Komponente(n), die aktualisiert werden sollen, automatisch in einem Such- und Ersetzungsprozess identifiziert und ersetzt. Der Such- und Ersetzungsprozess implementiert, wenn er auf ein bestimmtes Computerprogramm angewendet wird, eine Findfunktion, die die Komponenten des Computerprogramms findet und ihre Attribute erhält; eine Filterfunktion, die Komponenten filtert, die Attribute aufweisen, die mit einem Zielattribut übereinstimmen (z. B. ein Attribut, das als Auslöserersatz in der Charakterisierung der Aktualisierung durch den Benutzer identifiziert wird); eine Neuformatfunktion, die beschreibt, wie jeder Ersatz durchgeführt wird; und eine Ersatzfunktion, die die Ersetzungen durchführt.
  • 9 zeigt ein Beispiel eines Datenflussgraphen 900, der einen Such- und Ersetzungsprozess implementiert. Im Beispiel von 9 ersetzt der Such- und Ersetzungsprozess Eingabedateien durch Komponenten, die konfigurierbar sind, um aus einem Hadoop Distributed File System (HDFS) zu lesen. Eine erste Verarbeitungskomponente 902 des Datenflussgraphen 900 empfängt einen Datensatz von einer Eingabekomponente 904. Der Datensatz stellt Anweisungen für den Ersetzungsprozess bereit, einschließlich einer Identifizierung des Computerprogramms (z. B. des Datenflussgraphen), in dem der Ersatz durchgeführt werden soll, eines Attributs der zu ersetzenden Komponenten und einer Beschreibung der Ersatzkomponenten.
  • Die erste Verarbeitungskomponente 902 ist eine Findkomponente, die alle Komponenten des Computerprogramms findet und ihre Attribute erhält. Die Findkomponente 902 leitet einen Satz von Datensätzen an eine Filterkomponente 906 weiter, wobei jeder Satz einer Komponente des Computerprogramms entspricht, in dem der Ersatz durchgeführt werden soll. Jeder Satz beinhaltet Kennungen der jeweiligen Komponente (z. B. eine Identifizierung des Computerprogramms, eine Kennung, wie etwa einen Pfad, der Komponente) und eine Auflistung der Attribute der jeweiligen Komponente des Computerprogramms.
  • Die Filterkomponente 906 filtert die von der Findkomponente 902 empfangenen Datensätze, um diejenigen Datensätze zu behalten, die Komponenten entsprechen, die Attribute aufweisen, die mit einem Zielattribut übereinstimmen (z. B. ein Attribut, das als Auslöserersatz in der Charakterisierung der Aktualisierung durch den Benutzer identifiziert wird). In diesem Beispiel filtert die Filterkomponente 906 die Datensätze, um nur Datensätze zu behalten, die Komponenten entsprechen, die Eingangsdateien repräsentieren. Die behaltenen Datensätze werden an eine Neuformatkomponente 908 weitergeleitet.
  • Die Neuformatkomponente 908 erzeugt Datensätze, die die Ersatzkomponente beschreiben, die jede der Komponenten ersetzen soll, die den von der Filterkomponente 906 empfangenen Datensätzen entsprechen. Diese Datensätze können einige oder alle der folgenden Daten beinhalten:
    • - eine Identifizierung des Computerprogramms (z. B. des Datenflussgraphen), in dem der Ersatz durchgeführt werden soll;
    • - eine Identifizierung (z. B. Pfad) der Komponente des Computerprogramms, die ersetzt werden soll;
    • - eine Identifizierung (z. B. ein parametrisierter Pfad) zur neuen Ersatzkomponente;
    • - einen Namen der neuen Ersatzkomponente
    • - eine Auflistung (z. B. ein Vektor) der Namen von Ports der Ersatzkomponente;
    • - eine Zuordnung der Namen von Ports der Ersatzkomponente zu den Namen von Ports der Komponente, die ersetzt werden soll;
    • - eine Auflistung (z. B. ein Vektor) der Namen der Parameter der Ersatzkomponente;
    • - eine Zuordnung der Namen von Parametern der Ersatzkomponente zu den Namen von Parametern der Komponente, die ersetzt werden soll;
    • - eine Auflistung (z. B. ein Vektor) von Instanzwerten, die ersetzt werden sollen.
  • Die Datensätze, die von der Neuformatkomponente 908 ausgegeben werden, charakterisieren den Ersatz. Diese Datensätze werden einer Ersatzkomponente 910 bereitgestellt, die den Ersatz jeder durch die Datensätze angegebenen Komponente implementiert. Ein Protokoll der Ersatzoperation wird an eine Protokolldatei 912 ausgegeben.
  • 10A und 10B zeigen Beispiele eines ursprünglichen Datenflussgraphen 150 und eines modifizierten Datenflussgraphen 152, der unter Verwendung eines automatisierten Such- und Ersetzungsprozesses aktualisiert wurde, um Eingabedateien, die als eine Komponente 154 repräsentiert sind, durch eine READ-HDFS-Komponente 156 zu ersetzen.
  • In einigen Beispielen wird das modifizierte Computerprogramm vor der Freigabe getestet, um die Operation des modifizierten Computerprogramms zu validieren. Zum Beispiel kann erwartet werden, dass das modifizierte Computerprogramm Datensätze ausgibt, die mit Datensätzen identisch sind, die vom ursprünglichen Computerprogramm für den gleichen Satz von Eingangsdatensätzen ausgegeben werden. Das Testen kann das Bereitstellen des gleichen Satzes von Eingangsdatensätzen sowohl für das ursprüngliche Computerprogramm als auch das modifizierte Computerprogramm und das Erhalten jeweiliger Sätze von verarbeiteten Datensätzen von beiden Computerprogrammen beinhalten. Die beiden Sätze von verarbeiteten Datensätzen werden verglichen. Wenn die beiden Sätze von verarbeiteten Datensätzen übereinstimmen, z. B. identisch sind (z. B. innerhalb eines Schwellenwerts identisch sind), wird das modifizierte Computerprogramm validiert. Wenn zwei Sätze von Prozessdatensätzen nicht übereinstimmen, wird eine Fehlermeldung ausgegeben, vorzugsweise mit einer Anleitung, die angibt, wie der Fehler aufzulösen ist.
  • In einigen Beispielen wird nur ein Teil des modifizierten Computerprogramms getestet, z. B. nur der Teil des modifizierten Computerprogramms, der relativ zum ursprünglichen Computerprogramm geändert wurde. Ein Teil eines Computerprogramms kann getestet werden, indem Einfügungen, wie Testquellen und Sonden, verwendet werden, die Objekte sind, die Flüssen in einem Datenflussgraphen zugeordnet sind. Eine Testquelle ersetzt Daten, die einen Fluss durchlaufen (z. B. stromaufwärtige Daten), durch neue Daten, so dass stromaufwärtige Berechnungen nicht für jede Ausführung des Computerprogramms erneut ausgeführt werden müssen. Zum Beispiel kann eine Testquelle eine Datenquelle ersetzen, so dass Testdatensätze dem Graphen von der Testquelle anstatt von der Datenquelle bereitgestellt werden. Eine Sonde überwacht Datensätze, die einen Fluss durchlaufen, während der Graph ausgeführt wird, und kann bewirken, dass die Datensätze zur späteren Untersuchung oder Wiederverwendung gespeichert werden. Zum Beispiel kann eine Sonde Datensätze empfangen, die ansonsten in einem Datenziel, wie etwa einer Datenbank, gespeichert worden wären. Einfügungen können auch an anderen Orten in einem Datenflussgraphen als an Datenquellen und Zielen eingeführt werden, was es einem Graphenentwickler ermöglicht, auf Datensätze zuzugreifen, während sie den Graphen durchlaufen. Durch Verwenden von Einfügungen kann ein Satz von Eingangsdatensätzen dem ursprünglichen Computerprogramm und dem modifizierten Computerprogramm unmittelbar stromaufwärts des Teils des Computerprogramms, der modifiziert wurde, bereitgestellt werden, und verarbeitete Datensätze können unmittelbar stromabwärts des modifizierten Teils abgerufen werden. Die Verwendung von Einfügungen kann ein effizienteres Testen ermöglichen, indem weniger als das gesamte Computerprogramm während des Tests ausgeführt wird. Eine weitere Beschreibung von Einfügungen findet sich in dem US-Patent mit der Veröffentlichungsnummer 10,055,333 mit dem Titel „Debugging a Graph“ und dem US-Patent mit der Veröffentlichungsnummer 9,880,818 mit dem Titel „Application Testing“, deren Inhalt hier durch Bezugnahme in seiner Gesamtheit aufgenommen wird.
  • Unter Bezugnahme auf 11 wird in einem beispielhaften Prozess zum Aktualisieren eines Computerprogramms ein Computerprogramm empfangen (150). Das Computerprogramm ist konfiguriert, um, wenn es ausgeführt wird, Datensätze von einer Datenquelle zu empfangen, Daten, die in Feldern der Datensätze enthalten sind, zu verarbeiten und verarbeitete Datensätze an ein Datenziel auszugeben. Das Computerprogramm kann ein Datenflussgraph sein, der Datenverarbeitungskomponenten beinhaltet, die konfiguriert sind, um Werte in Feldern von Datensätzen zu verarbeiten, wobei die Datenverarbeitungskomponenten durch Verbindungen verbunden sind, die Flüsse von Datensätzen repräsentieren.
  • Das Computerprogramm wird durch einen oder mehrere Prozessoren analysiert, um eine Charakterisierung einer Abstammung, einer Architektur und einer Operation des Computerprogramms zu erhalten (152). Die Analyse kann eine statische Analyse des Computerprogramms, eine Laufzeitanalyse des Computerprogramms, eine Zeitplananalyse des Computerprogramms, eine Datenabstammungsanalyse des Computerprogramms, eine semantische Entdeckungsanalyse des Computerprogramms oder andere Typen von Analysen beinhalten. Die Abstammung eines Computerprogramms beinhaltet Beziehungen zwischen Elementen des Computerprogramms und optional Beziehungen zwischen dem Computerprogramm und anderen Computerprogrammen. Die Architektur eines Computerprogramms beinhaltet eine Charakteristik der Datenquelle, eine Charakteristik des Datenziels und eine Charakteristik eines oder mehrerer Prozessoren, die konfiguriert sind, um die in Datensätzen enthaltenen Daten zu verarbeiten. Die Operation eines Computerprogramms beinhaltet Prozesse des Computerprogramms, die ausgeführt werden, um die Daten aus den Datensätzen zu verarbeiten.
  • Eine Charakterisierung einer Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, wird empfangen (154), z. B. durch Benutzereingabe in eine Benutzerschnittstelle. Die Aktualisierung ist so, dass, wenn das Computerprogramm gemäß der Aktualisierung modifiziert wird, mindestens ein Teil des modifizierten Computerprogramms konfiguriert ist, um auf einem zweiten Computersystem, wie etwa einem cloudbasierten System, gehostet zu werden und von diesem ausgeführt zu werden.
  • Das Computerprogramm wird modifiziert, um die Aktualisierung zu implementieren, wodurch das modifizierte Computerprogramm erzeugt wird (156). Die Modifikation beinhaltet das Modifizieren einer oder mehrerer der Abstammung des Computerprogramms, der Architektur des Computerprogramms oder der Operation des Computerprogramms. Die Modifikation kann das Zusammenführen der Charakterisierung der Aktualisierung mit der Charakterisierung der Abstammung, der Architektur und der Operation des Computerprogramms beinhalten.
  • Wenn das Computerprogramm ein Datenflussgraph ist, kann das Modifizieren des Computerprogramms das Modifizieren eines Werts oder eines Ausdrucks für einen Parameter einer Datenverarbeitungskomponente oder einer Verbindung des Computerprogramms; das Hinzufügen einer neuen Datenverarbeitungskomponente oder Verbindung, das Löschen einer Datenverarbeitungskomponente oder Verbindung oder andere geeignete Modifikationen beinhalten.
  • Mindestens ein Teil des modifizierten Computerprogramms wird getestet (158). Das Testen beinhaltet das Bereitstellen von Eingangstestdatensätzen für den mindestens einen Teil des modifizierten Computerprogramms; und Erhalten von ersten verarbeiteten Datensätzen aus dem mindestens einen Teil des modifizierten Computerprogramms. Das Testen beinhaltet auch das Testen mindestens eines Teils des Computerprogramms, der dem getesteten Teil des modifizierten Computerprogramms entspricht, einschließlich des Bereitstellens der Eingangstestdatensätze für den mindestens einen Teil des Computerprogramms und des Erhaltens von zweiten verarbeiteten Datensätzen aus dem mindestens einen Teil des Computerprogramms. Die ersten und zweiten verarbeiteten Datensätze werden verglichen. Das Testen kann das Einspeisen des modifizierten Computerprogramms mit Testdaten beinhalten, die jede oder im Wesentlichen alle Funktionen des Computerprogramms auslösen, um die verarbeiteten Datensätze als Ausgabe zu erzeugen.
  • Unter Bezugnahme auf 12 beinhaltet ein beispielhafter Prozess zum Aktualisieren eines Datenflussgraphen das Zugreifen auf einen Datenflussgraphen (250). Eine Spezifikation des Datenflussgraphen definiert Knoten, wobei mindestens einer der Knoten eine Datenverarbeitungskomponente repräsentiert, die eine Operation definiert, die durchgeführt werden soll, um Daten in einem oder mehreren Feldern eines Datensatzes mit einem Datensatzformat zu verarbeiten, wobei die Datensätze der Datenverarbeitungskomponente bereitgestellt werden, und eine oder mehrere Verbindungen, die die Knoten verbinden und jeweils einen Fluss von Datensätzen repräsentieren.
  • Ein erster Satz von Datensätzen wird erzeugt, wobei der erste Satz von Datensätzen den Datenflussgraphen repräsentiert (252). Dies beinhaltet das Erzeugen eines Datensatzes, der jeder der Datenverarbeitungskomponenten des Datenflussgraphen entspricht, wobei jeder Datensatz enthält: eine Kennung der Datenverarbeitungskomponente und Attributwerte für Attribute der Datenverarbeitungskomponente.
  • Eine Charakterisierung einer Aktualisierung des Datenflussgraphen wird empfangen (254), wobei die Charakterisierung der Aktualisierung einen Zielwert für ein bestimmtes Attribut angibt. Der erste Satz von Datensätzen wird basierend auf dem Zielwert, der durch die Charakterisierung der Aktualisierung angegeben wird, gefiltert, um einen zweiten Satz von Datensätzen zu erhalten (256). Das beinhaltet das Entfernen, durch das Filtern, von Datensätzen, die keinen Attributwert für das bestimmte Attribut enthalten, der mit dem Zielwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird.
  • Für jeden Datensatz im zweiten Satz von Datensätzen wird die entsprechende Komponente durch eine neue Komponente ersetzt, die durch die Charakterisierung der Aktualisierung angegeben wird (258).
  • 13 zeigt ein Beispiel eines Datenverarbeitungssystems 850 zum Entwickeln und Ausführen von Datenflussgraphen, in dem die hier beschriebenen Techniken verwendet werden können. Das System 850 beinhaltet eine Datenquelle 852, die eine oder mehrere Datenquellen wie etwa Speichervorrichtungen oder Verbindungen zu Online-Datenströmen beinhalten kann, von denen jeder Daten in einem beliebigen einer Vielzahl von Formaten speichern oder bereitstellen kann (z. B. Datenbanktabellen, Tabellenkalkulationsdateien, Flachtextdateien oder ein natives Format, das von einem Großrechner verwendet wird). Die Daten können logistische Daten, analytische Daten oder industrielle Maschinendaten sein. Eine Umgebung oder Laufzeitumgebung 854 beinhaltet ein Vorverarbeitungsmodul 856 und ein Ausführungsmodul 862. Die Ausführungsumgebung 854 kann zum Beispiel auf einem oder mehreren Universalrechnern unter der Steuerung eines geeigneten Betriebssystems, wie etwa einer Version des UNIX-Betriebssystems, gehostet werden. Zum Beispiel kann die Ausführungsumgebung 854 eine parallele Rechenumgebung mit mehreren Knoten beinhalten, die eine Konfiguration von Computersystemen beinhaltet, die mehrere Verarbeitungseinheiten (wie etwa zentrale Verarbeitungseinheiten, CPUs) oder Prozessorkerne verwenden, entweder lokal (z. B. Multiprozessorsysteme wie etwa symmetrische Multiprozessor(SMP)-Computer) oder lokal verteilt (z. B. mehrere Prozessoren, die als Cluster oder massiv parallele Verarbeitungs(MPP)-Systeme gekoppelt sind, oder entfernt oder entfernt verteilt (z. B. mehrere Prozessoren, die über ein lokales Netzwerk (LAN) und/oder ein Weitverkehrsnetzwerk (WAN) gekoppelt sind) oder eine beliebige Kombination davon.
  • Speichervorrichtungen, die die Datenquelle 852 bereitstellen, können lokal für die Ausführungsumgebung 854 sein, zum Beispiel auf einem Speichermedium (z. B. Festplatte 858) gespeichert sein, das mit einem Computer verbunden ist, der die Ausführungsumgebung 854 hostet, oder können entfernt von der Ausführungsumgebung 854 sein, zum Beispiel auf einem entfernten System (z. B. Großrechner 860) gehostet sein, das mit einem Computer, der die Ausführungsumgebung 854 hostet, über eine entfernte Verbindung (z. B. bereitgestellt durch eine Cloud-Computing-Infrastruktur) in Kommunikation steht.
  • Das Vorverarbeitungsmodul 856 liest Daten aus der Datenquelle 852 und bereitet Datenverarbeitungsanwendungen (z. B. einen ausführbaren Datenflussgraphen) zur Ausführung vor. Zum Beispiel kann das Vorverarbeitungsmodul 856 die Datenverarbeitungsanwendung kompilieren, eine kompilierte Datenverarbeitungsanwendung in und/oder aus einem Datenspeichersystem 866, das für die Ausführungsumgebung 854 zugänglich ist, speichern und/oder laden und andere Aufgaben durchführen, um eine Datenverarbeitungsanwendung zur Ausführung vorzubereiten.
  • Das Ausführungsmodul 862 führt die durch das Vorverarbeitungsmodul 856 vorbereitete Datenverarbeitungsanwendung aus, um einen Satz von Daten zu verarbeiten und Ausgabedaten 864 zu erzeugen, die aus der Verarbeitung resultieren. Die Ausgabedaten 864 können in der Datenquelle 852 oder in einem Datenspeichersystem 866, das für die Ausführungsumgebung 854 zugänglich ist, zurückgespeichert oder anderweitig verwendet werden. Das Datenspeichersystem 866 ist auch für eine optionale Entwicklungsumgebung 868 zugänglich, in der ein Entwickler 870 die Datenverarbeitungsanwendungen, die durch das Ausführungsmodul 862 ausgeführt werden sollen, entwerfen und bearbeiten kann. Die Entwicklungsumgebung 868 ist in einigen Implementierungen ein System zum Entwickeln von Anwendungen als Datenflussgraphen, die Eckpunkte (die Datenverarbeitungskomponenten oder Datensätze repräsentieren) beinhalten, die durch gerichtete Verbindungen (die Flüsse von Arbeitselementen, d. h. Daten, repräsentieren) zwischen den Eckpunkten verbunden sind. Zum Beispiel ist eine solche Umgebung in der US-Patentanmeldung mit der Veröffentlichungsnummer 2007/0011668 mit dem Titel „Managing Parameters for Graph-Based Applications“, deren Inhalt hier durch Bezugnahme in seiner Gesamtheit aufgenommen wird, ausführlicher beschrieben. Ein System zum Ausführen solcher graphenbasierter Berechnungen ist in dem US-Patent mit der Veröffentlichungsnummer 5,966,072 mit dem Titel „Executing Computations Expressed as Graphs“, dessen Inhalt hier durch Bezugnahme in seiner Gesamtheit aufgenommen wird, beschrieben. Datenflussgraphen, die gemäß diesem System erstellt werden, stellen Verfahren zum Einholen und Herausholen von Informationen in und aus einzelnen Prozessen, die durch Graphkomponenten repräsentiert werden, zum Bewegen von Informationen zwischen den Prozessen und zum Definieren einer laufenden Reihenfolge für die Prozesse bereit. Dieses System beinhaltet Algorithmen, die Interprozesskommunikationsverfahren aus beliebigen verfügbaren Verfahren auswählen (zum Beispiel können Kommunikationspfade gemäß den Verbindungen des Graphen TCP/IP- oder UNIX-Domänensockel verwenden oder gemeinsam genutzten Speicher verwenden, um Daten zwischen den Prozessen weiterzuleiten).
  • Das Vorverarbeitungsmodul 856 kann Daten von einer Vielzahl von Typen von Systemen empfangen, die die Datenquelle 852 verkörpern können, einschließlich verschiedener Formen von Datenbanksystemen. Die Daten können als Datensätze mit Werten für jeweilige Felder (auch als „Attribute“ oder „Spalten“ bezeichnet) organisiert sein, einschließlich möglicherweise Nullwerten. Beim ersten Lesen von Daten aus einer Datenquelle beginnt das Vorverarbeitungsmodul 856 typischerweise mit einigen anfänglichen Formatinformationen über Datensätze in dieser Datenquelle. Unter einigen Umständen kann die Datensatzstruktur der Datenquelle anfänglich nicht bekannt sein und kann stattdessen nach der Analyse der Datenquelle oder der Daten bestimmt werden. Die anfänglichen Informationen über Datensätze können zum Beispiel die Anzahl von Bits, die einen eindeutigen Wert repräsentieren, die Reihenfolge von Feldern innerhalb eines Datensatzes und den Typ von Wert (z. B. Kette, vorzeichenbehaftete/nicht vorzeichenbehaftete Ganzzahl), der durch die Bits repräsentiert wird, beinhalten.
  • Mit anderen Worten, und allgemein anwendbar auf hierin beschriebene ausführbare Datenflussgraphen, implementiert der ausführbare Datenflussgraph eine graphenbasierte Berechnung, die an Daten durchgeführt wird, die von einem oder mehreren Eingabedatensätzen einer Datenquelle 852 durch die Datenverarbeitungskomponenten zu einem oder mehreren Ausgabedatensätzen fließen, wobei der Datenflussgraph durch Datenstrukturen in dem Datenspeicher 864 spezifiziert ist, wobei der Datenflussgraph die Knoten aufweist, die durch die Datenstrukturen spezifiziert sind und die Datenverarbeitungskomponenten repräsentieren, die durch die eine oder die mehreren Verbindungen verbunden sind, wobei die Verbindungen durch die Datenstrukturen spezifiziert sind und Datenflüsse zwischen den Datenverarbeitungskomponenten repräsentieren. Die Ausführungsumgebung oder Laufzeitumgebung 854 ist mit dem Datenspeicher 864 gekoppelt und auf einem oder mehreren Computern gehostet, wobei die Laufzeitumgebung 854 das Vorverarbeitungsmodul 856 beinhaltet, das konfiguriert ist, um die gespeicherten Datenstrukturen zu lesen, die den Datenflussgraphen spezifizieren, und um Systemressourcen (z. B. Prozesse, Speicher, CPUs usw.) zum Durchführen der Berechnung der Datenverarbeitungskomponenten, die dem Datenflussgraphen durch das Vorverarbeitungsmodul 856 zugewiesen sind, zuzuweisen und zu konfigurieren, wobei die Laufzeitumgebung 854 das Ausführungsmodul 862 beinhaltet, um die Ausführung der Berechnung der Datenverarbeitungskomponenten zu planen und zu steuern. Mit anderen Worten, die auf einem oder mehreren Computern gehostete Laufzeit- oder Ausführungsumgebung 854 ist konfiguriert, um Daten aus der Datenquelle 852 zu lesen und die Daten unter Verwendung eines ausführbaren Computerprogramms, das in Form des Datenflussgraphen ausgedrückt ist, zu verarbeiten.
  • Die vorstehend beschriebenen Ansätze können unter Verwendung eines Computersystems implementiert werden, das geeignete Software ausführt. Zum Beispiel kann die Software Prozeduren in einem oder mehreren Computerprogrammen beinhalten, die auf einem oder mehreren programmierten oder programmierbaren Rechensystemen (die von verschiedenen Architekturen sein können, wie etwa verteilt, Client/Server oder Gitter) ausgeführt werden, die jeweils mindestens einen Prozessor, mindestens ein Datenspeichersystem (einschließlich flüchtigem und/oder nichtflüchtigem Speicher und/oder Speicherelementen), mindestens eine Benutzerschnittstelle (zum Empfangen von Eingaben unter Verwendung mindestens einer Eingabevorrichtung oder eines Ports und zum Bereitstellen von Ausgaben unter Verwendung mindestens einer Ausgabevorrichtung oder eines Ports) beinhalten. Die Software kann zum Beispiel ein oder mehrere Module eines größeren Programms beinhalten, das Dienste in Bezug auf das Entwerfen, Konfigurieren und Ausführen von Graphen bereitstellt. Die Module des Programms (z. B. Elemente eines Graphen) können als Datenstrukturen oder andere organisierte Daten implementiert sein, die einem Datenmodell entsprechen, das in einem Datenspeicher gespeichert ist.
  • Die Software kann auf einem greifbaren, nichtflüchtigen Medium bereitgestellt werden, wie etwa einer CD-ROM oder einem anderen computerlesbaren Medium (z. B. durch ein allgemeines oder spezielles Rechensystem oder eine Vorrichtung lesbar), oder über ein Kommunikationsmedium eines Netzwerks an ein greifbares, nichtflüchtiges Medium eines Rechensystems geliefert (z. B. in einem verbreiteten Signal codiert) werden, wo sie ausgeführt wird. Einige oder alle der Verarbeitungen können auf einem Spezialcomputer oder unter Verwendung von Spezialhardware durchgeführt werden, wie etwa Koprozessoren oder feldprogrammierbaren Gate-Arrays (FPGAs) oder dedizierten, anwendungsspezifischen integrierten Schaltungen (ASICs). Die Verarbeitung kann auf eine verteilte Weise implementiert werden, bei der verschiedene Teile der durch die Software spezifizierten Berechnung durch verschiedene Rechenelemente durchgeführt werden. Jedes derartige Computerprogramm wird vorzugsweise auf einem computerlesbaren Speichermedium (z. B. Festkörperspeicher oder -medien oder magnetische oder optische Medien) einer Speichervorrichtung, die für einen allgemeinen oder speziellen programmierbaren Computer zugänglich ist, zum Konfigurieren und Betreiben des Computers gespeichert oder auf dieses heruntergeladen, wenn das Speichervorrichtungsmedium durch den Computer gelesen wird, um die hier beschriebene Verarbeitung durchzuführen. Das erfindungsgemäße System kann auch als ein greifbares, nichtflüchtiges Medium implementiert betrachtet werden, das mit einem Computerprogramm konfiguriert ist, wobei das so konfigurierte Medium einen Computer veranlasst, auf eine spezifische und vordefinierte Weise zu arbeiten, um einen oder mehrere der hier beschriebenen Verarbeitungsschritte durchzuführen.
  • Eine Reihe von Ausführungsformen wurde beschrieben. Dennoch versteht es sich, dass verschiedene Modifikationen vorgenommen werden können, ohne vom Geist und Umfang 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 auch innerhalb des Umfangs 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 17704469 B [0001]
    • US 63253851 B [0001]
    • US 20160019057 A [0038]
    • US 20200380212 A [0062]
    • US 10055333 [0078]
    • US 9880818 [0078]
    • US 2007/0011668 [0092]
    • US 5966072 [0092]

Claims (28)

  1. Ein Verfahren zum Aktualisieren eines Computerprogramms, wobei das Verfahren durch ein Computersystem implementiert wird und beinhaltet: Empfangen eines Computerprogramms, das konfiguriert ist, um auf einem ersten Computersystem gehostet zu werden und von diesem ausgeführt zu werden, wobei das Computerprogramm konfiguriert ist, um, wenn es ausgeführt wird, Datensätze von einer Datenquelle zu empfangen, Daten, die in Feldern der Datensätze enthalten sind, zu verarbeiten und Datensätze, die die verarbeiteten Daten enthalten, an ein Datenziel auszugeben; Analysieren des Computerprogramms durch einen oder mehrere Prozessoren, um eine Charakterisierung einer Abstammung, einer Architektur und einer Operation des Computerprogramms zu erhalten, wobei: die Abstammung des Computerprogramms Beziehungen zwischen Elementen des Computerprogramms, Beziehungen des Computerprogramms und anderer Computerprogramme oder beides beinhaltet, die Architektur des Computerprogramms eine Charakteristik der Datenquelle, eine Charakteristik des Datenziels und eine Charakteristik eines oder mehrerer Prozessoren, die konfiguriert sind, um die in den Datensätzen enthaltenen Daten zu verarbeiten, beinhaltet, und die Operation des Computerprogramms Prozesse des Computerprogramms beinhaltet, die ausgeführt werden, um die Daten aus den Datensätzen zu verarbeiten; Empfangen einer Charakterisierung einer Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, wobei, wenn das Computerprogramm gemäß der Aktualisierung modifiziert wird, mindestens ein Teil des modifizierten Computerprogramms konfiguriert ist, um auf einem zweiten Computersystem gehostet zu werden und von diesem ausgeführt zu werden; und Modifizieren des Computerprogramms, um die Aktualisierung zu implementieren, um das modifizierte Computerprogramm zu erzeugen, einschließlich des Modifizierens einer oder mehrerer der Abstammung des Computerprogramms, der Architektur des Computerprogramms oder der Operation des Computerprogramms.
  2. Verfahren nach Anspruch 1, wobei das zweite Computersystem ein cloudbasiertes System ist.
  3. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Modifizieren des Computerprogramms das Zusammenführen der Charakterisierung der Aktualisierung mit der Charakterisierung der Abstammung, der Architektur und der Operation des Computerprogramms beinhaltet.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Computerprogramm Datenverarbeitungskomponenten beinhaltet, die konfiguriert sind, um die Datensätze von der Datenquelle zu empfangen, Werte in Feldern der empfangenen Datensätze zu verarbeiten und Datensätze, die Ergebnisse der Verarbeitung der Werte enthalten, auszugeben, wobei die Datenverarbeitungskomponenten durch Verbindungen verbunden sind, die Flüsse von Datensätzen repräsentieren.
  5. Verfahren nach Anspruch 4, wobei das Modifizieren des Computerprogramms das Modifizieren eines Werts oder eines Ausdrucks für einen Parameter einer Datenverarbeitungskomponente oder einer Verbindung des Computerprogramms beinhaltet.
  6. Verfahren nach Anspruch 4 oder 5, wobei das Modifizieren des Computerprogramms das Hinzufügen einer neuen Datenverarbeitungskomponente, das Löschen einer Datenverarbeitungskomponente, das Hinzufügen einer neuen Verbindung oder das Löschen einer Verbindung beinhaltet.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Charakterisierung der Aktualisierung eine Charakterisierung eines verteilten Verarbeitungsschemas für mindestens einen Teil des Computerprogramms beinhaltet und wobei das Modifizieren des Computerprogramms das Modifizieren eines Layouts des Computerprogramms beinhaltet, um eine Verteilung von Verarbeitungsoperationen gemäß dem verteilten Verarbeitungsschema zu implementieren.
  8. Verfahren nach Anspruch 7, wobei das Modifizieren des Computerprogramms beinhaltet: Erzeugen einer Spezifikation für eine erste neue Datenverarbeitungskomponente, die konfiguriert ist, um eine Partitionierungsoperation zu implementieren; Erzeugen einer Spezifikation für eine zweite neue Datenverarbeitungskomponente, die konfiguriert ist, um eine Erfassungsoperation zu implementieren; Einfügen der ersten neuen Datenverarbeitungskomponente in das Computerprogramm stromaufwärts des mindestens einen Teils des Computerprogramms; und Einfügen der zweiten neuen Datenverarbeitungskomponente in das Computerprogramm stromabwärts des mindestens einen Teils des Computerprogramms.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Datenquelle ein erstes Dateisystem oder eine erste Datenbank beinhaltet und wobei die Charakterisierung der Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, eine Identifizierung eines zweiten Dateisystems oder einer zweiten Datenbank beinhaltet, von der das modifizierte Computerprogramm Datensätze empfangen soll.
  10. Verfahren nach Anspruch 9, wobei das Modifizieren des Computerprogramms beinhaltet: Löschen einer ersten Datenquellenkomponente des Computerprogramms, die dem ersten Dateisystem oder der ersten Datenbank entspricht; und Einfügen einer zweiten Datenquellenkomponente, die dem zweiten Dateisystem oder der zweiten Datenbank entspricht.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Datenziel ein erstes Dateisystem oder eine erste Datenbank beinhaltet und wobei die Charakterisierung der Aktualisierung, die an dem Computerprogramm vorgenommen werden soll, eine Identifizierung eines Satzes von mehreren zweiten Dateisystemen oder Datenbanken beinhaltet, an die das modifizierte Computerprogramm Datensätze ausgeben soll, wobei sich mindestens eines der zweiten Dateisysteme oder Datenbanken an einem Ort befindet, der sich von einem Ort mindestens eines anderen der zweiten Dateisysteme oder Datenbanken unterscheidet.
  12. Verfahren nach Anspruch 11, wobei das Modifizieren des Computerprogramms beinhaltet: Replizieren eines Flusses im Computerprogramm, der eine Datenverarbeitungskomponente des Computerprogramms mit einer ersten Datenzielkomponente verbindet, die dem ersten Dateisystem oder der ersten Datenbank entspricht; Einfügen einer neuen Komponente, die einem ersten der zweiten Dateisysteme oder Datenbanken entspricht, wobei der replizierte Fluss die Datenverarbeitungskomponente mit der neuen Komponente verbindet.
  13. Verfahren nach Anspruch 11 oder 12, wobei das zweite Dateisystem oder die zweite Datenbank ein cloudbasiertes Dateisystem oder eine cloudbasierte Datenbank ist und wobei die Charakterisierung der Aktualisierung eine Identifizierung einer ersten Eigenschaft von Daten, die in einem nicht cloudbasierten Speicherort gespeichert werden sollen, eine Identifizierung einer zweiten Eigenschaft von Daten, die in dem zweiten cloudbasierten Dateisystem oder der zweiten cloudbasierten Datenbank gespeichert werden sollen, oder beides beinhaltet.
  14. Verfahren nach Anspruch 13, wobei das Analysieren des Computerprogramms das Durchführen einer Datenabstammungsanalyse beinhaltet und das Identifizieren, basierend auf der Datenabstammungsanalyse, einer ersten Komponente, die konfiguriert ist, um Datensätze mit der ersten Eigenschaft zu empfangen oder auszugeben, einer zweiten Komponente, die konfiguriert ist, um Datensätze mit der zweiten Eigenschaft zu empfangen oder auszugeben, oder beides umfasst.
  15. Verfahren nach Anspruch 13 oder 14, wobei die erste Eigenschaft persönlich identifizierbare Informationen (PII) umfasst.
  16. Verfahren nach einem der Ansprüche 13 bis 15, wobei das Modifizieren des Computerprogramms das Modifizieren einer Spezifikation für eine erste Datenverarbeitungskomponente, die Daten mit der ersten Eigenschaft ausgibt, das Modifizieren einer Spezifikation für eine zweite Datenverarbeitungskomponente, die Daten mit der zweiten Eigenschaft ausgibt, oder beides beinhaltet.
  17. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Modifizieren des Computerprogramms beinhaltet: Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen ersten Typ von Dateiübertragungsprotokoll implementiert; und Modifizieren einer Spezifikation für die Datenverarbeitungskomponente gemäß einem zweiten Typ von Dateiübertragungsprotokoll, wobei die Charakterisierung der Aktualisierung eine Anzeige einer Änderung von dem ersten Typ von Dateiübertragungsprotokoll zu dem zweiten Typ von Dateiübertragungsprotokoll beinhaltet.
  18. Verfahren nach Anspruch 17, wobei das Modifizieren der Spezifikation für die Datenverarbeitungskomponente das Ändern eines Werts oder Ausdrucks für jeden von einem oder mehreren Parametern der Datenverarbeitungskomponente beinhaltet.
  19. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Charakterisierung der Aktualisierung eine Anforderung zur Anonymisierung von persönlich identifizierbaren Informationen (PII) beinhaltet.
  20. Verfahren nach Anspruch 19, wobei das Analysieren des Computerprogramms das Identifizieren einer Datenverarbeitungskomponente beinhaltet, die konfiguriert ist, um erste Datensätze mit einem oder mehreren Feldern, die PII enthalten, zu empfangen, und wobei das Modifizieren des Computerprogramms das Hinzufügen einer Komponente beinhaltet, die konfiguriert ist, um einen Tokenisierungsdienst stromaufwärts der identifizierten Datenverarbeitungskomponente zu implementieren, wobei der Tokenisierungsdienst konfiguriert ist, um die ersten Datensätze zu empfangen und die in den Feldern der empfangenen Datensätze enthaltenen PII zu generalisieren.
  21. Verfahren nach Anspruch 20, wobei das Modifizieren des Computerprogramms das Modifizieren einer Spezifikation der identifizierten Datenverarbeitungskomponente beinhaltet, um eine Definition eines Datensatzformats für Datensätze zu ändern, die von der identifizierten Datenverarbeitungskomponente verarbeitet werden sollen.
  22. Verfahren nach Anspruch 21, wobei das zweite Computersystem ein cloudbasiertes Computersystem ist und wobei das Modifizieren des Computerprogramms das Spezifizieren eines nicht cloudbasierten Computersystems zur Ausführung des Tokenisierungsdiensts beinhaltet.
  23. Verfahren nach einem der vorhergehenden Ansprüche, beinhaltend: Testen mindestens eines Teils des modifizierten Computerprogramms, wobei das Testen beinhaltet: Bereitstellen von Eingangstestdatensätzen für den mindestens einen Teil des modifizierten Computerprogramms; und Erhalten von ersten verarbeiteten Datensätzen aus dem mindestens einen Teil des modifizierten Computerprogramms; und Testen mindestens eines Teils des Computerprogramms, wobei der mindestens eine Teil des Computerprogramms dem getesteten Teil des modifizierten Computerprogramms entspricht, wobei das Testen des mindestens einen Teils des Computerprogramms beinhaltet: Bereitstellen der Eingangstestdatensätze für den mindestens einen Teil des Computerprogramms, und Erhalten von zweiten verarbeiteten Datensätzen aus dem mindestens einen Teil des Computerprogramms; und Vergleichen der ersten verarbeiteten Datensätze und der zweiten verarbeiteten Datensätze.
  24. Verfahren nach einem der vorhergehenden Ansprüche, beinhaltend das Migrieren des modifizierten Computerprogramms zu dem zweiten Computersystem.
  25. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Modifizieren des Computerprogramms beinhaltet: Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen Attributwert aufweist, der mit einem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird; und Ersetzen der identifizierten Datenverarbeitungskomponente durch eine neue Datenverarbeitungskomponente.
  26. Verfahren nach Anspruch 25, wobei das Identifizieren einer Datenverarbeitungskomponente des Computerprogramms, die einen Attributwert aufweist, der mit einem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird, beinhaltet: Erzeugen eines ersten Satzes von Datensätzen, einschließlich Erzeugen eines Datensatzes, der jeder Datenverarbeitungskomponente des Computerprogramms entspricht, wobei jeder Datensatz eine Kennung der jeweiligen Datenverarbeitungskomponente und Attributwerte für Attribute der jeweiligen Datenverarbeitungskomponente enthält; und Filtern des ersten Satzes von Datensätzen basierend auf den Attributwerten, die in den Datensätzen des ersten Satzes enthalten sind, um einen zweiten Satz von Datensätzen zu erhalten, einschließlich Entfernen, durch das Filtern, der Datensätze des ersten Satzes, die keinen Wert für das bestimmte Attribut enthalten, der mit dem Zielattributwert übereinstimmt, der durch die Charakterisierung der Aktualisierung angegeben wird.
  27. Computersystem zum Aktualisieren eines Computerprogramms, wobei das Computersystem einen oder mehrere Prozessoren beinhaltet, die mit einem Speicher gekoppelt sind, wobei der eine oder die mehreren Prozessoren und der Speicher konfiguriert sind, um die Operationen nach einem der vorhergehenden Ansprüche durchzuführen.
  28. Nichtflüchtiges computerlesbares Speichermedium, das Anweisungen speichert, um ein Rechensystem zu veranlassen, Operationen zum Aktualisieren eines Computerprogramms durchzuführen, wobei die Operationen die Operationen nach einem der Ansprüche 1 bis 26 beinhalten.
DE112022004826.3T 2021-10-08 2022-10-06 Automatisierte modifikation von computerprogrammen Pending DE112022004826T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163253851P 2021-10-08 2021-10-08
US63/253,851 2021-10-08
US17/704,469 US20230112179A1 (en) 2021-10-08 2022-03-25 Automated modification of computer programs
US17/704,469 2022-03-25
PCT/US2022/077666 WO2023060170A2 (en) 2021-10-08 2022-10-06 Automated modification of computer programs

Publications (1)

Publication Number Publication Date
DE112022004826T5 true DE112022004826T5 (de) 2024-07-18

Family

ID=84329456

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022004826.3T Pending DE112022004826T5 (de) 2021-10-08 2022-10-06 Automatisierte modifikation von computerprogrammen

Country Status (5)

Country Link
EP (1) EP4413458A2 (de)
AU (1) AU2022360364A1 (de)
CA (1) CA3233392A1 (de)
DE (1) DE112022004826T5 (de)
WO (1) WO2023060170A2 (de)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US20070011668A1 (en) 2005-06-27 2007-01-11 Wholey J S Managing parameters for graph-based computations
US20160019057A1 (en) 2014-07-18 2016-01-21 Ab lnitio Technology LLC Managing parameter sets
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US20200380212A1 (en) 2019-05-31 2020-12-03 Ab Initio Technology Llc Discovering a semantic meaning of data fields from profile data of the data fields

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9282166B2 (en) * 2012-11-29 2016-03-08 International Business Machines Corporation Management infrastructure analysis for cloud migration
US9692632B2 (en) * 2012-11-29 2017-06-27 International Business Machines Corporation Migration to managed clouds

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US20070011668A1 (en) 2005-06-27 2007-01-11 Wholey J S Managing parameters for graph-based computations
US20160019057A1 (en) 2014-07-18 2016-01-21 Ab lnitio Technology LLC Managing parameter sets
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US20200380212A1 (en) 2019-05-31 2020-12-03 Ab Initio Technology Llc Discovering a semantic meaning of data fields from profile data of the data fields

Also Published As

Publication number Publication date
WO2023060170A3 (en) 2023-05-11
AU2022360364A1 (en) 2024-04-04
EP4413458A2 (de) 2024-08-14
CA3233392A1 (en) 2023-04-13
WO2023060170A2 (en) 2023-04-13

Similar Documents

Publication Publication Date Title
DE112018002920T5 (de) Datenflussgraphenkonfiguration
DE112015003406B4 (de) Datenherkunftssummierung
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
EP2951736B1 (de) Auswahl von datensätzen
DE69705832T2 (de) Verfahren zum definieren und anwenden von regeln für nachrichtenverteilung für transaktionsverarbeitung in einer verteilten anwendung
DE69129067T2 (de) Verfahren um die skalaren datenabhängigkeiten für einen optimisationskompiler darzustellen
DE102019003851A1 (de) Systeme und Verfahren zum automatischen Realisieren von Modellen zu Co-Simulation
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
CN112368675B (zh) 更新可执行图的方法、系统和介质
EP3783494A1 (de) Anwendungsprüfung
AU2021201363B2 (en) Format-specific data processing operations
DE112022000878T5 (de) Datensatzmultiplexer für datenverarbeitungssystem
DE112022004826T5 (de) Automatisierte modifikation von computerprogrammen
DE102019008598A1 (de) Identifikation und Visualisierung von Assoziationen zwischen Code, der von einem Modell generiert ist, und Quellen, welche die Codegeneration beeinflussen
DE112022004468T5 (de) Metadaten-gesteuerte Datenaufnahme
US20230112179A1 (en) Automated modification of computer programs
DE112020002515T5 (de) Statische und laufzeitanalyse von computerprogrammsystemen
CN118202331A (zh) 计算机程序的自动修改
JP7573359B2 (ja) フォーマット特有のデータ処理動作
DE10134093C2 (de) Verfahren und Anordnung zum Entfernen von Verbindungen aus einem Netzwerk mit Knoten und Verbindungen
DE112022001057T5 (de) Selektives bereinigen eines systemkonfigurationsmodells für system-neukonfigurationen
DE102022211397A1 (de) Hardware-agnostische spezifikation von paketverarbeitungspipilines
EP4160446A1 (de) Fähigkeitsanalyse einer komponente innerhalb einer industriellen automatisierungsanlage
DE102021114211A1 (de) Verfahren zum Generieren einer modular erweiterbaren computer-implementierten Datenbank für ein numerisches Simulationsmodell, Datenbank und Verfahren zum Analysieren eines numerischen Simulationsmodells mittels der Datenbank