CN118202331A - 计算机程序的自动修改 - Google Patents
计算机程序的自动修改 Download PDFInfo
- Publication number
- CN118202331A CN118202331A CN202280073460.XA CN202280073460A CN118202331A CN 118202331 A CN118202331 A CN 118202331A CN 202280073460 A CN202280073460 A CN 202280073460A CN 118202331 A CN118202331 A CN 118202331A
- Authority
- CN
- China
- Prior art keywords
- computer program
- data
- component
- data processing
- modifying
- 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
Links
- 238000004590 computer program Methods 0.000 title claims abstract description 460
- 238000012986 modification Methods 0.000 title description 37
- 230000004048 modification Effects 0.000 title description 37
- 238000000034 method Methods 0.000 claims abstract description 136
- 230000008569 process Effects 0.000 claims abstract description 80
- 238000012512 characterization method Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 166
- 230000008859 change Effects 0.000 claims description 32
- 238000004458 analytical method Methods 0.000 claims description 29
- 238000012360 testing method Methods 0.000 claims description 29
- 238000012546 transfer Methods 0.000 claims description 16
- 238000011144 upstream manufacturing Methods 0.000 claims description 14
- 238000001914 filtration Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 12
- 238000000638 solvent extraction Methods 0.000 claims description 11
- 230000014509 gene expression Effects 0.000 claims description 9
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 238000009826 distribution Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000013500 data storage Methods 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
一种用于更新计算机程序的方法,包括接收托管在第一计算系统上并且被配置为由第一计算系统执行的计算机程序。该方法包括分析该计算机程序来获得该计算机程序的谱系、体系结构和操作的表征。该谱系包括计算机程序的元素之间的关系,体系结构包括数据源、数据目标以及被配置为处理被包含在数据记录中的数据的一个或多个处理器的特性,并且操作包括被执行以处理来自数据记录的数据的过程。该方法包括接收要对该计算机程序进行的更新的表征,其中当根据该更新修改该计算机程序时,经修改的计算机程序中的至少一些被配置为托管在第二计算系统上并由第二计算系统执行;以及修改计算机程序以实施更新,从而生成经修改的计算机程序。
Description
优先权声明
本国际专利申请要求2022年3月25日提交的美国专利申请序列号17/704,469,该申请根据35U.S.C.§119(e)要求2021年10月8日提交的美国专利申请序列号63/253,851的优先权。
背景技术
数据处理系统可以包括多个计算机程序,该多个计算机程序可执行以处理包含在输入数据记录中的数据。在数据处理系统内,数据记录可以从一个计算机程序传递到另一个计算机程序,产生包含经处理的数据的一组输出数据记录。
发明内容
在一个方面中,一种用于更新计算机程序的方法包括接收托管在第一计算系统上并且被配置为由第一计算系统执行的计算机程序,其中该计算机程序被配置为当被执行时从数据源接收数据记录、处理被包含在数据记录的字段中的数据、以及将经处理的数据记录输出到数据目标。该方法包括通过一个或多个处理器分析该计算机程序来获得该计算机程序的谱系、体系结构和操作的表征。计算机程序的谱系包括计算机程序的元素之间的关系,计算机程序的体系结构包括数据源的特性、数据目标的特性以及被配置为处理被包含在数据记录中的数据的一个或多个处理器的特性,并且计算机程序的操作包括被执行以处理来自数据记录的数据的计算机程序的过程。该方法包括接收要对该计算机程序进行的更新的表征,其中当根据该更新修改该计算机程序时,经修改的计算机程序中的至少一些被配置为托管在第二计算系统上并由第二计算系统执行;以及修改计算机程序来实施更新以生成经修改的计算机程序,包括修改计算机程序的谱系、计算机程序的体系结构或计算机程序的操作中的一者或多者。
实施方案可以包括以下特征中的一个特征或两个或更多个特征的组合。
第二计算系统是基于云的系统。
修改计算机程序包括将更新的表征与计算机程序的谱系、体系结构和操作的表征合并。
计算机程序的谱系包括计算机程序与其它计算机程序之间的关系。
该计算机程序包括被配置为处理数据记录的字段中的值的数据处理部件,该数据处理部件由表示数据记录的流的链路连接。在一些情况下,修改计算机程序包括修改针对数据处理部件的参数的值或表达式,或计算机程序的链路。在一些情况下,修改计算机程序包括添加新的数据处理部件、删除数据处理部件或两者都有。在一些情况下,修改计算机程序包括添加新链路、删除链路或两者都有。
更新的表征包括用于计算机程序的至少一部分的分布式处理方案的表征。在一些情况下,修改计算机程序包括修改计算机程序的布局以根据分布式处理方案实施处理操作的分布。在一些情况下,修改计算机程序包括:生成用于被配置为实施划分操作的第一新数据处理部件的规格;生成用于被配置为实施聚集操作的第二新数据处理部件的规格;在计算机程序的至少一部分的上游将第一新数据处理部件插入到计算机程序中;以及在计算机程序的至少一部分的下游将第二新数据处理部件插入到计算机程序中。在一些情况下,该方法包括基于更新的表征来标识分布式处理方案要应用到的计算机程序的部件。
数据源包括第一文件系统或数据库,并且其中要对计算机程序进行的更新的表征包括第二文件系统或数据库的标识,经修改的计算机程序将从该第二文件系统或数据库接收数据记录。在一些情况下,修改计算机程序包括更新计算机程序的部件的规格中的数据源的名称。在一些情况下,修改计算机程序包括:删除与第一文件系统或数据库相对应的计算机程序的第一数据源部件;以及插入与第二文件系统或数据库相对应的第二数据源部件。
数据目标包括第一文件系统或数据库,并且其中要对计算机程序进行的更新的表征包括经修改的计算机程序输出数据记录所针对的一组多个第二文件系统或数据库的标识。在一些情况下,第二文件系统或数据库中的至少一者在与第二文件系统或数据库中的至少另一者的位置不同的位置中。在一些情况下,修改计算机程序包括:复制计算机程序中的流,该流将计算机程序的数据处理部件连接到与第一文件系统或数据库相对应的第一数据目标部件;插入与第二文件系统或数据库中的第一个相对应的新部件,其中所复制的流将数据处理部件连接到新部件。在一些情况下,第二文件系统或数据库是基于云的文件系统或数据库,并且其中更新的表征包括要被存储在非基于云的存储位置中的数据的第一特性的标识、要被存储在第二基于云的文件系统或数据库中的数据的第二特性的标识、或两者都有。在一些情况下,分析计算机程序包括进行数据谱系分析,并且包括基于数据谱系分析来标识被配置为接收或输出具有第一特性的数据记录的第一部件、被配置为接收或输出具有第二特性的数据记录的第二部件、或两者都有。在一些情况下,第一特性包括个人可识别信息(PII)。在一些情况下,修改计算机程序包括修改用于输出具有第一特性的数据的第一数据处理部件的规格、修改用于输出具有第二特性的数据的第二数据处理部件的规格或两者。
修改计算机程序包括:标识实施第一类型的文件传输协议的计算机程序的数据处理部件;以及根据第二类型的文件传输协议修改用于数据处理部件的规格,其中更新的表征包括从第一类型的文件传输协议到第二类型的文件传输协议的改变的指示。在一些情况下,修改用于数据处理部件的规格包括改变数据处理部件的一个或多个参数中的每一个参数的值或表达式。
更新的表征包括对个人可识别信息(PII)的匿名化的要求。在一些情况下,分析计算机程序包括标识被配置为接收具有包含PII的一个或多个字段的第一数据记录的数据处理部件。在一些情况下,修改计算机程序包括添加被配置为在所标识的数据处理部件的上游实施令牌化服务的部件,该令牌化服务被配置为接收第一数据记录并将被包含在所接收的记录的字段中的PII泛化(genericize)。在一些情况下,修改计算机程序包括修改所标识的数据处理部件的规格以改变针对要由所标识的数据处理部件处理的数据记录的记录格式的定义。在一些情况下,第二计算系统是基于云的计算系统,并且其中修改计算机程序包括指定用于令牌化服务的执行的非基于云的计算系统。
该方法包括测试经修改的计算机程序的至少一部分,该测试包括:向经修改的计算机程序的至少一部分提供输入测试数据记录;以及从经修改的计算机程序的至少一部分获得第一经处理的数据记录。在一些情况下,该方法包括测试计算机程序的至少一部分,其中计算机程序的至少一部分对应于经修改的计算机程序的被测试部分,其中测试计算机程序的至少一部分包括:将输入测试数据记录提供给计算机程序的至少一部分,并且从计算机程序的该至少一部分获得第二经处理的数据记录;其中,测试经修改的计算机程序的至少一部分包括比较第一经处理的数据记录和第二经处理的数据记录。
该方法包括将经修改的计算机程序迁移到第二计算系统。
修改计算机程序包括:标识计算机程序的数据处理部件,该数据处理部件具有与由更新的表征所指示的目标属性值相匹配的属性值;以及用新的数据处理部件替换所标识的数据处理部件。在一些情况下,标识具有与更新的表征所指示的目标属性值相匹配的属性值的计算机程序的数据处理部件包括:生成第一组数据记录,包括生成与计算机程序的每个数据处理部件相对应的数据记录,其中每个数据记录包含相应数据处理部件的标识符和针对相应数据处理部件的属性的属性值;以及基于被包含在第一组的数据记录中的属性值过滤第一组数据记录以获得第二组数据记录,包括通过过滤去除不包含针对与由更新的表征所指示的目标属性值匹配的特定属性的值的第一组的数据记录。
修改计算机程序以实施更新以生成经修改的计算机程序至少包括修改计算机程序的体系结构。
该体系结构的修改至少包括使被配置为处理被包含在数据记录中的数据的一个或多个处理器的特性适应于第二计算系统的一个或多个处理器的特性。
接收到的计算机程序是托管在第一计算系统上并可由第一计算系统执行的计算机程序的副本。
计算机程序的修改包括生成接收到的计算机程序的副本以及修改所生成的副本以生成经修改的计算机程序。
在考虑第二计算系统的特性的同时,执行对计算机程序的谱系、计算机程序的体系结构或计算机程序的操作中的一者或多者的修改。所考虑的第二计算系统的特性是要由第二计算系统使用来执行经修改的计算机程序的硬件的特性。
第二计算系统是基于云的计算系统,并且修改计算机程序包括添加被配置为在本地计算机系统上执行并且实施令牌化服务的部件,该令牌化服务被配置为优选地通过用令牌代替PII来匿名化从数据源接收的记录的字段中所包含的PII,并且令牌通过令牌化系统映射回PII,但是确保PII本身不被提供给基于云的系统(其中将发生修改的计算机程序的其它处理操作)。
该方法的每个操作由实施该方法的计算系统自动执行。
实施该方法的计算系统是与第一计算系统和第二计算系统中的每一个计算系统不同的程序更新系统,和/或其中第二计算系统与第一计算系统不同。
在一个方面中,一种用于更新数据流图的方法包括:访问数据流图,其中数据流图的规格定义节点和一个或多个链路,该节点中的至少一个节点表示数据处理部件,该数据处理部件定义要被执行以处理具有记录格式的数据记录的一个或多个字段中的数据的操作,该数据记录被提供给数据处理部件,并且该一个或多个链路连接节点并且每个链路都表示数据记录流。该方法包括生成表示数据流图的第一组数据记录,包括生成与数据流图的每个数据处理部件相对应的数据记录,每个数据记录包含:数据处理部件的标识符,以及针对数据处理部件的属性的属性值。该方法包括接收对数据流图的更新的表征,该更新的表征指示针对特定属性的目标值;基于由更新的表征所指示的目标值过滤第一组数据记录以获得第二组数据记录,包括通过过滤去除不包含针对与由更新的表征所指示的目标值相匹配的特定属性的属性值的数据记录;并且对于第二组数据记录中的每个数据记录,用由更新的表征所指示的新部件替换对应部件。
实施方案可包括以下特征中的一者或两者。
用新部件替换给定部件包括更新连接到该给定部件的流。
用新部件替换给定部件包括删除连接到表示给定部件的节点的流并生成连接到表示新部件的节点的新流。
本文所描述的各方面允许对要被迁移到新计算系统的计算机程序的自动修改,该新计算系统不同于该计算机程序最初托管并被配置成在其上执行的计算系统。为了使该计算机程序准备好迁移到新计算系统并且准备好由新计算系统执行,计算机程序的自动修改考虑新计算系统的特性以确保经修改的计算机程序在新计算系统处的适当操作,诸如在数据安全性、数据处理的吞吐量、计算资源消耗方面的适当操作或者计算机程序的过程/功能的正确执行。在修改计算机程序时所考虑的新计算系统的特性可以涉及与新计算系统的硬件和/或与新计算系统处的数据保护程度(数据安全性)有关的特性。这些方面尤其有益,但不限于将计算机程序从本地计算系统迁移到基于云的计算系统。一种或多种具体实施的详细内容在附图及下文的具体实施方式中进行说明。其他特征和优点将从描述和附图以及从权利要求书显而易见。
附图说明
图1是计算机程序的图。
图2是用于更新计算机程序的系统的图。
图3-8是数据流图的图。
图9是数据流图的图。
图10A和图10B分别是原始数据流图和经修改的数据流图的部分的图。
图11和图12是流程图。
图13是计算系统的图。
具体实施方式
我们在此描述修改诸如数据流图(其他类型的程序也是可能的)之类的计算机程序的方法,优选地是自动方法,例如使得经修改的计算机程序的至少一部分可以托管在与原始计算机程序的计算系统不同的计算系统上并由该计算系统执行。例如,修改可以将经修改的计算机程序配置为托管在基于云的计算系统上并由该基于云的系统执行。自动修改过程涉及计算机程序的自动分析以表征计算机程序的谱系、体系结构和操作。谱系、体系结构和操作中的一者或多者然后被自动修改以实施更新,诸如由用户或计算系统指定的更新。更新可以是,例如,将分布式处理方案引入到经修改的计算机程序中,修改用于检索输入数据记录或存储输出数据记录的位置,或引入屏蔽个人可识别信息(PII)的过程,例如,以遵守隐私规则。
参照图1,计算机程序100托管在第一计算系统102上并由第一计算系统执行。在示例中,第一计算系统102是操作计算机程序的用户本地的计算系统,例如,现场位于办公室的计算系统。诸如系统工程师之类的用户可能想要更新计算机程序100,使得计算机程序的经修改版本(称为经修改的计算机程序104)的至少一部分托管在第二计算系统106(例如,云计算系统)上并由第二计算系统执行。例如,计算机程序100的更新可以作为将应用或过程从本地环境(例如,本地存储和执行)迁移到基于云的环境(例如,基于云的存储和/或执行)或者迁移到本地环境和基于云的环境的组合的过程的一部分来执行。更新计算机程序100以生成经修改的计算机程序104是基于来自表征更新目标的用户的输入的自动化过程,如以下段落中所述。
计算机程序100被自动分析以获得计算机程序的各种表征。例如,可以分析计算机程序100以获得计算机程序100的谱系的表征,其包括计算机程序的元素之间的关系、计算机程序与其它计算机程序之间的关系、或两者都有。计算机程序的谱系的表征包括指示那些关系的数据。元素可以是数据处理节点或部件、数据资源或数据目标、用于数据流的链路等。计算机程序100可以被分析以获得计算机程序的体系结构的表征,其包括数据源的特性、数据目标的特性、被配置成执行计算机程序(例如,以处理被包含在数据记录的字段中的数据)的一个或多个处理器的特性、或计算机程序体系结构的其它特征。计算机程序的体系结构的表征包括指示那些特性的数据。可以分析计算机程序100以获得计算机程序的操作的表征,该计算机程序的操作包括当执行计算机程序时执行的计算机程序的过程,例如,被执行以处理被包含在由计算机程序接收的数据记录的字段中的数据的过程。计算机程序的操作的表征包括指示那些过程的数据。
接收对计算机程序100的更新的表征,例如作为来自用户的输入。该更新是当被实施时(例如当计算机程序100根据该更新被修改时)导致经修改的计算机程序104的更新,该经修改的计算机程序104中的至少一些被配置为托管在第二计算系统106上并由第二计算系统106执行。计算机程序100可以被自动修改以实施更新,从而生成经修改的计算机程序104。实施更新包括修改计算机程序的谱系、修改计算机程序的体系结构、或修改计算机程序的操作中的一者或多者。经修改的计算机程序104至少部分地托管在第二计算系统106上并且被配置为由第二计算系统106执行。
计算机程序100和修改的计算机程序104是当被执行时从数据源接收数据记录、处理被包含在该数据记录的字段中的数据、并且将经处理的数据输出到数据目标的计算机程序。在一些示例中,计算机程序100和经修改的计算机程序104是可执行的数据流图。可执行的数据流图是包括节点的图形形式的计算机程序,该节点是可执行的数据处理部件和数据资源,诸如数据源和数据目标。节点可以接收图内的数据记录,处理被包含在数据记录中的数据,诸如数据记录的字段中的值,并且输出数据记录中的处理结果,该结果被转发到图内的目的地,诸如数据资源,例如数据目标。数据资源是数据(诸如数据记录)的储存库,例如在数据流图的执行期间要被处理或使用的数据源或针对由数据流图输出的经处理的数据记录的目的地(目标)。数据资源例如是文件、数据库(例如,数据库表)、队列、对象或其他类型的数据源或目标。为节点之间的信息和/或数据流(诸如数据记录)提供连接图的两个节点的链路。可执行的数据流图可以被配置为当被执行时处理被包含在数据记录的字段中的数据。数据流图(有时称为图)可以是控制一个或多个图的执行的数据处理图或计划。在一些示例中,数据流图的一个或多个数据处理部件是子图。
图2是用于更新计算机程序200以生成经修改的计算机程序204的计算系统230的示意图。计算系统230包括一个或多个处理器和存储器。计算机程序200、204例如是可执行的数据流图,其可配置以处理被包含在数据记录的字段中的数据。原始计算机程序200托管在第一计算系统201上并由第一计算系统201执行,该第一计算系统诸如对于对计算机程序200感兴趣的企业或实体而言是本地的计算系统。经修改的计算机程序204托管在与第一计算系统201不同的第二计算系统203(诸如基于云的计算系统)上并由第二计算系统203执行。在一些示例中,经修改的计算机程序204的部分托管在第一计算系统201上和/或由第一计算系统201执行,并且其它部分托管在第二计算系统203上和/或由第二计算系统203执行。
系统230从系统201接收程序200的副本,或者系统230接收被配置为托管在系统201上的程序200。系统230包括程序分析模块210,该程序分析模块分析接收到的计算机程序200(的副本)以获得计算机程序200的谱系的表征、计算机程序200的体系结构、计算机程序200的操作、或者它们中的任意两者或更多者的组合。该表征211被传递到修改模块220。
计算机程序200的谱系包括计算机程序的元素(例如,节点、数据资源或两者)之间的关系、计算机程序与其它计算机程序之间的关系、或两者。计算机程序200的谱系可以标识或基于静态依赖性、运行时依赖性或两者。两个元素或程序之间的静态依赖性是由与计算机程序相关联的先前存储的参数集中的值定义的依赖性。通过对所存储的参数集中的值的静态分析来标识计算机程序的元素之间或计算机程序之间的静态依赖性。两个元素或计算机程序之间的运行时依赖性是在计算机程序中的一个计算机程序的运行时定义但从静态分析中不明显的依赖性。当计算机程序200被执行以处理数据记录时,执行命令可以包括参数值,例如除了定义静态依赖性的先前存储的参数集中的参数值之外或代替该参数值。在计算机程序的执行期间生成的运行时间日志指示这些参数值,这些参数值指示例如哪些节点被执行或者哪些数据资源被访问。通过分析在运行时间日志中所指示的参数值来标识计算机程序的元素之间或计算机程序之间的运行时间依赖性。
静态和运行时间分析的进一步描述可以在美国专利申请公开号2016/0019057和美国专利申请公开号2016/0019057中找到,这两个专利申请的内容整体以引用方式并入本文。
计算机程序200的体系结构包括数据源的特性、数据目标的特性、被配置成执行计算机程序(例如,以处理被包含在数据记录的字段中的数据)的一个或多个处理器的特性、或计算机程序体系结构的其它特征。数据源或数据目标的表征可以包括数据源或数据目标的名称、数据源或数据目标的类型(例如,数据库、文件、队列等)、数据源或数据目标的实际位置(例如,用于物理文件或数据集的路径)、或者数据源或数据目标的参数化位置。参数化位置是在计算机程序运行时解析为用于实际数据源或数据目标的路径(例如用于物理文件或数据集的路径)的表达式。例如,数据集(诸如数据源或数据目标)可以由参数化路径/${FEED}/inv_${DATE}.dat来表征。在执行后,计算机程序接收用于FEED和DATE参数的值,使得参数化路径可以被解析到特定物理位置。表征可以包括多个数据源或数据目标(例如,本地和/或基于云的数据源或数据目标)的标识或指示。一个或多个处理器的表征可以包括处理器的数量、用于分布式处理方案的布局(例如,用于处理操作的划分方案的指示)、一个或多个处理器中的每一个处理器的位置、一个或多个处理器中的每一个处理器的目标或实际功耗、或其他特性。
计算机程序200的操作包括当执行计算机程序时执行的计算机程序的过程,例如,被执行以处理被包含在数据记录的字段中的数据的过程。计算机程序的处理可以包括例如文件传输操作、排序操作、过滤操作、联接操作和其它适当的操作。
系统230包括修改模块220,该修改模块接收要对计算机程序200进行的更新222的表征。更新222的表征可以经由用户界面224(例如,程序开发界面)从用户接收。更新是要对计算机程序200进行的修改,使得当根据更新来修改计算机程序200以生成经修改的计算机程序204时,经修改的计算机程序204中的至少一些被配置为托管在第二计算系统203上并由第二计算系统203执行。更新的表征的示例包括以下中的一者或多者:
●针对经修改的计算机程序的至少一部分实施的分布式处理方案的表征,例如,划分的表征(例如,针对经修改的计算机程序的至少一部分的处理操作的宽度的改变,或者将数据记录划分到多个处理流中的每一个处理流上的规则的改变(例如,从基于客户编号的划分到基于产品编号的划分的改变)),
●针对经修改的计算机程序204的数据源、数据目标或两者中的改变,例如分别与计算机程序200的数据源或数据目标不同的一个或多个数据源或数据目标的标识;或数据源、数据目标或两者的数量的改变(例如,从本地数据目标到基于云的数据目标或到本地和基于云的数据目标的组合的改变),
●由经修改的计算机程序实施的文件传输协议的类型的改变,例如,从传统文件传输协议(FTP)到安全文件传输协议(SFTP)的改变,或者
●对在由经修改的计算机程序204接收或处理的数据记录中屏蔽个人可识别信息(PII)的要求的引入。
修改模块220通过将更新222与计算机程序200的表征211结合并且将结果应用于计算机程序200来实施更新222,从而生成经修改的计算机程序204。修改计算机程序200包括修改计算机程序200的谱系、计算机程序的体系结构、计算机程序200的操作、或它们中的任意两者或更多者的组合。在一些示例中,修改计算机程序200包括直接修改计算机程序200本身以生成经修改的计算机程序204。在一些示例中,修改计算机程序包括生成计算机程序200的副本并修改该副本以生成经修改的计算机程序204。
当计算机程序200是数据流图时,修改可以包括修改数据处理部件的参数的值或表达式,或数据流图的链路。修改可以包括添加新的数据处理部件或链路、删除数据处理部件或链接、或其组合,诸如以考虑系统203的特性(例如,硬件特性)。例如,为了用第二数据处理部件替换计算机程序200中的第一数据处理部件,删除第一数据处理部件及其相关联的链路,并且添加新的数据处理部件和适当的链路。
在一些示例中,修改模块220自动标识要被修改的计算机程序200的部件,并且在从用户接收到更新的表征时实施更新。例如,更新222的表征可以标识原始计算机程序200中将被修改的部件的特性,并且可以指定满足该特性的部件将如何被修改。修改模块220基于计算机程序200的表征211来实施搜索和替换过程(以下将进一步详细描述),以标识满足该特性的部件并且用已被相应地修改的替换部件来替换那些所标识的部件。在特定示例中,更新的表征指示原始计算机程序200中具有特定位置参数(例如,到本地数据存储位置的路径)的所有数据目标将被修改为具有不同的位置参数(例如,到基于云的数据存储位置的路径)。修改模块222搜索具有指定位置参数的所有数据目标部件,并用具有不同位置参数的数据目标部件替换它们。
在一些示例中,由用户提供的更新222的表征提供要被修改或受修改影响的部件的标识或指示,并且修改模块220实施对这些部件的更新。例如,更新222的表征可以标识一组过程,并且可以指定如何修改该组过程。基于计算机程序200的表征211,修改模块220可以标识要被更新的部件。在特定示例中,更新的表征包括根据经修改的计算机程序中的分布式处理方案要被执行的一组过程的标识。修改模块220基于计算机程序200的体系结构和操作的表征211来标识对应于那些过程的部件,并且在由用户标识的部件的上游插入划分部件并且在由用户标识的部件的下游插入聚集部件,如以下更详细讨论的。
在一些示例中,更新222的表征可以规定任何个人可识别信息(PII)在被提供给第二计算机系统203之前在令牌化过程中被匿名化,诸如以考虑系统203处的较低保护性数据安全环境。令牌化过程可以导致格式的改变,例如,从PII的数字格式到用于所得的令牌的字母数字格式。基于计算机程序200的数据谱系表征,修改模块220可以标识记录格式将被更新以考虑该格式改变的部件。
图3示出了计算机程序300和经修改的计算机程序304的示例。计算机程序300不实施分布式处理方案,并且根据更新被修改以在经修改的计算机程序304的部分302中实施分布式处理方案,以考虑第二计算系统的特性。分布式处理方案是其中使用多个处理器来执行计算机程序的体系结构。在一些示例中,多个处理器可以位于不同的计算设备上。例如,处理器中的一个或多个处理器可以位于本地计算机处,诸如遵守隐私规则的那些,并且一个或多个其他处理器可以是基于云的处理器。例如,可以使用分布式计算方案,以实现高效的处理;以引入弹性和缩放能力;以实现计算机程序到基于云的系统的迁移,同时维持遵守可能禁止敏感数据(诸如个人可识别信息(PII))的基于云的处理或者出于其他原因的隐私规则。
经修改的计算机程序304中的分布式处理方案的实施可以涉及修改计算机程序300的布局以实施由分布式处理方案指定的处理操作的分布。该修改包括生成用于实施划分操作的第一新数据处理部件306的规格。划分部件306被插入到经修改的计算机程序304的要实施分布式处理的部分302的上游的经修改的计算机程序304中,例如,在分布式处理部分302的上游部件310和第一部件312之间。删除在原始计算机程序300中将上游部件310连接到第一部件312的链路,并且生成两个新的链路以将划分部件306连接到部件310、312。此外,修改包括生成用于实施聚集操作的第二新数据处理部件308的规格。聚集部件308被插入到经修改的计算机程序304的要实施分布式处理的部分302的下游的经修改的计算机程序304中,例如在分布式处理部分302的最后部件314与下游部件316之间。删除在原始计算机程序300中将最后部件314连接到下游部件316的链路,并且生成两个新的链路以将聚集部件308连接到部件314、316。
在一些示例中,原始计算机程序已经实施了分布式处理方案,并且更新是对分布式处理方案的一部分的改变。该改变可以是并行流的数量的改变(例如,原始计算机程序实施N个并行流,并且更新是对M个并行流的改变)。该改变可以是数据记录被划分的方式的改变。例如,原始计算机程序可以基于被包含在数据记录中的数据的第一特性来实施数据记录的划分(例如,可以根据客户编号来划分数据记录),并且经修改的计算机程序可以基于数据的不同特性来实施数据记录的划分(例如,可以根据产品编号来划分数据记录)。该改变可以是分布式处理器的位置的改变。例如,原始计算机程序和经修改的计算机程序都可以实施相同数量的并行流,但是原始计算机程序的处理由本地处理器执行,而经修改的计算机程序的处理由基于云的处理器执行。
在示例中,如下执行引入分布式处理方案的计算机程序300的修改。计算机程序300的谱系、体系结构和操作以自动分析过程为特征。用户提供标识将根据分布式处理方案实施的一个或多个过程的输入,以及标识划分的特性(例如,用于将执行分布式处理方案的一部分的处理器中的每一者的并行流的数量和位置(例如,路径))的输入。将输入的表征与计算机程序300的谱系、体系结构和操作的表征结合,并且产生经修改的计算机程序304。例如,一起对应于在用户输入中标识的一个或多个过程的计算机程序的部件集合被标识,并且划分部件和聚集部件分别被插入所标识的部件集合的上游和下游。
图4示出了计算机程序400和已被修改以改变数据源的经修改的计算机程序404的示例。计算机程序400从第一数据源(在该示例中,数据库)接收数据记录,该第一数据源对应于通过第一链路408连接到计算机程序400的处理部件406的数据源部件402。更新改变数据记录的源,使得经修改的计算机程序404从第二数据源接收数据记录,该第二数据源由通过第二链路412连接到处理部件406的数据源部件410表示。在图4的示例中,对应于数据源部件402的第一数据源是数据库,并且第二数据源是文件系统,其中数据源部件410是被配置为从Hadoop分布式文件系统(HDFS)读取的部件。其它类型的数据源可以被用于计算机程序400、第二计算机程序404或两者。在一些示例中,两个数据源可以是相同类型的数据源,并且可以改变诸如数据源的名称或位置(例如,路径)之类的属性。
在一些示例中,除了数据源的特性(例如,数据源的名称或路径(例如,位置))的改变(例如,从本地数据源到基于云的数据源的改变)之外,数据源部件410可以与数据源部件402相同。例如,数据源部件402的参数可以被改变,从而导致数据源部件410。在一些示例中,对计算机程序的修改涉及删除数据源部件402和第一链路408,以及添加数据源部件410和第二链路412,该第二链路用于将新添加的数据源部件410连接到处理部件406,其中新添加的数据源部件410表示用于经修改的计算机程序404的数据源。
在示例中,如下执行改变数据源的计算机程序400的修改。计算机程序400的谱系、体系结构和操作以自动分析过程为特征。用户提供指示对数据源的改变的输入,例如,要被改变为经修改的计算机程序中的不同数据源路径的计算机程序中的数据源路径的标识。将输入的表征与计算机程序400的谱系、体系结构和操作的表征结合,并且产生经修改的计算机程序404。例如,执行搜索和替换过程以标识与用户输入中指定的数据源路径匹配的数据源,并且用表示具有不同数据源路径的数据源的新数据源部件来替换对应的数据源部件。
图5示出了计算机程序500和已被修改以改变数据目标的经修改的计算机程序504的示例。计算机程序500将经处理的数据记录输出到第一数据目标(在此示例中,数据库),该第一数据目标由通过第一链路508连接到计算机程序500的处理部件506的数据目标部件502表示。更新改变针对所处理的数据记录的目标,使得经修改的计算机程序504将所处理的数据记录输出到第二数据目标(在该示例中,文件系统),该第二数据目标由通过第二链路512连接到处理部件506的数据目标部件510表示。尽管处理部件506被示出为在计算机程序500与经修改的计算机程序504之间是相同的部件,但在一些示例中,处理部件也可在这两个计算机程序之间不同。
在一些示例中,除了数据目标的特性(例如,数据目标的名称或路径(例如,位置))的改变(例如,从本地数据目标到基于云的数据目标的改变)之外,数据目标部件510可以与数据目标部件502相同。在一些示例中,对计算机程序的修改涉及删除数据目标部件502和第一链路508,以及添加数据目标部件510和第二链路512,该第二链路用于将新添加的数据目标部件510连接到处理部件506,其中新添加的数据目标部件510表示用于经修改的计算机程序504的数据目标。
在一些示例中,数据目标可以是不同类型的文件传输协议,例如,数据目标部件502可以实施第一类型的文件传输协议,并且数据目标部件510实施第二类型的文件传输协议,例如,安全ftp协议。
在一个示例中,如下执行改变数据目标的计算机程序500的修改。计算机程序500的谱系、体系结构和操作以自动分析过程为特征。用户提供指示对数据目标的改变的输入,例如,要被改变为经修改的计算机程序中的不同数据目标路径的计算机程序中的数据目标路径的标识。将输入的表征与计算机程序500的谱系、体系结构和操作的表征结合,并且产生经修改的计算机程序504。例如,执行搜索和替换过程以标识与用户输入中指定的数据目标路径匹配的数据目标,并且用表示具有不同数据目标路径的数据目标的新数据目标部件来替换对应的数据目标部件。
计算机程序可以被修改以改变用于输出数据记录的数据目标,以遵守关于在基于云的数据存储器(诸如基于云的文件系统或数据库)中的数据存储的限制。例如,隐私规则可以规定具有特定特性的特定数据(诸如包括个人可识别信息(PII)的数据记录)不被存储在基于云的数据存储中,并且其它数据被存储在基于云的数据存储中。
对将接收包括PII的数据记录的计算机程序500中的数据目标的标识可以通过数据谱系分析来执行,在一些情况下与语义发现分析相结合。
数据谱系是描述由计算机程序(诸如数据流图)处理的数据记录的生命周期的信息。针对给定数据记录的数据谱系信息包括该给定数据记录所取决的一个或多个数据记录的标识符、取决于该给定数据记录的一个或多个下游数据记录、处理数据记录以生成该给定数据记录的计算机程序的一个或多个部件以及处理该给定数据记录或取决于该给定数据记录的数据记录的计算机程序的一个或多个部件。通过下游数据记录取决于上游数据记录,这意味着通过计算机程序对上游数据记录的处理直接或间接导致下游数据记录的生成。所生成的下游数据记录可以是从计算机程序输出的数据记录(有时称为输出数据记录),或者可以是要由计算机程序进一步处理的数据记录(有时称为中间数据记录)。上游数据记录可以是输入到计算机程序中的数据记录(有时称为输入数据记录或参考数据记录)或已经经历了计算机程序的处理的数据记录(有时称为中间数据记录)。数据谱系分析是对计算机程序的分析,以标识取决于给定数据记录或给定记录所取决的数据记录,并且标识处理数据记录以生成给定数据记录、处理给定数据记录或处理取决于给定数据记录的数据记录的计算机程序的部件。
对于确保包含PII的数据记录不被存储在基于云的系统上或不被基于云的系统处理的特定示例,可以执行数据谱系分析以标识处理包含PII的数据记录的部件或接收包含PII的数据记录的数据目标。这些数据目标可以保持为本地数据目标,并且这些部件可以使用本地处理器来实施。
在一些示例中,在语义发现过程中自动标识包含PII的数据记录。对语义发现的进一步描述可以见于美国专利申请号2020/0380212,该专利申请的内容整体以引用方式并入本文。
图6示出了计算机程序600和经修改的计算机程序604的示例,该经修改的计算机程序已被修改以将经处理的数据记录输出到多个数据目标。计算机程序600将经处理的数据记录输出到第一数据目标(在此示例中,数据库),该第一数据目标由通过第一链路608连接到计算机程序600的处理部件606的数据目标部件602表示。更新去除第一数据目标并引入复制部件614以复制数据流,以及多个第二数据目标(在该示例中,多个数据库),每个第二数据目标由通过相应的第二链路612a-612c连接到处理部件606的数据目标部件610a-610c表示。第二数据目标中的至少一者可以处于与其它第二数据目标的位置不同的位置。在一些示例中,第二数据目标中的一者与第一数据目标相同,并且已经添加了附加数据目标。在一些示例中,第二数据目标中的全部都不同于第一数据目标。在一些示例中,可以进行相反的修改,使得将经处理的数据记录输出到多个数据目标的计算机程序可以被修改为将经处理的数据记录仅输出到单个数据目标。其它类型的数据目标(诸如文件系统)可以被用于计算机程序600、经修改的计算机程序604或两者。
在一些示例中,对计算机程序的修改涉及删除数据目标部件602和第一链路608,以及添加数据目标部件610a-610c和第二链路612a-612c以将新添加的数据目标部件610a-610c连接到处理部件。例如,添加数据目标部件中的一者(例如,部件610a)及其对应的链路(例如,链路612a)。部件610a和链路612a然后被复制以生成并连接其它数据目标部件610b、610c。然后改变数据目标部件610b、610c的参数以参考相应的数据目标。
图7示出了计算机程序700和经修改的计算机程序704的示例。计算机程序700的部件706根据第一参数集710实施过程。该更新修改部件706以使得该过程根据第二(不同)参数集712来实施。该修改包括分析计算机程序700以标识包括特定参数、参数表达式或参数值的数据处理部件。在一些示例中,例如通过改变所标识部件的参数集710中的一个或多个参数的值或表达式来修改所标识部件的规格,以生成具有经修改的参数集712的经修改的部件708。在一些示例中,所标识的部件706被删除并被具有不同参数集的新部件708替换。
图8示出了计算机程序800和经修改的计算机程序804的示例。计算机程序800被配置为在本地计算机系统上执行,并且经修改的计算机程序804被配置为使得经修改的计算机程序804的至少一部分的执行发生在基于云的系统上。为了遵守关于基于云的系统中的PII的限制,例如禁止在基于云的系统中处理或存储PII,修改计算机程序,使得由计算机程序800接收和处理的数据记录中的任何PII在到达基于云的系统之前被经修改的计算机程序804匿名化。
计算机程序800的修改包括分析计算机程序以标识数据处理部件(例如,部件806),该数据处理部件被配置为从由数据源部件810表示的数据源接收并处理具有包含PII的一个或多个字段的数据记录。该分析可以是例如与语义发现分析组合执行的数据谱系分析。部件806被修改,使得经修改的计算机程序804的经修改的部件808被配置为在基于云的计算系统上执行,例如,如上所述。另外,在数据源810与部件806之间添加新部件812,使得新部件从数据源810接收数据记录并将数据记录输出到部件808。部件812被配置为在本地(例如,非基于云的)计算机系统上执行,并且实施令牌化服务,该令牌化服务被配置为例如通过用令牌取代PII来匿名化从数据源810接收到的记录的字段中所包含的PII。令牌通过令牌化系统映射回PII,但是确保PII本身不被提供给基于云的系统,在基于云的系统中,经修改的计算机程序804的其它处理操作发生。
在一些示例中,令牌具有与PII不同的格式。例如,当PII是社会安全号码时,PII是九位数字,但是令牌可以是具有不同位数的字母数字值。当令牌的格式不同于PII的格式时,部件808被修改以改变针对要由部件808处理的数据记录的记录格式的定义,以使得部件808与令牌的格式兼容。在一些情况下,其它下游部件也被相应地修改以处理不同记录格式的数据记录。
在一些示例中,如果从计算机程序800输出的数据记录包括PII,则从经修改的计算机程序804输出的数据记录包括用于该PII的相应令牌。在一些示例中,去令牌化部件被添加到经修改的计算机程序804,例如,恰好在目标的上游,以便在本地计算机系统上执行的过程中将PII重新引入到数据记录。在与添加令牌化部件812的方式类似的过程中添加去令牌化部件。
在一些示例中,在搜索和替换过程中自动地标识和替换要被更新的部件。当应用于特定计算机程序时,搜索和替换过程实施查找功能,该查找功能查找计算机程序的部件并获得它们的属性;过滤功能,其过滤具有匹配目标属性(例如,在更新的用户表征中被标识为触发替换的属性)的属性的部件;重新格式化功能,其描述每个替换将如何被执行;以及替换功能,其执行该替换。
图9示出了实施搜索和替换过程的数据流图900的示例。在图9的示例中,搜索和替换过程用可配置为从Hadoop分布式文件系统(HDFS)读取的部件来替换输入文件。数据流图900的第一处理部件902从输入部件904接收数据记录。数据记录提供用于替换过程的指令,包括在其中要执行替换的计算机程序(例如,数据流图)的标识、要被替换的部件的属性、以及替换部件的描述。
第一处理部件902是查找计算机程序的所有部件并获得它们的属性的查找部件。查找部件902将一组数据记录传递给过滤部件906,其中每个记录对应于要在其中执行替换的计算机程序的一个部件。每个记录包括相应部件的标识符(例如,计算机程序的标识、部件的标识符(诸如路径))以及计算机程序的相应部件的属性的列表。
过滤部件906过滤从查找部件902接收的数据记录以保留与具有与目标属性(例如,被标识为在更新的用户表征中触发替换的属性)相匹配的属性的部件相对应的那些记录。在该示例中,过滤部件906过滤数据记录以仅保留与表示输入文件的部件相对应的数据记录。所保留的数据记录被传递给重新格式化部件908。
重新格式化部件908创建描述替换部件的记录,该替换部件将替换与从过滤部件906接收到的记录相对应的每个部件。这些记录可以包括以下数据中的一些或全部:
-其中要执行替换的计算机程序(例如,数据流图)的标识;
-要被替换的计算机程序的部件的标识(例如路径);
-到新替换部件的标识(例如,参数化路径);
-新替换部件的名称;
-替换部件的端口名称的列表(例如,矢量);
-替换部件的端口名称到要被替换的部件的端口名称的映射;
-替换部件的参数名称的列表(例如,矢量);
-替换部件的参数名称到要被替换的部件的参数名称的映射;
-将被替换的实例值的列表(例如,矢量)。
从重新格式化部件908输出的记录表征该替换。这些记录被提供给替换部件910,该替换部件实施由记录所指示的每个部件的替换。替换操作的日志被输出到日志文件912。
图10A和图10B示出了原始数据流图150和经修改的数据流图152的示例,该经修改的数据流图使用自动搜索和替换过程来更新,以用READ HDFS部件156替换被表示为部件154的输入文件。
在一些示例中,在发布之前测试经修改的计算机程序以验证经修改的计算机程序的操作。例如,可以期望经修改的计算机程序输出与由原始计算机程序针对同一组输入数据记录所输出的数据记录相同的数据记录。测试可以涉及向原始计算机程序和经修改的计算机程序两者提供相同的一组输入数据记录,并且从两个计算机程序获得相应组的经处理的数据记录。比较两组经处理的数据记录。如果两组经处理的数据记录匹配,例如相同(例如,在阈值内相同),则验证经修改的计算机程序。如果两组处理数据记录不匹配,则输出错误消息,优选地具有指示如何解决该错误的指导。
在一些示例中,仅测试经修改的计算机程序的一部分,例如仅测试经修改的计算机程序的相对于原始计算机程序被改变的部分。计算机程序的一部分可以通过使用插入(诸如测试源和探针)来测试,该插入是与数据流图中的流相关联的物体。测试源用新数据替换穿过流的数据(例如,上游数据),使得不需要针对计算机程序的每次执行重新运行上游计算。例如,测试源可以替换数据源,使得测试数据记录是从测试源而不是从数据源提供给图。当图执行时,探针监测穿过流的数据记录,并且可以致使数据记录被保存以用于以后的检查或重新使用。例如,探针可以接收数据记录,否则该数据记录将被保存到数据目标,诸如数据库。还可以在数据流图中除了数据源和目标之外的位置处引入插入,使得图开发者能够在数据记录流过图时访问数据记录。通过使用插入,一组输入数据记录可以被提供给原始计算机程序和经修改的计算机程序(紧接在被修改的计算机程序的部分的上游),并且经处理的数据记录可以紧接在经修改的部分的下游被检索。插入的使用可以使得能够进行更有效的测试,因为在测试期间执行少于整个计算机程序的计算机程序。插入的进一步描述可以在名称为“Debugating a Graph”的美国专利号10,055,333和名称为“Application Testing”的美国专利号9,880,818中找到,这两个专利的内容整体以引用方式并入本文。
参考图11,在用于更新计算机程序的示例过程中,接收计算机程序(150)。该计算机程序被配置为当被执行时从数据源接收数据记录,处理被包含在数据记录的字段中的数据,并且将经处理的数据记录输出到数据目标。该计算机程序可以是数据流图,该数据流图包括被配置为处理数据记录的字段中的值的数据处理部件,该数据处理部件由表示数据记录的流的链路连接。
该计算机程序由一个或多个处理器分析以获得该计算机程序的谱系、体系结构和操作的表征(152)。该分析可以包括计算机程序的静态分析、计算机程序的运行时分析、计算机程序的调度分析、计算机程序的数据谱系分析、计算机程序的语义发现分析或其它类型的分析。计算机程序的谱系包括计算机程序的元素之间的关系,并且可选地包括计算机程序与其它计算机程序之间的关系。计算机程序的体系结构包括数据源的特性、数据目标的特性以及被配置为处理被包含在数据记录中的数据的一个或多个处理器的特性。计算机程序的操作包括被执行以处理来自数据记录的数据的计算机程序的过程。
例如通过用户输入到用户界面中来接收(154)要对计算机程序进行的更新的表征。更新使得当根据更新来修改计算机程序时,经修改的计算机程序中的至少一些被配置为托管在第二计算系统(诸如基于云的系统)上并由第二计算系统执行。
修改计算机程序以实施更新,从而生成经修改的计算机程序(156)。修改包括修改计算机程序的谱系、计算机程序的体系结构或计算机程序的操作中的一者或多者。修改可以包括将更新的表征与谱系、体系结构和计算机程序的操作的表征合并。
当计算机程序是数据流图时,修改计算机程序可以包括修改针对数据处理部件的参数的值或表达式,或计算机程序的链路;添加新的数据处理部件或链路,删除数据处理部件或链路,或其它合适的修改。
测试经修改的计算机程序的至少一部分(158)。测试包括向经修改的计算机程序的至少一部分提供输入测试数据记录;以及从经修改的计算机程序的至少一部分获得第一经处理的数据记录。该测试还包括测试与经修改的计算机程序的经测试部分相对应的该计算机程序的至少一部分,包括向该计算机程序的该至少一部分提供输入测试数据记录,以及从该计算机程序的该至少一部分获得第二经处理的数据记录。比较第一经处理的数据记录和第二经处理的数据记录。测试可以包括向经修改的计算机程序馈送测试数据,该测试数据触发计算机程序的每个功能或基本上所有功能以生成经处理的数据记录作为输出。
参考图12,用于更新数据流图的示例过程包括访问数据流图(250)。该数据流图的规格定义节点和一个或多个链路,该节点中的至少一个节点表示数据处理部件,该数据处理部件定义要被执行以处理具有记录格式的数据记录的一个或多个字段中的数据的操作,该数据记录被提供给数据处理部件,并且该一个或多个链路连接节点并且每个链路都表示数据记录流。
生成第一组记录,该第一组记录表示数据流图(252)。这包括生成与数据流图的每个数据处理部件相对应的数据记录,每个数据记录包含:数据处理部件的标识符,以及针对数据处理部件的属性的属性值。
接收对数据流图的更新的表征(254),该更新的表征指示针对特定属性的目标值。基于由更新的表征所指示的目标值来过滤第一组数据记录以获得第二组数据记录(256)。该步骤包括通过过滤去除不包含针对特定属性的属性值(与由更新的表征指示的目标值匹配)的数据记录。
对于第二组数据记录中的每个数据记录,对应的部件被由更新的表征指示的新部件替换(258)。
图13示出了其中可使用本文所述的技术的用于开发的数据处理系统850和执行数据流图的示例。系统850包括数据源852,该数据源可包括一个或多个数据源,诸如存储设备或与在线数据流的连接,其中的每一者可存储或提供以各种格式中的任一种的数据(例如,数据库表、电子表格文件、纯文本文件、或由主机使用的本机格式)。数据可以是逻辑数据、分析数据或工业机器数据。执行环境或运行时环境854包括预处理模块856和执行模块862。执行环境854可例如托管在处于合适操作系统(诸如UNIX操作系统的版本)的控制下的一个或多个通用计算机上。例如,执行环境854可包括多节点并行计算环境,该多节点并行计算环境包括使用多个处理单元(诸如中央处理单元、CPU)或处理器内核的计算机系统的配置,其为本地的(例如,多处理器系统诸如对称多处理(SMP)计算机),或本地分布的(例如,耦接作为群集或大规模并行处理(MPP)系统的多个处理器),或远程或远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多个处理器),或它们的任何组合。
提供数据源852的存储设备可在执行环境854的本地,例如存储在连接到托管执行环境854的计算机的存储介质(例如,硬盘驱动器858)上,或者可远离执行环境854,例如,通过远程连接(例如,由云计算基础设施提供)托管在与托管执行环境854的计算机通信的远程系统(例如,大型计算机860)上。
预处理模块856从数据源852读取数据并准备数据处理应用程序(例如,可执行数据流图)以供执行。例如,预处理模块856可编译数据处理应用程序,存储已编译数据处理应用程序和/或将已编译数据处理应用程序加载到执行环境854可访问的数据存储系统866和/或从其加载已编译数据处理应用程序,并且执行其他任务以准备数据处理应用程序以供执行。
执行模块862执行由预处理模块856准备的数据处理应用程序以处理一组数据并生成由处理产生的输出数据864。输出数据864可被存储回到数据源852中或存储在执行环境854可访问的数据存储系统866中,或以其他方式使用。数据存储系统866也可由任选开发环境868访问,其中开发者870能够设计和编辑将由执行模块862执行的数据处理应用程序。在一些具体实施中,开发环境868是用于开发应用程序作为数据流图的系统,该数据流图包括由顶点之间的有向链路(表示工作元素即数据的流)连接的顶点(表示数据处理部件或数据集)。例如,此类环境在名称为“管理基于图形的应用程序的参数(Managing Parametersfor Graph-Based Applications)”的美国专利公布号2007/0011668中进行更详细描述,其内容整体以引用方式并入本文。用于执行此类基于图形的计算的系统在名称为“执行表达为图的计算(Executing Computations Expressed as Graphs)”的美国专利5,966,072中进行描述,该专利的内容整体以引用方式并入本文。根据该系统进行的数据流图提供了用于获取进出由图部件表示的各个过程的信息、用于在过程之间移动信息以及用于定义过程的运行顺序的方法。该系统包括从任何可用方法中选择过程间通信方法的算法(例如,根据图的链路的通信路径可使用TCP/IP或UNIX域套接字,或使用共享存储器在过程之间传递数据)。
预处理模块856可从可体现数据源852的各种类型的系统(包括不同形式的数据库系统)接收数据。数据可被组织为具有相应字段(也称为“属性”或“列”)的值的记录,包括可能的零值。当首先从数据源读取数据时,预处理模块856通常从关于该数据源中的记录的某个初始格式信息开始。在一些情况下,数据源的记录结构最初可能不知道,并且可替代地在分析数据源或数据之后确定。关于记录的初始信息可包括例如表示不同值的位数、记录内的字段的顺序以及由位表示的值的类型(例如,字符串、符号/无符号整数)。
换句话讲,并且通常适用于本文所述的可执行数据流图,该可执行数据流图实现对从数据源852的一个或多个输入数据集通过数据处理部件流到一个或多个输出数据集的数据执行的基于图形的计算,其中数据图由数据存储装置864中的数据结构指定,数据图具有由数据结构指定并表示通过一个或多个链路连接的数据处理部件的节点,这些链路由数据结构指定并表示数据处理部件之间的数据流。执行环境或运行时环境854耦接到数据存储装置864并且托管在一个或多个计算机上,运行时环境854包括预处理模块856,该预处理模块被配置为读取指定数据流图的存储的数据结构并且分配和配置计算资源(例如,过程、存储器、CPU等)以用于执行由预处理模块856分配给数据流图的数据处理部件的计算,运行时环境854包括执行模块862以调度和控制数据处理部件的计算的执行。换句话讲,托管在一个或多个计算机上的运行时或执行环境854被配置为从数据源852读取数据并使用以数据流图形式表示的可执行计算机程序来处理数据。
上述方法可使用执行合适软件的计算系统来实现。例如,软件可包括在一个或多个编程或可编程计算系统(其可具有各种架构,诸如分布式、客户端/服务器或网格)上执行的一个或多个计算机程序中的过程,每个计算系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户界面(用于使用至少一个输入设备或端口来接收输入,并且用于使用至少一个输出设备或端口来提供输出)。软件可包括例如提供与图的设计、配置和执行相关的服务的较大程序的一个或多个模块。程序的模块(例如,图形的元素)可被实现为符合存储在数据存储库中的数据模型的数据结构或其他有组织的数据。
软件可设置在有形非暂态介质诸如CD-ROM或其他计算机可读介质(例如,可由通用或专用计算系统或设备读取)上,或者通过网络的通信介质递送(例如,编码在传播信号中)到执行软件的计算系统的有形非暂态介质。一些或所有的处理可在专用计算机上执行,或使用专用硬件诸如协处理器或现场可编程门阵列(FPGA)或专用的专用集成电路(ASIC)来执行。处理可以分布式方式实现,其中由软件指定的计算的不同部分由不同的计算元件执行。每个此类计算机程序优选地存储在通用或专用可编程计算机可访问的存储设备的计算机可读存储介质(例如,固态存储器或介质,或者磁介质或光学介质)上或下载到该计算机可读存储介质,以用于在计算机读取存储设备介质时配置和操作计算机以执行本文所述的处理。本发明的系统还可被认为是被实现为配置有计算机程序的有形非暂态介质,其中这样配置的介质致使计算机以特定且预定义的方式操作以执行本文所述的一个或多个处理步骤。
已经描述了多个实施方案。然而,应当理解,在不偏离本发明的精神和范围的情况下,可做出各种改变。例如,上述步骤中的一些步骤可以是与顺序无关的,并且因此可以与所述顺序不同的顺序执行。
其他实施方式也在以下权利要求书的范围内。
Claims (28)
1.一种用于更新计算机程序的方法,所述方法由计算系统实施并且包括:
接收计算机程序,所述计算机程序被配置为托管在第一计算系统上并由所述第一计算系统执行,其中,所述计算机程序被配置为:当被执行时从数据源接收数据记录,处理被包含在所述数据记录的字段中的数据,以及将包含经处理的数据的数据记录输出到数据目标;
通过一个或多个处理器分析所述计算机程序以获得所述计算机程序的谱系、体系结构和操作的表征,其中:
所述计算机程序的谱系包括所述计算机程序的元素之间的关系、所述计算机程序与其它计算机程序之间的关系、或两者,所述计算机程序的体系结构包括所述数据源的特性、所述数据目标的特性以及被配置为处理被包含在所述数据记录中的数据的一个或多个处理器的特性,并且
所述计算机程序的操作包括被执行以处理来自所述数据记录的数据的计算机程序的过程;
接收要对所述计算机程序进行的更新的表征,其中当根据所述更新修改所述计算机程序时,所述经修改的计算机程序中的至少一些被配置为托管在第二计算系统上并由所述第二计算系统执行;以及
修改所述计算机程序来实施所述更新以生成所述经修改的计算机程序,包括:修改所述计算机程序的谱系、所述计算机程序的体系结构或所述计算机程序的操作中的一者或多者。
2.根据权利要求1所述的方法,其中,所述第二计算系统是基于云的系统。
3.根据前述权利要求中任一项所述的方法,其中,修改所述计算机程序包括将所述更新的表征与所述计算机程序的所述谱系、所述体系结构和所述操作的表征合并。
4.根据前述权利要求中任一项所述的方法,其中,所述计算机程序包括数据处理部件,所述数据处理部件被配置为从所述数据源接收所述数据记录,处理接收到的数据记录的字段中的值,以及输出包含所述值的处理结果的数据记录,其中所述数据处理部件通过表示数据记录的流的链路而被连接。
5.根据权利要求4所述的方法,其中,修改所述计算机程序包括修改针对所述数据处理部件的参数的值或表达式,或所述计算机程序的链路。
6.根据权利要求4或5所述的方法,其中,修改所述计算机程序包括添加新的数据处理部件、删除数据处理部件、添加新的链路或删除链路。
7.根据前述权利要求中任一项所述的方法,其中,所述更新的表征包括用于所述计算机程序的至少一部分的分布式处理方案的表征,并且其中修改所述计算机程序包括修改所述计算机程序的布局以根据所述分布式处理方案来实施处理操作的分布。
8.根据权利要求7所述的方法,其中,修改所述计算机程序包括:
生成用于第一新数据处理部件的规格,所述第一新数据处理部件被配置为实施划分操作;
生成用于第二新数据处理部件的规格,所述第二新数据处理部件被配置为实施聚集操作;
在所述计算机程序的至少一部分的上游将所述第一新数据处理部件插入到所述计算机程序中;以及
在所述计算机程序的至少一部分的下游将所述第二新数据处理部件插入到所述计算机程序中。
9.根据前述权利要求中任一项所述的方法,其中,所述数据源包括第一文件系统或数据库,并且其中要对所述计算机程序进行的更新的所述表征包括第二文件系统或数据库的标识,所述经修改的计算机程序将从所述第二文件系统或数据库接收数据记录,并且。
10.根据权利要求9所述的方法,其中,修改所述计算机程序包括:
删除与所述第一文件系统或数据库相对应的所述计算机程序的第一数据源部件;以及
插入与所述第二文件系统或数据库相对应的第二数据源部件。
11.根据前述权利要求中任一项所述的方法,其中,所述数据目标包括第一文件系统或数据库,并且其中要对所述计算机程序进行的所述更新的表征包括所述经修改的计算机程序要输出数据记录所针对的一组多个第二文件系统或数据库的标识,其中所述第二文件系统或数据库中的至少一个处于与所述第二文件系统或数据库中的至少另一个的位置不同的位置。
12.根据权利要求11所述的方法,其中,修改所述计算机程序包括:
复制所述计算机程序中的流,所述流将所述计算机程序的数据处理部件连接到与所述第一文件系统或数据库相对应的第一数据目标部件;
插入与所述第二文件系统或数据库中的第一文件系统或数据库相对应的新部件,其中,所述复制的流将所述数据处理部件连接到所述新部件。
13.根据权利要求11或12所述的方法,其中,所述第二文件系统或数据库是基于云的文件系统或数据库,并且其中所述更新的表征包括要被存储在非基于云的存储位置中的数据的第一特性的标识、要被存储在所述第二基于云的文件系统或数据库中的数据的第二特性的标识、或两者。
14.根据权利要求13所述的方法,其中,分析所述计算机程序包括进行数据谱系分析,并且包括基于所述数据谱系分析来标识第一部件、第二部件或两者,所述第一部件被配置为接收或输出具有所述第一特性的数据记录,所述第二部件被配置为接收或输出具有所述第二特性的数据记录。
15.根据权利要求13或14所述的方法,其中,所述第一特性包括个人可识别信息(PII)。
16.根据权利要求13至15中任一项所述的方法,其中,修改所述计算机程序包括修改用于第一数据处理部件的规格、修改用于第二数据处理部件的规格或两者,所述第一数据处理部件输出具有所述第一特性的数据,所述第二数据处理部件输出具有所述第二特性的数据。
17.根据前述权利要求中任一项所述的方法,其中,修改所述计算机程序包括:
标识实施了第一类型的文件传输协议的所述计算机程序的数据处理部件;以及
根据第二类型的文件传输协议修改用于所述数据处理部件的规格,其中,所述更新的表征包括从所述第一类型的文件传输协议到所述第二类型的文件传输协议的改变的指示。
18.根据权利要求17所述的方法,其中,修改用于所述数据处理部件的规格包括改变针对所述数据处理部件的一个或多个参数中的每一个参数的值或表达式。
19.根据前述权利要求中任一项所述的方法,其中,所述更新的表征包括对个人可识别信息(PII)的匿名化的要求。
20.根据权利要求19所述的方法,其中,分析所述计算机程序包括标识数据处理部件,所述数据处理部件被配置为接收具有包含PII的一个或多个字段的第一数据记录,并且其中修改所述计算机程序包括在所标识的数据处理部件的上游添加被配置为实施令牌化服务的部件,所述令牌化服务被配置为接收所述第一数据记录并且将被包含在所接收的记录的字段中的所述PII泛化。
21.根据权利要求20所述的方法,其中,修改所述计算机程序包括修改所标识的数据处理部件的规格,以改变针对要由所标识的数据处理部件处理的数据记录的记录格式的定义。
22.根据权利要求21所述的方法,其中,所述第二计算系统是基于云的计算系统,并且其中修改所述计算机程序包括指定用于所述令牌化服务的执行的非基于云的计算系统。
23.根据前述权利要求中任一项所述的方法,所述方法包括:
测试所述经修改的计算机程序的至少一部分,所述测试包括:
向所述经修改的计算机程序的所述至少一部分提供输入测试数据记录;以及
从所述经修改的计算机程序的所述至少一部分获得第一经处理的数据记录;以及
测试所述计算机程序的至少一部分,其中所述计算机程序的所述至少一部分对应于所述经修改的计算机程序的被测试部分,其中测试所述计算机程序的所述至少一部分包括:
向所述计算机程序的所述至少一部分提供所述输入测试数据记录,以及
从所述计算机程序的所述至少一部分获得第二经处理的数据记录;以及
比较所述第一经处理的数据记录和所述第二经处理的数据记录。
24.根据前述权利要求中任一项所述的方法,所述方法包括将所述经修改的计算机程序迁移到所述第二计算系统。
25.根据前述权利要求中任一项所述的方法,其中,修改所述计算机程序包括:
标识所述计算机程序的数据处理部件,所述数据处理部件具有与由所述更新的表征指示的目标属性值相匹配的属性值;以及
用新的数据处理部件替换所标识的数据处理部件。
26.根据权利要求25所述的方法,其中,标识所述计算机程序的具有与由所述更新的表征指示的目标属性值相匹配的属性值的数据处理部件包括:
生成第一组数据记录,包括生成与所述计算机程序的每个数据处理部件相对应的数据记录,其中每个数据记录包含相应数据处理部件的标识符和针对所述相应数据处理部件的属性的属性值;以及
基于被包含在所述第一组中的数据记录中的属性值过滤所述第一组数据记录以获得第二组数据记录,包括通过所述过滤去除不包含针对与由所述更新的表征所指示的目标属性值相匹配的特定属性的值的所述第一组中的数据记录。
27.一种用于更新计算机程序的计算机系统,所述计算机系统包括被耦合到存储器的一个或多个处理器,所述一个或多个处理器和存储器被配置为执行根据前述权利要求中的任一项所述的操作。
28.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储用于使计算系统执行用于更新计算机程序的操作的指令,所述操作包括根据权利要求1至26中任一项所述的操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 |
---|---|
CN118202331A true CN118202331A (zh) | 2024-06-14 |
Family
ID=91404736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280073460.XA Pending CN118202331A (zh) | 2021-10-08 | 2022-10-06 | 计算机程序的自动修改 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118202331A (zh) |
-
2022
- 2022-10-06 CN CN202280073460.XA patent/CN118202331A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10901702B2 (en) | Managing interfaces for sub-graphs | |
AU2021201363B2 (en) | Format-specific data processing operations | |
US20230112179A1 (en) | Automated modification of computer programs | |
CN118202331A (zh) | 计算机程序的自动修改 | |
JP2024538609A (ja) | コンピュータプログラムの自動修正 | |
EP4413458A2 (en) | Automated modification of computer programs | |
US11487534B2 (en) | Static and runtime analysis of computer program ecosystems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |