计算机程序系统的静态分析和运行时分析转让专利

申请号 : CN202080037959.6

文献号 : CN114207594B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 约翰·乔伊斯马歇尔·A·伊斯曼山姆·肯德尔

申请人 : 起元技术有限责任公司

摘要 :

一种用于分析包括多个计算机程序的计算机程序生态系统的方法包括执行对该生态系统的静态分析,包括基于与该生态系统相关联的参数集中的参数的值识别生态系统元素之间的静态依赖性,这些元素包括计算机程序以及与计算机程序相关联的数据资源。该方法包括执行对该生态系统的运行时分析,包括识别在执行该生态系统期间被利用以处理数据记录的元素。该方法包括执行对该生态系统的调度分析,包括识别具有对另一个计算机程序的调度依赖性的计算机程序。该方法包括基于该静态分析、该运行时分析以及该调度分析的结果将这些元素的子集识别为生态系统单元;以及将该生态系统单元从第一计算机系统迁移到第二计算机系统,测试该生态系统单元,或这两者。

权利要求 :

1.一种用于分析包括多个计算机程序的计算机程序生态系统的计算机实施的方法,该方法包括:执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源;

执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素;

执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序;

基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元;以及将该生态系统单元从第一计算机系统迁移到第二计算机系统,或测试该生态系统单元,或将该生态系统单元从第一计算机系统迁移到第二计算机系统并且测试该生态系统单元。

2.如权利要求1所述的方法,其中,执行该运行时分析包括获得通过执行该计算机程序生态系统生成的运行时日志信息;以及分析该运行时日志信息以识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用的该一个或多个元素。

3.如权利要求2所述的方法,其中,分析该运行时日志信息包括分析该运行时日志信息中的参数的值以识别在执行该计算机程序生态系统期间被执行的一个或多个计算机程序。

4.如权利要求3所述的方法,其中,将该元素的子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被执行的这些计算机程序识别为该生态系统单元的部分。

5.如权利要求3所述的方法,其中,识别在执行该计算机程序生态系统期间被执行的一个或多个计算机程序包括识别这些被执行的计算机程序之间的运行时依赖性。

6.如权利要求5所述的方法,其中,识别这些被执行的计算机程序之间的运行时依赖性包括基于该运行时日志信息中的参数的值来识别这些运行时依赖性。

7.如权利要求3所述的方法,其中,分析该运行时日志信息中的参数的值包括概括这些值中的一个或多个。

8.如权利要求3所述的方法,其中,分析该运行时日志信息包括分析该运行时日志信息中的参数的值以识别在执行该计算机程序生态系统期间被访问的一个或多个数据资源。

9.如权利要求8所述的方法,包括分析该运行时日志信息中的参数的值以确定在执行该计算机程序生态系统期间被访问的每个数据资源的名称。

10.如权利要求8所述的方法,其中,将该元素的子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被访问的这些数据资源识别为该生态系统单元的部分。

11.如权利要求1所述的方法,其中,将该计算机程序生态系统的元素的子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被利用的该一个或多个元素包括在该生态系统单元中。

12.如权利要求1所述的方法,其中,执行调度分析包括从调度器获得调度信息,其中,该调度器不同于该计算机程序生态系统。

13.如权利要求1所述的方法,其中,执行调度分析包括识别该计算机程序生态系统的被调度为在该计算机程序生态系统的第二计算机程序执行之后执行的第一计算机程序。

14.如权利要求13所述的方法,其中,将该元素的子集识别为该生态系统单元包括将该第一计算机程序和该第二计算机程序识别为该生态系统单元的部分。

15.如权利要求2所述的方法,包括执行该计算机程序生态系统以处理数据。

16.如权利要求15所述的方法,其中,执行该计算机程序生态系统包括根据与该计算机程序生态系统相关联的一个或多个参数集中的参数的值来实例化该计算机程序生态系统的计算机程序中的一个或多个。

17.如权利要求16所述的方法,其中,执行该计算机程序生态系统包括执行一个或多个实例化的计算机程序以处理该数据。

18.如权利要求17所述的方法,其中,该运行时日志信息包括指示一个或多个被执行的实例化的计算机程序的信息。

19.如权利要求15所述的方法,其中,执行该计算机程序生态系统包括访问与该计算机程序生态系统相关联的一个或多个数据资源。

20.如权利要求19所述的方法,其中,该运行时日志信息包括指示一个或多个被访问的数据资源的信息。

21.如权利要求19所述的方法,其中,访问与该计算机程序生态系统相关联的数据资源包括从文件、数据库和对象中的一个或多个读取数据。

22.如权利要求19所述的方法,其中,访问与该计算机程序生态系统相关联的数据资源包括向文件、数据库和对象中的一个或多个写入数据。

23.如权利要求19所述的方法,其中,执行该计算机程序生态系统包括生成该运行时日志信息。

24.如权利要求23所述的方法,其中,生成该运行时日志信息包括将该运行时日志信息写入日志文件。

25.如权利要求1所述的方法,其中,该多个计算机程序包括数据流图。

26.一种用于分析包括多个计算机程序的计算机程序生态系统的计算机系统,该计算机系统包括:耦接到存储器的一个或多个处理器,该一个或多个处理器被配置为:

执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源;

执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素;

执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序;

基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元;以及将该生态系统单元从第一计算机系统迁移到第二计算机系统,或测试该生态系统单元,或将该生态系统单元从第一计算机系统迁移到第二计算机系统且测试该生态系统单元。

27.一种存储有指令的非暂态计算机可读介质,这些指令用于使计算机系统分析包括多个计算机程序的计算机程序生态系统,这些指令使该计算机系统:执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源;

执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素;

执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序;

基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元;以及将该生态系统单元从第一计算机系统迁移到第二计算机系统,或测试该生态系统单元,或将该生态系统单元从第一计算机系统迁移到第二计算机系统且测试该生态系统单元。

28.一种用于分析包括多个计算机程序的计算机程序生态系统的计算机系统,该计算机系统包括:用于执行对该计算机程序生态系统的静态分析的装置,该静态分析包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源;

用于执行对该计算机程序生态系统的运行时分析的装置,该运行时分析包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素;

用于执行对该计算机程序生态系统的调度分析的装置,该调度分析包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序;

用于基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元的装置;以及用于将该生态系统单元从第一计算机系统迁移到第二计算机系统,或测试该生态系统单元,或将该生态系统单元从第一计算机系统迁移到第二计算机系统且测试该生态系统单元的装置。

说明书 :

计算机程序系统的静态分析和运行时分析

[0001] 优先权声明
[0002] 本申请要求于2020年1月17日提交的美国专利申请序列号16/746,392的优先权,该美国专利申请根据35 U.S.C.§119(e)要求于2019年5月22日提交的美国专利申请序列号62/851,295的优先权,这两个专利申请的全部内容通过援引并入本文。

背景技术

[0003] 数据处理系统可以包括可以被执行以处理输入数据的多个计算机程序。在数据处理系统内,在生成输出数据集之前,数据可以从一个计算机程序传递到另一个计算机程序。

发明内容

[0004] 本文描述了用于分析计算机程序和相关联的数据资源(在此称为计算机程序生态系统)以将这些计算机程序和数据资源的子集识别为生态系统单元,并使用通过该分析识别出的生态系统单元来执行一个或多个系统任务的方法。该生态系统单元中的计算机程序和数据资源可以基于对彼此的静态依赖性和/或运行时依赖性而被识别。当计算机程序生态系统被执行时,某些计算机程序被执行,并且某些数据资源被正在执行的计算机程序访问。通过将静态依赖性与指示哪些计算机程序被执行以及哪些数据资源被访问的信息进行比较,可以识别生态系统单元。将形成生态系统单元的计算机程序和数据资源视为单一实体以执行诸如从一个计算系统迁移到另一个计算系统的或测试计算机程序生态系统等系统任务可以促进系统任务。通过将生态系统单元视为整体以用于系统任务可以节省系统的计算数据资源(例如,存储器、处理能力、处理时间),同时使得能够将计算机程序生态系统的所有相关元素包括到系统任务的执行中,例如从而使得能够更高效地执行系统任务,这消耗较少的处理能力。
[0005] 一方面,一种用于分析包括多个计算机程序的计算机程序生态系统的计算机实施的方法包括执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源。该方法包括执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素。该方法包括执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序。该方法包括基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元。该方法包括将该生态系统单元从第一计算机系统迁移到第二计算机系统,测试该生态系统单元,或这两者。
[0006] 实施例可以包括以下特征中的一个或多个特征的任何组合。
[0007] 执行该运行时分析包括获得通过执行该计算机程序生态系统生成的运行时日志信息;以及分析该运行时日志信息以识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用的该一个或多个元素。分析该运行时日志信息包括分析该运行时日志信息中的参数的值以识别在执行该计算机程序生态系统期间被执行的一个或多个计算机程序。将该元素子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被执行的这些计算机程序识别为该生态系统单元的部分。识别该计算机程序生态系统的在执行该计算机程序生态系统期间被执行的一个或多个计算机程序包括识别这些被执行的计算机程序之间的运行时依赖性。识别这些被执行的计算机程序之间的运行时依赖性包括基于该运行时日志信息中的参数的值来识别这些运行时依赖性。分析运行时日志信息中参数的值包括概括这些值中的一个或多个。分析该运行时日志信息包括分析该运行时日志信息中的参数的值以识别在执行该计算机程序生态系统期间被访问的一个或多个数据资源。该方法包括分析该运行时日志信息中的参数的值以确定在执行该计算机程序生态系统期间被访问的每个数据资源的名称。将该元素子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被访问的这些数据资源识别为该生态系统单元的部分。
[0008] 将该计算机程序生态系统的元素的子集识别为该生态系统单元包括将在执行该计算机程序生态系统期间被利用的该一个或多个元素包括在该生态系统单元中。
[0009] 执行调度分析包括从调度器获得调度信息,其中,该调度器不同于该计算机程序生态系统。
[0010] 执行调度分析包括识别该计算机程序生态系统的被调度为在该计算机程序生态系统的第二计算机程序执行之后执行的第一计算机程序。将该元素子集识别为该生态系统单元包括将该第一计算机程序和该第二计算机程序识别为该生态系统单元的部分。
[0011] 该方法包括执行该计算机程序生态系统以处理数据。执行该计算机程序生态系统包括根据与该计算机程序生态系统相关联的一个或多个参数集中的参数的值来实例化该计算机程序生态系统的计算机程序中的一个或多个。执行该计算机程序生态系统包括执行该一个或多个实例化的计算机程序以处理该数据。该运行时日志信息包括指示该一个或多个被执行的实例化的计算机程序的信息。执行该计算机程序生态系统包括访问与该计算机程序生态系统相关联的一个或多个数据资源。该运行时日志信息包括指示该一个或多个被访问的数据资源的信息。访问与计算机程序生态系统相关联的数据资源包括从文件、数据库和对象中的一个或多个读取数据。访问与计算机程序生态系统相关联的数据资源包括向文件、数据库和对象中的一个或多个写入数据。执行该计算机程序生态系统包括生成该运行时日志信息。生成该运行时日志信息包括将该运行时日志信息写入日志文件。
[0012] 该一个或多个计算机程序包括数据流图。
[0013] 一方面,一种用于分析包括多个计算机程序的计算机程序生态系统的计算机系统包括耦接到存储器的一个或多个处理器。该一个或多个处理器被配置为执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源。该一个或多个处理器被配置为执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素。该一个或多个处理器被配置为执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序。该一个或多个处理器被配置为基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元。该一个或多个处理器被配置为将该生态系统单元从第一计算机系统迁移到第二计算机系统,测试该生态系统单元,或这两者。
[0014] 一方面,一种计算机可读介质存储有指令,这些指令用于使计算机系统分析包括多个计算机程序的计算机程序生态系统。这些指令使计算机系统执行对该计算机程序生态系统的静态分析,包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源。这些指令使计算机系统执行对该计算机程序生态系统的运行时分析,包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素。这些指令使计算机系统执行对该计算机程序生态系统的调度分析,包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序。这些指令使计算机系统基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元。这些指令使计算机系统将该生态系统单元从第一计算机系统迁移到第二计算机系统,测试该生态系统单元,或这两者。
[0015] 一方面,一种用于分析包括多个计算机程序的计算机程序生态系统的计算机系统包括用于执行对该计算机程序生态系统的静态分析的装置,该静态分析包括基于与该计算机程序生态系统相关联的一个或多个参数集中的参数的值识别该计算机程序生态系统的元素之间的静态依赖性,该计算机程序生态系统的元素包括该计算机程序生态系统的该多个计算机程序以及与这些计算机程序相关联的数据资源。该计算机系统包括用于执行对该计算机程序生态系统的运行时分析的装置,该运行时分析包括识别该计算机程序生态系统的在执行该计算机程序生态系统期间被利用以处理数据记录的一个或多个元素。该计算机系统包括用于执行对该计算机程序生态系统的调度分析的装置,该调度分析包括识别该计算机程序生态系统的具有对该计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序。该计算机系统包括用于基于该静态分析、该运行时分析以及该调度分析的结果将该计算机程序生态系统的元素的子集识别为生态系统单元的装置。该计算机系统包括用于将该生态系统单元从第一计算机系统迁移到第二计算机系统、测试该生态系统单元、或这两者的装置。
[0016] 在以下附图和描述中阐述了一个或多个实施方式的细节。其他特征和优点将根据描述和附图并且根据权利要求而变得明显。

附图说明

[0017] 图1A至图1D是计算机程序生态系统的图示。
[0018] 图2是迁移生态系统单元图示。
[0019] 图3是测试生态系统单元的图示。
[0020] 图4是用于分析计算机程序生态系统的系统的图示。
[0021] 图5A是数据流图。
[0022] 图5B是图5A的数据流图的运行时配置。
[0023] 图6用于计算机程序生态系统的运行时分析的流程图。
[0024] 图7是流程图。
[0025] 图8是计算系统的图示。

具体实施方式

[0026] 本文描述了用于分析包括多个计算机程序的计算机程序生态系统的方法,并且使用这些方法可将多个数据资源进行关联以将计算机程序和数据资源的子集识别为生态系统单元。计算机程序生态系统是多个计算机程序以及与这些计算机程序相关联的数据资源的集合。数据资源是数据存储库,诸如供计算机程序生态系统中的一个或多个计算机程序处理的数据、在由计算机程序生态系统中的一个或多个计算机程序进行处理期间用作参考数据的数据(例如,数据记录)的源,或在由计算机程序生态系统中的一个或多个计算机程序处理数据之后的数据(例如,数据记录)的目的地。基于计算机程序生态系统的静态分析、运行时分析和调度分析的指示计算机程序生态系统的元素之间的依赖性的结果来识别生态系统单元。诸如迁移计算机程序和资源或测试计算机程序等系统任务可以使用生态系统单元而不是整个计算机程序生态系统来执行,从而节省诸如处理能力或存储器等系统资源。
[0027] 计算机程序生态系统的计算机程序和数据资源可能具有对彼此的静态依赖性。两个元素(例如,计算机程序和/或数据资源)之间的静态依赖性是由先前存储的与计算机程序生态系统相关联的参数集中的值所定义的依赖性。计算机程序生态系统的元素之间的静态依赖性可以通过对所存储的参数集中的值的静态分析来识别。
[0028] 计算机程序生态系统的计算机程序和数据资源可能具有直到计算机程序生态系统的运行时才被定义的对彼此的依赖性。当执行计算机程序生态系统以处理数据记录时,执行命令可以包括参数值,这些参数值例如作为先前存储的定义静态依赖性的参数集中的参数值的补充或替代。在执行计算机程序生态系统期间生成的运行时日志可以指示这些参数值,这些参数值指示哪些计算机程序被执行、哪些数据资源被访问。运行时分析(例如,对运行时日志的分析)可以识别在静态分析中并不明显的计算机程序生态系统的元素之间的依赖性。
[0029] 计算机程序生态系统的计算机程序还可能具有对彼此的调度依赖性。用于处理数据记录而进行的计算机程序生态系统的执行可以通过调度器来控制,该调度器规定何时执行特定元素(例如,计算机程序)。在一些情况中,该调度器可以规定第一计算机程序或第一组计算机程序在第二计算机程序或第二组计算机程序执行之后执行。调度分析(例如,对由调度器规定的调度信息的分析)可以识别计算机程序之间的调度依赖性,即使那些计算机程序彼此不具有静态依赖性或运行时依赖性。
[0030] 通过将静态依赖性、运行时分析结果以及调度依赖性进行比较,可以形成计算机程序生态系统的元素之间的依赖性的全貌。依赖于另一个元素或受另一个元素依赖的元素可以通过将静态分析、运行时分析以及调度分析相结合的方式来识别。这些识别出的元素共同形成生态系统单元。将形成生态系统单元的计算机程序和数据资源视为单一实体可以促进系统任务,诸如,从一个计算系统到另一个计算系统的迁移、或计算机程序生态系统的测试。
[0031] 参考图1A,计算机程序生态系统100包括多个计算机程序102a‑102h(统称为计算机程序102)。至少一些计算机程序102静态地依赖于一个或多个其他计算机程序102。例如,计算机程序102d接收由计算机程序102d上游的计算机程序102a处理并输出的数据(例如,数据记录)作为输入。静态依赖性是可以在计算机程序的运行时之前的静态分析中例如基于对所存储的参数值或与计算机程序相关联的源代码的分析来确定的依赖性。
[0032] 在图1A示例中,计算机程序生态系统100的计算机程序102为数据流图。数据流图是呈图的形式的可执行计算机程序,该图可以包括节点,这些节点是可执行数据处理组件和数据资源(诸如数据源和数据接收器)。数据资源可以是例如文件、数据库表或可提供数据(例如,数据记录)以供图进行处理或接收由图的数据处理组件进行处理的数据的其他类型的数据源或接收器。数据处理组件和数据资源有时统称为图的节点。连接图的两个节点的链路被提供用于节点之间的信息(诸如,数据或控制信号)流。这样的数据流图(有时称为图)可以是数据处理图或控制一个或多个图的执行的计划。可以执行数据流图以进行对信息的处理。在一些示例中,数据流图的一个或多个数据处理组件可以是子图。
[0033] 一个或多个数据资源104a‑104j(统称为数据资源104)可以与计算机程序生态系统100相关联。数据资源是数据存储库,例如要由计算机程序生态系统处理或在由计算机程序生态系统处理期间(例如,在由计算机程序生态系统的计算机程序处理期间)使用的数据的源,或由计算机程序生态系统输出的数据的目的地。数据资源的示例包括文件、数据库(例如,数据库表)、队列、对象和其他类型的数据资源。访问资源意指从数据资源读取数据或将数据写入数据资源。至少一些数据资源104静态地依赖于计算机程序生态系统100的一个或多个计算机程序102,或至少一些计算机程序102静态地依赖于一个或多个数据资源104,或这两种情况同时存在。例如,所存储的参数值可以指示计算机程序102a与数据资源
104a、104f之间的静态依赖性:来自数据资源104a的数据被提供作为相关计算机程序102a的输入,该计算机程序进而将数据记录输出至数据资源104f。
[0034] 计算机程序生态系统的元素(例如,计算机程序生态系统100中的计算机程序102以及与计算机程序生态系统100相关联的数据资源104)之间的静态依赖性由与计算机程序生态系统100相关联的一个或多个参数集指定。这些参数集可以与特定的计算机程序102、与特定的资源104、或总体上与计算机程序生态系统100相关联。参数集可以由与计算机程序102、资源104或生态系统100相关联的文件来定义,该文件包含该参数集的参数的值(或可用于确定值的信息)。如下所讨论的,可以执行对计算机程序生态系统的静态分析以基于这些参数集中的参数的解析参数值来识别计算机程序生态系统的元素之间的静态依赖性。
[0035] 参考图1B,可以执行计算机程序生态系统100以处理输入数据(诸如,输入数据记录)。并非计算机程序生态系统100的所有元素(例如,计算机程序102和数据资源104)都一定会在处理给定的输入数据集时利用。例如,在执行计算机程序生态系统100期间,可以执行少于计算机程序生态系统100的所有计算机程序102的程序,和/或可以访问少于与计算机程序生态系统100相关联的所有数据资源104的数据资源。
[0036] 在图1B的示例中,在执行计算机程序生态系统100期间,计算机程序102a、102b和102d‑102f被执行并且数据资源104a、104b和104f被访问以处理输入数据。其他元素(例如,计算机程序102c、102g和102h以及数据资源104c、104d、104e和104g‑104j)未被利用,如图
1B中的灰色阴影所示。
[0037] 计算机程序生态系统响应于执行命令而被执行,该执行命令可以接收参数值作为供给到执行命令的自变量,例如作为先前存储的参数集的补充或替代。计算机程序生态系统的静态分析仅仅基于所存储的参数集来确定静态依赖性;因此,与源自供给到执行命令的自变量的参数值相关联的参数集并未在静态分析中确定的静态依赖性中被表现出来。仅基于静态分析来识别生态系统单元可能会因此导致不能完整或正确地识别构成该生态系统单元的元素。
[0038] 可以执行运行时分析来识别计算机程序生态系统100的在执行计算机程序生态系统100期间被利用的元素,从而补充由静态分析提供的计算机程序生态系统的表征。在执行计算机程序生态系统100期间会生成运行时日志信息,该运行时日志信息指示与计算机程序生态系统100相关联的一个或多个参数集中的参数的值。运行时分析涉及分析运行时日志信息中的参数的值以识别在执行计算机程序生态系统期间被利用的元素。例如,在执行计算机程序生态系统期间,被写入文件或表的日志信息可以包括计算机程序生态系统的被执行或被访问的元素的标识符。运行时分析可以解释日志信息以获得在执行期间被执行或被访问的元素的列表。
[0039] 在一些示例中,可以通过调度器控制计算机程序生态系统100的执行。在一些示例中,该执行可以被调度到特定的时间(例如,信用卡记录处理生态系统可以被调度到每晚11:00执行;电话记录处理生态系统可以被调度到周六凌晨2:00执行)。在一些示例中,执行可以被调度成使得计算机程序生态系统的一个或多个计算机程序被调度为在计算机程序生态系统的一个或多个其他的计算机程序之前或之后执行,这被称为调度依赖性。在一些示例中,可以在生态系统单元的识别中考虑计算机程序102的调度依赖性。例如,具有调度依赖性的计算机程序可以包括在生态系统单元中,即使那些计算机程序在计算机程序生态系统100的静态分析或运行时分析中未被识别。
[0040] 参考图1C,调度分析可以识别计算机程序生态系统100中具有对彼此的调度依赖性的计算机程序。在图1C的示例中,调度分析揭示计算机程序102h具有对计算机程序102f的调度依赖性,这意味着计算机程序102h被调度为在已经执行完计算机程序102f之后运行。
[0041] 在一些示例中,调度分析可以捕获计算机程序102之间的未被静态分析或运行时分析反映出的依赖性。在图1C的示例中,计算机程序102h具有对计算机程序102f的调度依赖性而不是静态依赖性。另外,如图1B所示,未识别出计算机程序102h与计算机程序102f之间的运行时依赖性。例如,这可能是因为计算机程序102f被调度为在计算机程序102h之后执行仅与一周中的某些天有关,并且因此未被运行时分析捕获。
[0042] 计算机程序生态系统的静态分析、运行时分析以及调度分析的结果可以用于将计算机程序生态系统的元素的子集识别为生态系统单元。例如,在执行计算机程序生态系统期间被利用的元素(加之静态地依赖于被利用元素的任何其他元素或受被利用元素静态地依赖的任何其他元素)、以及与被利用元素共享调度依赖性的任何元素可以形成生态系统单元。参考图1D,在计算机程序生态系统100中,计算机程序102a、b、d‑f、h以及资源104a、b、f形成生态系统单元。这些计算机程序和资源先前通过静态分析和运行时分析(图1A和图1B)以及调度分析(图1C)的方式被识别。其余的计算机程序102c、g和资源104c、e、h、g、j(以灰色阴影标记)不是该生态系统单元的部分。
[0043] 用户(诸如系统开发者或系统工程师)或自动化计算机实施操作有时可以使用计算机程序生态系统来执行系统任务,诸如,测试计算机程序生态系统、将计算机程序生态系统从一个计算系统迁移到另一个计算系统、或从计算机程序生态系统归档或消除未使用的代码。为了节省系统资源(例如,处理能力或存储器容量)同时确保在给定的系统任务中寻址计算机程序生态系统的所有适合元素,可以使用生态系统单元而不是使用计算机程序生态系统作为整体来执行系统任务。
[0044] 图2描绘了将计算机程序生态系统100从第一计算系统202迁移至第二基于云的计算系统204的示例。为了迁移计算机程序生态系统100,仅将被识别为计算机程序元素生态系统的生态系统单元150的部分的计算机程序生态系统的元素从第一计算系统202迁移到第二计算系统204。将整个计算机程序生态系统100从第一计算系统202迁移到第二计算系统204可能是例如在时间、带宽、存储器或其他因素方面成本较高的过程。在不理解计算机程序生态系统100的元素之间的关系或在执行计算机程序生态系统100期间每个元素的状态的情况下迁移计算机程序生态系统100的部分可能会导致无法迁移与给定的任务相关的所有元素。通过将生态系统单元150作为整体迁移而不迁移不是形成生态系统单元的部分的元素可以节省系统资源,同时使得能够迁移计算机程序生态系统的所有相关元素。
[0045] 图3描绘了测试计算机程序生态系统100的示例。计算机程序生态系统100可以实施(例如由计算机程序指定和施加的)一个或多个数据处理规则,每个数据处理规则对至少一个输入值进行操作并且生成至少一个输出值。在处理数据集期间(例如,在处理给定数据记录期间)是否执行给定的数据处理规则可以直接或间接地取决于该数据集中的值(诸如,数据记录的一个或多个字段中的每个字段的值)。
[0046] 为了测试计算机程序生态系统100,可以将诸如数据源(例如,文件或表)等资源例如从托管计算机程序生态系统100的服务器312复制到较低的环境310上,并且在该较低环境中使用计算机程序生态系统100的计算机程序的实例化进行测试。为了更高效地为计算机程序生态系统100的测试做准备,仅将作为计算机程序生态系统100的生态系统单元150的部分的那些资源复制到较低的环境上。然后,测试过程可以在只有与测试相关的那些资源被复制的情况下进行。
[0047] 在该测试过程中,由计算机程序生态系统100提供和处理测试数据304和非实际生产数据,并且从计算机程序生态系统100输出测试结果306。测试数据304是为测试特别准备或选择的数据,并且可以包括足以使计算机程序生态系统100中的一些或所有数据处理规则(例如,计算机程序生态系统100的多个计算机程序102的一些或所有数据处理规则)被执行的数据。为了使测试更高效且资源密集度更低,可以在测试之前识别计算机程序生态系统100中的生态系统单元150,并且测试数据304足以使生态系统单元150中的(例如计算机程序的)一些或所有数据处理规则被执行。因为生态系统单元150可能没有整个计算机程序生态系统100那么广泛,所以足以使生态系统单元150中的数据处理规则被执行的测试数据的数量和/或种类可以更少,从而实现消耗更少的处理能力的更高效的测试。
[0048] 参考图4,示例分析系统420对计算机程序生态系统400执行静态分析、运行时分析和调度分析,以将计算机程序生态系统400的元素的子集识别为生态系统单元430。计算机程序生态系统400被托管在计算系统410上并且包括多个计算机程序402(例如,数据流图),并且一个或多个数据资源408与计算机程序生态系统400相关联。
[0049] 分析系统420包括静态分析引擎422,用于识别计算机程序生态系统400的元素之间的静态依赖性,诸如多个计算机程序402与一个或多个数据资源408之间的静态依赖性。该静态分析引擎通过将计算机程序生态系统400的计算机程序402实例化并解析与该计算机程序生态系统相关联的一个或多个参数集404中的参数来操作。然后,静态分析引擎422分析解析参数值以识别计算机程序402与数据资源408之间的静态依赖性。静态分析过程的输出是计算机程序生态系统元素的静态依赖性的识别结果。在一些示例中,静态分析过程可以产生图形数据沿袭图示作为输出。
[0050] 当执行计算机程序生态系统400以处理输入数据(诸如,数据记录)集时,生成一个或多个运行时日志406(诸如,运行时日志文件)。运行时日志406包括在计算机程序生态系统400的运行时适用(例如,与执行命令一起作为输入被提供给计算机程序生态系统)的参数集和相关联的解析参数值。分析系统420包括运行时分析引擎424,用于通过分析运行时日志406中的参数集和相关联的解析参数值来识别计算机程序生态系统400的在执行期间被利用的元素(例如,计算机程序402和数据资源408)。
[0051] 静态分析引擎422和运行时分析引擎424的分析结果被提供给比较引擎426,该比较引擎用于识别计算机程序生态系统400的形成生态系统单元430的元素子集。比较引擎426通过结合由运行时分析引擎424识别的参数集和相关联的解析参数值对由静态分析产生的静态依赖性的识别进行补充,以识别计算机程序生态系统400的构成生态系统单元430的所有元素(例如,静态地依赖于计算机程序生态系统的另一个元素或受其静态地依赖的所有元素、在执行期间被利用的所有元素、以及静态地依赖于在执行期间被利用的每个元素或受其静态地依赖的所有元素)。
[0052] 调度分析引擎428例如通过分析参数集404或与调度器440相关联的调度信息408来分析计算机程序生态系统400的计算机程序402之间的调度依赖性。将计算机程序生态系统400的被调度分析引擎428识别为具有调度依赖性的元素(其例如依赖于已经为生态系统单元识别出的元素)也包括在生态系统单元430中。
[0053] 生态系统单元430的识别可以促进诸如计算机程序的测试或从一个计算机系统到另一个计算机系统的迁移等系统任务的执行。
[0054] 图5A和图5B描绘了用于分析计算机程序生态系统的元素之间的静态依赖性的示例方法。图5A和图5B的示例方法包括计算机程序生态系统的示例数据流图的参数解析和实例化。对静态分析的进一步描述可以在美国专利申请公开号US2016/0019057中找到,该专利申请的内容通过援引以其全文并入本文。
[0055] 参考图5A,形成计算机程序生态系统的部分的数据流图500的示例包括名为gather.mp的第一子图502和名为process.mp的第二子图504。
[0056] 第一子图502接收第一逻辑数据集DS1 506和第二逻辑数据集DS2 508作为输入,处理来自第一逻辑数据集506和第二逻辑数据集508的数据,并将处理结果写入第三逻辑数据集DS3 510中。第二子图504接收第四逻辑数据集DS4 512(该逻辑数据集恰好与第三逻辑数据集510指向同一物理文件)作为输入,处理来自第四逻辑数据集512的数据,并将处理结果写入表514。
[0057] 这四个逻辑数据集506、508、510、512中的每一个都与参数化路径相关联,在运行时,该路径会解析为到物理文件的路径。具体地,使用参数化路径/${FEED}/inv_${DATE}.dat识别第一逻辑数据集506,使用参数化路径/${FEED}/cust_${DATE}.dat识别第二逻辑数据集508,使用参数化路径/trans_${DATE}.dat识别第三逻辑数据集510,并且使用参数化路径/trans_${DATE}.dat识别第四逻辑数据集512。
[0058] 第一子图502接收两个参数,P1=FEED和P2=DATE作为自变量,并且如以下更详细描述的,通过将参数化路径中的FEED和DATE占位符替换为接收到的FEED和DATE参数的值来使用这些参数解析到第一逻辑数据集506、第二逻辑数据集508和第三逻辑数据集510的相应物理位置的路径。另外,第一子图502包括DATE参数的“静态分析”值。如以下更详细描述的,DATE参数的静态分析值是占位符值,其在数据流图500的静态分析期间(即,当数据流图500的数据沿袭被确定时)用作参数值。
[0059] 类似地,第二子图504接收单个参数P1=DATE,并且通过将针对第四逻辑数据集512的参数化路径中的DATE占位符替换为接收到的DATE参数的值来使用该单个参数解析到第四逻辑数据集512的物理位置的路径。另外,第二子图504包括DATE参数的“静态分析”值。
如以下更详细描述的,DATE参数的静态分析值是占位符值,其在数据流图517的静态分析期间(即,当数据流图517的数据沿袭被确定时)用作参数值。
[0060] 由于数据流图500及其子图的操作取决于所接收的参数,因此数据流图及其子图有时被称为“通用”数据流图或“通用”计算机程序。
[0061] 参数可以被指定为“设计时”参数或“运行时”参数。除了如上所述地用于路径解析之外,设计时参数还会影响与其相关联的数据流图的逻辑操作。相比之下,运行时参数是逐个作业地供给到图的,并且不会影响图的逻辑操作。在一些示例中,数据流图的逻辑操作指的是图的功能性和该图所利用的逻辑数据集两者。在一些示例中,参数可以是包括设计时部分和运行时部分的混合参数。
[0062] 在图5A中,FEED参数是影响gather.mp子图的逻辑操作的设计时参数。例如,对于FEED参数的一个值,第一子图502中的排序组件516可能将接收到的数据按升序排序,而另一个不同的FEED参数的值可能使排序组件516按降序对数据进行排序。在一些示例中,包括设计时参数的数据流图被称为“通用图”,因为其逻辑操作会基于设计时参数的供应值而变化。
[0063] DATE参数是运行时参数,其对子图502的逻辑操作没有影响并且是逐个作业地供应的。
[0064] 在一些示例中,数据流图的常用参数的集合被存储为“参数集”(有时称为“pset”),该参数集可以被保存到磁盘并且易于重复使用。例如,在图5A中,第一子图502具有与其相关联的三个pset:PSET_mexico 518、PSET_canada 520和PSET_usa 522。PSET_mexico 518包括常用的FEED参数值“mexico”和常用的DATE参数值“today()”(其为返回当天日期的函数)。PSET_canada 520包括常用的FEED参数值“canada”和常用的DATE参数值“today()”。PSET_usa 522包括常用的FEED参数值“usa”和常用的DATE参数值“today()”。类似地,第二子图504具有与其相关联的单个pset:PSET 523。PSET 523包括常用的DATE参数值“today()”(其为返回当天日期的函数)。
[0065] 在一些示例中,在执行数据流图500(例如,作为执行数据流图500所属的计算机程序生态系统的一部分)之前,识别与数据流图500相关联的一个或多个pset(及其相关联的子图502、504),并且确定该一个或多个pset中的多个独特的设计时参数。针对给定数据流图的每个独特的设计时参数而实例化数据流图的单独的可执行实例。
[0066] 例如,参考图5B,针对图5B的数据流图500实例化了第一子图502(gather.mp)的三个实例(PSET_mexico‑>gather.mp 502a,PSET_canada‑>gather.mp502b,PSET_usa‑>gather.mp 502c),每个实例都根据图5A中的多个pset中的三个独特的feed参数(mexico、canada和usa)中的不同的一个来进行配置。由于第二子图504仅与不包括任何设计时参数的单个pset 523相关联,因此在执行时仅实例化第二子图504的单个实例(process.mp 504a)。
[0067] 一旦子图502、504的适当实例被实例化,针对数据集的参数化路径中的参数值占位符就会被替换为来自pset的实际参数值,以解析到这些数据集的物理位置的路径。例如,对于第一子图502的实例502a PSET_mexico‑>gather.mp,第一数据集506的路径被解析为/mexico/inv_031014,因为FEED参数值为‘mexico’并且DATE参数值为‘031014’。
[0068] 一旦数据流图500(包括其子图502、504)已经被实例化,并且到数据流图的数据集的物理路径已经被解析,数据流图500。在执行期间,第一子图502的三个实例502a、502b、502c从它们各自的输入数据集读取数据,处理数据,并将处理后的数据存储在/trans_
031014.dat物理文件中。由于第二子图502的实例504a的输入数据集(例如DS4 512)解析到与第一子图的输出数据集相同的物理文件,因此process.mp的实例读取/trans_
031014.dat物理文件,然后处理该物理文件并将其存储在表514中。
[0069] 图6描绘了用于进行计算机程序生态系统的运行时分析的示例方法。如上所述,计算机程序生态系统可以响应于接收参数值作为自变量的执行命令而执行。因为在计算机程序生态系统的静态分析中没有考虑与这样的参数值相关联的pset,所以计算机程序生态系统的静态分析有时可能不完整或不正确。通过考虑在运行时日志中识别的与计算机程序生态系统的一个或多个实例的执行相关联的参数集,可以将运行时分析的结果用于扩充静态分析的结果。运行时分析的进一步描述可以在美国专利申请公开号US 2016/0019057中找到,该专利申请的内容通过援引以其全文并入本文。
[0070] 在运行时分析中,诸如数据流图(例如,图5A的子图502)的示例计算机程序包括两个参数P1和P2,每个参数可以被指定为设计时参数或运行时参数。运行时分析会使用参数分类626,该参数分类将每个参数的分类指定为设计时参数或运行时参数。在一些示例中,运行时分析可以包括参数分类步骤624。在一些示例中,参数被预先分类。
[0071] 运行时分析会使用运行时日志数据存储628,该运行时日志数据存储包括一个或多个运行时日志629,每个运行时日志包括与计算机程序生态系统的一个或多个实例的执行相关联的信息。运行时日志629可以包括用于实例化计算机程序生态系统的一个或多个计算机程序以供执行的执行命令的记录。针对给定日志条目的执行命令包括计算机程序的标识符和作为自变量供给到执行命令的一个或多个参数值。在一些示例中,计算机程序会在不访问任何参数集的情况下被实例化,替代地其接收参数值作为供给到执行命令的自变量。
[0072] 将参数分类626和运行时日志数据存储628提供给处理循环630,该处理循环针对运行时日志数据存储628中的每个运行时日志629生成用于执行命令的新逻辑pset,确定该新pset是否已经存在于现有逻辑pset的存储库648中,如果尚不存在,则将该新逻辑pset添加到存储库648。
[0073] 在处理循环630内,在逻辑pset构建步骤634中,根据参数分类626对来自运行时日志数据存储628的运行时日志Jn 632进行分析以生成逻辑pset 636。在这样做时,逻辑pset构建步骤634分析运行时日志632中包括的执行命令以提取作为图执行命令的自变量而被包括在内的参数值。然后,逻辑pset构建步骤634将每个提取的参数值与参数分类626中的对应参数进行匹配。如果逻辑pset构建步骤634确定所提取的参数值对应于参数分类626中的设计时参数,则逻辑pset构建步骤634将所提取的设计时参数的值包括在逻辑pset 636中。如果逻辑pset构建步骤634确定所提取的参数值对应于参数分类626中的运行时参数,则不将所提取的参数值包括在逻辑pset 636中。
[0074] 确定642逻辑pset 636的标识符644,并且将其与现有逻辑pset的存储库648中的所有pset的标识符进行比较646。如果标识符644与存储库648中的至少一个现有逻辑pset的标识符相匹配,则不采取行动,因为用于计算机程序的执行命令实例化的逻辑pset已经存在于存储库648中。如果不存在匹配,则通过新逻辑pset添加步骤650将逻辑pset 636及其标识符644作为新逻辑pset添加到现有逻辑pset的存储库648中。
[0075] 参考图7,在用于分析包括多个计算机程序的计算机程序生态系统的示例方法中,执行对计算机程序生态系统的静态分析(700)。作为静态分析的一部分,识别与计算机程序生态系统相关联的多个计算机程序与数据资源之间的静态依赖性(702)。例如,可以基于与计算机程序生态系统相关联的一个或多个参数集中的参数的解析值来识别静态依赖性。
[0076] 执行计算机程序生态系统以处理数据记录(704)。例如,根据与计算机程序生态系统相关联的一个或多个参数集中的参数的值来实例化计算机程序生态系统的一个或多个计算机程序,并且执行实例化的计算机程序以处理数据。在一些示例中,执行计算机程序生态系统可以包括访问与计算机程序生态系统相关联的一个或多个数据资源,例如,从文件、数据库和对象中的一个或多个读取数据;将数据写入文件、数据库和对象中的一个或多个;或这两者。
[0077] 通过执行计算机程序生态系统生成运行时日志信息(706)。例如,将运行时日志信息写入日志文件中。运行时日志信息可以包括与计算机程序生态系统相关联的一个或多个参数集中的参数的值。例如,运行时日志信息可以包括指示在执行计算机程序生态系统期间被执行的一个或多个实例化的计算机程序的信息、指示在执行计算机程序生态系统期间被访问的一个或多个数据资源的信息。
[0078] 执行对计算机程序生态系统的运行时分析(708)。作为运行时分析的一部分,获得运行时日志信息。另外,作为运行时分析的一部分,分析运行时日志信息中的参数的值(710),以识别计算机程序生态系统的在执行计算机程序生态系统期间被利用的一个或多个元素,诸如在执行计算机程序生态系统期间被执行的计算机程序或被访问的数据资源。例如,可以例如基于运行时日志信息中的参数的值来识别被执行的计算机程序之间的运行时依赖性。在一些示例中,分析运行时日志信息中参数的值涉及概括这些值中的一个或多个。
[0079] 执行对计算机程序生态系统的调度分析(712),以识别计算机程序生态系统的具有对计算机程序生态系统的另一个计算机程序的调度依赖性的计算机程序。例如,调度分析可以从调度器获得调度信息,并且可以识别被调度为在另一个计算机程序的执行已经完成之后运行的计算机程序。
[0080] 基于计算机程序生态系统的静态分析的结果、运行时分析的结果以及调度分析的结果,将计算机程序生态系统的元素的子集识别为生态系统单元(714)。例如,将被执行的一个或多个计算机程序和被访问的一个或多个数据资源与具有对被执行的计算机程序或被访问的数据资源的静态依赖性的其他计算机程序或数据资源一起包括在生态系统单元中。
[0081] 使用生态系统单元执行系统任务(716)。在一些示例中,系统任务包括将生态系统单元从第一计算平台迁移到第二计算平台。在一些示例中,系统任务包括测试生态系统单元。
[0082] 图8示出了用于开发和执行数据流图的数据处理系统800的示例,在该系统中,可以使用本文描述的技术。系统800包括数据源802,该数据源可以包括一个或多个数据源(诸如存储设备)或到在线数据流的连接,这些数据源中的每一个可以以各种格式(例如,数据库表、电子表格文件、平面文本文件或大型计算机使用的本机格式)中的任一种存储或提供数据。数据可以是逻辑数据、分析数据或工业机器数据。执行环境或运行时环境804包括预处理模块806和执行模块812。例如,执行环境804可以被托管在处于合适的操作系统(诸如,某一版本的UNIX操作系统)的控制下的一个或多个通用计算机上。例如,执行环境804可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个处理单元(诸如中央处理单元CPU)或处理器核的计算机系统的配置,这些处理单元或处理器核或是本地的(例如,多处理器系统,诸如对称多处理(SMP)计算机)、或分布在本地(例如,作为集群耦接的多个处理器或大规模并行处理(MPP)系统)、或是远程的、或是远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多个处理器)、或其任何组合。
[0083] 提供数据源802的存储设备对执行环境804可以是本地的,例如,被存储在连接到托管执行环境804的计算机的存储介质(例如,硬盘驱动器808)上,或者可以远离执行环境804,例如,被托管在远程系统(例如,大型计算机810)上,该远程系统通过远程连接(例如,由云计算基础设施提供)与托管执行环境804的计算机通信。
[0084] 预处理模块806从数据源802读取数据并准备数据处理应用程序(例如,可执行数据流图)以供执行。例如,预处理模块806可编译数据处理应用程序、将编译数据处理应用程序存储到执行环境804可访问的数据存储系统816和/或加载来自该数据存储系统的编译数据处理应用程序、以及执行其他任务以准备数据处理应用程序以供执行。
[0085] 执行模块812执行由预处理模块806准备的数据处理应用程序,以处理数据集并生成由处理产生的输出数据。输出数据可以存储回数据源802中或存储在执行环境804可访问的数据存储系统816中、或以其他方式使用。数据存储系统816还可以由可选的开发环境818访问,在该开发环境中,开发者820能够设计并编辑将由执行模块812执行的数据处理应用程序。在一些实施方式中,开发环境818是用于将应用程序开发为数据流图的系统,该数据流图包括顶点(表示数据处理组件或数据集),这些顶点通过顶点之间的有向链路(表示工作元素(即数据)的流)连接。例如,这样的环境在名称为“Managing Parameters for Graph‑Based Applications[管理基于图的应用程序的参数]”的美国专利公开号2007/0011668中进行了更详细的描述,该专利通过援引并入本文。用于执行这样的基于图的计算的系统在名称为“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS[执行表示为图的计算]”的美国专利5,966,072中进行了描述,该专利的内容通过援引以其全文并入本文。根据该系统制成的数据流图提供了用于将信息输入和输出由图组件表示的各个过程、用于在过程之间移动信息、以及用于为过程限定运行顺序的方法。该系统包括从任何可用方法中选择过程间通信方法的算法(例如,根据图的链路的通信路径可使用TCP/IP或UNIX域套接字、或使用共享存储器以在过程之间传递数据)。
[0086] 预处理模块806可以从可以实施数据源802的各种类型的系统接收数据,这些系统包括不同形式的数据库系统。这些数据可以被组织为具有对应字段(也称为“属性”或“列”)的值(包括可能的空值)的记录。在最初从数据源读取数据时,预处理模块806通常以关于该数据源中的记录的一些初始格式信息开始。在一些情况下,数据源的记录结构起初可能是未知的,而可能替代地在分析数据源或数据之后被确定。关于记录的初始信息可以包括例如表示某一明确值的位的数量、记录内的字段的顺序、以及由这些位表示的值的类型(例如,字符串、有符号/无符号整数)。
[0087] 换言之,并且通常适用于本文描述的可执行数据流图,可执行数据流图实施对从数据源802的一个或多个输入数据集通过数据处理组件流动到一个或多个输出数据集的数据执行基于图的计算,其中,该数据流图由数据存储814中的数据结构指定,该数据流图具有由数据结构指定并且表示由一个或多个链路连接的数据处理组件的节点,这些链路由这些数据结构指定并且表示数据处理组件之间的数据流。执行环境或运行时环境804耦接至数据存储814并被托管在一个或多个计算机上,运行时环境804包括预处理模块806,该预处理模块被配置成读取指定数据流图的已存储数据结构并分配和配置系统资源(例如,进程、存储器、CPU等),以用于执行对由预处理模块806分配给数据流图的数据处理组件的计算,运行时环境804包括执行模块812以调度和控制对数据处理组件的计算的执行。换言之,被托管在一个或多个计算机上的运行时环境或执行环境804被配置成从数据源802读取数据并使用以数据流图的形式表示的可执行计算机程序来处理该数据。
[0088] 可以使用执行合适软件的计算系统来实施以上所描述的方法。例如,软件可以包括一个或多个计算机程序中的在一个或多个编程的或可编程的计算系统(其可以具有各种架构,诸如分布式、客户端/服务器、或网格)上执行的程序,每个计算系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户接口(用于使用至少一个输入设备或端口接收输入,并且用于使用至少一个输出设备或端口提供输出)。软件可以包括较大程序的一个或多个模块,例如,提供与对图的设计、配置和执行有关的服务的模块。程序模块(例如,图的元素)可以被实施为数据结构或符合存储在数据存储库中的数据模型的其他经组织的数据。
[0089] 软件可以设置在诸如CD‑ROM或(例如可由通用或专用计算系统或设备读取的)其他计算机可读介质等有形非暂态介质上,或通过网络的通信介质递送(例如,被编码到传播信号中)到将执行其的计算系统的有形非暂态介质。该处理的一些或全部可以在专用计算机上执行、或使用专用硬件(诸如,协处理器或现场可编程门阵列(FPGA)或专用的专用集成电路(ASIC))来执行。该处理可以以分布式方式来实施,其中由软件指定的计算的不同部分由不同的计算元件执行。每个这样的计算机程序优选地存储或下载到可由通用或专用可编程计算机访问的存储设备的计算机可读存储介质(例如,固态存储器或介质、或磁性介质或光学介质),以便当计算机读取存储设备介质以执行本文中描述的处理时对计算机进行配置和操作。也可认为本发明的系统被实施为配置有计算机程序的有形非暂态介质,其中,如此配置的介质致使计算机以指定的且预定义的方式操作以便执行本文中描述的处理步骤中的一项或多项。
[0090] 已经描述了多个实施例。然而,将理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。例如,上述一些步骤可以是顺序独立的,并且因此可以按照与描述的顺序不同的顺序执行。
[0091] 其他实施方式也在所附权利要求的范围内。