CN114503073A - 将用过程编程语言编写的程序自动转换为数据流图及相关系统和方法 - Google Patents
将用过程编程语言编写的程序自动转换为数据流图及相关系统和方法 Download PDFInfo
- Publication number
- CN114503073A CN114503073A CN202080051878.1A CN202080051878A CN114503073A CN 114503073 A CN114503073 A CN 114503073A CN 202080051878 A CN202080051878 A CN 202080051878A CN 114503073 A CN114503073 A CN 114503073A
- Authority
- CN
- China
- Prior art keywords
- program
- dataflow graph
- data
- data operations
- components
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
描述了用于经由将用过程语言编写的程序转换为可以作为数据流图来执行的组件的计算机执行的工具来增加数据处理系统的功能。根据用过程编程语言编写的程序生成的数据流图可以支持诸如流水线并行性和/或组件并行性等各种形式的并行性。在一些实施例中,可以通过基于语法来解析程序并且识别由程序执行的数据操作之间的控制流关系来实现并行性。特别地,可以根据语法来将数据流图组件的类型识别为与程序的特定数据操作(或数据操作组)相对应。数据流图可以被生成为包括识别出的组件,可以用流将这些组件以根据识别出的数据操作之间的控制流关系的顺序而连接在一起。
Description
背景技术
过程编程是一种范例,其中,程序被编写为供处理器按顺序执行的一系列显式命令。命令的子序列可以被分组,并根据需要由程序的其他部分调用,从而扩展了程序的其余部分可以执行的命令范围。取决于所采用的特定编程语言,这些子序列有时被称为子例程、函数或子程序。
相比之下,数据流编程强调通过被称为数据流图的程序进行的一系列操作来实现数据的流动,该数据流图定义了操作以及数据如何在操作之间流动。数据流图通常被配置为从一个或多个源获得数据记录、按顺序对这些数据记录执行操作、并产生某种类型的输出。通常,数据流图中对数据记录执行操作的部分被称为组件,并且组件之间的连接被称为流。
用过程语言编写的程序与数据流图之间的区别在于,数据流图中可以同时执行多个操作,因为可以在其他数据记录已经传播到数据流图中较晚的组件(“下游”组件)的同时对到达数据流图中的较早的组件(“上游”组件)的数据记录进行操作。这种现象是一种类型的并行性,其有时被称为流水线并行性。以这种方式,可以将数据流图想象成是像装配线中的一系列工人,其中组件表示工人,而用过程语言编写的程序更像是单个工人在完成一系列任务,其中每个任务完成之后才开始下一个任务。
发明内容
根据一些方面,提供了一种非暂态计算机可读介质,包括在由至少一个处理器执行时执行用于将程序转换为数据流图的方法的指令,其中,该程序包括数据操作和指示数据操作的执行序列的控制流,该方法包括使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序,所述分析包括:基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每个步骤包括该程序的一个或多个数据操作;生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;对于该程序的识别出的多个步骤中的每个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及使用该至少一个处理器生成数据流图,该数据流图包括:该多个经配置的数据流图组件、表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
根据一些方面,提供了一种用于将程序自动转换为数据流图的计算机实施的方法,其中,该程序包括数据操作和指示数据操作的执行序列的控制流,该方法包括:使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序,所述分析包括:基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每一个步骤包括该程序的一个或多个数据操作;生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;对于该程序的识别出的多个步骤中的每一个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及使用该至少一个处理器生成数据流图,该数据流图包括:该多个经配置的数据流图组件、表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
根据一些方面,提供了一种用于将程序自动转换为数据流图的系统,其中,该程序包括数据操作和指示这些数据操作的执行序列的控制流,该系统包括:用于使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序的装置,所述分析包括:基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每个步骤包括该程序的一个或多个数据操作;生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;对于该程序的识别出的多个步骤中的每个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及用于生成数据流图的装置,该数据流图包括:该多个经配置的数据流图组件;以及表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
可以用上文或下文进一步详细描述的方面、特征和动作的任何适当组合来实施前述装置和方法的实施例。根据以下描述并结合附图可以更全面地理解本传授内容的这些和其他方面、实施例和特征。
附图说明
将参照以下附图描述各个方面和实施例。应当理解,附图不一定按比例绘制。在附图中,在各个附图中展示的每个完全相同或几乎相同的部件由相同的数字表示。为了清楚起见,可能并非在每个附图中都标记了每个部件。
图1描绘了根据一些实施例的说明性数据流图;
图2描绘了根据一些实施例的将用过程语言编写的程序自动转换为数据流图的方法的流程图;
图3是根据一些实施例的将用过程语言编写的程序自动转换为数据流图的方法的流程图;
图4A是根据一些实施例的说明性SAS程序;
图4B描绘了根据一些实施例的、根据图4A所示的程序而生成的说明性数据流图;
图4C描绘了根据一些实施例的图4B的说明性数据流图,其中的数据流图组件由SAS程序的对应步骤进行了注释;
图4D展示了根据一些实施例的将图4A所示的程序的第一步骤转换为图4B所示的数据流图的第一组件的细节;
图4E展示了根据一些实施例的使用语法来解析图4A所示程序的步骤以识别该步骤以及该步骤与其他步骤之间的控制流关系、选择对应的数据流图组件、以及配置所选择的数据流图组件的示例;
图4F展示了根据一些实施例的将图4A所示的程序的第二步骤转换为图4B所示的数据流图的第二组件的细节;以及
图5展示了可以在其上实施本发明的各个方面的计算系统环境的示例。
具体实施方式
发明人已经认识到并理解,可以经由将用过程语言编写的程序转换为可以作为数据流图来执行的组件的计算机执行的工具来增加数据处理系统的功能。特别地,计算机执行的工具可以将数据流图组件的类型识别为与程序的各部分相对应,使得可以通过数据流图的适当部分再现每个部分的行为。在一些实施例中,从用过程编程语言编写的程序中生成的图可以支持比如流水线并行性和/或组件并行性等各种形式的并行性,即使用过程语言编写的程序可能缺乏这种并行性。在一些实施例中,可以通过基于语法来解析程序并且识别由程序执行的数据操作之间的控制流关系来实现并行性。此外,可以使用语法来将数据流图组件的类型识别为与程序的特定数据操作(或数据操作组)相对应。数据流图可以被生成为包括识别出的组件,可以用流将这些组件以根据识别出的数据操作之间的控制流关系的顺序而连接在一起。
与过程编程相比,使用数据流编程处理数据可能有多种益处。特别地,如上面所讨论的,数据流图可以通过流水线并行性自然地提供并行处理,从而使得数据流编程成为处理数据集的自然选择,其中,特定操作在诸如数据集的数据记录等许多数据段上重复。数据流图提供的另一种类型的并行性是组件并行性,当数据流图的不同分支同时操作时,就会产生这种并行性。例如,来自单个数据源的数据记录可以沿不同的流来输出,并且不同的操作可以沿不同的分支同时执行。
虽然数据流图可以提供一些优点,但是一些组织(例如,企业)仍然可能依赖于用过程语言编写的程序来进行数据处理。在一些情况下,组织可以部分地使用数据流图,同时仍然利用用过程语言编写的程序。该方法通常涉及执行数据流图而不是之前的用过程语言编写的程序,同时将在数据流图外部执行用过程语言编写的程序的一些代码的组件包括到数据流图中。以这种方式,数据流图作为某种“包装器(wrapper)”来执行,并且虽然数据流图最终是由系统执行的程序,但是程序的功能中的一大部分仍然可以在外部由过程语言执行。
该方法的一个缺点是,数据流图的语言可能无法理解执行用过程语言编写的外部代码的组件之中正在发生什么。数据流图的另一个有用特征是能够通过单个数据流图或多个数据流图来跟踪数据沿袭,以了解数据在组织的操作中来自何处以及去往何处。然而,执行外部代码的组件在数据沿袭方面对数据流图软件来说可能类似于“黑箱(black box)”,因为数据流图软件可能无法通过该组件跟踪数据沿袭,因为该组件执行的操作对于软件来说是未知的。此外,该方法可能会阻碍流水线并行性,因为可能需要执行完外部代码之后才可以执行下游组件。
如上面所讨论的,发明人已经认识到并理解,可以经由将用过程语言编写的程序转换为可以作为数据流图来执行的组件的计算机执行的工具来增加数据处理系统的功能。这些技术可以用于在所生成的整个数据流图中生成本机数据流图代码,使得能够通过数据流图跟踪数据沿袭。数据流图的自然的效率优势(比如上面讨论的组件并行性和/或流水线并行性)可以自然地在所生成的数据流图中提供。发明人进一步认识到并理解用于基于语法来实施这种工具的技术,如下面进一步讨论的。
根据一些实施例,将用过程语言编写的程序转换为数据流图的系统可以执行解析器以解析该程序的文本。在一些实施例中,这种解析可以识别程序对数据执行的操作,并且可以进一步识别这种操作的类型。基于程序所执行的数据操作的类型,可以通过访问数据结构来识别能够执行相同操作的特定类型的数据流图组件,该数据结构被构造为将特定操作与特定数据流图组件相关联。例如,如果程序内的语言被解析器识别为执行数据之间的合并,则将数据记录流结合在一起的数据流图组件可以被数据结构识别为与合并操作相对应。在一些实施例中,这种解析器还可以确定由程序执行的数据操作的执行顺序。当基于程序生成数据流图时,可以生成组件之间的表示数据操作的流,并且可以经由流以基于所确定的执行顺序的顺序将组件连接在一起。
以下是与将用过程语言编写的程序自动转换为数据流图相关的各种概念、将用过程语言编写的程序自动转换为数据流图的各种实施例、用于将用过程语言编写的程序自动转换为数据流图的各种技术的更详细的描述。应当理解,本文所描述的各个方面可能以多种方式中的任何方式来实施。本文仅出于说明性目的提供了具体实施方式的示例。另外,以下实施例中描述的各个方面可以单独使用或以任何组合使用,并且不限于本文明确描述的组合。
图1描绘了根据一些实施例的说明性数据流图。图1中描绘了数据流图100,以说明数据流图的上述特征中的一些特征。数据流图是可以被表示为通过组件和流的数据记录的可视化流的程序。如本文所提及的,组件是数据流图中对数据记录执行操作的部分,并且组件之间的连接在本文中被称为流。
通常来说,数据流图是通过在图形用户界面中布置组件和流而产生的。图1展示了数据流图的这种视图的示例,其中,矩形框表示组件并且这些矩形框之间的线各自表示流。数据流图是用于编写对数据记录进行操作的程序的便利方式,因为在查看数据流图时可以将数据流可视化。一旦数据流准备好被执行,它就可以被编译,然后由合适的计算系统执行。
在图1的示例中,用下面将要描述的方式对三个数据输入102、104和106进行访问、操纵和组合,以产生两个数据输出122和124。可以从各种源提供数据输入,这些源包括存储在计算机可读介质上的文件、文件集合或数据库表。在图1的示例中,以通常用于描绘存储在计算机可读介质上的单个数据文件的方式来描绘数据输入102、104和106。
在图1的示例中,输入数据102由过滤组件108读取和操作,该过滤组件输出满足特定逻辑表达式的数据记录。例如,如果输入数据102包括指定国家代码的数据字段,则过滤108可以被配置为仅输出该数据字段的值为“US”的那些数据记录。从过滤108输出的数据记录被输入到排序组件110,该排序组件将数据记录排序成由所选择的排序“键”指定的顺序,该排序“键”标识要根据其对记录进行排序的一个或多个数据字段。经排序的数据记录被输出到结合组件120。
另外,输入数据104由变换组件112读取和操作,该变换组件根据存储在变换组件112内(或以其他方式由该变换组件访问)的变换代码来操纵输入数据记录。例如,变换可以为每个数据记录添加或移除数据字段,和/或可以在产生输出数据时操纵数据字段的值。应注意,在图1的示例中,过滤组件108和变换组件112表现出组件并行性。即,在来自输入数据104的数据记录由变换112操作的同时,来自输入数据102的数据记录可以由过滤108操作。在一些情况下可以通过使用不同的处理器执行过滤组件108和变换组件112来利用组件并行性,并且在一些情况下可以通过使用不同的计算系统执行该过滤组件和变换组件来利用组件并行性。
在图1的示例中,结合组件116接收从变换112输出的数据记录和从过滤组件114(其如上面关于过滤108所讨论的那样操作)输出的数据记录。结合组件可以被配置为通过根据标识每组输入数据记录的数据字段的键而匹配每组的记录来从两组数据记录中产生单组数据记录。存储在结合组件116内(或以其他方式由该结合组件访问)的变换代码可以进一步指定如何基于包含在两组输入数据记录的匹配记录内的数据字段值来构造结合组件的传出数据记录。
复制组件118复制从结合组件116输出的数据记录,以产生相同的两组数据记录。其中一组数据记录被存储为输出数据124,而另一组则与从排序110输出的数据记录结合并且结果被存储为输出数据122。
通常,数据流图中的组件在一定程度上被配置以定义其功能。例如,在图1的示例中的过滤组件和变换组件的情况下,这些组件通过分别指定如何选择或变换记录的变换代码而被配置。在一些情况下,变换组件还可以定义与输入数据记录的记录格式不同的输出记录格式。排序组件可以通过指定排序键而被配置,并且在一些情况下可以通过指定如何执行排序(例如,升序值与降序值)而被配置。在这些情况中的每种情况下,都应用某种配置方式来描述组件应该如何对数据记录进行操作。描述这种配置的数据在本文中可以统称为“配置数据”因此,变换代码、键值、记录格式等各自是一种类型的配置数据。在至少一些情况下,图1的示例中的复制组件可以在没有定义配置数据的情况下工作,因为该组件被设计为仅复制数据流,并且在其他方面可能无需配置。
图2描绘了根据一些实施例的将用过程语言编写的程序自动转换为数据流图的方法的流程图。如上面所讨论的,根据本申请的一些方面,可以经由将用过程语言编写的程序转换为可以作为数据流图来执行的组件的计算机执行的工具来增加数据处理系统的功能。方法200说明了可以如何操作这样的工具,以通过将程序201转换为数据流图208来执行这种转换。
在图2的示例中,用过程语言编写的程序201作为输入而被提供给转换引擎205,该转换引擎包括执行上面讨论的工具的一个或多个计算设备。程序201可以用任何过程语言编写,因为本文描述的技术不限于任何特定语言。适当语言的示例包括统计分析系统(SAS)、BASIC、Fortran、Java、Mathematica、MATLAB、Pascal、Perl、Python、R、Unix shell以及Visual Basic。
在由转换引擎执行期间,工具可以利用预定义的语法206。语法206可以提供由转换引擎205执行的工具所依赖的各种定义,以允许该工具解析程序201并生成数据流图208。语法206所提供的这些定义可以向工具指示如何解释程序201内的单词和符号、如何将程序内的数据操作(或数据操作组)识别为具有与数据流图组件的特定类型相对应的功能、如何生成数据流图组件、如何将程序内的数据操作(或数据操作组)识别为与识别出的数据流图组件类型的配置数据相关、如何配置与程序内的数据操作相对应的数据流图组件、和/或如何确定程序内的数据操作的控制流。
如本文所使用的,“控制流”是指与程序一致的、执行各个数据操作的顺序。例如,程序可以执行操作C、D和E,并且可以被配置为在执行操作D或操作E中的任一项之前执行操作C。对操作C、D和E的相对顺序的这种依赖性是控制流的一个示例。
在图2的示例中,通过该工具解析该程序而产生的数据可以被存储在目录207中,该目录可以包括任何合适的数据结构,可以以该数据结构来存储比如程序中的数据操作的所确定的控制流关系等方面。如下面进一步描述的,该目录在后续解析操作期间可以被转换引擎访问。
如本文所提及的,程序的“数据操作”是指程序的一部分,其在被执行时将修改程序的执行环境。例如,数据操作可以包括修改执行环境中存在的一个或多个变量或其他数据的值。应当理解,值的修改本身可以包括一个或多个数据操作。例如,当过程程序中的命令将变量的值设置为等于计算结果的值时,计算的每个部分可以表示单独的数据操作,将计算值存储在变量中的最终结果也表示单独的数据操作。因此,在至少一些情况下,程序的单个命令可以表示多个数据操作,因为在命令执行期间执行环境会发生各种变化。
根据一些实施例,转换引擎205可以将数据流图208的一个或多个组件和流生成为与程序201中的一系列数据操作相对应。在一些情况下,生成数据流图208的组件可以包括从多个可用数据流图组件中识别出一种类型的组件。在一些情况下,生成数据流图208的组件还可以包括为识别出的组件生成配置数据,这可以包括基于程序内的数据操作来定义组件的参数或其他可配置的方面。例如,图2中所示的说明性数据流图变换代码209的实例可以通过由转换引擎执行的工具来生成,并且可以与识别出的组件相关联。
根据一些实施例,由转换引擎205执行的工具可以基于所确定的程序内的数据操作的控制流关系而在数据流图208的识别出的组件之间生成流。例如,在工具识别出特定数据操作(或多组数据操作)的第一组件和第二组件的情况下,工具还可以识别出与第一组件相关联的(多个)数据操作在控制流内比与第二组件相关联的(多个)数据操作发生得更早。结果是,工具可以生成连接第一组件和第二组件的一个或多个流,使得第二组件相对于第一组件在数据流图的下游执行(即,在组件序列中,数据流出第一组件要早于数据流入第二组件)。
转换引擎205基于语法206执行的过程的净结果是生成数据流图208,该数据流图是程序201的数据流图表示。程序与等效的数据流图之间的这种关系在图2以及后续附图中由之字形箭头所展示。
图3是根据一些实施例的将用过程语言编写的程序自动转换为数据流图的方法的流程图。方法300是将用过程语言编写的程序301自动转换为数据流图的说明性过程。例如,方法300可以通过由在图2中示出并且在上文讨论的转换引擎205执行的工具来执行。
方法300开始于动作302,其中,基于语法303将程序301划分为步骤。与图2中的语法206的示例一样,执行方法300的工具可以依赖于语法303来尤其指示如何解释程序内的单词和符号,以及如何将程序内的数据操作(或数据操作组)识别为具有与数据流图组件的特定类型相对应的功能。特别地,在动作302中,工具可以使用语法303解析程序301,以识别一个或多个数据操作。每组一个或多个数据操作可以被称为“步骤”,使得程序的数据操作被划分为一系列步骤,其中,每个步骤包含由程序执行的一个或多个数据操作。
在动作304中,执行方法300的工具可以将标识识别出的步骤的信息存储或以其他方式记录在目录305中。在动作304中产生的目录可以标识程序的步骤和所述步骤的控制流关系,并且可以进一步标识程序301的与每个步骤相对应的一个或多个数据操作。
在动作306中,执行方法300的工具选择与识别出(并且可能已经在动作304中被存储到目录中)的程序步骤相对应的数据流图组件类型。所选择的数据流图组件类型可以基于以下操作:使用语法303来解析识别出的步骤的数据操作,并基于所述解析来确定哪种类型的数据流图组件与该步骤的数据操作相对应。如上面所讨论的,语法303可以被配置为将特定类型的数据流图组件与程序内的特定语言相关,使得可以适当地生成与出现该语言的步骤执行相同功能的数据流图组件。
在一些实施例中,工具可以使用数据流图组件类型的预配置库,从而使得识别数据流图组件包括从所述库中选择组件类型之一(例如,如关于图1所讨论的“排序”类型或“过滤”类型的组件)。在一些实施例中,可以生成具有与程序步骤相对应的功能的所选组件类型的数据流图组件的实例。
在动作308中,执行方法300的工具可以配置在动作306中选择的数据流图组件。动作308可以相应地包括为在动作306中选择的一个或多个组件生成配置数据。工具可以访问语法,以基于对应的程序步骤中存在的数据操作来确定如何配置给定的数据流图组件。如上面所讨论的,描述数据流图组件的配置的数据在本文中被称为“配置数据”。因此,动作308可以包括为组件的操作参数生成值和/或为组件生成变换代码。应当理解,在动作306中识别的组件中的一些组件可能不需要配置数据,并且因此,可能不会为所有识别出的组件生成配置数据。
在动作310中,执行方法300的工具可以生成数据流图,该数据流图包括(在适用时)由动作308配置(例如,包括生成的配置数据)的所识别组件,并且具有以根据识别出的程序步骤控制流关系的顺序来连接这些组件的流。在一些实施例中,动作310可以包括将已识别且已配置的组件以及所生成的连接这些组件的流一起记录到合适的计算机可读存储介质。例如,数据流图可以被存储为数据文件,该数据文件包括描述或以其他方式标识数据流图组件、流和这些组件的配置数据的数据,并且动作310可以包括记录所述数据文件。在一些实施例中,这种数据文件可以被布置为在执行之前由另一个程序来编译。在一些实施例中,所生成的数据流图可以被产生为可执行数据文件,在这种情况下,动作310可以包括根据识别出的数据流图组件、流和这些组件的配置数据来编译数据流图的步骤。动作310可以包括将流生成为以根据目录所标识的控制流关系的顺序来连接数据流图组件。
根据一些实施例,程序301可以包括一个或多个过程(也可以被称为例程、函数、子例程或宏),并且执行方法300的工具在使用语法解析该程序时可以识别这些过程。例如,工具可以识别一个或多个过程调用和/或可以识别过程定义。在一些实施例中,执行方法300的工具可以生成可重用的数据流图组件组(有时被称为“子图”),以表示识别出的过程的数据操作。在一些情况下,该子图可以被存储在所生成的数据流图可以访问的数据文件中。这可以允许所生成的数据流图以与程序301进行重复的过程调用并由此重用同一段代码类似的方式重用同一组组件。子图可以表示识别出的整个程序步骤,或者也可以表示识别出的程序步骤的一部分。
在执行方法300的工具生成子图以表示程序301的过程的情况下,该过程可以将一个或多个值用作该过程的输入。在这种情况下,所生成的子图可以被参数化为使得该子图中的数据流图组件的行为基于子图参数的值而有不同的表现。例如,可以基于组件的值而在子图中启用或禁用组件的分支。
根据一些实施例,程序301可以包括一个或多个全局变量,或以其他方式基于一个或多个全局变量来工作,这些全局变量是在执行环境中定义的值并且可以改变程序中的数据操作的执行方式。在这种情况下,执行方法300的工具可以生成一个或多个数据流图参数,这些参数是在数据流图级别设置的参数,这些参数的值可以由数据流图的一个或多个组件访问以指定该组件的行为。作为说明性示例,程序301可以被编写为初始化具有国家代码值的全局变量,并且取决于所述值来执行后续的数据处理。可以用图参数定义所生成的数据流图,以定义国家代码,并且该数据流图的组件可以在变换代码中利用该参数定义或以其他方式利用该参数定义。
根据一些实施例,执行方法300的工具可以识别程序301内的注释。注释是程序中不被执行的部分,并且通常在注释部分的开头处或者开头处和结尾处使用分隔符进行标识。在一些情况下,执行方法300的工具可以识别程序内的这种注释,并将那些注释复制到所生成的数据流图内的相关位置。例如,工具可以基于注释文本与数据操作的接近度而将注释识别为与程序内的特定数据操作相关。这种注释可以被放置在组件的与那些数据操作相对应的变换代码中,使得那些注释内的任何信息都可以保留在产生的数据流图中。
根据一些实施例,执行方法300的工具在生成数据流图时可以识别并保留程序301内的空白符。如本文所提及的,“空白符(whitespace)”是指表示程序内的排版中的水平或竖直空间的任何字符或一系列字符,最常见的示例是“空格”字符。在一些情况下,执行方法300的工具可以识别程序的数据操作中的这种空白符,并且当在数据流图的组件内为数据操作生成变换代码(或其他配置数据)时可以保留空白符的存在。
图4A至图4F提供根据一些实施例的将用过程语言SAS编写的程序转换为数据流图的说明性示例。图4A描绘了说明性SAS程序,其对两个输入数据文件执行一系列操作并产生输出数据文件。如上面所讨论的,可以执行计算机执行的工具以将所展示的程序转换为可以作为数据流图来执行的组件。
根据一些实施例,在执行并提供程序400作为输入时,工具可以识别该程序的被标记为401a、401b、401c和401d的四个步骤。如上面关于图3的动作302所讨论的,工具可以访问语法以识别与程序步骤相对应的数据操作或数据操作组。在说明性程序400中,这些步骤被配置为执行以下动作。步骤401a读取名为“FILE_A”的数据文件,将其内容解析成三个数据字段,并根据这三个数据字段的内容创建附加数据字段(ORDER_FULL_NAME)。步骤401b读取名为“FILE_B”的数据文件,将其内容解析成三个数据字段,并根据这三个数据字段的内容创建附加数据字段(ORDER_FULL_NAME)。步骤401c合并步骤401a和401b的结果。步骤401d过滤掉在ORDER_FULL_NAME数据字段的前两个字符中没有特定值(“US”)的任何数据记录。
根据一些实施例,所执行的工具可以将程序400的这些部分的内容识别为与可以由数据流图的组件执行的操作相对应。特别地,工具可以将被标记为401a和401b的代码部分的内容识别为各自执行对读取到的数据文件的变换。进一步地,工具可以将被标记为401c的代码部分的内容识别为执行结合操作,并将被标记为401d的代码部分的内容识别为执行过滤操作。此外,工具可以通过识别出步骤401c利用步骤401a和401b的结果(“MERGEDATASET_A DATASET_B”)并且步骤401d利用步骤401c的结果(“SET DATASET_C”)来识别这些步骤的控制流关系。结果是,可以确定图4B中所示的组件和流。工具还可以为组件406、408、410和412生成合适的配置数据。作为最终步骤,工具然后可以产生如图4B所示的那样布置的、包括所生成的配置数据的数据流图。
图4C将图4B和与组件406、408、410和412相关联的注释一起展示,这些注释示出了图4A所示的程序400的相应步骤。相当于数据流图450的组件的过程语言代码被示出为用灰色之字形箭头连接至图4C中的所述组件。因此,应当理解,程序400的注释部分并不是由数据流图450中的相应组件逐字存储或以其他方式执行。而是,数据流图450的组件执行与程序的相关联的部分等效的功能。
图4D展示了根据一些实施例的将图4A所示的程序的第一步骤转换为图4B至图4C所示的数据流图的第一组件的细节。为了进一步说明通过由工具为组件生成配置数据来配置组件的过程,图4D示出了图4A的步骤401a,并且展示了如何能够生成所产生的数据流图部分。
在图4D的示例中,作为程序的部分401a中的数据操作“INFILE FILE_A”(其指示程序将读取FILE_A)的结果,生成流405以将识别出的变换组件406连接至输入文件FILE_A。另外,变换组件406被配置为如程序的数据操作“INPUT ORDER_NAME$10EXT$4CHANGE_FLAG$1”所指定的那样从输入文件读取一系列字节,该数据操作指示将读取十个字节以作为数据字段ORDER_NAME的值、将读取接下来的四个字节以作为数据字段EXT的值、并且将读取下一个字节以作为数据字段CHANGE_FLAG的值。假设存在另外的字节的情况下,组件406可以被配置为继续从输入FILE_A读取字节;以这种方式,输入文件中的每个15字节块成为连续数据记录的一部分。
另外,组件406配置有变换代码451,以便如程序部分401a中定义ORDER_FULL_NAME的数据操作所指定的那样,通过用下划线字符串联从输入文件读取的这三个字段值来生成附加输出数据字段。组件406可以被配置为根据所展示的输出记录格式452在流407上产生数据记录。生成数据流图的工具可以通过使用语法解释程序部分401a来生成记录格式452,以识别由该程序的该步骤产生的数据字段的类型和长度。在这种情况下,ORDER_NAME、EXT和CHANGE_FLAG字段的长度可以根据其从输入文件中被读取出来的方式来推断,并且ORDER_FULL_NAME字段的长度可以被推断为用两个下划线字符串联共15个字符的其他三个字段的结果。
图4E至图4F展示了根据一些实施例的将图4A所示的程序的第二步骤转换为图4B至图4C所示的数据流图的第二组件的细节。图4E再现了图4A的步骤401c的内容,并且描绘了使用语法480对该步骤的三种不同的解析操作。
在图4E中的第一实例中,使用语法480解析程序的所示数据操作481,以将这些数据操作识别为步骤,即上述步骤401c。工具可以基于突出显示的语言使用语法480来将数据操作481识别为与该步骤相对应,该突出显示的语言:a)将以“DATA..”开头并且以“…RUN;”结尾的数据操作标识为定义一个步骤;以及b)识别出该步骤依赖于“DATASET_A”和“DATASET_B”,以及这因此暗示了该步骤与程序的其他部分之间的特定控制流关系。
在图4E中的第二实例中,工具可以使用语法480解析程序的所示数据操作482(其现在可能已被识别为与步骤401c相对应),以确定与程序中的该步骤的功能相对应的数据流图组件的类型。在图4E的示例中,可以使用语法将突出显示的关键词“MERGE”识别为与“JOIN”类型的数据流图组件相对应。
在图4E中的第三实例中,工具可以使用语法480解析程序的所示数据操作483(其现在可能已经被识别为与步骤401c相对应),以确定如何配置在上述第二解析实例中选择的类型的数据流图组件的实例。在图4E的示例中,可以使用语法将突出显示的语言“BYORDER NAME;”识别为指示“JOIN”数据流图组件的实例应被配置为使用名为“ORDER NAME”的字段以作为结合操作的键字段。
因此,图4E提供了语法480如何能够通过解析程序的一部分来产生关于该部分的这三种不同类型的信息的一个示例。虽然上面在三个单独的解析实例方面描述了解析,但是应当理解,工具可以利用语法480以任意数量的方式解析程序部分,这些方式各自以任意顺序解析程序部分的任何合适的部分,并且上文仅作为说明性过程而提供。
鉴于上述步骤401c的解析,图4F展示了如何能够生成产生的数据流图部分。在图4F的示例中,流407和409提供来自两个上游变换组件406和408的具有所展示的输入记录格式的数据记录。在解析程序的步骤401c时,工具可以识别出结合组件适合于作为程序中的“MERGE”命令的结果,并且可以进一步为结合组件生成配置数据,该配置数据将ORDER_NAME结合键462指定为用于匹配供结合的传入记录的字段。作为结合的结果,可以沿流411从组件410输出的仅有记录可以是在来自变换组件的两组传入数据记录中都存在具有相同ORDER_NAME值的记录的那些记录。
图5展示了可以在其上实施本文所描述的技术的合适计算系统环境500的示例。计算系统环境500仅是合适的计算环境的一个示例,并且不旨在对本文所描述的技术的使用或功能的范围提出任何限制。也不应当将计算环境500解释为具有与示例性操作环境500中展示的部件中的任何一个或组合相关的任何依赖性或要求。
本文所描述的技术与许多其他通用或专用计算系统环境或配置一起操作。可以适合与本文所描述的技术一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备中任一个的分布式计算环境等。
计算环境可以执行计算机可执行指令,诸如程序模块。通常,程序模块包括进行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所描述的技术还可以在分布式计算环境中实践,其中,任务由通过通信网络链接的远程处理设备进行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参照图5,用于实施本文所描述的技术的示例性系统包括呈计算机510形式的通用计算设备。计算机510的部件可以包括但不限于处理单元520、系统存储器530、以及将包括系统存储器的各种系统部件耦合到处理单元520的系统总线521。系统总线521可以是包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任何架构的本地总线的若干类型的总线结构中的任何总线结构。通过举例而非限制,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、以及外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。
计算机510通常包括各种计算机可读介质。计算机可读介质可以是可由计算机510访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。通过举例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实施的用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者可用于存储期望信息并可由计算机510访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来实施计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“已调制数据信号”是指以编码信号中的信息的这种方式使其特征中的一个或多个被设置或改变的信号。通过举例而非限制,通信介质包括有线介质(诸如有线网络或直接有线连接)以及无线介质(诸如声学、RF、红外线及其他无线介质)。上述中的任一个的组合也应包括在计算机可读介质的范围内。
系统存储器530包括呈易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)531和随机存取存储器(RAM)532。包含诸如在启动期间帮助在计算机510内的元件之间传输信息的基本例程的基本输入/输出系统533(BIOS)通常存储在ROM 531中。RAM 532通常包含可由处理单元520立即访问和/或当前正在操作的数据和/或程序模块。作为示例且非限制,图5展示了操作系统534、应用程序535、其他程序模块536和程序数据537。
计算机510还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。仅通过举例,图5展示了读取或写入不可移除的非易失性磁介质的硬盘驱动器541、读取或写入可移除的非易失性存储器552(诸如闪存存储器)的闪存驱动器551、以及读取或写入可移除的非易失性光盘556(诸如CD ROM或其他光学介质)的光盘驱动器555。可以用于示例性操作环境中的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器541通常通过诸如接口540等不可移除存储器接口连接至系统总线521,并且磁盘驱动器551和光盘驱动器555通常由诸如接口550等可移除存储器接口连接至系统总线521。
上面讨论并在图5中展示的驱动器及其相关联的计算机存储介质为计算机510提供了计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图5中,硬盘驱动器541被展示为存储操作系统544、应用程序545、其他程序模块546和程序数据547。注意,这些部件与操作系统534、应用程序535、其他程序模块536和程序数据537可以是相同或不同的。这里给予了操作系统544、应用程序545、其他程序模块546和程序数据547不同的编号,以说明至少它们是不同的副本。用户可以通过诸如键盘562和定点设备561(通常称为鼠标、轨迹球或触摸板)等输入设备将命令和信息输入到计算机510中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线的用户输入接口560连接到处理单元520,但可以由诸如并行端口、游戏端口或通用串行总线(USB)等其他接口和总线结构来连接。监视器591或其他类型的显示设备也经由诸如视频接口590等接口连接至系统总线521。除了监视器之外,计算机还可以包括可通过输出外围接口595连接的其他外围输出设备,诸如扬声器597和打印机596。
计算机510可以使用与一个或多个远程计算机(诸如远程计算机580)的逻辑连接在联网环境中操作。远程计算机580可以是个人计算机、服务器、路由器、网络PC、对等设备、或其他常见网络节点,并且通常包括以上描述的相对于计算机510的元件中的许多或全部,但是在图5中仅展示了存储器存储设备581。图5中描绘的逻辑连接包括局域网(LAN)571和广域网(WAN)573,但是还可以包括其他网络。这种联网环境在办公室、企业范围计算机网络、内联网和互联网中是普遍的。
当在LAN联网环境中使用时,计算机510通过网络接口或适配器570连接到LAN571。当在WAN联网环境中使用时,计算机510通常包括调制解调器572或用于通过诸如互联网等WAN 573建立通信的其他装置。调制解调器572可以是内置的或外置的,其可以经由用户输入接口560或其他适当的机制连接到系统总线521。在联网环境中,关于计算机510描绘的程序模块或是其部分可以存储在远程存储器存储设备中。作为示例且非限制性的,图5展示了远程应用程序585驻留在存储器设备581上。应当理解,所示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
如此描述了本发明的至少一个实施例的若干方面之后,应当理解,本领域技术人员会容易想到各种更改、修改以及改进。
这种更改、修改以及改进旨在是本披露内容的一部分、并且旨在落入本发明的精神和范围之内。此外,尽管指示了本发明的优点,但应当理解,并非本文所描述的技术的每个实施例都将包括每个描述的优点。一些实施例可以不实施在本文中描述为有利的任何特征,并且在一些情况下,可以实施描述的特征中的一个或多个以实现进一步的实施例。因此,先前的描述和附图仅是通过举例的方式。
本文所描述的技术的上述实施例可以以多种方式中的任一种来实施。例如,可以使用硬件、软件或其组合来实施这些实施例。当在软件中实施时,可以在任何合适的处理器或处理器集合上执行软件代码,无论该处理器或处理器集合是设置在单个计算机中还是分布在多个计算机中。此类处理器可以被实施为集成电路(其中,一个集成电路部件中具有一个或多个处理器),包括名称为诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器等本领域已知的商用集成电路部件。可替代地,处理器可以以定制电路系统(诸如ASIC)或者通过配置可编程逻辑设备产生的半定制电路系统来实施。作为又一替代方案,处理器可以是较大电路的一部分或半导体器件,无论是商用的、半定制的还是定制的。作为具体示例,一些商用微处理器具有多个核,使得这些核中的一个或子集可以构成处理器。然而,处理器可以使用呈任何合适格式的电路系统来实施。
进一步地,应当理解,计算机可以实施为多种形式中的任何形式,诸如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可以嵌入在通常不被认为是计算机但具有合适的处理能力的设备中,该设备包括个人数字助理(PDA)、智能手机或任何其他合适的便携式或固定式电子设备。
而且,计算机可以具有一个或多个输入设备和输出设备。这些设备可以尤其用于呈现用户接口。可以用于提供用户接口的输出设备的示例包括用于对输出进行视觉呈现的打印机或显示屏,以及用于对输出进行听觉呈现的扬声器或其他声音生成设备。可以用于用户接口的输入设备的示例包括键盘和定点设备(诸如鼠标、触摸板以及数字化平板)。作为另一个示例,计算机可以通过语音识别或以其他可听格式接收输入信息。
这种计算机可以由呈任何合适的形式的一个或多个网络来互连,该一个或多个网络包括局域网或广域网,诸如企业网或互联网。这种网络可以基于任何合适的技术并且可以根据任何合适的协议来运行,并且可以包括无线网络、有线网络或光纤网络。
而且,本文中概括的各种方法或过程可以被编码为在采用各种操作系统或平台中的任一种的一个或多个处理器上可执行的软件。另外,这种软件可以使用多种合适的编程语言和/或编程或脚本工具中的任一种来编写,并且还可以被编译为可执行的机器语言代码或在框架或虚拟机上执行的中间代码。
在这方面,本发明可以被实施为用一个或多个程序进行编码的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存存储器、现场可编程门阵列或其他半导体器件中的电路配置、或其他有形计算机存储介质),该一个或多个程序在一个或多个计算机或其他处理器上执行时进行实施以上讨论的本发明的各种实施例的方法。如从前文示例将清楚明白,计算机可读存储介质可以将信息保留足够的时间,以便提供呈非暂态形式的计算机可执行指令。这种计算机可读存储介质可以是可运送的,使得其上存储的一个或多个程序可以载入到一个或多个不同的计算机或其他处理器上,以实施如上讨论的本发明的各个方面。如本文使用的,术语“计算机可读存储介质”仅涵盖可被看作是制品(即,制造物品)或机器的非暂态计算机可读介质。可替代地或附加地,本发明可以实施为除了计算机可读存储介质之外的计算机可读介质,诸如传播信号。
术语“程序”或“软件”当在本文中使用时在一般意义上使用,以指代任何类型的计算机代码或计算机可执行指令集,这些计算机代码或计算机可执行指令集可以被用来对计算机或其他处理器进行编程以实施如上讨论的本发明的各个方面。另外,应该理解,根据此实施例的一个方面,当被执行时进行本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以用模块化的方式分布在多个不同的计算机或处理器中以实施本发明的各个方面。
计算机可执行指令可以呈由一个或多个计算机或其他设备执行的许多形式,诸如程序模块。通常,程序模块包括进行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以如各个实施例所期望的而组合或分布。
而且,数据结构可以以任何合适的形式存储在计算机可读介质中。为了简化说明,可以将数据结构示出为具有通过数据结构中的位置而相关的字段。这种关系同样可以通过为针对字段的存储指派传达字段之间关系的计算机可读介质中的位置来实现。然而,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签、或建立数据元素之间的关系的其他机制。
本发明的各个方面可以单独使用、组合使用、或以前文所述的实施例中未确切讨论的各种布置使用,并且因此在其应用中不局限于其在前文描述中所阐述或附图中所展示的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其他实施例中描述的方面组合。
而且,本发明可以实施为其示例已被提供的一种方法。作为该方法的一部分而进行的动作可以以任何合适的方式排序。因此,可以构造实施例,在这些实施例中,动作以与所展示的顺序不同的顺序进行,这可以包括同时进行一些动作,即使这些动作在说明性实施例中被示出为顺序动作。
进一步地,一些动作被描述为由“用户”做出。应当理解,“用户”不必是单个个人,并且在一些实施例中,可归因于“用户”的动作可以由个人团队和/或个人与计算机辅助工具或其他机构的组合来进行。
在权利要求中使用诸如“第一”、“第二”、“第三”等序数术语来修饰权利要求要素本身并不意味着一个权利要求要素优先于另一个权利要求要素的任何优先级、优先权或顺序,或者进行方法的动作的时间顺序,而是仅用作用于将具有某个名称的一个权利要求要素与具有同一名称(但使用序数术语)的另一个要素进行区分的标签,从而区分这些权利要求要素。
而且,在本文中使用的措辞和术语是用于描述的目的,而不应当被视为是限制性的。本文使用的“包括(including)”、“包括(comprising)”或“具有(having)”、“包含(containing)”、“涉及(involving)”及其变化形式旨在涵盖其后所列的项及其等效形式,以及其他项。
Claims (21)
1.一种非暂态计算机可读介质,包括在由至少一个处理器执行时执行将程序转换为数据流图的方法的指令,其中,该程序包括数据操作和指示这些数据操作的执行序列的控制流,该方法包括:
使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序,所述分析包括:
基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每个步骤包括该程序的一个或多个数据操作;
生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;
对于该程序的识别出的多个步骤中的每个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及
基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及
使用该至少一个处理器生成数据流图,该数据流图包括:
该多个经配置的数据流图组件;以及
表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,
其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
2.如权利要求1所述的非暂态计算机可读介质,其中,该程序是统计分析系统(SAS)程序。
3.如权利要求1所述的非暂态计算机可读介质,其中,分析该程序进一步包括识别该程序中定义的宏,并且其中,配置该多个数据流图组件进一步包括基于该宏定义生成至少一个参数集。
4.如权利要求1所述的非暂态计算机可读介质,其中,该程序包括注释,并且其中,配置该多个数据流图组件包括将该多个数据流图组件中的至少一些数据流图组件配置为包括这些注释。
5.如权利要求1所述的非暂态计算机可读介质,其中,所生成的数据流图包括被配置为彼此并行地执行的第一组数据流图组件和第二组数据流图组件。
6.如权利要求5所述的非暂态计算机可读介质,其中:
该程序包括该多个数据操作中的第一组一个或多个数据操作以及该多个数据操作中的第二组一个或多个数据操作,
该第一组数据操作和该第二组数据操作彼此不相依赖,
该第一组数据流图组件执行该第一组数据操作,并且
该第二组数据流图组件执行该第二组数据操作。
7.如权利要求1所述的非暂态计算机可读介质,其中,该程序包括该程序的符号之间的空白符,并且其中,配置该多个数据流图组件在所生成的指令的与这些符号相对应的部分之间保留空白符。
8.如权利要求1所述的非暂态计算机可读介质,其中,分析该程序进一步包括识别该程序中定义的子例程,并且其中,该方法进一步包括基于该子例程定义生成至少一个子图。
9.如权利要求8所述的非暂态计算机可读介质,其中,该子例程被定义为具有一个或多个输入值,这些输入值的值改变该子例程的可执行行为,并且其中,所生成的至少一个子图被生成为具有与该子例程的一个或多个输入值相对应的至少一个子图参数。
10.如权利要求1所述的非暂态计算机可读介质,其中,该多个步骤中的每个步骤包括该程序的多个数据操作。
11.一种用于将程序自动转换为数据流图的计算机实施的方法,其中,该程序包括数据操作和指示这些数据操作的执行序列的控制流,该方法包括:
使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序,所述分析包括:
基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每个步骤包括该程序的一个或多个数据操作;
生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;
对于该程序的识别出的多个步骤中的每个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及
基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及
使用该至少一个处理器生成数据流图,该数据流图包括:
该多个经配置的数据流图组件;以及
表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,
其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
12.如权利要求11所述的方法,其中,该程序是统计分析系统(SAS)程序。
13.如权利要求11所述的方法,其中,分析该程序进一步包括识别该程序中定义的宏,并且其中,配置该多个数据流图组件进一步包括基于该宏定义生成至少一个参数集。
14.如权利要求11所述的方法,其中,该程序包括注释,并且其中,配置该多个数据流图组件包括将该多个数据流图组件中的至少一些数据流图组件配置为包括这些注释。
15.如权利要求11所述的方法,其中,所生成的数据流图包括被配置为彼此并行地执行的第一组数据流图组件和第二组数据流图组件。
16.如权利要求15所述的方法,其中:
该程序包括该多个数据操作中的第一组一个或多个数据操作以及该多个数据操作中的第二组一个或多个数据操作,
该第一组数据操作和该第二组数据操作彼此不相依赖,
该第一组数据流图组件执行该第一组数据操作,并且
该第二组数据流图组件执行该第二组数据操作。
17.如权利要求11所述的方法,其中,该程序包括该程序的符号之间的空白符,并且其中,配置该多个数据流图组件在所生成的指令的与这些符号相对应的部分之间保留空白符。
18.如权利要求11所述的方法,其中,分析该程序进一步包括识别该程序中定义的子例程,并且其中,该方法进一步包括基于该子例程定义生成至少一个子图。
19.如权利要求18所述的方法,其中,该子例程被定义为具有一个或多个输入值,这些输入值的值改变该子例程的可执行行为,并且其中,所生成的至少一个子图被生成为具有与该子例程的一个或多个输入值相对应的至少一个子图参数。
20.如权利要求11所述的方法,其中,该多个步骤中的每个步骤包括该程序的多个数据操作。
21.一种用于将程序自动转换为数据流图的系统,其中,该程序包括数据操作和指示这些数据操作的执行序列的控制流,该系统包括:
用于使用该至少一个处理器并且使用由该至少一个计算机可读介质存储的语法来分析该程序的装置,所述分析包括:
基于该语法识别该程序的多个顺序步骤,其中,该多个步骤中的每个步骤包括该程序的一个或多个数据操作;
生成目录,该目录存储该程序的多个识别出的步骤之间的控制流关系;
对于该程序的识别出的多个步骤中的每个步骤,基于该步骤的数据操作并且基于该语法,将多个数据流图组件类型之一识别为与该步骤相对应,从而识别出各自与该程序的多个步骤中的相应步骤相对应的多个数据流图组件;以及
基于该程序的多个步骤中的各个对应步骤并且基于该语法,配置该多个数据流图组件,从而产生多个经配置的数据流图组件;以及
用于生成数据流图的装置,该数据流图包括:
该多个经配置的数据流图组件;以及
表示该一个或多个数据流图组件之间的数据记录的流动的一个或多个流,
其中,该一个或多个数据流图组件经由该一个或多个流以根据所生成的目录的顺序进行连接。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/515,995 US11093223B2 (en) | 2019-07-18 | 2019-07-18 | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US16/515,995 | 2019-07-18 | ||
PCT/US2020/042574 WO2021011886A1 (en) | 2019-07-18 | 2020-07-17 | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114503073A true CN114503073A (zh) | 2022-05-13 |
Family
ID=72047005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080051878.1A Pending CN114503073A (zh) | 2019-07-18 | 2020-07-17 | 将用过程编程语言编写的程序自动转换为数据流图及相关系统和方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11093223B2 (zh) |
EP (1) | EP3999950B1 (zh) |
JP (1) | JP2022540713A (zh) |
CN (1) | CN114503073A (zh) |
AU (1) | AU2020315655A1 (zh) |
BR (1) | BR112022000810A2 (zh) |
CA (1) | CA3147633A1 (zh) |
DE (1) | DE112020003431T5 (zh) |
WO (1) | WO2021011886A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117558381A (zh) * | 2024-01-12 | 2024-02-13 | 四川大学 | 一种金属材料温度与应变速率相关塑性硬化模型计算方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11440190B1 (en) * | 2020-02-26 | 2022-09-13 | Trend Micro Incorporated | Detecting unsecure data flow in automation task programs |
US20220414070A1 (en) * | 2021-06-23 | 2022-12-29 | Microsoft Technology Licensing, Llc | Tracking data lineage and applying data removal to enforce data removal policies |
Family Cites Families (192)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4586137A (en) | 1982-10-18 | 1986-04-29 | Dresser Industries, Inc. | Method for generating variable well logging data composites |
JPH01108638A (ja) | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
JP2738692B2 (ja) | 1988-01-29 | 1998-04-08 | 株式会社日立製作所 | 並列化コンパイル方法 |
JPH0267682A (ja) | 1988-09-02 | 1990-03-07 | Hitachi Ltd | データベースシステム |
US5072371A (en) | 1989-03-01 | 1991-12-10 | The United States Of America As Represented By The United States Department Of Energy | Method for simultaneous overlapped communications between neighboring processors in a multiple |
US5121494A (en) | 1989-10-05 | 1992-06-09 | Ibm Corporation | Joining two database relations on a common field in a parallel relational database field |
US5367619A (en) | 1990-04-27 | 1994-11-22 | Eaton Corporation | Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms |
US5210030A (en) | 1990-06-25 | 1993-05-11 | Merck & Co., Inc. | Process for selectively acylating immunomycin |
US5347639A (en) | 1991-07-15 | 1994-09-13 | International Business Machines Corporation | Self-parallelizing computer system and method |
US5632022A (en) | 1991-11-13 | 1997-05-20 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Encyclopedia of software components |
US5313584A (en) | 1991-11-25 | 1994-05-17 | Unisys Corporation | Multiple I/O processor system |
FR2696853B1 (fr) | 1992-10-12 | 1994-12-23 | Bull Sa | Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant. |
JPH05217007A (ja) * | 1992-02-04 | 1993-08-27 | Sharp Corp | データフロープログラムの実行制御方法 |
JPH05257709A (ja) | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
US5432940A (en) | 1992-11-02 | 1995-07-11 | Borland International, Inc. | System and methods for improved computer-based training |
US5574898A (en) | 1993-01-08 | 1996-11-12 | Atria Software, Inc. | Dynamic software version auditor which monitors a process to provide a list of objects that are accessed |
US5446915A (en) | 1993-05-25 | 1995-08-29 | Intel Corporation | Parallel processing system virtual connection method and apparatus with protection and flow control |
US5475842A (en) | 1993-08-11 | 1995-12-12 | Xerox Corporation | Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution |
JPH0765032A (ja) | 1993-08-27 | 1995-03-10 | Toshiba Corp | データベース言語変換機能を持つ情報処理システム |
US5600833A (en) | 1993-09-17 | 1997-02-04 | Digital Equipment Corp. | Attribute portion based document retrieval system with system query language interface |
JP4050339B2 (ja) | 1994-04-28 | 2008-02-20 | 株式会社東芝 | 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置 |
US5860009A (en) | 1994-04-28 | 1999-01-12 | Kabushiki Kaisha Toshiba | Programming method for concurrent programs and program supporting apparatus thereof |
US5588150A (en) | 1994-09-29 | 1996-12-24 | International Business Machines Corporation | Push down optimization in a distributed, multi-database system |
US5768564A (en) | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
FI98690C (fi) | 1994-10-18 | 1997-07-25 | Nokia Telecommunications Oy | Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä |
US5734886A (en) | 1994-11-16 | 1998-03-31 | Lucent Technologies Inc. | Database dependency resolution method and system for identifying related data files |
FI98973C (fi) | 1994-11-22 | 1997-09-10 | Nokia Telecommunications Oy | Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä |
US5546576A (en) | 1995-02-17 | 1996-08-13 | International Business Machines Corporation | Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation |
US5619692A (en) | 1995-02-17 | 1997-04-08 | International Business Machines Corporation | Semantic optimization of query order requirements using order detection by normalization in a query compiler system |
FI100215B (fi) | 1995-03-17 | 1997-10-15 | Nokia Telecommunications Oy | Matkaviestijärjestelmän tilaajatietojen päivittäminen |
US5706509A (en) | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
US5678044A (en) | 1995-06-02 | 1997-10-14 | Electronic Data Systems Corporation | System and method for improved rehosting of software systems |
US5682537A (en) | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5819021A (en) | 1995-12-11 | 1998-10-06 | Ab Initio Software Corporation | Overpartitioning system and method for increasing checkpoints in component-based parallel applications |
US5712971A (en) | 1995-12-11 | 1998-01-27 | Ab Initio Software Corporation | Methods and systems for reconstructing the state of a computation |
KR100200095B1 (ko) | 1995-12-30 | 1999-06-15 | 윤종용 | 디지탈 컨버젼스를 이용한 화면 이펙트 방법 및회로 |
US5959704A (en) | 1996-02-08 | 1999-09-28 | Fujitsu Limited | Display device having diffraction grating |
US5909681A (en) | 1996-03-25 | 1999-06-01 | Torrent Systems, Inc. | Computer system and computerized method for partitioning data for parallel processing |
US6311265B1 (en) | 1996-03-25 | 2001-10-30 | Torrent Systems, Inc. | Apparatuses and methods for programming parallel computers |
JPH09319757A (ja) | 1996-05-29 | 1997-12-12 | N T T Data Tsushin Kk | 情報検索システム |
US5799149A (en) | 1996-06-17 | 1998-08-25 | International Business Machines Corporation | System partitioning for massively parallel processors |
US5870743A (en) | 1996-06-24 | 1999-02-09 | Oracle Corporation | Method and apparatus for parallelizing operations that create a table |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
JP4533974B2 (ja) | 1996-08-01 | 2010-09-01 | 康 清木 | 異種データベース統合システム |
JPH1091494A (ja) | 1996-09-19 | 1998-04-10 | Hitachi Ltd | データベース操作プログラムの変換方法および変換装置 |
JPH10232875A (ja) | 1997-02-19 | 1998-09-02 | Hitachi Ltd | データベース管理方法および並列データベース管理システム |
US6330008B1 (en) | 1997-02-24 | 2001-12-11 | Torrent Systems, Inc. | Apparatuses and methods for monitoring performance of parallel computing |
US5999729A (en) | 1997-03-06 | 1999-12-07 | Continuum Software, Inc. | System and method for developing computer programs for execution on parallel processing systems |
US5956074A (en) | 1997-03-11 | 1999-09-21 | Sclafani; Peter J. | Cable television return display unit |
JP3155991B2 (ja) | 1997-04-09 | 2001-04-16 | 日本アイ・ビー・エム株式会社 | 集約演算実行方法及びコンピュータ・システム |
US6092062A (en) | 1997-06-30 | 2000-07-18 | International Business Machines Corporation | Relational database query optimization to perform query evaluation plan, pruning based on the partition properties |
US6077313A (en) | 1997-10-22 | 2000-06-20 | Microsoft Corporation | Type partitioned dataflow analyses |
US6295518B1 (en) | 1997-12-09 | 2001-09-25 | Mci Communications Corporation | System and method for emulating telecommunications network devices |
US6266804B1 (en) | 1997-12-23 | 2001-07-24 | Ab Initio Software Corporation | Method for analyzing capacity of parallel processing systems |
US6625593B1 (en) | 1998-06-29 | 2003-09-23 | International Business Machines Corporation | Parallel query optimization strategies for replicated and partitioned tables |
US6205465B1 (en) | 1998-07-22 | 2001-03-20 | Cisco Technology, Inc. | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information |
US6453464B1 (en) | 1998-09-03 | 2002-09-17 | Legacyj. Corp., Inc. | Method and apparatus for converting COBOL to Java |
US6339769B1 (en) | 1998-09-14 | 2002-01-15 | International Business Machines Corporation | Query optimization by transparently altering properties of relational tables using materialized views |
US6378126B2 (en) | 1998-09-29 | 2002-04-23 | International Business Machines Corporation | Compilation of embedded language statements in a source code program |
JP2000148699A (ja) | 1998-11-06 | 2000-05-30 | Nec Corp | ネットワークマネージメントシステム |
JP4406944B2 (ja) | 1998-11-11 | 2010-02-03 | 株式会社日立製作所 | 計算機システム及び問合せに対する処理分散システム |
US7047232B1 (en) | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
US7080062B1 (en) | 1999-05-18 | 2006-07-18 | International Business Machines Corporation | Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries |
US6560593B1 (en) | 1999-07-20 | 2003-05-06 | Computer Associates Think, Inc. | Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query |
JP4552242B2 (ja) | 1999-10-06 | 2010-09-29 | 株式会社日立製作所 | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
WO2001045008A1 (en) | 1999-12-16 | 2001-06-21 | Debit.Net, Inc. | Secure networked transaction system |
US6615203B1 (en) | 1999-12-17 | 2003-09-02 | International Business Machines Corporation | Method, computer program product, and system for pushdown analysis during query plan generation |
JP3795289B2 (ja) | 2000-02-07 | 2006-07-12 | 日本電信電話株式会社 | データベースの実行制御装置 |
US6947934B1 (en) | 2000-02-16 | 2005-09-20 | International Business Machines Corporation | Aggregate predicates and search in a database management system |
JP4483034B2 (ja) | 2000-06-06 | 2010-06-16 | 株式会社日立製作所 | 異種データソース統合アクセス方法 |
US6836883B1 (en) | 2000-06-21 | 2004-12-28 | Microsoft Corporation | Method and system for compiling multiple languages |
US7164422B1 (en) | 2000-07-28 | 2007-01-16 | Ab Initio Software Corporation | Parameterized graphs with conditional components |
US6785668B1 (en) | 2000-11-28 | 2004-08-31 | Sas Institute Inc. | System and method for data flow analysis of complex data filters |
JP4543563B2 (ja) | 2001-02-28 | 2010-09-15 | 株式会社日立製作所 | 統合データベースシステムにおける問合せ最適化方法 |
US7418441B2 (en) | 2001-02-28 | 2008-08-26 | International Business Machines Corporation | Data loading from a remote data source record by record |
US8412746B2 (en) | 2001-05-25 | 2013-04-02 | International Business Machines Corporation | Method and system for federated querying of data sources |
US6877000B2 (en) | 2001-08-22 | 2005-04-05 | International Business Machines Corporation | Tool for converting SQL queries into portable ODBC |
US6725212B2 (en) | 2001-08-31 | 2004-04-20 | International Business Machines Corporation | Platform-independent method and system for graphically presenting the evaluation of a query in a database management system |
JP2003099441A (ja) | 2001-09-21 | 2003-04-04 | Hitachi Ltd | データ検索手順探索方法 |
US6915290B2 (en) | 2001-12-11 | 2005-07-05 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US7409474B2 (en) | 2002-06-27 | 2008-08-05 | Broadcom Corporation | Method and system for rate adaptation |
US7167850B2 (en) | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
US7076772B2 (en) | 2003-02-26 | 2006-07-11 | Bea Systems, Inc. | System and method for multi-language extensible compiler framework |
US7953891B2 (en) | 2003-03-18 | 2011-05-31 | Microsoft Corporation | Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow |
CA2429910A1 (en) | 2003-05-27 | 2004-11-27 | Cognos Incorporated | System and method of query transformation |
US7249120B2 (en) | 2003-06-27 | 2007-07-24 | Microsoft Corporation | Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables |
US20050038788A1 (en) | 2003-08-14 | 2005-02-17 | International Business Machines Corporation | Annotation security to prevent the divulgence of sensitive information |
US7747606B2 (en) | 2003-09-06 | 2010-06-29 | Oracle International Corporation | Automatic SQL tuning advisor |
US7702610B2 (en) | 2003-09-19 | 2010-04-20 | Netezza Corporation | Performing sequence analysis as a multipart plan storing intermediate results as a relation |
US7165063B2 (en) | 2003-11-19 | 2007-01-16 | International Business Machines Corporation | Context quantifier transformation in XML query rewrite |
US7133861B2 (en) | 2003-12-04 | 2006-11-07 | International Business Machines Corporation | Query access plan rebuilds |
US7930432B2 (en) | 2004-05-24 | 2011-04-19 | Microsoft Corporation | Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow |
US20060047696A1 (en) | 2004-08-24 | 2006-03-02 | Microsoft Corporation | Partially materialized views |
US7941794B2 (en) * | 2004-08-30 | 2011-05-10 | Sanyo Electric Co., Ltd. | Data flow graph processing method and processing apparatus provided with reconfigurable circuit |
CN100518079C (zh) | 2004-09-30 | 2009-07-22 | 北京航空航天大学 | 分布式性能数据采集方法 |
US7899833B2 (en) | 2004-11-02 | 2011-03-01 | Ab Initio Technology Llc | Managing related data objects |
US7461052B2 (en) | 2004-12-06 | 2008-12-02 | International Business Machines Corporation | Abstract query plan |
US7890532B2 (en) | 2004-12-15 | 2011-02-15 | Microsoft Corporation | Complex data access |
US7359922B2 (en) | 2004-12-22 | 2008-04-15 | Ianywhere Solutions, Inc. | Database system and methodology for generalized order optimization |
US20060265362A1 (en) | 2005-05-18 | 2006-11-23 | Content Analyst Company, Llc | Federated queries and combined text and relational data |
US7856523B2 (en) | 2005-06-01 | 2010-12-21 | Microsoft Corporation | Random Access Memory (RAM) based Content Addressable Memory (CAM) management |
CA2519604C (en) | 2005-06-23 | 2011-07-12 | Cognos Incorporated | Master-detail provider and method of providing master-detail functionality |
US8935273B2 (en) | 2005-06-23 | 2015-01-13 | International Business Machines Corporation | Method of processing and decomposing a multidimensional query against a relational data source |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US7584205B2 (en) | 2005-06-27 | 2009-09-01 | Ab Initio Technology Llc | Aggregating data with complex operations |
US7877350B2 (en) | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
JP2007012182A (ja) | 2005-06-30 | 2007-01-18 | Sanyo Electric Co Ltd | 光ディスク装置 |
CA2519010A1 (en) | 2005-09-13 | 2007-03-13 | Cognos Incorporated | Query framework system and method |
CA2519001A1 (en) | 2005-09-13 | 2007-03-13 | Cognos Incorporated | System and method of data agnostic business intelligence query |
US20070067274A1 (en) | 2005-09-16 | 2007-03-22 | International Business Machines Corporation | Hybrid push-down/pull-up of unions with expensive operations in a federated query processor |
WO2007061430A1 (en) | 2005-11-22 | 2007-05-31 | Bea Systems, Inc. | System and method for translating sql queries into xml query language |
US20070214179A1 (en) | 2006-03-10 | 2007-09-13 | Khanh Hoang | Searching, filtering, creating, displaying, and managing entity relationships across multiple data hierarchies through a user interface |
US7464084B2 (en) | 2006-01-30 | 2008-12-09 | International Business Machines Corporation | Method for performing an inexact query transformation in a heterogeneous environment |
US7945562B2 (en) | 2006-03-15 | 2011-05-17 | Oracle International Corporation | Join predicate push-down optimizations |
US7870556B2 (en) | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
JP5096464B2 (ja) | 2006-06-01 | 2012-12-12 | メディアライフ モーシュトル ウント ライフ コミュニケーションズ−ウント インフォメーションズテクノロジーン オーエーゲー | 関係データベースシステムを制御するための方法 |
WO2008021953A2 (en) | 2006-08-10 | 2008-02-21 | Ab Initio Software Llc | Distributing services in graph-based computations |
JP4872529B2 (ja) | 2006-08-22 | 2012-02-08 | 株式会社日立製作所 | リバースエンジニアリング支援方法 |
WO2008024917A2 (en) | 2006-08-23 | 2008-02-28 | Innovative Solution, Inc. | Efficient search result update mechanism |
TWI348139B (en) | 2006-08-24 | 2011-09-01 | Wintek Corp | A lcd scan lines driving method |
JP2008084028A (ja) | 2006-09-27 | 2008-04-10 | Toshiba Corp | データベース検索システムおよびデータベース検索方法 |
JP2008158664A (ja) | 2006-12-21 | 2008-07-10 | Sony Corp | 通信システム、サーバ、通信端末及び通信方法 |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
US8122088B2 (en) | 2007-06-28 | 2012-02-21 | International Business Machines Corporation | Adding personal note capabilities to text exchange clients |
EP2026479A1 (de) | 2007-08-17 | 2009-02-18 | Leica Geosystems AG | Transimpedanzverstärkerschaltung für einen Photodetektor |
US20100005077A1 (en) | 2008-07-07 | 2010-01-07 | Kickfire, Inc. | Methods and systems for generating query plans that are compatible for execution in hardware |
US9424315B2 (en) | 2007-08-27 | 2016-08-23 | Teradata Us, Inc. | Methods and systems for run-time scheduling database operations that are executed in hardware |
AU2008302144B2 (en) | 2007-09-20 | 2014-09-11 | Ab Initio Technology Llc | Managing data flows in graph-based computations |
US8495602B2 (en) | 2007-09-28 | 2013-07-23 | Qualcomm Incorporated | Shader compile system and method |
US7673065B2 (en) | 2007-10-20 | 2010-03-02 | Oracle International Corporation | Support for sharing computation between aggregations in a data stream management system |
US10452768B2 (en) * | 2007-11-03 | 2019-10-22 | International Business Machines Corporation | Managing source annotation metadata |
US8527976B2 (en) | 2007-11-14 | 2013-09-03 | Nec Laboratories America, Inc. | System and method for generating error traces for concurrency bugs |
CN101436192B (zh) | 2007-11-16 | 2011-03-16 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
US9165032B2 (en) | 2007-11-21 | 2015-10-20 | Hewlett-Packard Development Company, L.P. | Allocation of resources for concurrent query execution via adaptive segmentation |
US8429601B2 (en) | 2007-11-29 | 2013-04-23 | Red Hat, Inc. | Code completion for object relational mapping query language (OQL) queries |
US20090198703A1 (en) | 2008-01-31 | 2009-08-06 | Hewlett-Packard Development Company, L.P. | Intelligent data storage system |
CN101971165B (zh) | 2008-02-26 | 2013-07-17 | 起元技术有限责任公司 | 数据关系的图形表示 |
US7933916B2 (en) | 2008-02-28 | 2011-04-26 | Microsoft Corporation | Querying nonSQL data stores with a SQL-style language |
US8537160B2 (en) | 2008-03-05 | 2013-09-17 | Microsoft Corporation | Generating distributed dataflow graphs |
JP2009217405A (ja) | 2008-03-07 | 2009-09-24 | Nec Corp | ジョブネットワーク自動生成方式及びプログラム |
US8538985B2 (en) | 2008-03-11 | 2013-09-17 | International Business Machines Corporation | Efficient processing of queries in federated database systems |
EP2261885A4 (en) | 2008-04-11 | 2011-08-24 | Sharp Kk | DISPLAY DEVICE AND DISPLAY DEVICE CONTROL METHOD |
US7974967B2 (en) | 2008-04-15 | 2011-07-05 | Sap Ag | Hybrid database system using runtime reconfigurable hardware |
WO2009127639A1 (en) | 2008-04-16 | 2009-10-22 | International Business Machines Corporation | Query processing visualization system and method of visualizing query processing |
US20100057695A1 (en) | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Post-processing search results on a client computer |
US20100088674A1 (en) * | 2008-10-06 | 2010-04-08 | Microsoft Corporation | System and method for recognizing structure in text |
US7917463B2 (en) | 2008-10-10 | 2011-03-29 | Business.Com, Inc. | System and method for data warehousing and analytics on a distributed file system |
US20100121868A1 (en) | 2008-11-07 | 2010-05-13 | Yann Le Biannic | Converting a database query to a multi-dimensional expression query |
US9218209B2 (en) | 2008-12-31 | 2015-12-22 | Pivotal Software, Inc. | Apparatus and method for parallel processing of a query |
US8666966B2 (en) | 2009-01-30 | 2014-03-04 | Hewlett-Packard Development Company, L.P. | Providing parallel result streams for database queries |
JP4659888B2 (ja) | 2009-02-13 | 2011-03-30 | 株式会社日立製作所 | データベース処理システム、計算機及びデータベース処理方法 |
KR20150038758A (ko) | 2009-02-13 | 2015-04-08 | 아브 이니티오 테크놀로지 엘엘시 | 태스크 실행 관리 |
US20100241893A1 (en) | 2009-03-18 | 2010-09-23 | Eric Friedman | Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment |
US8392398B2 (en) | 2009-07-29 | 2013-03-05 | International Business Machines Corporation | Query optimization over graph data streams |
US9477778B2 (en) | 2009-08-21 | 2016-10-25 | Oracle International Corporation | XML query optimization with order analysis of XML schema |
CN101645074A (zh) | 2009-09-07 | 2010-02-10 | 浪潮集团山东通用软件有限公司 | 一种访问不同类型关系型数据库的方法 |
US9064047B2 (en) | 2009-09-24 | 2015-06-23 | International Business Machines Corporation | Parallel processing of ETL jobs involving extensible markup language documents |
US8620903B2 (en) | 2009-11-04 | 2013-12-31 | Nec Laboratories America, Inc. | Database distribution system and methods for scale-out applications |
US8688683B2 (en) | 2009-11-30 | 2014-04-01 | Business Objects Software Ltd. | Query plan reformulation |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
WO2011090549A1 (en) | 2010-01-20 | 2011-07-28 | Aetna Inc. | System and method for code automation |
US8204903B2 (en) | 2010-02-16 | 2012-06-19 | Microsoft Corporation | Expressing and executing semantic queries within a relational database |
US9286370B2 (en) | 2010-02-24 | 2016-03-15 | International Business Machines Corporation | Viewing a dimensional cube as a virtual data source |
US8555265B2 (en) | 2010-05-04 | 2013-10-08 | Google Inc. | Parallel processing of data |
US9495427B2 (en) | 2010-06-04 | 2016-11-15 | Yale University | Processing of data using a database system in communication with a data processing framework |
JP5898188B2 (ja) | 2010-06-15 | 2016-04-06 | アビニシオ テクノロジー エルエルシー | グラフに基づく計算の動的ロード |
CA2803152C (en) | 2010-06-21 | 2015-02-24 | Mark D. Rose | Low-power wirelessly-linked rfid tracking system |
JP5536568B2 (ja) | 2010-07-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを集約して処理する方法、システム、およびプログラム |
JP5199317B2 (ja) | 2010-08-25 | 2013-05-15 | 株式会社日立製作所 | データベース処理方法、データベース処理システム及びデータベースサーバ |
US8326821B2 (en) | 2010-08-25 | 2012-12-04 | International Business Machines Corporation | Transforming relational queries into stream processing |
US9128983B2 (en) | 2010-10-13 | 2015-09-08 | Aol Inc. | Systems and methods for query optimization |
US8850574B1 (en) | 2011-02-28 | 2014-09-30 | Google Inc. | Safe self-modifying code |
US20120246158A1 (en) | 2011-03-25 | 2012-09-27 | Microsoft Corporation | Co-range partition for query plan optimization and data-parallel programming model |
KR101088834B1 (ko) | 2011-04-12 | 2011-12-06 | 디에스알 주식회사 | 크레인용 합성섬유 로프 및 이의 제조방법 |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8782081B2 (en) | 2011-05-11 | 2014-07-15 | Google Inc. | Query template definition and transformation |
US8898145B2 (en) | 2011-06-15 | 2014-11-25 | Microsoft Corporation | Query optimization techniques for business intelligence systems |
US9449030B2 (en) | 2011-06-30 | 2016-09-20 | International Business Machines Corporation | Method for native program to inherit same transaction content when invoked by primary program running in separate environment |
US8635206B2 (en) | 2011-06-30 | 2014-01-21 | International Business Machines Corporation | Database query optimization |
JP5357286B2 (ja) | 2011-09-21 | 2013-12-04 | 前田建設工業株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US9177022B2 (en) | 2011-11-02 | 2015-11-03 | Microsoft Technology Licensing, Llc | User pipeline configuration for rule-based query transformation, generation and result display |
US9098547B1 (en) | 2012-03-23 | 2015-08-04 | The Mathworks, Inc. | Generation of results to a search query with a technical computing environment (TCE)-based search engine |
JP5835084B2 (ja) | 2012-05-02 | 2015-12-24 | 富士通株式会社 | クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置 |
US9182957B2 (en) | 2012-07-10 | 2015-11-10 | Loring Craymer | Method and system for automated improvement of parallelism in program compilation |
JP6338579B2 (ja) | 2012-07-24 | 2018-06-06 | アビニシオ テクノロジー エルエルシー | データモデルにおけるエンティティのマッピング |
FR2999301B1 (fr) | 2012-12-12 | 2015-01-09 | Thales Sa | Guide optique d'images collimatees a dedoubleur de faisceaux optiques et dispositif optique associe |
EP2950211B1 (en) * | 2013-01-23 | 2021-07-07 | Waseda University | Parallelism extraction method and method for making program |
US9135301B2 (en) | 2013-03-14 | 2015-09-15 | Oracle International Corporation | Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system |
US9633104B2 (en) | 2013-05-03 | 2017-04-25 | Sas Institute Inc. | Methods and systems to operate on group-by sets with high cardinality |
AU2014360106B2 (en) | 2013-12-06 | 2019-05-23 | Ab Initio Technology Llc | Source code translation |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
-
2019
- 2019-07-18 US US16/515,995 patent/US11093223B2/en active Active
-
2020
- 2020-07-17 EP EP20754426.3A patent/EP3999950B1/en active Active
- 2020-07-17 JP JP2022503534A patent/JP2022540713A/ja active Pending
- 2020-07-17 CN CN202080051878.1A patent/CN114503073A/zh active Pending
- 2020-07-17 AU AU2020315655A patent/AU2020315655A1/en active Pending
- 2020-07-17 WO PCT/US2020/042574 patent/WO2021011886A1/en unknown
- 2020-07-17 DE DE112020003431.3T patent/DE112020003431T5/de active Pending
- 2020-07-17 BR BR112022000810A patent/BR112022000810A2/pt unknown
- 2020-07-17 CA CA3147633A patent/CA3147633A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117558381A (zh) * | 2024-01-12 | 2024-02-13 | 四川大学 | 一种金属材料温度与应变速率相关塑性硬化模型计算方法 |
CN117558381B (zh) * | 2024-01-12 | 2024-03-22 | 四川大学 | 一种金属材料温度与应变速率相关塑性硬化模型计算方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210019126A1 (en) | 2021-01-21 |
WO2021011886A1 (en) | 2021-01-21 |
US11093223B2 (en) | 2021-08-17 |
BR112022000810A2 (pt) | 2022-07-19 |
JP2022540713A (ja) | 2022-09-16 |
DE112020003431T5 (de) | 2022-04-21 |
EP3999950A1 (en) | 2022-05-25 |
AU2020315655A1 (en) | 2022-02-03 |
CA3147633A1 (en) | 2021-01-21 |
EP3999950B1 (en) | 2024-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7360328B2 (ja) | 異種にプログラムされたデータ処理システムの自動依存性アナライザ | |
Overmyer et al. | Conceptual modeling through linguistic analysis using LIDA | |
EP3999950B1 (en) | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods | |
US6219831B1 (en) | Device and method for converting computer programming languages | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
JPS6288033A (ja) | ソフトウエアプログラムを生成するための装置及びその方法 | |
KR101213890B1 (ko) | 강한 데이터 유형을 이용하여 소프트웨어 프로그램에서음성 인식 문법을 나타내기 위한 방법 | |
Weil et al. | Efficient compilation of Esterel for real-time embedded systems | |
US8996357B2 (en) | Method for generating diagrams, and information processing apparatus for same | |
JP3502543B2 (ja) | テストケース生成システム及びテストケース生成方法 | |
CN115374764A (zh) | 一种基于用户故事的需求模型自动生成方法及系统 | |
US7143027B2 (en) | Sentence realization system for use with unification grammars | |
Hamdani et al. | A Novel Framework to Automatically Generate IFML Models From Plain Text Requirements | |
Jarzabek | From reuse library experiences to application generation architectures | |
CN111752967A (zh) | 基于sql的数据处理方法、装置、电子设备和存储介质 | |
CN110737431A (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
Cyre et al. | Generating validation feedback for automatic interpretation of informal requirements | |
Kalnins et al. | Tool support for MOLA | |
Osis et al. | Using Use Cases for Domain Modeling. | |
Cimini | A declarative validator for GSOS languages | |
US20240004620A1 (en) | Automated generation of web applications based on wireframe metadata generated from user requirements | |
JP2009080681A (ja) | プログラム構造解析方法及び装置 | |
WO2024102449A1 (en) | Systems and methods for enhanced machine learning techniques for knowledge map generation and user interface presentation | |
Manrique-Losada et al. | NLP in Requirements Processing: A Content Analysis Based Systematic Literature Mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40074721 Country of ref document: HK |