基于运行时行为自动纠正应用程序的制作方法

文档序号:6350546阅读:194来源:国知局
专利名称:基于运行时行为自动纠正应用程序的制作方法
技术领域
本发明公开了一种系统和相关联的方法,用于基于软件应用程序的运行时行为(runtime behavior)自动分析和纠正程序代码和/或数据。
背景技术
传统调试工具只关注软件应用程序的静态结构和逻辑。为了改正某些类型的错误,传统调试工具从基于知识的系统中搜索相似的错误和相对应的解决方案。因为传统调试工具在调试软件应用程序的运行时事件方面功能有限,所以软件应用程序的故障查找是费力的,并且软件应用程序的维护成本高昂
发明内容

按照本发明的一个实施例,一种基于应用程序的运行时行为自动纠正应用程序的方法包括计算机的处理器从用户或标签管理工具(ticketing tool)接收应用程序的事件的事件细节,其中所述事件涉及至少一个问题对象;从事件细节中识别事件的事件流,其中事件流对应于所述至少一个问题对象的第一问题对象,事件流包括第一问题对象、应用程序内影响第一问题对象的至少一个赋值对象、和其中所述至少一个赋值对象影响第一问题对象的应用程序的至少一个代码语句;通过关于第一问题对象从应用程序的开始直到事件跟踪已经实际执行的事件流的数据值,来创建事件流的前向数据流;通过从第一问题对象的预期结果到第一问题对象的所述至少一个赋值对象的各自初始值,按照与应用程序的实际执行相反的顺序模拟事件流的所述数据值,来创建事件流的至少一个反向数据流;以及所述处理器使用前向数据流和所述至少一个反向数据流生成事件的第一问题对象的候选故障列表。按照本发明的一个实施例,一种计算机程序产品包括实施计算机可读程序代码的计算机可读存储单元。该计算机可读程序代码包括当被计算机系统的处理器运行时,实现基于应用程序的运行时行为自动纠正应用程序的方法的指令。按照本发明的一个实施例,一种计算机系统包括处理器和与处理器耦合的计算机可读存储单元,其中该计算机可读存储单元包括当被处理器执行时,实现基于应用程序的运行时行为自动纠正应用程序的方法的指令。按照本发明的一个实施例,一种支持计算机基础设施的过程(process),所述过程包括为在计算系统中创建、集成、主管、维护和部署计算机可读代码中的至少一个提供至少一个支持服务,其中该代码与计算系统结合能够执行基于应用程序的运行时行为自动纠正应用程序的方法。


图I例示了根据本发明的实施例,基于应用程序的运行时行为自动纠正应用程序的系统10。
图2是描绘根据本发明的实施例,由自动纠正器执行的基于应用程序的运行时行为自动分析和纠正应用程序的方法的流程图。图3是描绘根据本发明的实施例,由流分析器执行的自动分析应用程序的流的方法的流程图,其中流分析器是图2中的自动纠正器的第一子模块。图3A是描绘根据本发明的实施例,由事件流识别器执行的自动识别导致事件的应用程序的控制流的方法的流程图,其中事件流识别器是图3中的流分析器的第一子模块。图3B是描绘根据本发明的实施例,由前向流跟踪器执行的自动跟踪导致事件的应用程序的前向数据流的方法的流程图,其中前向流跟踪器是图3中的流分析器的 第二子模块。图3C是描绘根据本发明的实施例,由反向流跟踪器执行的自动跟踪从预期结果值中相反地导出的应用程序的反向数据流的方法的流程图,其中反向流跟踪器是图3中的流分析器的第三子模块。图3D是描绘根据本发明的实施例,由故障定位器执行的自动定位应用程序的故障的方法的流程图,其中故障定位器是图3中的流分析器的第四子模块。图4是描绘根据本发明的实施例,由应用程序改正器(application fixer)执行的自动纠正应用程序的故障的方法的流程图,其中应用程序改正器是图2中的自动纠正器的第二子模块。图4A是描绘根据本发明的实施例,由规范生成器执行的自动生成解决方案的技术规范的方法的流程图,其中规范生成器是图4中的应用程序改正器的第一子模块。图4B是描绘根据本发明的实施例,由解决方案生成器执行的依据技术规范自动生成解决方案的方法的流程图,其中解决方案生成器是图4中的应用程序改正器的第二子模块。图5A例示了根据本发明的实施例,自动纠正器执行图2的方法的应用程序的伪码。图5B例示了根据本发明的实施例,自动纠正器执行图2的方法的应用程序的流程图。图6例示了根据本发明的实施例,用于基于应用程序的运行时行为自动纠正应用程序的计算机系统。
具体实施例方式图I例示了根据本发明的实施例,基于应用程序的运行时行为自动纠正应用程序70的系统10。系统10包括用户21、应用程序支持团队22、标签管理工具(ticketing tool)30、自动纠正器40、和应用程序70。用户21向自动纠正器40提供输入并接收自动纠正器40生成的输出。用户21通过如箭头A所指向标签管理工具30发出标签或通过如箭头C所指将输入直接馈入自动纠正器40中来提供输入。标签指的是应用程序70的问题。标签管理工具30是有助于对应用程序的标签进行记录和状态跟踪的软件工具。应用程序70是出现问题的软件程序。在本说明书中,术语“应用程序(application)”被定义为全面执行应用程序的程序代码和数据。标签管理工具30如箭头B所指根据用户21提供的事件细节将输入提供给自动纠正器40。尤其,传统标签管理工具的例子可以是Radix、Remedy、Manage Now、Peregrine等。到自动纠正器40的输入描述事件。在本说明书中,术语“事件(incident)”被定义为产生用户21没有预期的数据值的应用程序70的任何错误运行。在本说明书中,术语“事件”和“问题”可与术语“标签”交换使用。在本说明书中,输入也被称为事件细节。尤其,事件可以是运行时错误、静态错误、程序错误、和数据错误等。输入包括已经被执行并导致事件的应用程序70的代码语句、代码语句产生事件的数据环境、事件产生的不正确结果、和在执行代码语句时用户21预期的正确结果。在本说明书中,术语“数据环境”被定义为包括代码语句使用的用户数据、系统配置数据等的数据集合。 自动纠正器40从标签管理工具30和/或用户21接收描述事件的输入,并从应用程序70中检索应用程序细节。应用程序细节用箭头E指示。应用程序细节包括应用程序70的代码语句和数据环境。自动纠正器40利用输入和应用程序细节来纠正应用程序70。自动纠正器40包括流分析器50和应用程序改正器60。流分析器50分析应用程序70的前向流与反向流之间的差异。流分析器50包括识别事件流的第一功能单元、跟踪前向数据流的第二功能单元、跟踪反向数据流的第三功能单元、和定位候选故障的第四功能单元。有关流分析器50的细节请参阅下面图3的描述。应用程序改正器60生成解决应用程序70的前向流与反向流之间的差异的解决方案(solution)。这些差异由流分析器50产生的分析结果规定或由应用程序支持团队22提供。应用程序改正器60包括生成解决方案的技术规范的第一功能单元、和按照技术规范生成解决方案的第二功能单元。应用程序改正器60如箭头F所指利用解决方案更新应用程序70。该解决方案包括具有用于替代应用程序70而不产生事件的格式的新代码语句和新数据环境。应用程序改正器60还生成以文本格式对解决方案编制文档(document)的结论(resolution),并将结论提供给标签管理工具30。该结论如箭头D所指。有关应用程序改正器60的细节请参阅下面图4的描述。应用程序支持团队22在自动纠正器40进行的同时通过检查中间结果来与自动纠正器40交互。应用程序支持团队22的这种介入可以配置成可选的,以便自动纠正器40以全自动方式进行。本发明自动分析事件流、前向数据流和反向数据流。事件流是当应用程序70运行时引起运行时事件的控制流。前向数据流是已经实际执行并导致运行时事件的第一数据流。反向数据流是从没有运行时事件的预期结果中导出的相反数据流。本发明还自动识别和定位应用程序70中的故障,纠正应用程序70,和更新应用程序70以便使用。因此,本发明降低了传统调试过程的工作量和成本。图2是描绘根据本发明的实施例,由自动纠正器执行的基于应用程序的运行时行为自动纠正应用程序的方法的流程图。在步骤410中,自动纠正器从标签管理工具和/或用户接收事件细节。事件细节包括已经被执行并导致事件的应用程序的代码语句、其中代码语句产生事件的包括用户和系统数据值的数据环境、事件产生的不正确结果、和在没有事件地执行应用程序的代码语句时用户21预期的正确结果。在步骤420中,自动纠正器运行流分析器,后者分析事件的前向和反向控制流。有关流分析器的细节请参阅下面图3的流程图。在步骤430中,自动纠正器确定流分析器产生的分析结果是否可接受。尤其,自动纠正器通过如下步骤来执行步骤430,即向应用程序支持团队呈现分析结果并随后从应用程序支持团队接收批准分析结果的输入,将分析结果应用于为分析结果设置的预定标准数据,以及通过为自动纠正器配置的自动参数自动确定继续执行步骤440等。如果自动纠正器确定流分析器产生的分析结果可接受,则自动纠正器继续执行步骤440。如果自动纠正器确定流分析器产生的分析结果不可接受,则终止自动纠正器,以便由应用程序支持团队的编程人员人工分析。在步骤440中,自动纠正器运行应用程序改正器,后者基于流分析器的结果纠正应用程序的一些方面。有关应用程序改正器的细节请参阅下面图4的流程图。
在步骤450中,自动纠正器确定应用程序改正器所生成的纠正应用程序的解决方案是否可接受。尤其,自动纠正器通过如下步骤来执行步骤450,即向应用程序支持团队呈现解决方案并随后从应用程序支持团队接收批准解决方案的输入等。如果自动纠正器确定应用程序改正器产生的解决方案可接受,则自动纠正器继续执行步骤460。如果自动纠正器确定应用程序改正器产生的解决方案不可接受,则终止自动纠正器,以便由应用程序支持团队的编程人员人工分析应用程序。在步骤460中,自动纠正器利用解决方案更新应用程序,并将对解决方案的细节编制文档的结论发送给标签管理工具。图3是描绘根据本发明的实施例,由流分析器执行的自动分析应用程序的流的方法的流程图,其中流分析器是上面图2中的自动纠正器的第一子模块。在步骤510中,流分析器运行识别事件的控制流的事件流识别器。有关事件流识别器的细节请参阅下面图3A的描述。
步骤520和530可以同时执行,因为步骤520和步骤530是独立的。在步骤520中,流分析器运行跟踪事件的前向数据流的前向流跟踪器。有关前向流跟踪器的细节请参阅下面图3B的描述。在步骤530中,流分析器运行跟踪事件的反向数据流的反向流跟踪器。事件的反向数据流是从预期结果值中相反地导出的数据流。有关反向流跟踪器的细节请参阅下面图3C的描述。在步骤540中,流分析器运行故障定位器,后者利用来自步骤520和步骤530的结果生成成为事件原因的故障位置的列表。有关故障定位器的细节请参阅下面图3D的描述。图3A是描绘根据本发明的实施例,由事件流识别器执行的自动识别导致事件的应用程序的控制流的方法的流程图,其中事件流识别器是上面图3中的流分析器的第一子模块。在步骤5101中,事件流识别器针对问题对象检索在上面图2的步骤410中接收的事件细节。导致事件的应用程序的控制流被称为事件流。在本说明书中,术语“问题对象”指示由标签管理工具经由标签报告为导致错误的对象,术语“赋值对象(assignmentobject)”指示直接或间接分配给事件流中的特定问题对象的中间对象。在事件中涉及问题对象和赋值对象。如果在事件流中存在多于一个问题对象,则事件流识别器针对每个问题对象执行步骤5101或5105。事件流识别器继续执行步骤5102。在步骤5102中,事件流识别器跟踪应用程序的代码语句中对问题对象的所有赋值语句(assignment statement)。因为赋值语句改变问题对象的值,所以事件流包括将新值分配给问题对象的所有代码语句。事件流识别器继续执行步骤5103。对于所有赋值语句中分配给问题对象的每个赋值对象,事件流识别器都执行步骤5103 和 5104。在步骤5103中,事件流识别器跟踪对所述赋值对象的赋值。因为赋值对象改变问题对象的值,所以事件流包括将新值分配给赋值对象的代码语句。事件流识别器继续执行步骤5104。在步骤5104中,事件流识别器通过检查应用程序的代码语句来确定所述赋值对象是否具有初始值。当代码语句从用户接收输入时或者当赋值对象具有与应用程序开始时 的值相等的值时,赋值对象具有初始值。如果事件流识别器确定赋值对象不具有初始值,则事件流识别器为赋值对象的下一次赋值执行步骤5103。如果事件流识别器确定赋值对象具有初始值,则事件流识别器循环回到步骤5103,以便处理分配给问题对象的另一个赋值对象。当分配给问题对象的所有赋值对象都达到各自初始值时,事件流识别器继续执行步骤5105。在步骤5105中,事件流识别器生成和存储事件流,事件流描述事件中涉及的所有问题对象、分配给各自问题对象的所有赋值对象、各自赋值对象的所有初始值、和针对每个问题对象改变的值的各自序列。在执行了步骤5105之后,事件流识别器将控制交给自动纠正器。有关事件流的例子请参阅下面图5A。图3B是描绘根据本发明的实施例,由前向流跟踪器执行的自动跟踪导致事件的应用程序的前向数据流的方法的流程图,其中前向流跟踪器是上面图3中的流分析器的第二子模块。在步骤5201中,前向流跟踪器通过利用问题对象的至少一个输入变数(inputvariation)运行事件流来模拟应用程序的计算。所述至少一个输入变数是基于针对问题对象的用户输入自动生成的。前向流跟踪器继续执行步骤5202。对于事件流中的每个赋值对象,前向流跟踪器执行步骤5202和5203。在步骤5202中,前向流跟踪器跟踪当前赋值对象的值。前向流跟踪器继续执行步骤 5203。在步骤5303中,前向流跟踪器通过比较事件流内的问题对象和当前赋值对象的各自值,来确定当前赋值对象是否到达问题对象。如果前向流跟踪器确定当前赋值对象还未到达问题对象,则前向流跟踪器针对应用程序的程序代码内当前赋值对象的紧随其后的赋值执行步骤5202。如果前向流跟踪器确定当前赋值对象已到达问题对象,则前向流跟踪器循环回到步骤5202,以便处理分配给问题对象的另一个赋值对象。当前向流跟踪器确定问题对象的事件流中的所有赋值对象都到达问题对象时,前向流跟踪器继续执行步骤5204。在步骤5204中,前向流跟踪器生成和存储与事件有关的前向数据流。前向数据流例示了导致事件的应用程序的实际运行。
图3C是描绘根据本发明的实施例,由反向流跟踪器执行的自动跟踪从预期结果值相反地导出的应用程序的反向数据流的方法的流程图,其中反向流跟踪器是上面图3中的流分析器的第三子模块。在步骤5301中,反向流跟踪器将预期结果值分配给问题对象。预期结果值由用户作为输入提供给自动纠正器。反向流跟踪器继续执行步骤5302。对于事件流中的每个赋值对象,反向流跟踪器执行步骤5302和5303。在步骤5302中,反向流跟踪器从问题对象中重新计算当前赋值对象。反向流跟踪器继续执行步骤5303。在步骤5303中,反向流跟踪器通过将当前赋值对象的各自值与当前赋值对象的用户输入相比较,或通过确定事件流处于应用程序的开始,来确定当前赋值对象 是否具有初始值。如果反向流跟踪器确定当前赋值对象不具有初始值,则反向流跟踪器为应用程序的程序代码内针对当前赋值对象的应用程序的紧前一个赋值执行步骤5303。如果反向流跟踪器确定当前赋值对象具有初始值,则反向流跟踪器循环回到步骤5302,以便处理分配给问题对象的另一个赋值对象。当反向流跟踪器确定问题对象的事件流中的所有赋值对象都具有各自初始值时,反向流跟踪器继续执行步骤5304。在步骤5304中,反向流跟踪器生成和存储从与事件有关的问题对象的预期结果值中导出的至少一个反向数据流。所述至少一个反向数据流的每个反向数据流标识一组数据值和其中分配各自数据值的各自代码语句。数据值包括用户数据和系统配置数据。所述每个反向数据流例示了产生问题对象的预期结果值的应用程序的模拟运行,其中应用程序没有事件地运行。对与事件有关的每个问题对象重复步骤5301到5304。图3D是描绘根据本发明的实施例,由故障定位器执行的自动定位应用程序的故障的方法的流程图,其中故障定位器是上面图3中的流分析器的第四子模块。在步骤5401中,故障定位器分别按照上面图3B和3C的描述将前向流跟踪器为每个问题对象生成的前向数据流与反向流跟踪器为每个问题对象生成的相应至少一个反向数据流相比较。故障定位器继续执行步骤5402。故障定位器对每个问题对象的相应赋值对象执行步骤5402到5404。如上所述,每个问题对象是由标签管理工具经由标签报告为导致错误的对象,并且至少一个赋值对象通过事件流内的相应赋值与所述每个问题对象相关联。在步骤5402中,故障定位器识别候选故障。候选故障是从由如下组成的群体中选择的赋值对象在前向数据流中和在反向数据流中具有不同值的赋值语句、前向数据流采取的实际路径不同于在反向数据流中模拟的预期路径的判定语句、和两者的组合。故障定位器继续执行步骤5403。在步骤5403中,故障定位器利用相应的输入变数来模拟至少一个新数据流。为新数据流生成输入变数以模拟反向数据流,后者模拟产生预期输出值的应用程序的运行。故障定位器通过利用生成的输入变数运行应用程序来创建新数据流。故障定位器继续执行步骤 5404。在步骤5404中,故障定位器确定在新数据流中和在反向数据流中分配给当前问题对象的各自值是否相同。如果故障定位器确定在新数据流中和在反向数据流中分配给当前赋值对象的各自值不同,则故障定位器为当前赋值对象的另一个输入变数执行步骤5403。如果故障定位器确定在新数据流中和在反向数据流中分配给当前赋值对象的各自值相同,则故障定位器循环回到步骤5402,以便处理在前向数据流中和在反向数据流中具有不同值的另一个问题对象。一旦处理完在前向数据流中和在反向数据流中具有不同值的所有问题对象和控制语句,故障定位器就继续执行步骤5405。在步骤5405中,故障定位器生成和存储包括针对事件中的所有问题对象识别的所有候选故障、和与相应候选故障相关联的各自赋值对象的数据值的候选故障列表。图4是描绘根据本发明的实施例,由应用程序改正器执行的自动纠正应用程序的故障的方法的流程图,其中应用程序改正器是上面图2中的自动纠正器的第二子模块。在步骤610中,应用程序改正器运行生成解决方案的技术规范的规范生成器。该解决方案是没有事件地运行的纠正的应用程序。有关规范生成器的细节请参阅下面图4A的描述。
在步骤620中,应用程序改正器运行生成解决方案和为标签管理工具和/或用户对解决方案编制文档的结论的解决方案生成器。有关解决方案生成器的细节请参阅下面图4B的描述。图4A是描绘根据本发明的实施例,由规范生成器执行的自动生成解决方案的技术规范的方法的流程图,其中规范生成器是上面图4中的应用程序改正器的第一子模块。在步骤6101中,规范生成器检索流分析器的故障定位器生成的候选故障列表和应用程序的细节。使应用程序的细节可通过自动纠正器获得。在步骤6102中,规范生成器通过检查候选故障列表和应用程序的细节识别事件的源头。尤其,事件的起源可能是数据对象、应用程序中的代码语句及其组合。在步骤6103中,规范生成器根据反向数据流中的数据值设计新数据对象和/或新代码语句来替代事件的所识别源头。在步骤6104中,规范生成器生成作为没有事件地运行并产生用户预期的结果的纠正应用程序的解决方案的技术规范。然后,规范生成器将技术规范发送给应用程序改正器的解决方案生成器。图4B是描绘根据本发明的实施例,由解决方案生成器执行的依据技术规范自动生成解决方案的方法的流程图,其中解决方案生成器是上面图4中的应用程序改正器的第二子模块。在步骤6201中,解决方案生成器从规范生成器接收技术规范并检索应用程序的细节。使应用程序的细节可通过自动纠正器获得。在步骤6202中,解决方案生成器依据技术规范生成纠正事件的应用程序的解决方案。该解决方案是没有事件地生成预期结果的新应用程序。该解决方案是从由如下组成的群体中选择的代码语句、配置参数、用户数据及其组合。解决方案的代码语句替代应用程序的现有代码语句以便纠正事件。解决方案的配置参数改变应用程序的运行时环境以便纠正事件。解决方案的用户数据使应用程序能够利用与导致事件的一组数据不同的一组新数据来运行。在步骤6203中,解决方案生成器将生成的解决方案存储到存储体中以便用于应用程序。解决方案生成器还生成将解决方案编制文档成文本描述的结论。解决方案生成器将该结论发送给用户和/或标签管理工具。在本发明的一个实施例中,应用程序是叫做“myprogram”的程序,它包括被确定为要纠正的语句“x=4”。语句“x=4”的解决方案是在应用程序myprogram内替代语句“x=4”的语句“x=5”。结论是解决方案的文本描述,特别是例如“问题是由程序“myprogram”中的错误引起的,其中在第z行上对照数值4检验变量X,而应该对照数值5检验变量X”。图5A例示了根据本发明的实施例,自动纠正器执行上面图2的方法的应用程序的伪码。事件流识别器在上面图3A的步骤5101中检索将问题对象识别为参数g的事件细节。事件流识别器在上面图3A的步骤5102中跟踪对问题对象g的赋值语句。因为问题对象g是在第L4行“g=d-50; ”中根据参数d赋值的,所以参数d是问题对象g的第一赋值对象。事件流识别器在上面图3A的步骤5103中跟踪参数a作为问题对象参数g的第二赋值对象,因为参数d是在第L2行“d=a+10; ”中根据参数a赋值的。事件流识别器在上面图3A的步骤5104中确定参数a具有初始值,因为参数a是通过用户输入初始化的输入参数并终止跟踪赋值对象。事件流识别器继续执行上面图3A的步骤5105,并且将问题对象参数g的事件流生成为第L2和L4行和参数a,d和g。图5B例示了根据本发明的实施例,自动纠正器执行上面图2的方法的应用程序的流程图。用户发出描述应用程序问题的标签,即,当针对变量X的用户输入是4时,应用程序打印2作为变量Y的值,而用户预期变量Y的值是6。前向流跟踪器发现已经实际执行的前向数据流是步骤E1-E2-E3-E5。反向流跟踪器通过在步骤E5中用变量Y的预期值6对变量Y进行实例化来模拟运行。在反向流跟踪器尝试步骤E3的情况下,变量X的模拟值是8,这与在步骤E2中所作的判定矛盾,因为8大于5。此外,因为针对变量X的用户输入是4,所以包括步骤E3的模拟运行是不正确的。在反向流跟踪器尝试步骤E4的情况下,变量X的模拟值是4,这也与在步骤E2中所作的判定矛盾,因为4小于5。由于步骤E2,应用程序不能从变量X的输入4中生成变量Y的预期值6。故障定位器将前向数据流与反向数据流相比较,并将步骤E2识别为候选故障。规范生成器为步骤E2设计“X>3”来纠正应用程序,并且为具有“X>3”来替代步骤E2的新应用程序生成技术规范。解决方案生成器创建具有“X>3”来替代步骤E2的新应用程序作为解决方案,并且创建以文本形式描述解决方案的结论。图6例示了根据本发明的实施例,用于基于应用程序的运行时行为自动纠正应用程序的计算机系统。计算机系统90包括处理器91、与处理器91耦合的输入设备92、与处理器91耦合的输出设备93、和包括每一个都与处理器91耦合的存储设备94和95的计算机可读存储单元。输入设备92尤其可以是键盘、鼠标、键板、触摸屏、语音识别设备、传感器、网络接口 卡(NIC)、基于互联网协议语音/视频(VOIP)适配器、无线适配器、电话适配器、专用电路适配器等。输出设备93尤其可以是打印机、绘图仪、计算机屏幕、磁带、移动硬盘、软盘、NIC、VOIP适配器、无线适配器、电话适配器、专用电路适配器、音频和/或视频信号发生器、发光二极管(LED)等。存储设备94和95尤其可以是高速缓冲存储器、动态随机访问存储器(DRAM)、只读存储器(ROM)、硬盘、软盘、磁带、像紧致盘(⑶)或数字视频盘(DVD)那样的光存储体等。存储设备95包括计算机代码97,计算机代码97是包括计算机可执行指令的计算机程序代码。计算机代码97尤其包括用于按照本发明,基于应用程序的运行时行为自动纠正应用程序的算法。处理器91执行计算机代码97。存储设备94包括输入数据96。输入数据96包括计算机代码97所需的输入。输出设备93显示来自计算机代码97的输出。存储设备94和95的任一个或两者(或未显示在图6中的一个或多个附加存储设备)可以用作计算机可读存储介质(或计算机可用存储介质或计算机存储设备),计算机可读存储介质具有实施在其中的计算机可读程序代码和/或具有存储在其中的其它数据,其中计算机可读程序代码包括计算机代码97。一般说来,计算机系统90的计算机程序产品(或可替代的是,制品)可以包括所述计算机可读存储介质(或所述程序存储设备)。本发明的任何部件可以由针对按本发明的数据收集规则动态构建web接口的过程部署或集成计算基础设施的服务提供者部署,管理,服务等。因此,本发明公开了支持计算机基础设施的过程,包括集成,主管,维护和部署进入计算系统(例如,计算系统90)中的计算机可读代码,其中该代码与计算系统结合能够执行基于应用程序的运行时行为自动纠 正应用程序的方法。在另一个实施例中,本发明提供了根据预订、广告和/或费用执行本发明的过程步骤的商业方法。也就是说,像Solution Integrator那样的服务提供者可以创建,维护,支持等根据本发明的应用程序的运行时行为自动纠正应用程序的过程。在这种情况下,月艮务提供者可以为一个或多个顾客创建,维护,支持等执行本发明的过程步骤的计算机基础设施。作为回报,服务提供者可以在预订和/或收费协议下接受来自顾客的付款,和/或服务提供者可以接受将广告内容销售给一个或多个第三方的付款。虽然图6将计算机系统90显示成硬件和软件的特定配置,如本领域技术人员所知的硬件和软件的任何组合都可以与图6的特定计算机系统90结合用于上述目的。例如,存储设备94和95可以是单个存储设备的一部分而不是分立存储设备。本领域技术人员应该懂得,本发明可以实施成系统,方法或计算机程序产品。于是,本发明可以采取完全硬件实施例,完全软件实施例(包括固件、驻留软件、微码等)、或组合本文可以统称为“电路”,“模块”或“系统”的软件和硬件方面的实施例的形式。而且,本发明可以采取实施在具有实施在介质中的计算机可用程序代码的表述的任何有形介质中的计算机程序产品的形式。可以利用一种或多种计算机可用或计算机可读介质94,95的任何组合。术语计算机可用介质或计算机可读介质统称为计算机可用或计算机可读存储介质94,95。计算机可用或计算机可读介质94,95可以是,例如,但不局限于,电、磁、光、电磁、红外、或半导体系统、装置或设备、或前者的任何适当组合。计算机可读介质94,95的更具体例子(非穷尽列表)包括如下具有一根或多根导线的电连线、便携式计算机磁盘、硬盘、随机访问存储器(RAM),只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或前者的任何适当组合。注意,计算机可用或计算机可读存储介质94,95甚至可以是纸张或打印程序的另一种适当介质,因为程序可以经由,例如,纸或其它介质的光扫描被电子捕获,然后,如果有必要,可以以适当方式加以编译,加以解释,或以其他方式处理,然后存储在计算机存储器中。在本文件的背景下,计算机可用或计算机可读介质94,95可以是可以包括或存储供执行指令的系统、装置或设备使用或与执行指令的系统、装置或设备结合在一起使用的程序的任何介质。实现本发明的操作的程序代码97可以以一种或多种编程语言的任何组合编写,包括像Java、Smalltalk、C++等那样的面向对象编程语言、和像“C”编程语言或类似编程语言那样的传统过程编程语言。程序代码97可以完全在用户计算机上执行,部分在用户计算机上执行,作为独立软件包执行,部分在用户计算机上执行而部分在远程计算机上执行,或完全在远程计算机或服务器上执行。在后一种情形下,远程计算机可以通过任何类型的网络与用户计算机连接,包括局域网(LAN)或广域网(WAN),或可以与外部计算机连接(例如,通过使用因特网服务提供者的互联网)。本发明是参考按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图示例和/或方块图来描述的。应该明白,流程图示例和/或方块图的每个方块、和 流程图示例和/或方块图中的方块的组合可以通过计算机程序指令实现。在本说明书中术语“计算机程序指令”可与术语“计算机代码97”交换使用。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以生产出这样的机器,使经由计算机或其它可编程数据处理装置的处理器执行的指令形成实现规定在流程图和/或方块图的一个或多个方块中的功能/动作的装置。这些计算机程序指令也可以存储在可以指示计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质94,95中,以便存储在计算机可读介质中的指令形成包括实现规定在流程图和/或方块图的一个或多个方块中的功能/动作的指令的制品。计算机程序指令也可以装载到计算机或其它可编程数据处理装置中,使一系列操作步骤在计算机或其它可编程装置中执行,形成这样的计算机实现过程,使在计算机或其它可编程数据上执行的指令提供实现规定在流程图和/或方块图的一个或多个方块中的功能/动作的过程。图中的流程图和方块图例示了按照本发明各种实施例的系统、方法和计算机程序代码的可能实现的架构、功能和操作。关于这一点,流程图或方块图中的每个方块可以代表包括实现指定逻辑功能的一条或多条可执行指令的代码的模块、片段、或部分。还应该注意到,在一些可替代实现中,标注在方块中的功能可以不按照标注在图中的顺序发生,例如,相继示出的两个方块事实上可能基本上同时被执行,或取决于所涉及的功能,这些方块有时可能按相反顺序执行。还应该注意到,方块图和/或流程图范例的每个方块,和方块图和/或流程图示例中的方块的组合可以通过执行指定功能或动作的基于专用硬件的系统,或专用硬件和计算机指令的组合来实现。权利要求书中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物都意欲包括如具体要求的那样与其它所要求元件组合执行功能的任何结构、材料或动作。本发明的描述是为了例示和描述的目的给出的,而不是打算穷举或将本发明限于所公开的形式。许多变型和变体对于本领域技术人员来说是显而易见的,不偏离本发明的范围。选择和描述实施例是为了最佳地说明本发明的原理及其实际应用,使本领域技术人员能够通过各种实施例以及如适合所设计的特定使用的各种变型来理解本发明。
权利要求
1.一种基于应用程序的运行时行为自动纠正应用程序的方法,所述方法包括 计算机的处理器从用户或标签管理工具接收应用程序的事件的事件细节,其中所述事件涉及至少一个问题对象; 从事件细节中识别事件的事件流,其中事件流对应于所述至少一个问题对象的第一问题对象,事件流包括第一问题对象、应用程序内影响第一问题对象的至少一个赋值对象、和其中所述至少一个赋值对象影响第一问题对象的应用程序的至少一个代码语句; 通过关于第一问题对象从应用程序的开始直到事件跟踪已经实际执行的事件流的数据值,来创建事件流的前向数据流; 通过从第一问题对象的预期结果到第一问题对象的所述至少一个赋值对象的相应初始值,按照与应用程序的实际执行相反的顺序模拟事件流的所述数据值,来创建事件流的至少一个反向数据流;以及 所述处理器使用前向数据流和所述至少一个反向数据流来生成事件的第一问题对象的候选故障列表。
2.如权利要求I所述的方法,所述创建所述至少一个反向数据流包括 将第一问题对象的预期结果分配给事件流中的所述至少一个代码语句的最后代码语句中的第一问题对象; 根据第一问题对象的预期结果重新计算所述至少一个赋值对象; 确定所述至少一个赋值对象具有影响第一问题对象的所述至少一个赋值对象的相应初始值;以及 生成第一问题对象的第一反向数据流。
3.如权利要求I所述的方法,所述生成候选故障列表包括 通过比较前向数据流中和所述至少一个反向数据流中的所述至少一个赋值对象的各自值来识别第一问题对象,其中前向数据流中的第一问题对象的第一值不同于第一代码语句中的所述至少一个反向数据流的第一反向数据流中的第一问题对象的第二值; 将第一代码语句识别为第一候选故障; 通过将不同的一组输入值应用于所述至少一个赋值对象来模拟新数据流; 确定新数据流和第一反向数据流的各自值相同;以及 将第一候选故障加入第一问题对象的候选故障列表中。
4.如权利要求I所述的方法,所述方法进一步包括 提示第二用户检查前向数据流、所述至少一个反向数据流和候选故障列表,并从第二用户接收第一输入,其中第一输入指示第二用户批准基于前向数据流和所述至少一个反向数据流的所生成候选故障列表,并且其中第二用户被授权更新应用程序; 响应于从第二用户接收到第一输入,使用候选故障列表和应用程序的规范来生成纠正应用程序的事件的技术规范; 按照该技术规范生成解决方案并为用户或标签管理工具生成描述该解决方案的结论; 向第二用户呈现该解决方案并从第二用户接收第二输入,其中第二输入指示第二用户批准该解决方案;以及 响应于从第二用户接收到第二输入,利用该解决方案更新应用程序使得应用程序无事件地运行,并且将该结论传送给用户或标签管理工具。
5.如权利要求4所述的方法,所述生成技术规范包括 检索包括第一问题对象的候选故障列表的至少一个候选故障列表并检索应用程序的规范; 从所述至少一个候选故障列表中识别事件的源头; 设计源头的替代物,其中该替代物是从由如下组成的群体中选择的新数据对象、新代码语句及其组合;以及 将源头和替代物加入事件的技术规范中。
6.一种计算机程序产品,包括 具有实施在其中的计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码包括基于应用程序的运行时行为自动纠正应用程序的指令,所述纠正包括 从用户或标签管理工具接收应用程序的事件的事件细节,其中所述事件涉及至少一个问题对象; 从事件细节中识别事件的事件流,其中事件流对应于所述至少一个问题对象的第一问题对象,事件流包括第一问题对象、应用程序内影响第一问题对象的至少一个赋值对象、和其中所述至少一个赋值对象影响第一问题对象的应用程序的至少一个代码语句; 通过关于第一问题对象从应用程序的开始直到事件跟踪已经实际执行的事件流的数据值,来创建事件流的前向数据流; 通过从第一问题对象的预期结果到第一问题对象的所述至少一个赋值对象的相应初始值,按照与应用程序的实际执行相反的顺序模拟事件流的所述数据值,来创建事件流的至少一个反向数据流;以及 使用前向数据流和所述至少一个反向数据流来生成事件的第一问题对象的候选故障列表。
7.如权利要求6所述的计算机程序产品,所述创建所述至少一个反向数据流包括 将第一问题对象的预期结果分配给事件流中的所述至少一个代码语句的最后代码语句中的第一问题对象; 根据第一问题对象的预期结果重新计算所述至少一个赋值对象; 确定所述至少一个赋值对象具有影响第一问题对象的所述至少一个赋值对象的相应初始值;以及 生成第一问题对象的第一反向数据流。
8.如权利要求6所述的计算机程序产品,所述生成候选故障列表包括 通过比较前向数据流和所述至少一个反向数据流中的所述至少一个赋值对象的各自值来识别第一问题对象,其中前向数据流中的第一问题对象的第一值不同于第一代码语句中的所述至少一个反向数据流的第一反向数据流中的第一问题对象的第二值; 将第一代码语句识别为第一候选故障; 通过将不同的一组输入值应用于所述至少一个赋值对象来模拟新数据流; 确定新数据流和第一反向数据流的各自值相同;以及 将第一候选故障加入第一问题对象的候选故障列表中。
9.如权利要求6所述的计算机程序产品,所述纠正进一步包括提示第二用户检查前向数据流、所述至少一个反向数据流和候选故障列表,并从第二用户接收第一输入,其中第一输入指示第二用户批准基于前向数据流和所述至少一个反向数据流的所生成候选故障列表,并且其中第二用户被授权更新应用程序; 响应于从第二用户接收到第一输入,使用候选故障列表和应用程序的规范生成纠正应用程序的事件的技术规范; 按照该技术规范生成解决方案和为用户或标签管理工具生成描述该解决方案的结论; 向第二用户呈现该解决方案并从第二用户接收第二输入,其中第二输入指示第二用户批准该解决方案;以及 响应于从第二用户接收到第二输入,利用该解决方案更新应用程序使得应用程序无事件地运行,并且将该结论传送给用户或标签管理工具。
10.如权利要求9所述的计算机程序产品,所述生成技术规范包括 检索包括第一问题对象的候选故障列表的至少一个候选故障列表并检索应用程序的规范; 从所述至少一个候选故障列表中识别事件的源头; 设计源头的替代物,其中该替代物是从由如下组成的群体中选择的新数据对象、新代码语句及其组合;以及 将源头和替代物加入事件的技术规范中。
11.一种包括处理器和与处理器耦合的计算机可读存储单元的计算机系统,所述计算机可读存储单元包括当被处理器运行时实现基于应用程序的运行时行为自动纠正应用程序的方法的指令,所述方法包括 从用户或标签管理工具接收应用程序的事件的事件细节,其中所述事件涉及至少一个问题对象; 从事件细节中识别事件的事件流,其中事件流对应于所述至少一个问题对象的第一问题对象,事件流包括第一问题对象、应用程序内影响第一问题对象的至少一个赋值对象、和其中所述至少一个赋值对象影响第一问题对象的应用程序的至少一个代码语句; 通过关于第一问题对象从应用程序的开始直到事件跟踪已经实际执行的事件流的数据值,来创建事件流的前向数据流; 通过从第一问题对象的预期结果到第一问题对象的所述至少一个赋值对象的相应初始值,按照与应用程序的实际执行相反的顺序模拟事件流的所述数据值,来创建事件流的至少一个反向数据流;以及 使用前向数据流和所述至少一个反向数据流来生成事件的第一问题对象的候选故障列表。
12.如权利要求11所述的计算机系统,所述创建所述至少一个反向数据流包括 将第一问题对象的预期结果分配给事件流中的所述至少一个代码语句的最后代码语句中的第一问题对象; 根据第一问题对象的预期结果重新计算所述至少一个赋值对象; 确定所述至少一个赋值对象具有影响第一问题对象的所述至少一个赋值对象的相应初始值;以及生成第一问题对象的第一反向数据流。
13.如权利要求11所述的计算机系统,所述生成候选故障列表包括 通过比较前向数据流和所述至少一个反向数据流中的所述至少一个赋值对象的各自值来识别第一问题对象,其中前向数据流中的第一问题对象的第一值不同于第一代码语句中的所述至少一个反向数据流的第一反向数据流中的第一问题对象的第二值; 将第一代码语句识别为第一候选故障; 通过将不同的一组输入值应用于所述至少一个赋值对象来模拟新数据流; 确定新数据流和第一反向数据流的各自值相同;以及 将第一候选故障加入第一问题对象的候选故障列表中。
14.如权利要求11所述的计算机系统,所述方法进一步包括 提示第二用户检查前向数据流、所述至少一个反向数据流和候选故障列表,并从第二用户接收第一输入,其中第一输入指示第二用户批准基于前向数据流和所述至少一个反向数据流的所生成候选故障列表,并且其中第二用户被授权更新应用程序; 响应于从第二用户接收到第一输入,使用候选故障列表和应用程序的规范生成纠正应用程序的事件的技术规范; 按照该技术规范生成解决方案并为用户或标签管理工具生成描述该解决方案的结论; 向第二用户呈现该解决方案并从第二用户接收第二输入,其中第二输入指示第二用户批准该解决方案;以及 响应于从第二用户接收到第二输入,利用该解决方案更新应用程序使得应用程序无事件地运行,并且将该结论传送给用户或标签管理工具。
15.如权利要求14所述的计算机系统,所述生成技术规范包括 检索包括第一问题对象的候选故障列表的至少一个候选故障列表并检索应用程序的规范; 从所述至少一个候选故障列表中识别事件的源头; 设计源头的替代物,其中该替代物是从由如下组成的群体中选择的新数据对象、新代码语句及其组合;以及 将源头和替代物加入事件的技术规范中。
16.一种支持计算机基础设施的过程,所述过程包括为在计算系统中创建、集成、主管、维护和部署计算机可读代码中的至少一个提供至少一个支持服务,其中该代码与计算系统结合能够执行基于应用程序的运行时行为自动纠正应用程序的方法,所述方法包括 从用户或标签管理工具接收应用程序的事件的事件细节,其中所述事件涉及至少一个问题对象; 从事件细节中识别事件的事件流,其中事件流对应于所述至少一个问题对象的第一问题对象,事件流包括第一问题对象、应用程序内影响第一问题对象的至少一个赋值对象、和其中所述至少一个赋值对象影响第一问题对象的应用程序的至少一个代码语句; 通过关于第一问题对象从应用程序的开始直到事件跟踪已经实际执行的事件流的数据值,来创建事件流的前向数据流; 通过从第一问题对象的预期结果到第一问题对象的所述至少一个赋值对象的相应初始值,按照与应用程序的实际执行相反的顺序模拟事件流的所述数据值,来创建事件流的至少一个反向数据流;以及 使用前向数据流和所述至少一个反向数据流来生成事件的第一问题对象的候选故障列表。
17.如权利要求16所述的过程,所述创建所述至少一个反向数据流包括 将第一问题对象的预期结果分配给事件流中的所述至少一个代码语句的最后代码语句中的第一问题对象; 根据第一问题对象的预期结果重新计算所述至少一个赋值对象; 确定所述至少一个赋值对象具有影响第一问题对象的所述至少一个赋值对象的相应初始值;以及 生成第一问题对象的第一反向数据流。
18.如权利要求16所述的过程,所述生成候选故障列表包括 通过比较前向数据流和所述至少一个反向数据流中的所述至少一个赋值对象的各自值来识别第一问题对象,其中前向数据流中的第一问题对象的第一值不同于第一代码语句中的所述至少一个反向数据流的第一反向数据流中的第一问题对象的第二值; 将第一代码语句识别为第一候选故障; 通过将不同的一组输入值应用于所述至少一个赋值对象来模拟新数据流; 确定新数据流和第一反向数据流的各自值相同;以及 将第一候选故障加入第一问题对象的候选故障列表中。
19.如权利要求16所述的过程,所述方法进一步包括 提示第二用户检查前向数据流、所述至少一个反向数据流和候选故障列表,并从第二用户接收第一输入,其中第一输入指示第二用户批准基于前向数据流和所述至少一个反向数据流的所生成候选故障列表,并且其中第二用户被授权更新应用程序; 响应于从第二用户接收到第一输入,使用候选故障列表和应用程序的规范来生成纠正应用程序的事件的技术规范; 按照该技术规范生成解决方案并为用户或标签管理工具生成描述该解决方案的结论; 向第二用户呈现该解决方案并从第二用户接收第二输入,其中第二输入指示第二用户批准该解决方案;以及 响应于从第二用户接收到第二输入,利用该解决方案更新应用程序使得应用程序无事件地运行,并且将该结论传送给用户或标签管理工具。
20.如权利要求19所述的过程,所述生成技术规范包括 检索包括第一问题对象的候选故障列表的至少一个候选故障列表并检索应用程序的规范; 从所述至少一个候选故障列表中识别事件的源头; 设计源头的替代物,其中该替代物是从由如下组成的群体中选择的新数据对象、新代码语句及其组合;以及 将源头和替代物加入事件的技术规范中。
全文摘要
本发明公开了基于应用程序的运行时行为自动纠正应用程序的系统和相关联方法。事件表示其中问题对象产生用户或标签管理工具没有预期的结果的应用程序的执行。自动分析问题对象的事件流。应用程序的实际运行得到前向数据流,根据问题对象的预期结果模拟至少一个反向数据流。比较前向数据流和反向数据流以创建问题对象的候选故障列表。随后设计纠正候选故障列表的技术规范和替代应用程序的解决方案。
文档编号G06F11/36GK102713863SQ201080043731
公开日2012年10月3日 申请日期2010年9月1日 优先权日2009年10月5日
发明者A·高什 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1