CN109564507A - 格式特定的数据处理操作 - Google Patents

格式特定的数据处理操作 Download PDF

Info

Publication number
CN109564507A
CN109564507A CN201780046555.1A CN201780046555A CN109564507A CN 109564507 A CN109564507 A CN 109564507A CN 201780046555 A CN201780046555 A CN 201780046555A CN 109564507 A CN109564507 A CN 109564507A
Authority
CN
China
Prior art keywords
data
processing
format
computer program
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780046555.1A
Other languages
English (en)
Other versions
CN109564507B (zh
Inventor
马歇尔·A·伊斯曼
约翰·乔伊斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of CN109564507A publication Critical patent/CN109564507A/zh
Application granted granted Critical
Publication of CN109564507B publication Critical patent/CN109564507B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Abstract

一种方法,包括:利用处理器来分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及利用处理器来生成第二版本的至少一部分的计算机程序,其包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。

Description

格式特定的数据处理操作
优先权声明
本申请要求2016年6月3日提交的美国临时申请序列号62/345,217和2017年2月15日提交的美国申请序列号15/433,467的优先权,这两个申请的内容通过引用而被全部包含于此。
背景技术
复杂计算通常可被表示为通过有向图的数据流(称为“数据流图”),其中计算的组件与该图的顶点相关联,并且这些组件之间的数据流与该图的链接(弧、边)相对应。这些组件可以包括:数据处理组件,用于在一个或多个输入端口处接收数据,处理该数据,并且从一个或多个输出端口提供数据;以及数据集组件,其用作数据流的源或宿。
发明内容
在方面中,一种方法,包括:利用处理器来分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对第一格式的数据进行第一操作;以及利用处理器来生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
实施例可以包括以下特征中的一个或多个特征。
识别第一处理包括:识别所述第一操作取决于数据的格式的第一处理。
识别第一处理包括:识别不能对所述第二格式的数据进行所述第一操作的第一处理。
所述方法包括:确定通过所述第一处理要处理的数据的格式。识别第一处理包括:识别不能对具有通过所述第一处理要处理的数据的格式的数据进行所述第一操作的第一处理。
识别第一处理包括:识别所述计算机程序的第一数据处理元素,所述第一数据处理元素被配置为执行所述第一处理。将所述一个或多个第二处理包含在第二版本的至少一部分的计算机程序中包括将一个或多个第二数据处理元素包含在所述第二版本的至少一部分的计算机程序中,所述第二数据处理元素被配置为执行所述一个或多个第二处理。
所述第一格式包括数据类型。
所述第一格式包括数据元素的大小。
所述第一处理被配置为对第一记录格式的数据记录进行所述第一操作,以及其中,所述一个或多个第二处理被配置为对第二记录格式的数据记录进行所述第二操作。所述第一记录格式包括记录中的字段的名称。
所述方法包括:在用户接口中呈现第一组的一个或多个操作的标识符。
生成所述第二版本的至少一部分的计算机程序包括:生成所述计算机程序的该部分的副本。
所述方法包括修改所述计算机程序的该部分的副本以省略所述第一处理并包含所述一个或多个第二处理。
所述方法包括:执行所述第二版本的计算机程序。
所述一个或多个第二处理由覆盖规范定义。生成所述第二版本的计算机程序包括:基于所述第一版本的计算机程序和所述覆盖规范来生成所述第二版本的计算机程序。所述覆盖规范识别所述第一处理的上游的处理和所述第一处理的下游的处理中的一个或多个。所述方法包括:基于对定义所述第一处理的可执行代码的分析来识别所述第一处理。
所述计算机程序包括图。所述第一处理是所述图的第一组件所表示的可执行处理,以及其中,所述一个或多个第二处理是所述图的一个或多个第二组件所表示的可执行处理。所述一个或多个第二组件被配置为从所述图的上游组件接收数据记录。所述一个或多个第二组件被配置为向所述图的下游组件提供数据记录。
在方面中,一种系统,包括:用于利用处理器来分析第一版本的计算机程序的部件,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及用于利用处理器来生成第二版本的至少一部分的计算机程序的部件,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
在方面中,一种系统,包括:处理器,其连接至存储器,所述处理器和所述存储器被配置为:分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
在方面中,一种非暂时性计算机可读介质,其存储指令,所述指令用于使计算系统进行以下处理:分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
根据以下的说明书、以及根据权利要求书,本发明的其它特征和优点将变得明显。
附图说明
图1~3是图(graph)的示例。
图4是覆盖规范(overlay specification)的示例。
图5是框图。
图6是流程图。
图7~9是框图。
图10是流程图。
具体实施方式
诸如图等的可执行应用程序可以包括特定于该可执行应用程序所要处理的特定格式的数据记录的一个或多个处理。这样的处理能够仅对特定格式的数据进行操作,并且尝试对不同格式的数据执行这些处理可能导致错误或不正确的处理。这里说明用以识别可执行应用程序的特定于特定格式的数据的处理的方法。为了使得可执行应用程序能够对不同格式的数据进行操作,可以生成省略了这些格式特定处理且包括一个或多个其它处理的第二版本的可执行应用程序。这些其它处理(有时称为替换处理)可以进行如下的操作,该操作基于通过所省略的格式特定处理所进行的操作,但特定于不同的一个或多个格式的数据或者能够对任何格式的数据进行操作。将替换处理包括在第二版本的可执行应用程序中使得可执行应用程序能够处理与配置原始版本的可执行应用程序的格式不同的格式的数据。
替换处理可以由作为与原始可执行应用程序(有时也称为第一应用程序)分开的文件的覆盖规范定义。覆盖规范中所定义的替换处理可被添加到第二版本的应用程序(有时也称为第二应用程序)中,而不是成为原始应用程序的一部分。例如,在编译应用程序时,编译器考虑覆盖文件,并且生成省略了一个或多个处理且包括一个或多个相应的替换处理的第二应用程序。省略是指第一应用程序中所包括的处理未包括在第二应用程序中。将相应的替换组件插入第二应用程序中的、例如所省略的处理在第一应用程序中位于的位置。
替换处理是插入的示例。插入的其它示例包括也可以由覆盖规范定义的测试源和探测器。测试源是可以提供供可执行应用程序处理的诸如测试数据等的数据的替换数据源。探测器是可执行应用程序写入数据的替代目的地。插入例如可用于测试或调试诸如图等的可执行应用程序。例如,测试人员或开发人员可能想要使用特殊的一组输入数据来进行测试,以观察变化对应用程序的影响。通过在改变之前和之后都使用一致的一组输入数据执行应用程序,可以监测该改变对应用程序所输出的数据的影响。在一些示例中,测试人员可以具有在测试应用程序时要使用的特定一组测试数据,诸如将使得至少执行一次应用程序的所有功能的一组测试数据等。同样,测试人员可能希望将应用程序所输出的数据写入与应用程序将其输出数据写入至的标准目的地不同的特殊目的地。
在一些示例中,可以基于应用程序的自动化分析来自动定义插入。例如,可以基于应用程序中的格式特定处理的自动识别来自动定义替换组件。可以基于应用程序的数据源和输出数据宿的自动识别来自动定义测试源和探测器。
在一些示例中,可执行应用程序是基于图的处理。基于图的处理包括各自表示可执行处理的一个或多个组件,该一个或多个组件通过指示从一个组件向另一组件的数据流的流连接。替换处理是与基于图的处理中的组件相关联的对象。替换处理(有时也称为替换组件)可以替换图中的现有组件,使得原本将由现有组件处理的数据转而由替换组件处理。测试源和探测器的插入是与基于图的处理中的流相关联的对象。测试源可以用新数据替换通过流的数据(例如,上游数据),使得上游计算不必针对图的每次执行重新运行。例如,测试源可以替换数据源,使得从测试源而不是从数据源向图提供测试数据。探测器可以监测在图执行时通过流的数据,并且可以使得保存该数据以供随后检查或重复使用。例如,探测器可以接收原本将被保存至诸如数据库等的输出数据宿的数据。
覆盖规范中所定义的插入可以在执行期间被添加到应用程序中,而不是成为原始应用程序的一部分。在编译应用程序时,编译器考虑覆盖文件并且生成包括插入的可执行应用程序。有时将原始应用程序称为第一版本应用程序并且将包括插入的应用程序称为第二版本应用程序。例如,在基于图的处理的示例中,可以将可执行图从视觉上表示为包括第一版本图的与覆盖规范中所定义的插入对象相组合的组件的第二版本图。在一些示例中,可执行图是shell脚本(外壳脚本)并且没有存储在文件中。在一些示例中,可执行图和图存储在单独文件中。
将插入并入第二版本图中没有修改第一版本图。作为代替,插入定义保持在单独文件(例如,单独的覆盖规范)中,并且可以在代码生成开始时变为普通图组件以包括在修改后的图中。如此,不存在无意中破坏原始图的风险。
图1示出图100的示例。图100是包括通过流所连接的数据处理组件的计算机程序的视觉表示。连接两个组件的流表示从第一组件输出的记录被传递至第二组件。在第一组件通过流连接至第二组件时,第一组件引用第二组件。
诸如数据库(如图所示)、文件、队列、可执行语句(例如,SQL语句)或位于图100外部的另一类型的数据源等的数据源102包括利用图100要处理的一个或多个数据记录。外部是指数据源102的数据没有存储在图100中。数据源102通过流连接至过滤组件103。通常,过滤组件过滤或去除不满足预定标准的记录。在该示例中,过滤组件103使居住于俄亥俄州的客户的数据记录通过并且拒绝其它记录。过滤组件103连接至排序组件104,其中该排序组件104用于按照邮政编码对过滤后的数据记录进行排序。排序组件104连接至复制组件106,其中该复制组件106用于创建数据记录的副本,使得可以采用两个不同的方式来处理数据记录。该复制组件连接至重定格式组件108和按表达式过滤组件110。例如,将按邮政编码进行排序后的居住于俄亥俄州的客户的数据记录的一个实例发送至重定格式组件108,并且将这些数据记录的另一实例发送至按表达式过滤组件110。重定格式组件108将数据记录的格式改变为不同的数据格式,并且按表达式过滤组件110基于与数据记录相关联的表达式来去除数据记录。重定格式组件108和按表达式过滤组件110连接至用于组合所接收到的数据记录的收集组件112,并且该收集组件连接至位于图外部的输出数据宿组件114,诸如数据库(如图所示)、文件、队列或下游处理组件等。外部是指输出数据宿114的数据没有存储在图100中。尽管图100包括许多在组件之间的流,但在该示例中,特别关注数据源102和过滤组件103之间的流116(有时称为源-过滤流116)以及收集组件112和输出数据宿114之间的流118(有时称为收集-输出流118)。
图的一个或多个组件可以是格式特定组件。格式特定组件是能够仅处理一个或多个特定格式的数据的组件。数据格式是单个数据项的特征(例如,记录的字段中的值的特征)或记录的特征(有时称为记录格式)。单个数据项的特征的示例包括该数据项的字节数(诸如该数据项的大小(例如,单字节ASCII数据项或多字节数据项)等)、该数据项的类型(例如,字符串、整数、布尔值或另一数据类型)、或者单个数据项的另一特征。记录格式的示例包括记录中的字段的名称、记录中的字段的位置、记录中的字段的数量、分层记录、字段的数组或重复组、嵌套数组、子-记录、或者记录的另一特征。
在图包括特定于特定数据格式的组件时,该图可能能够仅处理特定格式的数据。如果图用于处理具有不同格式的数据,则可能发生错误或者可能不正确地处理了数据。为了使得图能够处理具有不同格式的数据,可以用能够处理不同格式的数据的组件替换一个或多个格式特定组件。替换组件可以是特定于不同组件的格式特定组件,或者可以是可以处理任何格式的数据的组件(有时称为与格式无关的组件)。
例如,在图1的示例中,排序组件104按zip_code字段中的值对记录进行排序。该示例中的排序组件104是能够仅处理整数的格式特定组件。图100的操作人员可能想要使用图100来处理zip_code字段可以包括字母数字字符串的新的一组数据。
参考图2,生成省略了排序组件104且包括替换排序组件204的第二版本200的图100。替换排序组件204被布置在第二版本200的图中的与排序组件104相同的位置,并且能够对字母数字字符串进行排序。图的其它组件保持不变。因而,第二版本200的图能够处理新的一组数据。
一些组件可能能够接收任何格式的数据并对该数据进行操作,但可能输出特定格式的数据。如果期望不同格式的数据作为输出(例如,以作为输入提供至指定特定格式的另一应用程序),则图可能无法提供该数据。为了使得图能够输出期望格式的数据,可以用能够输出所需格式的数据的组件替换一个或多个格式特定组件。
再次参考图1,重定格式组件108是输出特定格式的数据的格式特定组件。例如,重定格式组件108可以输出具有Name、Account_num、Balance和Trans_date这四个字段的数据记录。图100的操作人员例如可能想要图100生成不同格式的输出数据,使得输出数据可以由对输入数据的记录格式具有特定要求的另一应用程序处理。在该示例中,期望格式的输出数据包括Cust_name、Balance、Account_num和Trans_date这四个字段。也就是说,需要重命名输出数据的第一字段,并且需要切换第二字段和第三字段。
参考图3,生成省略了重定格式组件108并且包括替换重定格式组件308的第二版本300的图100。替换重定格式组件308被布置在第二版本300的图中的与重定格式组件108相同的位置处,并且能够生成期望格式的输出数据。图的其它组件保持不变。
在一些示例中,还可以省略图的其它组件,诸如格式特定组件的上游或下游的一个或多个组件等。在一些情况下,可以包括替换组件来代替所省略的其它组件中的一个或多个组件。
在一些示例中,图100的测试人员可能希望调试图100以验证其功能。在一些情况下,测试人员可能想要在数据从一个组件流向另一组件时验证数据。在一些情况下,测试人员可能想要绕过图100中的上游组件,而是将数据插入所绕过的组件的位置。在一些情况下,测试人员可能想要使用一致的一组输入数据来测试图100的操作以监测改变该图对该图所输出的数据的影响。在一些情况下,测试人员可能想要使用该测试人员知晓的将使得至少执行一次图的所有功能的一组输入数据来测试图100的操作,由此使得能够完成图的测试。
在调试图100时,可以期望避免修改图。例如,测试人员可能不想冒破坏图的功能的风险。在一些示例中,测试人员对图的访问权限可能受限或者可能无权访问图(例如,测试人员可能缺少编辑图所需的许可)。为了在无需修改图100的情况下调试该图,可以使用覆盖来调试图。在一些示例中,可以例如基于图的自动化分析来自动指定覆盖。可以基于原始图100(有时称为第一版本图)和覆盖规范来生成第二版本的至少一部分的图100。
探测器在数据通过图100的组件之间的流(例如,沿着从第一组件向第二组件的流或者沿着向输出数据宿的流通过)时收集或监测该数据。例如,在随着图100的执行数据通过流的情况下,可以监测该数据、可以保存该数据以供随后检查、或者可以保存该数据以供重复使用。覆盖规范可以定义参考携载要收集或监测的数据的流的探测器。探测器指定要收集或监测数据所经由的流。探测器可被配置为报告特定值,或者报告特定值何时在预定范围内或在预定范围外。可以保存通过探测器的数据以供随后分析或使用,例如可以将数据存储在平面文件或关系数据库中。
在一些示例中,探测器可以参考从图100的组件向诸如文件或数据库等的输出数据宿的流。通过在图100的调试期间沿着向数据宿的流配置探测器,该探测器接收从图100输出的数据。例如,每当在调试模式中执行图100时,输出数据可被探测器接收到并且写入文件,使得可以比较或评价来自各种图执行的输出数据。在一些示例中,自动识别输出数据宿并且自动指定覆盖,以定义供所识别的输出数据宿之前的插入用的探测器。
在一些示例中,探测器可以参考从图100的上游组件向下游组件的流。通过在图100的调试期间沿着向下游组件的流配置探测器,该探测器接收原本将被下游组件接收到的数据,由此防止下游组件执行。例如,测试人员可能希望监测下游组件之前的图处理的结果。例如,下游组件可以具有对图的外部产生影响的功能,例如下游组件可以向该下游组件处理信用卡记录的各人发送文本消息。在图的调试期间,测试人员可能希望禁用对图的外部产生影响的组件。
测试源将数据插入图100中的图100的两个组件之间的特定流处。覆盖规范可以定义参考如下流的测试源,其中该流携载要利用来自测试源的数据替换的数据。在一些示例中,测试源利用新数据替换通常将通过流的数据。在一些方案中,测试源可被配置为读取先前保存的数据,并且将该数据传递至下游组件。在一些示例中,测试源将数据插入图100中的来自数据源(诸如数据库或文件等)的流处。测试源可以插入具有与数据源原本将提供的数据相同的格式的数据。在一些示例中,自动识别数据源并且自动指定覆盖,以定义要替换所识别的数据源的测试源。
在一些示例中,图100的直到特定点为止(例如,直到特定组件为止)的执行的结果可能以前已被验证。换句话说,可能已验证了直到特定点为止的上游处理功能。在这些情况下,上游组件在每当图100执行时重新处理功能这一做法可能效率低。测试源可以将数据(例如,先前验证的数据)插入图中的该特定点处。这样,可以绕过图100的先前执行的整个部分。
图4示出定义一个或多个插入的覆盖规范200的示例。插入可以是与图(例如,图100)的流相关联的对象,并且可以采用探测器、测试源或替换组件的形式。在图4的示例中,覆盖规范200包括一个测试源定义201和一个探测器定义213。覆盖规范200可以存储在文件(诸如与包含图100的规范的文件分开的文件等)中。
覆盖规范200从指定插入定义可以对应于的图的3行标题开始。该标题之后是测试源定义201、探测器定义213和替换组件定义(未示出)。
测试源定义201包括名称202、上游端口204、下游端口206、插入类型208、原型路径210和布局参数212。
测试源定义201的上游端口204引用测试源要被插入图100中的流的正上游的组件的输出端口。流的上游的组件是输出端口数据被输出到流上的组件。在图4的示例中,测试源定义201的上游端口204指向数据库102的输出。测试源定义201的下游端口206引用测试源要被插入图100中的流的正下游的组件的输入端口。流的下游的组件是从该流接收到输入端口数据的组件。在图4的示例中,测试源定义的下游端口206指向过滤组件103的输入。因而,该示例中的测试源定义201表示要在数据库102的输出和过滤组件103的输入之间的流中配置测试源,使得测试源所提供的数据可以替换来自数据库102的输入数据。
插入类型208定义插入是测试源、探测器还是替换组件。在图4的示例中,值“0”定义测试源,值“1”定义探测器,并且值“2”定义替换组件。还可以使用其它值来定义插入的类型。由于该插入是测试源,因此插入类型208的值是“0”。
原型路径210表示插入的类型。在该示例中,由于该插入是测试源,因此原型路径210指定输入文件组件。原型路径210指向包含用于定义特定类型的插入的代码的文件。布局参数212定义包含测试源将包含的数据的源文件的位置。在一些示例中,该位置是文件路径。源文件中的数据要替换通常将通过由上游端口204和下游端口206定义的流的数据。即,在将测试源应用于图100时,过滤组件103接收源文件中的数据而不是从数据库102接收数据。
源文件包含具有与测试源的下游的组件原本将接收到的数据相同的格式的数据。在一些示例中,源文件中的数据可以与测试源的上游的数据源(例如,数据库)中的数据相同。例如,可以将来自数据库102的数据记录复制到源文件中。在一些示例中,数据源表示诸如SQL查询等的可执行语句。在这些示例中,可以执行SQL查询并且可以将查询执行的结果存储在源文件中。在一些示例中,可以从除数据源以外的某处获得源文件中的数据。例如,可以生成源文件中的数据,从而确保对特定数据(例如,特定范围的值)进行处理以进行图100的完整调试。在一些示例中,即使数据源中的数据改变,源文件中的数据也保持相同,由此使得能够利用一致的一组输入数据继续调试。
在一些示例中,源文件中的数据可以与图100的正常执行期间将通过流的数据相同,但通过使用测试源插入数据,上游组件可以避免处理。例如,诸如复制组件106等的上游组件可能要求大量的系统资源来处理数据,或者与数据流图100中的其它组件相比可能需要相对较长的时间来处理数据。如此,可以将已知数据(例如,在正常执行期间将通过流的相同数据)插入流中以节省时间或节约系统资源。
探测器定义213包括名称214、上游端口216、下游端口218、插入类型220和原型路径222。
探测器定义213的上游端口216引用探测器要被插入图100中的流的正上游的组件的输出端口。在图4的示例中,探测器定义213的上游端口216指向收集组件112的输出。探测器定义213的下游端口218引用探测器要被插入图100中的流的正下游的组件的输入端口。在图4的示例中,探测器定义213的下游端口218指向输出数据宿组件114。因而,该示例中的探测器定义213表示要在收集组件112的输出和输出数据宿组件114之间的流中配置探测器,使得探测器接收原本将被写入输出数据宿组件的数据。
探测器定义213的插入类型220定义插入是测试源、探测器还是替换组件。由于该插入是探测器,因此插入类型220的值是“1”。
原型路径222表示插入的类型。在该示例中,由于该插入是探测器,因此原型路径222指定输出文件组件。原型路径222指向包含用于定义特定类型的插入的代码的文件。
在一些示例中,要利用探测器监测的数据被存储在系统自动创建的文件中。该文件可以存储在系统所确定的位置中。探测器监测通过由上游端口216和下游端口218所定义的流的数据。即,在将探测器应用于图100时,监测从收集组件112的输出通向输出数据宿组件114的输入的数据并且将该数据存储在系统自动创建的文件中。在一些示例中,可以在存储该数据之前监测该数据。该文件能够接收具有探测器定义所引用的组件(在该示例中为外部数据宿组件114)将接收的相同格式的数据。
在一些示例中,作为图100的自动化分析的结果,可以利用覆盖规范来定义一个或多个探测器或测试源插入。例如,可以进行图100的自动化分析以识别诸如数据库、文件或其它类型的数据源等的任何数据源。所识别的数据源中的一个或多个数据源可被测试源自动替换。被替换的数据源是指将测试源插入该数据源的正下游的流中,使得将来自该测试源的数据而不是将来自该数据源的数据提供至下游组件。同样,图100的自动化分析可以识别诸如数据库、文件或其它类型的输出数据宿等的任何输出数据宿。所识别的输出数据宿中的一个或多个输出数据宿可被探测器自动替换。被替换的输出数据宿是指将探测器插入该输出数据宿的正上游的流中,使得来自上游组件的数据被探测器而不是被该输出数据宿接收到。还可以使用图100的自动化分析来识别诸如特定类型的组件(例如,执行对图100的外部产生影响的特定类型的组件)等的其它组件。
在内容通过引用而被全部包含于此的美国专利申请序列号14/715,807中提供了测试源和探测器插入的更多说明。
替换组件定义包括名称、上游端口、下游端口、插入类型、原型路径和布局参数。替换组件定义的上游端口引用替换组件要被插入图100中的位置的正上游的组件的输出端口。替换组件定义的下游端口引用替换组件要被插入图中的位置的正下游的组件的输入端口。基于上游端口和下游端口,可以识别图100中的要由替换组件替换的现有组件。插入类型定义插入是替换组件。
原型路径表示插入的类型。在该示例中,由于该插入是替换组件,因此原型路径指向包含定义替换组件的代码的文件。定义替换组件的代码基于定义要替换的现有组件的代码,但能够处理期望格式的数据。
在一些示例中,作为图的自动化分析的结果,可以通过覆盖规范来定义图的一个或多个替换组件。例如,可以分析图中的各组件的规范。组件的规范包括或指向定义该组件的(例如,定义该组件表示的数据处理操作)的代码。对代码的分析可以揭示组件所表示的数据处理操作是否取决于数据的格式。
针对所识别的一个或多个格式特定组件定义替换组件。在一些示例中,基于用户输入识别要替换的格式特定组件。例如,用户可以使用他对传入数据的格式、由各个格式特定组件所表示的处理或这两者的知识来判断要替换哪个组件。在一些示例中,可以相对于通过图先前处理的数据的格式进行传入数据的格式的自动分析,以识别要替换哪个格式特定组件。
在一些示例中,对于不是基于图的计算机程序,可以识别计算机程序中的一个或多个格式特定的处理,并且该一个或多个格式特定的处理可以被一个或多个其它处理(例如,可以对特定格式的数据进行操作的处理或者可以对任何格式的数据进行操作的处理)替换。
参考图5,为了插入测试源、探测器或这两者,分析引擎300自动分析图100以识别数据源302和输出数据宿304。例如,分析引擎300可以访问针对图100的各节点的参数和连接(有时可互换地使用术语“节点”和“组件”)。如果给定节点不存在传入连接,则分析引擎300将该节点识别为数据源。同样,如果给定节点不存在传出连接,则分析引擎300将该节点识别为输出数据宿。为了访问并分析图的各节点,分析引擎“遍历”图的所有连接(有时可互换地使用术语“连接”和“流”)。在一些示例中,直到运行时(例如,在处理为了调试目的而开始时)为止,图100未被实例化或参数化。分析引擎300可以在运行时进行自动化分析以识别图100中的数据源和输出数据宿。
分析引擎300将数据源302和输出数据宿304的标识符发送至插入引擎306,其中该插入引擎306确定数据源和输出数据宿中的哪些数据源和输出数据宿要被测试源和探测器分别替换。在一些示例中,测试人员308提供要被测试源和探测器替换的数据源和输出数据宿的列表310。可以将列表310作为文件、数据库或采用其它格式来提供。例如,测试人员308可以将他期望频繁地改变的任何数据源包括在列表310上。通过利用测试源替换这种数据源,测试人员308可以确保可使用一致的输入数据来测试图。
插入引擎306将各个所识别的数据源302和输出数据宿304与列表310上的数据源和输出数据宿进行比较。该插入引擎针对列表310上出现的任何数据源302或输出数据宿304创建覆盖规范312。在一些示例中,利用分析引擎300将诸如上游端口和下游端口等的针对覆盖规范312的参数提供至插入引擎306。在一些示例中,插入引擎306访问图100以获得相关参数。
为了针对测试源创建覆盖规范312,插入引擎306利用数据填充源文件。在一些示例中,插入引擎306利用从数据源302复制得到的数据填充将替换特定数据源302的测试源所用的源文件。在一些示例中,数据源302包括诸如SQL语句等的可执行表达式,并且插入引擎306执行该可执行表达式并利用执行结果填充源文件。在一些示例中,插入引擎306可以经由用户接口314向测试人员308提示源文件所用的数据。例如,插入引擎306可以向测试人员308呈现所识别的数据源302的列表,使得测试人员308可以选择所识别的数据源302中的哪些数据源要被测试源替换。测试人员308还可以指定要包括在该测试源所用的源文件中的数据。在一些情况下,测试人员308可以识别包括该测试源所用的数据的文件的位置(例如,路径)。在一些情况下,测试人员308可以指示插入引擎306生成作为原始数据源302中的数据的副本的源文件。在一些情况下,测试人员308可以指示插入引擎306执行原始数据源302中所包括的或者与原始数据源302相关联的诸如SQL语句等的可执行表达式。在一些情况下,测试人员308可以使得针对测试源的源文件生成数据。例如,测试人员308可以提供将使得至少执行一次图中的每个功能的一组数据(诸如真实数据或所生成数据等)。
为了针对探测器创建覆盖规范312,插入引擎306确定输出数据要被存储的文件的位置。在一些示例中,该位置是默认(例如,由系统架构师)设置的。在一些示例中,插入引擎306可以经由用户接口314提示测试人员308指定输出数据文件所用的位置。
为了插入替换组件,分析引擎300分析图100以识别该图中的一个或多个格式特定组件305。为了分析图的各组件,分析引擎300“遍历”该图的所有连接。在一些示例中,分析引擎300可以从图的最远处的上游组件开始并且“遍历”从该上游组件开始的各输出流,由此最终分析该图的所有组件。相反,分析引擎300可以从图的最远处的下游组件开始并且“遍历”直到该下游组件为止的各输入流,由此最终分析该图的所有组件。
分析引擎300可以访问图100中的各组件的规范。组件的规范包括或指向定义该组件的(例如,定义该组件表示的数据处理操作的)代码。基于对代码的分析,分析引擎300可以判断数据处理操作是否取决于数据的格式。分析引擎300将格式特定组件的标识符发送至插入引擎306,该插入引擎306判断要省略格式特定组件中的哪个格式特定组件以支持替换组件。
在一些示例中,分析引擎300根据用户请求分析图100。例如,用户可能想要使用图100来处理与该图通常处理的数据不同格式的数据。用户可以请求对图100进行分析,以确保图100能够处理不同格式的数据。
在一些示例中,分析引擎300例如在第一次定义图100时或者在该图第一次被实例化或参数化时(例如,在该图的第一次运行时)分析该图一次,以生成该图中的所有格式特定组件的列表。可以存储该图中的格式特定组件的列表以供将来参考,例如,可以响应于用户请求而使用该列表以使用图100来处理不同格式的数据。
在一些示例中,分析引擎300自动判断何时分析图。例如,图的规范可以包括该图先前处理的数据的格式的描述。如果传入数据的格式不同于先前处理的数据的格式,则分析引擎可以分析图以判断是否需要替换任何组件以处理不同格式的传入数据。
插入引擎306判断要省略分析引擎300所识别的格式特定组件中的哪些格式特定组件。插入引擎306创建针对要省略的各个组件定义替换组件的覆盖规范。
在一些示例中,要省略的格式特定组件由用户识别。例如,插入引擎306可以使得将所识别的格式特定组件的列表显示在用户接口314上,并且用户选择要替换的组件。用户可以指示要用作针对要替换的各个组件的替换组件的组件。例如,用户可以使用他对传入数据的格式、各个格式特定组件所表示的处理或这两者的知识来判断要省略这些组件中的哪些组件以及要包括哪些组件作为替换组件。基于识别要省略的组件、识别替换组件或这两者的用户输入,插入引擎306创建覆盖规范。
在一些示例中,插入引擎306可以自动判断要省略格式特定组件中的哪些格式特定组件以及要包括哪些组件作为替换组件。例如,插入引擎可以分析各个格式特定组件的规范,以判断哪些组件能够或不能处理传入数据。插入引擎306可以自动识别替换组件(例如,表示要替换的相应组件所表示的相同数据处理操作、但能够处理传入数据的格式的数据的替换组件)。插入引擎306针对自动识别的替换组件创建覆盖规范。在一些示例中,将用户输入并入自动化判断中。例如,可以要求用户批准插入引擎306所识别的替换组件。
图6示出用以定义图的替换组件的一般方法。接收具有特定格式的一组数据以供图进行处理(400)。判断是否分析图的用以处理所接收到的特定格式的数据的能力(402)。在一些示例中,用户可以例如通过用户接口提供要分析图的指示。例如,用户可以知晓该组数据具有与图所处理的先前数据不同的格式。在一些示例中,可以自动进行该判断。例如,可以判断所接收到的数据的格式,并将该格式与例如表示配置图的数据的格式的该图的规范中所存储的信息进行比较。如果所接收到的数据的格式与配置图的数据的格式不一致,则分析该图。
例如利用处理器分析图,以识别该图的取决于组件所处理的数据的格式的一个或多个组件(404)。特别地,分析图的一个或多个组件各自的规范以识别该图中的格式特定组件。在一些示例中,通过经由图的组件的逐级进展来分析该图。例如,分析各组件,以判断该组件是否是格式特定组件并识别该组件的传入流和传出流。跟随来自各组件的各流到达相邻组件,并且分析这些组件中的各组件以判断该组件是否是格式特定的并且识别传入流和传出流。这样,可以分析图的所有组件。在一些示例中,可以在运行时(例如,在图被参数化之后)自动进行该分析。在一些示例中,可以自动地且动态地(例如,在图正运行时)进行该分析。例如,可以在图的执行期间解析特定参数时进行动态分析。在一些示例中,图被接收到短期存储器中,其中利用处理器从该短期存储器中分析图以识别格式特定组件。
评价被识别为格式特定的一个或多个组件以判断是否要省略组件并包括替换组件(406)。例如,如果格式特定组件不能处理具有所接收到的一组数据的格式的数据,则可以省略该组件。在一些示例中,将格式特定组件的列表显示在用户接口上,并且用户指示要省略这些组件中的哪个组件。在一些示例中,评价各个格式特定组件的规范以自动判断这些组件是否能够处理具有所接收到的一组数据的格式的数据。在一些示例中,省略了被识别为格式特定的所有组件。
针对要省略的一个或多个格式特定组件各自的替换组件定义覆盖规范(408)。给定替换组件的规范基于相应省略的格式特定组件的规范,但定义了对具有所接收到的一组数据的格式的数据能够进行的一个或多个数据处理操作。在一些示例中,替换组件可以是格式特定于所接收的一组数据的格式。在一些示例中,替换组件可以是通用的,例如,能够处理任何格式的数据。
在执行图之前,编译器可以将图编译成可执行图(410)。作为编译的一部分,编译器考虑定义替换组件的覆盖规范200。例如,编译器可以接受覆盖规范200作为输入。生成第二版本图,移除为了替换所识别的格式特定组件,并且将一个或多个替换组件作为对象插入第二版本图中以代替所移除的组件。可以将替换组件连同第一版本图100中所包括的(除所移除的组件以外的)数据处理组件一起在第二版本图中表示。覆盖规范200或存储该覆盖规范的文件保持与包含图的文件分开。即,尽管替换组件以及第一版本图中所包括的数据处理组件可以出现在第二版本图中,但包含第一版本图的文件不包括替换组件的定义。
可以使用单执行模式(Single-Execution Mode)和保存状态模式(Saved-StateMode)的至少两个模式其中之一来执行覆盖规范中所定义的插入(诸如测试源、探测器或替换组件等)。
图7示出用于在单执行模式中执行插入定义的示例系统。在该示例中,客户端602生成或引用第一版本图604和用于定义插入的覆盖文件606(例如,覆盖规范)。例如,覆盖文件606可以是图4的覆盖规范200。然后,利用编译器608编译图604。编译器608考虑覆盖文件606并且创建第二版本图。第二版本图是可执行的并且包括覆盖文件606所定义的插入。然后,可以执行第二版本图。在一些示例中,编译和执行同时发生。如果要再次执行第二版本图,则重复该处理,其中该处理包括重新指定、重新编译图604并且重新执行第二版本图。从可执行图的一次执行起直到可执行图的下次执行为止,没有保存信息。
图8示出用于利用保存状态管理器708在保存状态模式中执行插入定义的示例系统。在该示例中,客户端702生成或引用图704和用于定义插入的覆盖文件706(例如,覆盖规范)。例如,覆盖文件706可以是图4的覆盖规范200。保存状态储存库710由保存状态管理器708和编译器712来管理。保存状态管理器708还可以识别保存状态数据位于保存状态储存库710内的何处。利用编译器712对图704进行编译。编译器712考虑覆盖文件706并且创建包括覆盖文件706所定义的插入的第二版本图。然后,可以执行该第二版本图。在一些示例中,编译和执行同时发生。保存状态模式与单执行模式的不同之处在于:保存状态模式使得能够在执行之间保存信息的同时,多次执行可执行图。
可以驻留在保存状态管理器目录中的保存状态管理器708管理保存状态。可以保存在保存状态储存库710中的信息的示例包括与探测器插入有关的信息、与测试源插入有关的信息、与替换组件插入有关的信息、与覆盖文件706有关的信息和与图组件相关联的参数(例如,属性)等。
在一些示例中,在执行可执行图时,仅执行图的特定部分。即,仅执行图的特定组件。在一些示例中,执行比图的所有组件少的组件。可执行图可以仅执行将会影响插入的组件。在一些示例中,第二版本图是整个原始图的第二版本。在一些示例中,第二版本图是整个原始图的仅一部分的第二版本、例如该图的仅与所定义插入有关的部分的第二版本。例如,最上游替换组件的上游的组件可以由第一版本图执行,并且从最上游替换组件开始的组件可以由第二版本图执行。
图9示出可以使用这里所述的替换组件技术的示例数据处理系统800。该系统800包括数据源802,其中该数据源802可以包括诸如存储装置或者至线上数据流的连接等的一个或多个数据源,其中该一个或多个数据源各自可以以各种格式(例如,数据库表、电子表格文件、非结构文本(flat text)文件或大型机所使用的原本格式)中的任何格式来存储或提供数据。执行环境804和开发环境818例如可以在诸如某个版本的UNIX操作系统等的适当的操作系统的控制下安装在一个或多个通用计算机上。例如,执行环境804可以包括包含使用多个中央处理单元(CPU)或多个处理器内核的计算机系统的结构的多节点并行计算环境,可以是本地的(例如,诸如对称多处理(SMP)计算机等的多处理器系统)或本地分布式的(例如,作为集群所连接的多个处理器或大规模并行处理(MPP)系统)、或者远程或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)连接的多个处理器)、或者它们的任何组合。
执行环境804从数据源802读取数据并且生成输出数据。提供数据源802的存储装置相对于执行环境804可以是本地的,例如存储在连接至安装有执行环境804的计算机的存储介质(例如,硬盘驱动器808)上,或者相对于执行环境804可以是远程的,例如安装在经由(例如云计算基础设施所提供的)远程连接与安装有执行环境804的计算机进行通信的远程系统(例如,大型机110)上。数据源802可以包含测试源定义(例如,图4的测试源定义201)中所定义的数据。即,测试源定义201的布局参数212可以指向数据源802中的源文件的位置。
输出数据可被存储回至数据源802中或者存储回至执行环境804可访问的数据存储系统816中,或者被使用。开发环境818也可以访问数据存储系统816,其中在开发环境818中,开发人员820能够开发、调试并测试图。在一些实现中,开发环境818是用于开发作为图的应用程序的系统,其中这些图包括顶点(表示数据处理组件或数据集),并且这些顶点通过顶点之间的定向流(directed flow)(表示工作元素(即,数据)的流)相连接。例如,在通过引用而被包含于此的标题为“Managing Parameters for Graph-Based Applications”的美国公开号2007/0011668中更详细地说明了这种环境。在通过引用而被包含于此的标题为“EXECUTING COMPUTATIONS EXPRESSED ASGRAPHS”的美国专利5,966,072中说明了用于执行这种基于图的计算的系统。根据该系统所制作的图提供用于将信息输入至图组件所表示的个别处理或从图组件所表示的个别处理获得信息的方法、用于在处理之间移动信息的方法以及用于定义处理的运行顺序的方法。该系统包括用于从任何可用方法中选取处理间通信方法的算法(例如,与图的流相对应的通信路径可以使用TCP/IP或UNIX域套接字或者使用共享存储器在处理之间传递数据)。
开发环境818包括用于存储源代码的代码储存库822。在一些示例中,可以由例如经由用户接口有权访问开发环境的开发人员820来开发源代码和覆盖规范(例如,图4的覆盖规范200)。在一些示例中,源代码和覆盖规范例如是由上述的分析引擎300和插入引擎306自动确定的。在一些示例中,图和覆盖规范可以存储在代码储存库822中。在一些示例中,图存储在代码储存库822中,并且覆盖规范存储在单独的覆盖储存库824中。
代码储存库822和覆盖储存库824其中之一或这两者可以与编译器826进行通信。编译器826可以将第一版本图和覆盖规范(例如,图4的覆盖规范200)编译成可执行的第二版本图828。例如,编译器可以接受覆盖规范作为输入。对一个或多个插入进行处理并且将该一个或多个插入以各自与覆盖规范中所包含的插入定义相对应的对象的形式插入图中。可以利用修改图来从视觉上表示第二版本图828。可以在第二版本图500中表示插入对象。
开发环境818可以包括用于执行第二版本图828的执行环境830。例如,一旦利用编译器826对图进行了编译,可以执行第二版本图828。执行第二版本图828可以包括执行与第二版本图828的组件、插入(例如,测试源、探测器、替换组件或这些中的任两个或更多个的组合)和定向流相关联的计算作为组件之间的数据(例如,工作元素或数据记录)流。在一些示例中,执行环境830在无需修改代码储存库822中所存储的第一版本图的源代码或者覆盖储存库824中所存储的源代码的情况下,执行第二版本图828。执行环境830可以是经由开发环境818的接口可访问的,或者可以具有其自己的接口。该接口可被配置为显示与执行有关的信息。该接口还可被配置为显示与插入有关的信息(例如,探测器正监测并保存的数据、测试源正插入的数据、与替换组件有关的信息或者其它信息)。执行环境830可以允许开发人员820多次执行第二版本图828并且在执行之间修改第二版本图828的方面。
在一些示例中,开发人员指导图的插入和编译。例如,开发人员820从代码储存库822中选择图1的第一版本图100。开发人员820还从覆盖储存库824中选择图4的覆盖规范200。在一些示例中,代替选择覆盖规范200,开发人员820可以从覆盖储存库824内的各种覆盖规范中选择插入定义。开发人员820指示编译器826基于第一版本图100和覆盖规范200来对第二版本图828进行编译。
在一些示例中,插入可以是自动插入的。例如,如上所述,例如通过识别不具有传入连接或不具有传出连接的组件或者通过分析图100中的组件的规范,来自动识别图100中的一个或多个数据源、输出数据宿或格式特定组件。可以自动将所识别的数据源和输出数据宿与在图100的调试期间要被插入替换的数据源和输出数据宿的列表进行比较。例如,该列表可以由开发人员820提供。可以分析格式特定组件以判断这些组件是否能够处理特定格式(诸如传入的一组数据的格式等)的数据。生成不能处理该数据的格式特定组件的列表。在一些示例中,该列表可以由开发人员820提供。根据该列表来针对图100的数据源、输出数据宿或格式特定组件自动创建覆盖规范。然后,自动编译第二版本图。
在一些示例中,覆盖规范没有被作为文件永久地存储在代码储存库822或覆盖储存库824中。相反,通常会包括在覆盖文件中的信息(例如,插入定义)是由开发人员820(例如,经由用户接口)所开发的、或者是由分析引擎300和插入引擎306自动确定的并暂时存储在存储器中。然后,将覆盖信息传递至编译器(例如,图8的608)或保存状态管理器(例如,图9的708)。
参考图10,在示例处理中,接收到第一版本图(例如,图1的图100)(902)。例如,第一版本图可被接收到处理器可访问的短期存储器中。第一版本图100包括组件和流。组件表示针对数据记录所进行的操作,并且流表示组件之间的数据记录的流。
接收到用于定义一个或多个插入的覆盖规范(904)。在一些示例中,覆盖规范是从开发人员或测试人员接收到的。在一些示例中,例如如上所述,覆盖规范是自动定义的。覆盖规范可以是图4所示的覆盖规范200。覆盖规范可以包括一个或多个插入定义(例如,一个或多个测试源定义、一个或多个探测器定义或者一个或多个替换组件定义)。插入定义可以包括(测试源定义所用的)名称、上游端口、下游端口、插入类型、原型路径和布局参数。所定义的各个测试源和探测器可以与图100的流相关联。所定义的各个替换组件可以与图100的组件相关联。
生成各自与所定义的插入其中之一相对应的一个或多个对象(906)。这些对象可以是图的组件,诸如测试源、探测器或替换组件等。
生成第二版本的至少一部分的图(908),其中该图包括图100的该部分的组件和流中的至少一些组件和流以及所生成的一个或多个对象。在一些示例中,第二版本图是原始图100的被修改为包括图100的该部分的组件和流中的至少一些组件和流以及所生成的一个或多个对象的副本。可以利用修改后的图(例如,图2的第二版本图200或图3的第三版本图300)来从视觉上表示第二版本图。将各对象插入与(测试源或探测器所用的)对应于该对象的所定义插入相关联的流处,或者插入各对象来代替与对应于该对象的所定义替换组件相关联的组件。尽管所生成的插入对象以及图100的数据处理组件可以出现在第二版本图中,但第一版本图100(或包含第一版本图100的文件)没有被修改。
尽管描述了可以对图和覆盖规范进行编译以创建包括覆盖文件所定义的插入的第二版本图的编译器(例如,图7的编译器608和图8的编译器712),但在一些实施例中,没有对图和覆盖规范进行编译。例如,可以在无需编译的情况下直接执行图和覆盖规范。解释器可以通过将各语句翻译成已编译成机器代码的一个或多个子例程的序列来直接执行图和覆盖规范。
尽管描述了采用探测器、测试源和替换组件的形式的插入,但在一些实施例中,插入可以采用其它形式。插入可以广泛地用于将数据注入图的给定点并从图的给定点提取数据。例如,插入可被设计成监测通过图的流的数据的质量。如果数据质量低于阈值,则用户可以接收自动警报。在内容通过引用而被包含于此的美国申请序列号14/715,904中可以发现关于插入的更多说明。
此外,尽管在图的上下文中描述了插入,但在一些实施例中,可以将插入与其它可执行应用程序相结合地使用。例如,可以通过针对通用的可执行应用程序的自动化分析来识别该应用程序所用的数据源、输出数据宿或格式特定处理。所识别的一个或多个数据源、输出数据宿或格式特定处理可以被适当的测试源、探测器或替换处理分别替换。这样,可执行应用程序可以处理来自测试源的数据并向探测器输出数据,或者可以使可执行应用程序能够处理不同格式的数据。该结构对于测试或调试可执行应用程序而言可以是有用的。
上述的方法可以使用执行适当软件的计算系统来实现。例如,该软件可以包括在一个或多个编程或可编程计算系统(可以具有诸如分布式、客户端/服务器或网格等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、(用于使用至少一个输入装置或端口接收输入、并且用于使用至少一个输出装置或端口提供输出的)至少一个用户接口。该软件可以包括例如提供与图的设计、结构和执行相关的服务的更大程序的一个或多个模块。该程序的模块(例如,图的元素)可以实现为符合数据储存库中所存储的数据模型的数据结构或其它有组织的数据。
可以将软件设置在诸如(例如,利用通用或专用计算系统或装置可读取的)CD-ROM或其它计算机可读介质等的有形非暂时性介质上、或者经由网络的通信介质(例如,以编码在传播信号中的形式)传递至执行该软件的计算系统的有形非暂时性介质。可以在专用计算机上、或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)等的专用硬件来进行该处理的一部分或全部。可以以利用不同的计算元件来进行软件所指定的计算的不同部分的分布式方式来实现该处理。优选将这种计算机程序各自存储在通用或专用可编程计算机可访问的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该计算机可读存储介质,以在利用计算机读取存储装置介质以进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的有形非暂时性介质来实现,其中如此配置成的介质使计算机以特定的预定义方式进行工作,以进行这里所述的处理步骤中的一个或多个。
已经说明了多个实施例。然而,应当理解,上述说明意图例示而并非限制由所附权利要求书的范围所限定的本发明的范围。因此,其它实施例也在所附权利要求书的范围内。例如,可以在没有背离本发明的范围的情况下进行各种变形。另外,上述步骤中的一部分可以是与顺序无关的,因而可以以与所描述的顺序不同的顺序来进行。

Claims (26)

1.一种方法,包括:
利用处理器来分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对第一格式的数据进行第一操作;以及
利用处理器来生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
2.根据权利要求1所述的方法,其中,识别第一处理包括:识别所述第一操作取决于数据的格式的第一处理。
3.根据权利要求1或2所述的方法,其中,识别第一处理包括:识别不能对所述第二格式的数据进行所述第一操作的第一处理。
4.根据前述权利要求中任一项所述的方法,还包括:确定要由所述第一处理进行处理的数据的格式。
5.根据权利要求4所述的方法,其中,识别第一处理包括:识别不能对具有通过所述第一处理要处理的数据的格式的数据进行所述第一操作的第一处理。
6.根据前述权利要求中任一项所述的方法,其中,识别第一处理包括:识别所述计算机程序的第一数据处理元素,所述第一数据处理元素被配置为执行所述第一处理。
7.根据权利要求6所述的方法,其中,将所述一个或多个第二处理包含在计算机程序中包括将一个或多个第二数据处理元素包含在所述第二版本的至少一部分的计算机程序中,所述第二数据处理元素被配置为执行所述一个或多个第二处理。
8.根据前述权利要求中任一项所述的方法,其中,所述第一格式包括数据类型。
9.根据前述权利要求中任一项所述的方法,其中,所述第一格式包括数据元素的大小。
10.根据前述权利要求中任一项所述的方法,其中,所述第一处理被配置为对第一记录格式的数据记录进行所述第一操作,以及其中,所述一个或多个第二处理被配置为对第二记录格式的数据记录进行所述第二操作。
11.根据权利要求10所述的方法,其中,所述第一记录格式包括记录中的字段的名称。
12.根据前述权利要求中任一项所述的方法,还包括:在用户接口中呈现第一组的一个或多个操作的标识符。
13.根据前述权利要求中任一项所述的方法,其中,生成所述第二版本的至少一部分的计算机程序包括:生成所述计算机程序的该部分的副本。
14.根据权利要求13所述的方法,还包括:修改所述计算机程序的该部分的副本以省略所述第一处理并包含所述一个或多个第二处理。
15.根据前述权利要求中任一项所述的方法,还包括:执行所述第二版本的计算机程序。
16.根据前述权利要求中任一项所述的方法,其中,所述一个或多个第二处理由覆盖规范定义。
17.根据权利要求16所述的方法,其中,生成所述第二版本的计算机程序包括:基于所述第一版本的计算机程序和所述覆盖规范来生成所述第二版本的计算机程序。
18.根据权利要求16或17所述的方法,其中,所述覆盖规范识别所述第一处理的上游的处理和所述第一处理的下游的处理中的一个或多个。
19.根据权利要求16至18中任一项所述的方法,还包括:基于对定义所述第一处理的可执行代码的分析来识别所述第一处理。
20.根据权利要求1所述的方法,其中,所述计算机程序包括图。
21.根据前述权利要求中任一项所述的方法,其中,所述第一处理是所述图的第一组件所表示的可执行处理,以及其中,所述一个或多个第二处理是所述图的一个或多个第二组件所表示的可执行处理。
22.根据权利要求21所述的方法,其中,所述一个或多个第二组件被配置为从所述图的上游组件接收数据记录。
23.根据权利要求21或22所述的方法,其中,所述一个或多个第二组件被配置为向所述图的下游组件提供数据记录。
24.一种系统,包括:
用于利用处理器来分析第一版本的计算机程序的部件,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及
用于利用处理器来生成第二版本的至少一部分的计算机程序的部件,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
25.一种系统,包括:
处理器,其连接至存储器,所述处理器和所述存储器被配置为:
分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及
生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
26.一种非暂时性计算机可读介质,其存储指令,所述指令用于使计算系统进行以下处理:
分析第一版本的计算机程序,所述分析包括识别所述第一版本的计算机程序中所包括的第一处理,所述第一处理被配置为对具有第一格式的数据进行第一操作;以及
生成第二版本的至少一部分的计算机程序,该生成包括省略所述第一处理并且将一个或多个第二处理包含在所述第二版本的至少一部分的计算机程序中,所述一个或多个第二处理被配置为对具有不同于所述第一格式的第二格式的数据进行第二操作,其中所述第二操作基于所述第一操作。
CN201780046555.1A 2016-06-03 2017-05-18 数据处理方法、系统和存储介质 Active CN109564507B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662345217P 2016-06-03 2016-06-03
US62/345,217 2016-06-03
US15/433,467 US10936289B2 (en) 2016-06-03 2017-02-15 Format-specific data processing operations
US15/433,467 2017-02-15
PCT/US2017/033285 WO2017209969A1 (en) 2016-06-03 2017-05-18 Format-specific data processing operations

Publications (2)

Publication Number Publication Date
CN109564507A true CN109564507A (zh) 2019-04-02
CN109564507B CN109564507B (zh) 2022-06-24

Family

ID=59009783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780046555.1A Active CN109564507B (zh) 2016-06-03 2017-05-18 数据处理方法、系统和存储介质

Country Status (9)

Country Link
US (2) US10936289B2 (zh)
EP (1) EP3465422B1 (zh)
JP (2) JP2019521430A (zh)
CN (1) CN109564507B (zh)
AU (2) AU2017274407B2 (zh)
CA (1) CA3026334C (zh)
DE (1) DE112017002779T5 (zh)
SG (1) SG11201810383SA (zh)
WO (1) WO2017209969A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347484B2 (en) 2016-06-03 2022-05-31 Ab Initio Technology Llc Format-specific data processing operations

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11184271B2 (en) * 2017-04-06 2021-11-23 At&T Intellectual Property I, L.P. Network service assurance system
US11182238B2 (en) * 2019-07-16 2021-11-23 International Buusiness Machines Corporation Problematic characters

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090265718A1 (en) * 2008-04-21 2009-10-22 Zhen Liu Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
CN103069385A (zh) * 2010-06-15 2013-04-24 起元技术有限责任公司 动态加载基于图的计算
US20160124998A1 (en) * 2014-11-05 2016-05-05 Ab Initio Technology Llc Debugging a graph

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626344A (ja) 1985-07-02 1987-01-13 Nec Corp プログラムデバツグ方式
JPS63125088A (ja) * 1986-11-14 1988-05-28 Nec Corp マルチ交換システムにおけるデ−タアクセス方式
JPH02294824A (ja) * 1989-05-10 1990-12-05 Hokuriku Nippon Denki Software Kk テーブル設計書作成装置
JP2555920B2 (ja) * 1993-01-25 1996-11-20 日本電気株式会社 オンラインリアルタイム処理装置
JPH0926897A (ja) * 1995-05-08 1997-01-28 Toshiba Corp プログラム解析装置及びプログラム解析方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH1083328A (ja) 1996-09-05 1998-03-31 Nec Corp 単体テスト用疑似入出力実現方式
US6102968A (en) 1998-05-21 2000-08-15 Lucent Technologies Inc. Method for automatically closing open reactive systems
US6389429B1 (en) 1999-07-30 2002-05-14 Aprimo, Inc. System and method for generating a target database from one or more source databases
US6983317B1 (en) 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6631386B1 (en) 2000-04-22 2003-10-07 Oracle Corp. Database version control subsystem and method for use with database management system
US6957769B2 (en) 2001-04-13 2005-10-25 The Code Corporation System and method for encoding and decoding data and references to data in machine-readable graphical codes
GB2379293B (en) * 2001-08-31 2005-07-06 Discreet Logic Inc Processing Data in an Application comprising a plurality of Application Modules
US7529822B2 (en) 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US8020148B2 (en) 2002-09-23 2011-09-13 Telefonaktiebolaget L M Ericsson (Publ) Bi-directional probing and testing of software
US7039645B1 (en) 2002-09-26 2006-05-02 Requisite Technology, Inc. Managing content of an electronic catalog by collaboration with another electronic catalog
US8676720B1 (en) 2002-09-26 2014-03-18 Requisite Software, Inc. Collaborative method for managing electronic catalogs
US7100172B2 (en) * 2002-11-27 2006-08-29 Microsoft Corporation System and method for changing operation of an application without recompiling
US7421621B1 (en) 2003-09-19 2008-09-02 Matador Technologies Corp. Application integration testing
JP2005228183A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd プログラム実行方法、および、プログラム実行のための計算機システム
JP2005301359A (ja) * 2004-04-06 2005-10-27 Denso Corp ソフトウェア部品管理装置
US7506304B2 (en) 2004-05-14 2009-03-17 National Instruments Corporation Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation
US7380171B2 (en) 2004-12-06 2008-05-27 Microsoft Corporation Controlling software failure data reporting and responses
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7587636B2 (en) 2005-08-04 2009-09-08 Microsoft Corporation Unit test generalization
CN100405323C (zh) 2005-09-20 2008-07-23 中国科学院计算技术研究所 一种在指令级随机测试中支持ejtag测试的实现方法
US20070074175A1 (en) 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US7660666B2 (en) 2005-11-18 2010-02-09 Navteq North America, Llc Geographic database with detailed local data
US7617231B2 (en) 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US8079019B2 (en) 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US7644334B2 (en) 2006-11-27 2010-01-05 Honeywell International, Inc. Requirements-based test generation
US7860905B2 (en) 2007-04-24 2010-12-28 Microsoft Corporation Systems and methods for modularizing data flows
US8583613B2 (en) * 2007-08-21 2013-11-12 Oracle International Corporation On demand data conversion
JP4887431B2 (ja) 2007-12-28 2012-02-29 パナソニック株式会社 通信装置
US7502972B1 (en) 2008-03-16 2009-03-10 International Business Machines Corporation Reducing log entries using hash keys
US20100153928A1 (en) * 2008-12-16 2010-06-17 Microsoft Corporation Developing and Maintaining High Performance Network Services
US10845962B2 (en) 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
US9052908B2 (en) * 2010-01-22 2015-06-09 The Regents Of The University Of California Web application development framework
US8397195B2 (en) 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
US8370809B2 (en) 2010-03-18 2013-02-05 Salesforce.Com, Inc. System, method and computer program product for automated test case generation and scheduling
US8627296B1 (en) 2010-09-15 2014-01-07 Google Inc. Unified unit and integration test with automatic mock creation
US20120078731A1 (en) * 2010-09-24 2012-03-29 Richard Linevsky System and Method of Browsing Electronic Catalogs from Multiple Merchants
US20120131559A1 (en) 2010-11-22 2012-05-24 Microsoft Corporation Automatic Program Partition For Targeted Replay
AU2012204292B2 (en) * 2011-01-07 2016-05-19 Ab Initio Technology Llc Flow analysis instrumentation
US20120185767A1 (en) * 2011-01-14 2012-07-19 Apple Inc. Modifying application behavior
US8874622B2 (en) 2011-03-28 2014-10-28 Microsoft Corporation Flexible order of authoring for data integration solutions
US8386419B2 (en) 2011-05-12 2013-02-26 Narendar Yalamanchilli Data extraction and testing method and system
JP5906789B2 (ja) 2012-02-17 2016-04-20 株式会社ソシオネクスト メッセージ出力制御装置及びメッセージ出力制御方法
US9146750B2 (en) * 2012-08-10 2015-09-29 The Mathworks, Inc. Mechanism for replacing an array creation routine within code
US9002348B2 (en) 2012-11-20 2015-04-07 Aeris Communications, Inc. Utilizing devices nearby
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP2881857B8 (de) * 2013-12-09 2018-09-12 dSPACE digital signal processing and control engineering GmbH Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes
US9430228B2 (en) * 2013-12-16 2016-08-30 International Business Machines Corporation Verification of backward compatibility of software components
SG11201604364UA (en) * 2013-12-18 2016-07-28 Ab Initio Technology Llc Data generation
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US9804946B2 (en) * 2015-05-27 2017-10-31 Oracle International Corporation System and method for providing automated computer language translation and verification
JP6584672B2 (ja) * 2015-12-21 2019-10-02 アビニシオ テクノロジー エルエルシー サブグラフインターフェースの生成
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10929122B1 (en) * 2019-10-23 2021-02-23 Microsoft Technology Licensing, Llc Modifying program modules in running applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090265718A1 (en) * 2008-04-21 2009-10-22 Zhen Liu Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
CN103069385A (zh) * 2010-06-15 2013-04-24 起元技术有限责任公司 动态加载基于图的计算
US20160124998A1 (en) * 2014-11-05 2016-05-05 Ab Initio Technology Llc Debugging a graph

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347484B2 (en) 2016-06-03 2022-05-31 Ab Initio Technology Llc Format-specific data processing operations
CN109564507B (zh) * 2016-06-03 2022-06-24 起元技术有限责任公司 数据处理方法、系统和存储介质

Also Published As

Publication number Publication date
US20210182038A1 (en) 2021-06-17
CA3026334A1 (en) 2017-12-07
CN109564507B (zh) 2022-06-24
CA3026334C (en) 2023-07-25
US10936289B2 (en) 2021-03-02
JP2023071664A (ja) 2023-05-23
EP3465422B1 (en) 2022-09-14
AU2021201363B2 (en) 2022-11-24
DE112017002779T5 (de) 2019-02-28
US11347484B2 (en) 2022-05-31
AU2017274407B2 (en) 2020-12-10
JP2019521430A (ja) 2019-07-25
SG11201810383SA (en) 2018-12-28
AU2017274407A1 (en) 2018-12-13
US20170351494A1 (en) 2017-12-07
AU2021201363A1 (en) 2021-03-18
EP3465422A1 (en) 2019-04-10
WO2017209969A1 (en) 2017-12-07

Similar Documents

Publication Publication Date Title
CN107111545B (zh) 一种用于生成计算机可执行图的方法及系统
Bavoil et al. Vistrails: Enabling interactive multiple-view visualizations
AU2021201363B2 (en) Format-specific data processing operations
CN107250988A (zh) 应用程序测试
US20230112179A1 (en) Automated modification of computer programs
KR101905268B1 (ko) 관점 지향 프로그래밍을 활용한 아키텍처 기반의 통합 결함 검출 방법 및 시스템 그리고 도구
AU2022360364A1 (en) Automated modification of computer programs

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
GR01 Patent grant
GR01 Patent grant