国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于運行時行為自動糾正應用程序的制作方法

      文檔序號:6350546閱讀:225來源:國知局
      專利名稱:基于運行時行為自動糾正應用程序的制作方法
      技術領域
      本發(fā)明公開了一種系統(tǒng)和相關聯(lián)的方法,用于基于軟件應用程序的運行時行為(runtime behavior)自動分析和糾正程序代碼和/或數(shù)據(jù)。
      背景技術
      傳統(tǒng)調試工具只關注軟件應用程序的靜態(tài)結構和邏輯。為了改正某些類型的錯誤,傳統(tǒng)調試工具從基于知識的系統(tǒng)中搜索相似的錯誤和相對應的解決方案。因為傳統(tǒng)調試工具在調試軟件應用程序的運行時事件方面功能有限,所以軟件應用程序的故障查找是費力的,并且軟件應用程序的維護成本高昂
      發(fā)明內容

      按照本發(fā)明的一個實施例,一種基于應用程序的運行時行為自動糾正應用程序的方法包括計算機的處理器從用戶或標簽管理工具(ticketing tool)接收應用程序的事件的事件細節(jié),其中所述事件涉及至少一個問題對象;從事件細節(jié)中識別事件的事件流,其中事件流對應于所述至少一個問題對象的第一問題對象,事件流包括第一問題對象、應用程序內影響第一問題對象的至少一個賦值對象、和其中所述至少一個賦值對象影響第一問題對象的應用程序的至少一個代碼語句;通過關于第一問題對象從應用程序的開始直到事件跟蹤已經(jīng)實際執(zhí)行的事件流的數(shù)據(jù)值,來創(chuàng)建事件流的前向數(shù)據(jù)流;通過從第一問題對象的預期結果到第一問題對象的所述至少一個賦值對象的各自初始值,按照與應用程序的實際執(zhí)行相反的順序模擬事件流的所述數(shù)據(jù)值,來創(chuàng)建事件流的至少一個反向數(shù)據(jù)流;以及所述處理器使用前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流生成事件的第一問題對象的候選故障列表。按照本發(fā)明的一個實施例,一種計算機程序產(chǎn)品包括實施計算機可讀程序代碼的計算機可讀存儲單元。該計算機可讀程序代碼包括當被計算機系統(tǒng)的處理器運行時,實現(xiàn)基于應用程序的運行時行為自動糾正應用程序的方法的指令。按照本發(fā)明的一個實施例,一種計算機系統(tǒng)包括處理器和與處理器耦合的計算機可讀存儲單元,其中該計算機可讀存儲單元包括當被處理器執(zhí)行時,實現(xiàn)基于應用程序的運行時行為自動糾正應用程序的方法的指令。按照本發(fā)明的一個實施例,一種支持計算機基礎設施的過程(process),所述過程包括為在計算系統(tǒng)中創(chuàng)建、集成、主管、維護和部署計算機可讀代碼中的至少一個提供至少一個支持服務,其中該代碼與計算系統(tǒng)結合能夠執(zhí)行基于應用程序的運行時行為自動糾正應用程序的方法。


      圖I例示了根據(jù)本發(fā)明的實施例,基于應用程序的運行時行為自動糾正應用程序的系統(tǒng)10。
      圖2是描繪根據(jù)本發(fā)明的實施例,由自動糾正器執(zhí)行的基于應用程序的運行時行為自動分析和糾正應用程序的方法的流程圖。圖3是描繪根據(jù)本發(fā)明的實施例,由流分析器執(zhí)行的自動分析應用程序的流的方法的流程圖,其中流分析器是圖2中的自動糾正器的第一子模塊。圖3A是描繪根據(jù)本發(fā)明的實施例,由事件流識別器執(zhí)行的自動識別導致事件的應用程序的控制流的方法的流程圖,其中事件流識別器是圖3中的流分析器的第一子模塊。圖3B是描繪根據(jù)本發(fā)明的實施例,由前向流跟蹤器執(zhí)行的自動跟蹤導致事件的應用程序的前向數(shù)據(jù)流的方法的流程圖,其中前向流跟蹤器是圖3中的流分析器的 第二子模塊。圖3C是描繪根據(jù)本發(fā)明的實施例,由反向流跟蹤器執(zhí)行的自動跟蹤從預期結果值中相反地導出的應用程序的反向數(shù)據(jù)流的方法的流程圖,其中反向流跟蹤器是圖3中的流分析器的第三子模塊。圖3D是描繪根據(jù)本發(fā)明的實施例,由故障定位器執(zhí)行的自動定位應用程序的故障的方法的流程圖,其中故障定位器是圖3中的流分析器的第四子模塊。圖4是描繪根據(jù)本發(fā)明的實施例,由應用程序改正器(application fixer)執(zhí)行的自動糾正應用程序的故障的方法的流程圖,其中應用程序改正器是圖2中的自動糾正器的第二子模塊。圖4A是描繪根據(jù)本發(fā)明的實施例,由規(guī)范生成器執(zhí)行的自動生成解決方案的技術規(guī)范的方法的流程圖,其中規(guī)范生成器是圖4中的應用程序改正器的第一子模塊。圖4B是描繪根據(jù)本發(fā)明的實施例,由解決方案生成器執(zhí)行的依據(jù)技術規(guī)范自動生成解決方案的方法的流程圖,其中解決方案生成器是圖4中的應用程序改正器的第二子模塊。圖5A例示了根據(jù)本發(fā)明的實施例,自動糾正器執(zhí)行圖2的方法的應用程序的偽碼。圖5B例示了根據(jù)本發(fā)明的實施例,自動糾正器執(zhí)行圖2的方法的應用程序的流程圖。圖6例示了根據(jù)本發(fā)明的實施例,用于基于應用程序的運行時行為自動糾正應用程序的計算機系統(tǒng)。
      具體實施例方式圖I例示了根據(jù)本發(fā)明的實施例,基于應用程序的運行時行為自動糾正應用程序70的系統(tǒng)10。系統(tǒng)10包括用戶21、應用程序支持團隊22、標簽管理工具(ticketing tool)30、自動糾正器40、和應用程序70。用戶21向自動糾正器40提供輸入并接收自動糾正器40生成的輸出。用戶21通過如箭頭A所指向標簽管理工具30發(fā)出標簽或通過如箭頭C所指將輸入直接饋入自動糾正器40中來提供輸入。標簽指的是應用程序70的問題。標簽管理工具30是有助于對應用程序的標簽進行記錄和狀態(tài)跟蹤的軟件工具。應用程序70是出現(xiàn)問題的軟件程序。在本說明書中,術語“應用程序(application)”被定義為全面執(zhí)行應用程序的程序代碼和數(shù)據(jù)。標簽管理工具30如箭頭B所指根據(jù)用戶21提供的事件細節(jié)將輸入提供給自動糾正器40。尤其,傳統(tǒng)標簽管理工具的例子可以是Radix、Remedy、Manage Now、Peregrine等。到自動糾正器40的輸入描述事件。在本說明書中,術語“事件(incident)”被定義為產(chǎn)生用戶21沒有預期的數(shù)據(jù)值的應用程序70的任何錯誤運行。在本說明書中,術語“事件”和“問題”可與術語“標簽”交換使用。在本說明書中,輸入也被稱為事件細節(jié)。尤其,事件可以是運行時錯誤、靜態(tài)錯誤、程序錯誤、和數(shù)據(jù)錯誤等。輸入包括已經(jīng)被執(zhí)行并導致事件的應用程序70的代碼語句、代碼語句產(chǎn)生事件的數(shù)據(jù)環(huán)境、事件產(chǎn)生的不正確結果、和在執(zhí)行代碼語句時用戶21預期的正確結果。在本說明書中,術語“數(shù)據(jù)環(huán)境”被定義為包括代碼語句使用的用戶數(shù)據(jù)、系統(tǒng)配置數(shù)據(jù)等的數(shù)據(jù)集合。 自動糾正器40從標簽管理工具30和/或用戶21接收描述事件的輸入,并從應用程序70中檢索應用程序細節(jié)。應用程序細節(jié)用箭頭E指示。應用程序細節(jié)包括應用程序70的代碼語句和數(shù)據(jù)環(huán)境。自動糾正器40利用輸入和應用程序細節(jié)來糾正應用程序70。自動糾正器40包括流分析器50和應用程序改正器60。流分析器50分析應用程序70的前向流與反向流之間的差異。流分析器50包括識別事件流的第一功能單元、跟蹤前向數(shù)據(jù)流的第二功能單元、跟蹤反向數(shù)據(jù)流的第三功能單元、和定位候選故障的第四功能單元。有關流分析器50的細節(jié)請參閱下面圖3的描述。應用程序改正器60生成解決應用程序70的前向流與反向流之間的差異的解決方案(solution)。這些差異由流分析器50產(chǎn)生的分析結果規(guī)定或由應用程序支持團隊22提供。應用程序改正器60包括生成解決方案的技術規(guī)范的第一功能單元、和按照技術規(guī)范生成解決方案的第二功能單元。應用程序改正器60如箭頭F所指利用解決方案更新應用程序70。該解決方案包括具有用于替代應用程序70而不產(chǎn)生事件的格式的新代碼語句和新數(shù)據(jù)環(huán)境。應用程序改正器60還生成以文本格式對解決方案編制文檔(document)的結論(resolution),并將結論提供給標簽管理工具30。該結論如箭頭D所指。有關應用程序改正器60的細節(jié)請參閱下面圖4的描述。應用程序支持團隊22在自動糾正器40進行的同時通過檢查中間結果來與自動糾正器40交互。應用程序支持團隊22的這種介入可以配置成可選的,以便自動糾正器40以全自動方式進行。本發(fā)明自動分析事件流、前向數(shù)據(jù)流和反向數(shù)據(jù)流。事件流是當應用程序70運行時引起運行時事件的控制流。前向數(shù)據(jù)流是已經(jīng)實際執(zhí)行并導致運行時事件的第一數(shù)據(jù)流。反向數(shù)據(jù)流是從沒有運行時事件的預期結果中導出的相反數(shù)據(jù)流。本發(fā)明還自動識別和定位應用程序70中的故障,糾正應用程序70,和更新應用程序70以便使用。因此,本發(fā)明降低了傳統(tǒng)調試過程的工作量和成本。圖2是描繪根據(jù)本發(fā)明的實施例,由自動糾正器執(zhí)行的基于應用程序的運行時行為自動糾正應用程序的方法的流程圖。在步驟410中,自動糾正器從標簽管理工具和/或用戶接收事件細節(jié)。事件細節(jié)包括已經(jīng)被執(zhí)行并導致事件的應用程序的代碼語句、其中代碼語句產(chǎn)生事件的包括用戶和系統(tǒng)數(shù)據(jù)值的數(shù)據(jù)環(huán)境、事件產(chǎn)生的不正確結果、和在沒有事件地執(zhí)行應用程序的代碼語句時用戶21預期的正確結果。在步驟420中,自動糾正器運行流分析器,后者分析事件的前向和反向控制流。有關流分析器的細節(jié)請參閱下面圖3的流程圖。在步驟430中,自動糾正器確定流分析器產(chǎn)生的分析結果是否可接受。尤其,自動糾正器通過如下步驟來執(zhí)行步驟430,即向應用程序支持團隊呈現(xiàn)分析結果并隨后從應用程序支持團隊接收批準分析結果的輸入,將分析結果應用于為分析結果設置的預定標準數(shù)據(jù),以及通過為自動糾正器配置的自動參數(shù)自動確定繼續(xù)執(zhí)行步驟440等。如果自動糾正器確定流分析器產(chǎn)生的分析結果可接受,則自動糾正器繼續(xù)執(zhí)行步驟440。如果自動糾正器確定流分析器產(chǎn)生的分析結果不可接受,則終止自動糾正器,以便由應用程序支持團隊的編程人員人工分析。在步驟440中,自動糾正器運行應用程序改正器,后者基于流分析器的結果糾正應用程序的一些方面。有關應用程序改正器的細節(jié)請參閱下面圖4的流程圖。
      在步驟450中,自動糾正器確定應用程序改正器所生成的糾正應用程序的解決方案是否可接受。尤其,自動糾正器通過如下步驟來執(zhí)行步驟450,即向應用程序支持團隊呈現(xiàn)解決方案并隨后從應用程序支持團隊接收批準解決方案的輸入等。如果自動糾正器確定應用程序改正器產(chǎn)生的解決方案可接受,則自動糾正器繼續(xù)執(zhí)行步驟460。如果自動糾正器確定應用程序改正器產(chǎn)生的解決方案不可接受,則終止自動糾正器,以便由應用程序支持團隊的編程人員人工分析應用程序。在步驟460中,自動糾正器利用解決方案更新應用程序,并將對解決方案的細節(jié)編制文檔的結論發(fā)送給標簽管理工具。圖3是描繪根據(jù)本發(fā)明的實施例,由流分析器執(zhí)行的自動分析應用程序的流的方法的流程圖,其中流分析器是上面圖2中的自動糾正器的第一子模塊。在步驟510中,流分析器運行識別事件的控制流的事件流識別器。有關事件流識別器的細節(jié)請參閱下面圖3A的描述。
      步驟520和530可以同時執(zhí)行,因為步驟520和步驟530是獨立的。在步驟520中,流分析器運行跟蹤事件的前向數(shù)據(jù)流的前向流跟蹤器。有關前向流跟蹤器的細節(jié)請參閱下面圖3B的描述。在步驟530中,流分析器運行跟蹤事件的反向數(shù)據(jù)流的反向流跟蹤器。事件的反向數(shù)據(jù)流是從預期結果值中相反地導出的數(shù)據(jù)流。有關反向流跟蹤器的細節(jié)請參閱下面圖3C的描述。在步驟540中,流分析器運行故障定位器,后者利用來自步驟520和步驟530的結果生成成為事件原因的故障位置的列表。有關故障定位器的細節(jié)請參閱下面圖3D的描述。圖3A是描繪根據(jù)本發(fā)明的實施例,由事件流識別器執(zhí)行的自動識別導致事件的應用程序的控制流的方法的流程圖,其中事件流識別器是上面圖3中的流分析器的第一子模塊。在步驟5101中,事件流識別器針對問題對象檢索在上面圖2的步驟410中接收的事件細節(jié)。導致事件的應用程序的控制流被稱為事件流。在本說明書中,術語“問題對象”指示由標簽管理工具經(jīng)由標簽報告為導致錯誤的對象,術語“賦值對象(assignmentobject)”指示直接或間接分配給事件流中的特定問題對象的中間對象。在事件中涉及問題對象和賦值對象。如果在事件流中存在多于一個問題對象,則事件流識別器針對每個問題對象執(zhí)行步驟5101或5105。事件流識別器繼續(xù)執(zhí)行步驟5102。在步驟5102中,事件流識別器跟蹤應用程序的代碼語句中對問題對象的所有賦值語句(assignment statement)。因為賦值語句改變問題對象的值,所以事件流包括將新值分配給問題對象的所有代碼語句。事件流識別器繼續(xù)執(zhí)行步驟5103。對于所有賦值語句中分配給問題對象的每個賦值對象,事件流識別器都執(zhí)行步驟5103 和 5104。在步驟5103中,事件流識別器跟蹤對所述賦值對象的賦值。因為賦值對象改變問題對象的值,所以事件流包括將新值分配給賦值對象的代碼語句。事件流識別器繼續(xù)執(zhí)行步驟5104。在步驟5104中,事件流識別器通過檢查應用程序的代碼語句來確定所述賦值對象是否具有初始值。當代碼語句從用戶接收輸入時或者當賦值對象具有與應用程序開始時 的值相等的值時,賦值對象具有初始值。如果事件流識別器確定賦值對象不具有初始值,則事件流識別器為賦值對象的下一次賦值執(zhí)行步驟5103。如果事件流識別器確定賦值對象具有初始值,則事件流識別器循環(huán)回到步驟5103,以便處理分配給問題對象的另一個賦值對象。當分配給問題對象的所有賦值對象都達到各自初始值時,事件流識別器繼續(xù)執(zhí)行步驟5105。在步驟5105中,事件流識別器生成和存儲事件流,事件流描述事件中涉及的所有問題對象、分配給各自問題對象的所有賦值對象、各自賦值對象的所有初始值、和針對每個問題對象改變的值的各自序列。在執(zhí)行了步驟5105之后,事件流識別器將控制交給自動糾正器。有關事件流的例子請參閱下面圖5A。圖3B是描繪根據(jù)本發(fā)明的實施例,由前向流跟蹤器執(zhí)行的自動跟蹤導致事件的應用程序的前向數(shù)據(jù)流的方法的流程圖,其中前向流跟蹤器是上面圖3中的流分析器的第二子模塊。在步驟5201中,前向流跟蹤器通過利用問題對象的至少一個輸入變數(shù)(inputvariation)運行事件流來模擬應用程序的計算。所述至少一個輸入變數(shù)是基于針對問題對象的用戶輸入自動生成的。前向流跟蹤器繼續(xù)執(zhí)行步驟5202。對于事件流中的每個賦值對象,前向流跟蹤器執(zhí)行步驟5202和5203。在步驟5202中,前向流跟蹤器跟蹤當前賦值對象的值。前向流跟蹤器繼續(xù)執(zhí)行步驟 5203。在步驟5303中,前向流跟蹤器通過比較事件流內的問題對象和當前賦值對象的各自值,來確定當前賦值對象是否到達問題對象。如果前向流跟蹤器確定當前賦值對象還未到達問題對象,則前向流跟蹤器針對應用程序的程序代碼內當前賦值對象的緊隨其后的賦值執(zhí)行步驟5202。如果前向流跟蹤器確定當前賦值對象已到達問題對象,則前向流跟蹤器循環(huán)回到步驟5202,以便處理分配給問題對象的另一個賦值對象。當前向流跟蹤器確定問題對象的事件流中的所有賦值對象都到達問題對象時,前向流跟蹤器繼續(xù)執(zhí)行步驟5204。在步驟5204中,前向流跟蹤器生成和存儲與事件有關的前向數(shù)據(jù)流。前向數(shù)據(jù)流例示了導致事件的應用程序的實際運行。
      圖3C是描繪根據(jù)本發(fā)明的實施例,由反向流跟蹤器執(zhí)行的自動跟蹤從預期結果值相反地導出的應用程序的反向數(shù)據(jù)流的方法的流程圖,其中反向流跟蹤器是上面圖3中的流分析器的第三子模塊。在步驟5301中,反向流跟蹤器將預期結果值分配給問題對象。預期結果值由用戶作為輸入提供給自動糾正器。反向流跟蹤器繼續(xù)執(zhí)行步驟5302。對于事件流中的每個賦值對象,反向流跟蹤器執(zhí)行步驟5302和5303。在步驟5302中,反向流跟蹤器從問題對象中重新計算當前賦值對象。反向流跟蹤器繼續(xù)執(zhí)行步驟5303。在步驟5303中,反向流跟蹤器通過將當前賦值對象的各自值與當前賦值對象的用戶輸入相比較,或通過確定事件流處于應用程序的開始,來確定當前賦值對象 是否具有初始值。如果反向流跟蹤器確定當前賦值對象不具有初始值,則反向流跟蹤器為應用程序的程序代碼內針對當前賦值對象的應用程序的緊前一個賦值執(zhí)行步驟5303。如果反向流跟蹤器確定當前賦值對象具有初始值,則反向流跟蹤器循環(huán)回到步驟5302,以便處理分配給問題對象的另一個賦值對象。當反向流跟蹤器確定問題對象的事件流中的所有賦值對象都具有各自初始值時,反向流跟蹤器繼續(xù)執(zhí)行步驟5304。在步驟5304中,反向流跟蹤器生成和存儲從與事件有關的問題對象的預期結果值中導出的至少一個反向數(shù)據(jù)流。所述至少一個反向數(shù)據(jù)流的每個反向數(shù)據(jù)流標識一組數(shù)據(jù)值和其中分配各自數(shù)據(jù)值的各自代碼語句。數(shù)據(jù)值包括用戶數(shù)據(jù)和系統(tǒng)配置數(shù)據(jù)。所述每個反向數(shù)據(jù)流例示了產(chǎn)生問題對象的預期結果值的應用程序的模擬運行,其中應用程序沒有事件地運行。對與事件有關的每個問題對象重復步驟5301到5304。圖3D是描繪根據(jù)本發(fā)明的實施例,由故障定位器執(zhí)行的自動定位應用程序的故障的方法的流程圖,其中故障定位器是上面圖3中的流分析器的第四子模塊。在步驟5401中,故障定位器分別按照上面圖3B和3C的描述將前向流跟蹤器為每個問題對象生成的前向數(shù)據(jù)流與反向流跟蹤器為每個問題對象生成的相應至少一個反向數(shù)據(jù)流相比較。故障定位器繼續(xù)執(zhí)行步驟5402。故障定位器對每個問題對象的相應賦值對象執(zhí)行步驟5402到5404。如上所述,每個問題對象是由標簽管理工具經(jīng)由標簽報告為導致錯誤的對象,并且至少一個賦值對象通過事件流內的相應賦值與所述每個問題對象相關聯(lián)。在步驟5402中,故障定位器識別候選故障。候選故障是從由如下組成的群體中選擇的賦值對象在前向數(shù)據(jù)流中和在反向數(shù)據(jù)流中具有不同值的賦值語句、前向數(shù)據(jù)流采取的實際路徑不同于在反向數(shù)據(jù)流中模擬的預期路徑的判定語句、和兩者的組合。故障定位器繼續(xù)執(zhí)行步驟5403。在步驟5403中,故障定位器利用相應的輸入變數(shù)來模擬至少一個新數(shù)據(jù)流。為新數(shù)據(jù)流生成輸入變數(shù)以模擬反向數(shù)據(jù)流,后者模擬產(chǎn)生預期輸出值的應用程序的運行。故障定位器通過利用生成的輸入變數(shù)運行應用程序來創(chuàng)建新數(shù)據(jù)流。故障定位器繼續(xù)執(zhí)行步驟 5404。在步驟5404中,故障定位器確定在新數(shù)據(jù)流中和在反向數(shù)據(jù)流中分配給當前問題對象的各自值是否相同。如果故障定位器確定在新數(shù)據(jù)流中和在反向數(shù)據(jù)流中分配給當前賦值對象的各自值不同,則故障定位器為當前賦值對象的另一個輸入變數(shù)執(zhí)行步驟5403。如果故障定位器確定在新數(shù)據(jù)流中和在反向數(shù)據(jù)流中分配給當前賦值對象的各自值相同,則故障定位器循環(huán)回到步驟5402,以便處理在前向數(shù)據(jù)流中和在反向數(shù)據(jù)流中具有不同值的另一個問題對象。一旦處理完在前向數(shù)據(jù)流中和在反向數(shù)據(jù)流中具有不同值的所有問題對象和控制語句,故障定位器就繼續(xù)執(zhí)行步驟5405。在步驟5405中,故障定位器生成和存儲包括針對事件中的所有問題對象識別的所有候選故障、和與相應候選故障相關聯(lián)的各自賦值對象的數(shù)據(jù)值的候選故障列表。圖4是描繪根據(jù)本發(fā)明的實施例,由應用程序改正器執(zhí)行的自動糾正應用程序的故障的方法的流程圖,其中應用程序改正器是上面圖2中的自動糾正器的第二子模塊。在步驟610中,應用程序改正器運行生成解決方案的技術規(guī)范的規(guī)范生成器。該解決方案是沒有事件地運行的糾正的應用程序。有關規(guī)范生成器的細節(jié)請參閱下面圖4A的描述。
      在步驟620中,應用程序改正器運行生成解決方案和為標簽管理工具和/或用戶對解決方案編制文檔的結論的解決方案生成器。有關解決方案生成器的細節(jié)請參閱下面圖4B的描述。圖4A是描繪根據(jù)本發(fā)明的實施例,由規(guī)范生成器執(zhí)行的自動生成解決方案的技術規(guī)范的方法的流程圖,其中規(guī)范生成器是上面圖4中的應用程序改正器的第一子模塊。在步驟6101中,規(guī)范生成器檢索流分析器的故障定位器生成的候選故障列表和應用程序的細節(jié)。使應用程序的細節(jié)可通過自動糾正器獲得。在步驟6102中,規(guī)范生成器通過檢查候選故障列表和應用程序的細節(jié)識別事件的源頭。尤其,事件的起源可能是數(shù)據(jù)對象、應用程序中的代碼語句及其組合。在步驟6103中,規(guī)范生成器根據(jù)反向數(shù)據(jù)流中的數(shù)據(jù)值設計新數(shù)據(jù)對象和/或新代碼語句來替代事件的所識別源頭。在步驟6104中,規(guī)范生成器生成作為沒有事件地運行并產(chǎn)生用戶預期的結果的糾正應用程序的解決方案的技術規(guī)范。然后,規(guī)范生成器將技術規(guī)范發(fā)送給應用程序改正器的解決方案生成器。圖4B是描繪根據(jù)本發(fā)明的實施例,由解決方案生成器執(zhí)行的依據(jù)技術規(guī)范自動生成解決方案的方法的流程圖,其中解決方案生成器是上面圖4中的應用程序改正器的第二子模塊。在步驟6201中,解決方案生成器從規(guī)范生成器接收技術規(guī)范并檢索應用程序的細節(jié)。使應用程序的細節(jié)可通過自動糾正器獲得。在步驟6202中,解決方案生成器依據(jù)技術規(guī)范生成糾正事件的應用程序的解決方案。該解決方案是沒有事件地生成預期結果的新應用程序。該解決方案是從由如下組成的群體中選擇的代碼語句、配置參數(shù)、用戶數(shù)據(jù)及其組合。解決方案的代碼語句替代應用程序的現(xiàn)有代碼語句以便糾正事件。解決方案的配置參數(shù)改變應用程序的運行時環(huán)境以便糾正事件。解決方案的用戶數(shù)據(jù)使應用程序能夠利用與導致事件的一組數(shù)據(jù)不同的一組新數(shù)據(jù)來運行。在步驟6203中,解決方案生成器將生成的解決方案存儲到存儲體中以便用于應用程序。解決方案生成器還生成將解決方案編制文檔成文本描述的結論。解決方案生成器將該結論發(fā)送給用戶和/或標簽管理工具。在本發(fā)明的一個實施例中,應用程序是叫做“myprogram”的程序,它包括被確定為要糾正的語句“x=4”。語句“x=4”的解決方案是在應用程序myprogram內替代語句“x=4”的語句“x=5”。結論是解決方案的文本描述,特別是例如“問題是由程序“myprogram”中的錯誤引起的,其中在第z行上對照數(shù)值4檢驗變量X,而應該對照數(shù)值5檢驗變量X”。圖5A例示了根據(jù)本發(fā)明的實施例,自動糾正器執(zhí)行上面圖2的方法的應用程序的偽碼。事件流識別器在上面圖3A的步驟5101中檢索將問題對象識別為參數(shù)g的事件細節(jié)。事件流識別器在上面圖3A的步驟5102中跟蹤對問題對象g的賦值語句。因為問題對象g是在第L4行“g=d-50; ”中根據(jù)參數(shù)d賦值的,所以參數(shù)d是問題對象g的第一賦值對象。事件流識別器在上面圖3A的步驟5103中跟蹤參數(shù)a作為問題對象參數(shù)g的第二賦值對象,因為參數(shù)d是在第L2行“d=a+10; ”中根據(jù)參數(shù)a賦值的。事件流識別器在上面圖3A的步驟5104中確定參數(shù)a具有初始值,因為參數(shù)a是通過用戶輸入初始化的輸入?yún)?shù)并終止跟蹤賦值對象。事件流識別器繼續(xù)執(zhí)行上面圖3A的步驟5105,并且將問題對象參數(shù)g的事件流生成為第L2和L4行和參數(shù)a,d和g。圖5B例示了根據(jù)本發(fā)明的實施例,自動糾正器執(zhí)行上面圖2的方法的應用程序的流程圖。用戶發(fā)出描述應用程序問題的標簽,即,當針對變量X的用戶輸入是4時,應用程序打印2作為變量Y的值,而用戶預期變量Y的值是6。前向流跟蹤器發(fā)現(xiàn)已經(jīng)實際執(zhí)行的前向數(shù)據(jù)流是步驟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。故障定位器將前向數(shù)據(jù)流與反向數(shù)據(jù)流相比較,并將步驟E2識別為候選故障。規(guī)范生成器為步驟E2設計“X>3”來糾正應用程序,并且為具有“X>3”來替代步驟E2的新應用程序生成技術規(guī)范。解決方案生成器創(chuàng)建具有“X>3”來替代步驟E2的新應用程序作為解決方案,并且創(chuàng)建以文本形式描述解決方案的結論。圖6例示了根據(jù)本發(fā)明的實施例,用于基于應用程序的運行時行為自動糾正應用程序的計算機系統(tǒng)。計算機系統(tǒng)90包括處理器91、與處理器91耦合的輸入設備92、與處理器91耦合的輸出設備93、和包括每一個都與處理器91耦合的存儲設備94和95的計算機可讀存儲單元。輸入設備92尤其可以是鍵盤、鼠標、鍵板、觸摸屏、語音識別設備、傳感器、網(wǎng)絡接口 卡(NIC)、基于互聯(lián)網(wǎng)協(xié)議語音/視頻(VOIP)適配器、無線適配器、電話適配器、專用電路適配器等。輸出設備93尤其可以是打印機、繪圖儀、計算機屏幕、磁帶、移動硬盤、軟盤、NIC、VOIP適配器、無線適配器、電話適配器、專用電路適配器、音頻和/或視頻信號發(fā)生器、發(fā)光二極管(LED)等。存儲設備94和95尤其可以是高速緩沖存儲器、動態(tài)隨機訪問存儲器(DRAM)、只讀存儲器(ROM)、硬盤、軟盤、磁帶、像緊致盤(⑶)或數(shù)字視頻盤(DVD)那樣的光存儲體等。存儲設備95包括計算機代碼97,計算機代碼97是包括計算機可執(zhí)行指令的計算機程序代碼。計算機代碼97尤其包括用于按照本發(fā)明,基于應用程序的運行時行為自動糾正應用程序的算法。處理器91執(zhí)行計算機代碼97。存儲設備94包括輸入數(shù)據(jù)96。輸入數(shù)據(jù)96包括計算機代碼97所需的輸入。輸出設備93顯示來自計算機代碼97的輸出。存儲設備94和95的任一個或兩者(或未顯示在圖6中的一個或多個附加存儲設備)可以用作計算機可讀存儲介質(或計算機可用存儲介質或計算機存儲設備),計算機可讀存儲介質具有實施在其中的計算機可讀程序代碼和/或具有存儲在其中的其它數(shù)據(jù),其中計算機可讀程序代碼包括計算機代碼97。一般說來,計算機系統(tǒng)90的計算機程序產(chǎn)品(或可替代的是,制品)可以包括所述計算機可讀存儲介質(或所述程序存儲設備)。本發(fā)明的任何部件可以由針對按本發(fā)明的數(shù)據(jù)收集規(guī)則動態(tài)構建web接口的過程部署或集成計算基礎設施的服務提供者部署,管理,服務等。因此,本發(fā)明公開了支持計算機基礎設施的過程,包括集成,主管,維護和部署進入計算系統(tǒng)(例如,計算系統(tǒng)90)中的計算機可讀代碼,其中該代碼與計算系統(tǒng)結合能夠執(zhí)行基于應用程序的運行時行為自動糾 正應用程序的方法。在另一個實施例中,本發(fā)明提供了根據(jù)預訂、廣告和/或費用執(zhí)行本發(fā)明的過程步驟的商業(yè)方法。也就是說,像Solution Integrator那樣的服務提供者可以創(chuàng)建,維護,支持等根據(jù)本發(fā)明的應用程序的運行時行為自動糾正應用程序的過程。在這種情況下,月艮務提供者可以為一個或多個顧客創(chuàng)建,維護,支持等執(zhí)行本發(fā)明的過程步驟的計算機基礎設施。作為回報,服務提供者可以在預訂和/或收費協(xié)議下接受來自顧客的付款,和/或服務提供者可以接受將廣告內容銷售給一個或多個第三方的付款。雖然圖6將計算機系統(tǒng)90顯示成硬件和軟件的特定配置,如本領域技術人員所知的硬件和軟件的任何組合都可以與圖6的特定計算機系統(tǒng)90結合用于上述目的。例如,存儲設備94和95可以是單個存儲設備的一部分而不是分立存儲設備。本領域技術人員應該懂得,本發(fā)明可以實施成系統(tǒng),方法或計算機程序產(chǎn)品。于是,本發(fā)明可以采取完全硬件實施例,完全軟件實施例(包括固件、駐留軟件、微碼等)、或組合本文可以統(tǒng)稱為“電路”,“模塊”或“系統(tǒng)”的軟件和硬件方面的實施例的形式。而且,本發(fā)明可以采取實施在具有實施在介質中的計算機可用程序代碼的表述的任何有形介質中的計算機程序產(chǎn)品的形式??梢岳靡环N或多種計算機可用或計算機可讀介質94,95的任何組合。術語計算機可用介質或計算機可讀介質統(tǒng)稱為計算機可用或計算機可讀存儲介質94,95。計算機可用或計算機可讀介質94,95可以是,例如,但不局限于,電、磁、光、電磁、紅外、或半導體系統(tǒng)、裝置或設備、或前者的任何適當組合。計算機可讀介質94,95的更具體例子(非窮盡列表)包括如下具有一根或多根導線的電連線、便攜式計算機磁盤、硬盤、隨機訪問存儲器(RAM),只讀存儲器(ROM)、可擦可編程只讀存儲器(EPROM或閃速存儲器)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設備、磁存儲設備、或前者的任何適當組合。注意,計算機可用或計算機可讀存儲介質94,95甚至可以是紙張或打印程序的另一種適當介質,因為程序可以經(jīng)由,例如,紙或其它介質的光掃描被電子捕獲,然后,如果有必要,可以以適當方式加以編譯,加以解釋,或以其他方式處理,然后存儲在計算機存儲器中。在本文件的背景下,計算機可用或計算機可讀介質94,95可以是可以包括或存儲供執(zhí)行指令的系統(tǒng)、裝置或設備使用或與執(zhí)行指令的系統(tǒng)、裝置或設備結合在一起使用的程序的任何介質。實現(xiàn)本發(fā)明的操作的程序代碼97可以以一種或多種編程語言的任何組合編寫,包括像Java、Smalltalk、C++等那樣的面向對象編程語言、和像“C”編程語言或類似編程語言那樣的傳統(tǒng)過程編程語言。程序代碼97可以完全在用戶計算機上執(zhí)行,部分在用戶計算機上執(zhí)行,作為獨立軟件包執(zhí)行,部分在用戶計算機上執(zhí)行而部分在遠程計算機上執(zhí)行,或完全在遠程計算機或服務器上執(zhí)行。在后一種情形下,遠程計算機可以通過任何類型的網(wǎng)絡與用戶計算機連接,包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或可以與外部計算機連接(例如,通過使用因特網(wǎng)服務提供者的互聯(lián)網(wǎng))。本發(fā)明是參考按照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖示例和/或方塊圖來描述的。應該明白,流程圖示例和/或方塊圖的每個方塊、和 流程圖示例和/或方塊圖中的方塊的組合可以通過計算機程序指令實現(xiàn)。在本說明書中術語“計算機程序指令”可與術語“計算機代碼97”交換使用??梢詫⑦@些計算機程序指令提供給通用計算機、專用計算機、或其它可編程數(shù)據(jù)處理裝置的處理器,以生產(chǎn)出這樣的機器,使經(jīng)由計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令形成實現(xiàn)規(guī)定在流程圖和/或方塊圖的一個或多個方塊中的功能/動作的裝置。這些計算機程序指令也可以存儲在可以指示計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質94,95中,以便存儲在計算機可讀介質中的指令形成包括實現(xiàn)規(guī)定在流程圖和/或方塊圖的一個或多個方塊中的功能/動作的指令的制品。計算機程序指令也可以裝載到計算機或其它可編程數(shù)據(jù)處理裝置中,使一系列操作步驟在計算機或其它可編程裝置中執(zhí)行,形成這樣的計算機實現(xiàn)過程,使在計算機或其它可編程數(shù)據(jù)上執(zhí)行的指令提供實現(xiàn)規(guī)定在流程圖和/或方塊圖的一個或多個方塊中的功能/動作的過程。圖中的流程圖和方塊圖例示了按照本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序代碼的可能實現(xiàn)的架構、功能和操作。關于這一點,流程圖或方塊圖中的每個方塊可以代表包括實現(xiàn)指定邏輯功能的一條或多條可執(zhí)行指令的代碼的模塊、片段、或部分。還應該注意到,在一些可替代實現(xiàn)中,標注在方塊中的功能可以不按照標注在圖中的順序發(fā)生,例如,相繼示出的兩個方塊事實上可能基本上同時被執(zhí)行,或取決于所涉及的功能,這些方塊有時可能按相反順序執(zhí)行。還應該注意到,方塊圖和/或流程圖范例的每個方塊,和方塊圖和/或流程圖示例中的方塊的組合可以通過執(zhí)行指定功能或動作的基于專用硬件的系統(tǒng),或專用硬件和計算機指令的組合來實現(xiàn)。權利要求書中的所有裝置或步驟加功能元件的相應結構、材料、動作和等同物都意欲包括如具體要求的那樣與其它所要求元件組合執(zhí)行功能的任何結構、材料或動作。本發(fā)明的描述是為了例示和描述的目的給出的,而不是打算窮舉或將本發(fā)明限于所公開的形式。許多變型和變體對于本領域技術人員來說是顯而易見的,不偏離本發(fā)明的范圍。選擇和描述實施例是為了最佳地說明本發(fā)明的原理及其實際應用,使本領域技術人員能夠通過各種實施例以及如適合所設計的特定使用的各種變型來理解本發(fā)明。
      權利要求
      1.一種基于應用程序的運行時行為自動糾正應用程序的方法,所述方法包括 計算機的處理器從用戶或標簽管理工具接收應用程序的事件的事件細節(jié),其中所述事件涉及至少一個問題對象; 從事件細節(jié)中識別事件的事件流,其中事件流對應于所述至少一個問題對象的第一問題對象,事件流包括第一問題對象、應用程序內影響第一問題對象的至少一個賦值對象、和其中所述至少一個賦值對象影響第一問題對象的應用程序的至少一個代碼語句; 通過關于第一問題對象從應用程序的開始直到事件跟蹤已經(jīng)實際執(zhí)行的事件流的數(shù)據(jù)值,來創(chuàng)建事件流的前向數(shù)據(jù)流; 通過從第一問題對象的預期結果到第一問題對象的所述至少一個賦值對象的相應初始值,按照與應用程序的實際執(zhí)行相反的順序模擬事件流的所述數(shù)據(jù)值,來創(chuàng)建事件流的至少一個反向數(shù)據(jù)流;以及 所述處理器使用前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流來生成事件的第一問題對象的候選故障列表。
      2.如權利要求I所述的方法,所述創(chuàng)建所述至少一個反向數(shù)據(jù)流包括 將第一問題對象的預期結果分配給事件流中的所述至少一個代碼語句的最后代碼語句中的第一問題對象; 根據(jù)第一問題對象的預期結果重新計算所述至少一個賦值對象; 確定所述至少一個賦值對象具有影響第一問題對象的所述至少一個賦值對象的相應初始值;以及 生成第一問題對象的第一反向數(shù)據(jù)流。
      3.如權利要求I所述的方法,所述生成候選故障列表包括 通過比較前向數(shù)據(jù)流中和所述至少一個反向數(shù)據(jù)流中的所述至少一個賦值對象的各自值來識別第一問題對象,其中前向數(shù)據(jù)流中的第一問題對象的第一值不同于第一代碼語句中的所述至少一個反向數(shù)據(jù)流的第一反向數(shù)據(jù)流中的第一問題對象的第二值; 將第一代碼語句識別為第一候選故障; 通過將不同的一組輸入值應用于所述至少一個賦值對象來模擬新數(shù)據(jù)流; 確定新數(shù)據(jù)流和第一反向數(shù)據(jù)流的各自值相同;以及 將第一候選故障加入第一問題對象的候選故障列表中。
      4.如權利要求I所述的方法,所述方法進一步包括 提示第二用戶檢查前向數(shù)據(jù)流、所述至少一個反向數(shù)據(jù)流和候選故障列表,并從第二用戶接收第一輸入,其中第一輸入指示第二用戶批準基于前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流的所生成候選故障列表,并且其中第二用戶被授權更新應用程序; 響應于從第二用戶接收到第一輸入,使用候選故障列表和應用程序的規(guī)范來生成糾正應用程序的事件的技術規(guī)范; 按照該技術規(guī)范生成解決方案并為用戶或標簽管理工具生成描述該解決方案的結論; 向第二用戶呈現(xiàn)該解決方案并從第二用戶接收第二輸入,其中第二輸入指示第二用戶批準該解決方案;以及 響應于從第二用戶接收到第二輸入,利用該解決方案更新應用程序使得應用程序無事件地運行,并且將該結論傳送給用戶或標簽管理工具。
      5.如權利要求4所述的方法,所述生成技術規(guī)范包括 檢索包括第一問題對象的候選故障列表的至少一個候選故障列表并檢索應用程序的規(guī)范; 從所述至少一個候選故障列表中識別事件的源頭; 設計源頭的替代物,其中該替代物是從由如下組成的群體中選擇的新數(shù)據(jù)對象、新代碼語句及其組合;以及 將源頭和替代物加入事件的技術規(guī)范中。
      6.一種計算機程序產(chǎn)品,包括 具有實施在其中的計算機可讀程序代碼的計算機可讀存儲介質,所述計算機可讀程序代碼包括基于應用程序的運行時行為自動糾正應用程序的指令,所述糾正包括 從用戶或標簽管理工具接收應用程序的事件的事件細節(jié),其中所述事件涉及至少一個問題對象; 從事件細節(jié)中識別事件的事件流,其中事件流對應于所述至少一個問題對象的第一問題對象,事件流包括第一問題對象、應用程序內影響第一問題對象的至少一個賦值對象、和其中所述至少一個賦值對象影響第一問題對象的應用程序的至少一個代碼語句; 通過關于第一問題對象從應用程序的開始直到事件跟蹤已經(jīng)實際執(zhí)行的事件流的數(shù)據(jù)值,來創(chuàng)建事件流的前向數(shù)據(jù)流; 通過從第一問題對象的預期結果到第一問題對象的所述至少一個賦值對象的相應初始值,按照與應用程序的實際執(zhí)行相反的順序模擬事件流的所述數(shù)據(jù)值,來創(chuàng)建事件流的至少一個反向數(shù)據(jù)流;以及 使用前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流來生成事件的第一問題對象的候選故障列表。
      7.如權利要求6所述的計算機程序產(chǎn)品,所述創(chuàng)建所述至少一個反向數(shù)據(jù)流包括 將第一問題對象的預期結果分配給事件流中的所述至少一個代碼語句的最后代碼語句中的第一問題對象; 根據(jù)第一問題對象的預期結果重新計算所述至少一個賦值對象; 確定所述至少一個賦值對象具有影響第一問題對象的所述至少一個賦值對象的相應初始值;以及 生成第一問題對象的第一反向數(shù)據(jù)流。
      8.如權利要求6所述的計算機程序產(chǎn)品,所述生成候選故障列表包括 通過比較前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流中的所述至少一個賦值對象的各自值來識別第一問題對象,其中前向數(shù)據(jù)流中的第一問題對象的第一值不同于第一代碼語句中的所述至少一個反向數(shù)據(jù)流的第一反向數(shù)據(jù)流中的第一問題對象的第二值; 將第一代碼語句識別為第一候選故障; 通過將不同的一組輸入值應用于所述至少一個賦值對象來模擬新數(shù)據(jù)流; 確定新數(shù)據(jù)流和第一反向數(shù)據(jù)流的各自值相同;以及 將第一候選故障加入第一問題對象的候選故障列表中。
      9.如權利要求6所述的計算機程序產(chǎn)品,所述糾正進一步包括提示第二用戶檢查前向數(shù)據(jù)流、所述至少一個反向數(shù)據(jù)流和候選故障列表,并從第二用戶接收第一輸入,其中第一輸入指示第二用戶批準基于前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流的所生成候選故障列表,并且其中第二用戶被授權更新應用程序; 響應于從第二用戶接收到第一輸入,使用候選故障列表和應用程序的規(guī)范生成糾正應用程序的事件的技術規(guī)范; 按照該技術規(guī)范生成解決方案和為用戶或標簽管理工具生成描述該解決方案的結論; 向第二用戶呈現(xiàn)該解決方案并從第二用戶接收第二輸入,其中第二輸入指示第二用戶批準該解決方案;以及 響應于從第二用戶接收到第二輸入,利用該解決方案更新應用程序使得應用程序無事件地運行,并且將該結論傳送給用戶或標簽管理工具。
      10.如權利要求9所述的計算機程序產(chǎn)品,所述生成技術規(guī)范包括 檢索包括第一問題對象的候選故障列表的至少一個候選故障列表并檢索應用程序的規(guī)范; 從所述至少一個候選故障列表中識別事件的源頭; 設計源頭的替代物,其中該替代物是從由如下組成的群體中選擇的新數(shù)據(jù)對象、新代碼語句及其組合;以及 將源頭和替代物加入事件的技術規(guī)范中。
      11.一種包括處理器和與處理器耦合的計算機可讀存儲單元的計算機系統(tǒng),所述計算機可讀存儲單元包括當被處理器運行時實現(xiàn)基于應用程序的運行時行為自動糾正應用程序的方法的指令,所述方法包括 從用戶或標簽管理工具接收應用程序的事件的事件細節(jié),其中所述事件涉及至少一個問題對象; 從事件細節(jié)中識別事件的事件流,其中事件流對應于所述至少一個問題對象的第一問題對象,事件流包括第一問題對象、應用程序內影響第一問題對象的至少一個賦值對象、和其中所述至少一個賦值對象影響第一問題對象的應用程序的至少一個代碼語句; 通過關于第一問題對象從應用程序的開始直到事件跟蹤已經(jīng)實際執(zhí)行的事件流的數(shù)據(jù)值,來創(chuàng)建事件流的前向數(shù)據(jù)流; 通過從第一問題對象的預期結果到第一問題對象的所述至少一個賦值對象的相應初始值,按照與應用程序的實際執(zhí)行相反的順序模擬事件流的所述數(shù)據(jù)值,來創(chuàng)建事件流的至少一個反向數(shù)據(jù)流;以及 使用前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流來生成事件的第一問題對象的候選故障列表。
      12.如權利要求11所述的計算機系統(tǒng),所述創(chuàng)建所述至少一個反向數(shù)據(jù)流包括 將第一問題對象的預期結果分配給事件流中的所述至少一個代碼語句的最后代碼語句中的第一問題對象; 根據(jù)第一問題對象的預期結果重新計算所述至少一個賦值對象; 確定所述至少一個賦值對象具有影響第一問題對象的所述至少一個賦值對象的相應初始值;以及生成第一問題對象的第一反向數(shù)據(jù)流。
      13.如權利要求11所述的計算機系統(tǒng),所述生成候選故障列表包括 通過比較前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流中的所述至少一個賦值對象的各自值來識別第一問題對象,其中前向數(shù)據(jù)流中的第一問題對象的第一值不同于第一代碼語句中的所述至少一個反向數(shù)據(jù)流的第一反向數(shù)據(jù)流中的第一問題對象的第二值; 將第一代碼語句識別為第一候選故障; 通過將不同的一組輸入值應用于所述至少一個賦值對象來模擬新數(shù)據(jù)流; 確定新數(shù)據(jù)流和第一反向數(shù)據(jù)流的各自值相同;以及 將第一候選故障加入第一問題對象的候選故障列表中。
      14.如權利要求11所述的計算機系統(tǒng),所述方法進一步包括 提示第二用戶檢查前向數(shù)據(jù)流、所述至少一個反向數(shù)據(jù)流和候選故障列表,并從第二用戶接收第一輸入,其中第一輸入指示第二用戶批準基于前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流的所生成候選故障列表,并且其中第二用戶被授權更新應用程序; 響應于從第二用戶接收到第一輸入,使用候選故障列表和應用程序的規(guī)范生成糾正應用程序的事件的技術規(guī)范; 按照該技術規(guī)范生成解決方案并為用戶或標簽管理工具生成描述該解決方案的結論; 向第二用戶呈現(xiàn)該解決方案并從第二用戶接收第二輸入,其中第二輸入指示第二用戶批準該解決方案;以及 響應于從第二用戶接收到第二輸入,利用該解決方案更新應用程序使得應用程序無事件地運行,并且將該結論傳送給用戶或標簽管理工具。
      15.如權利要求14所述的計算機系統(tǒng),所述生成技術規(guī)范包括 檢索包括第一問題對象的候選故障列表的至少一個候選故障列表并檢索應用程序的規(guī)范; 從所述至少一個候選故障列表中識別事件的源頭; 設計源頭的替代物,其中該替代物是從由如下組成的群體中選擇的新數(shù)據(jù)對象、新代碼語句及其組合;以及 將源頭和替代物加入事件的技術規(guī)范中。
      16.一種支持計算機基礎設施的過程,所述過程包括為在計算系統(tǒng)中創(chuàng)建、集成、主管、維護和部署計算機可讀代碼中的至少一個提供至少一個支持服務,其中該代碼與計算系統(tǒng)結合能夠執(zhí)行基于應用程序的運行時行為自動糾正應用程序的方法,所述方法包括 從用戶或標簽管理工具接收應用程序的事件的事件細節(jié),其中所述事件涉及至少一個問題對象; 從事件細節(jié)中識別事件的事件流,其中事件流對應于所述至少一個問題對象的第一問題對象,事件流包括第一問題對象、應用程序內影響第一問題對象的至少一個賦值對象、和其中所述至少一個賦值對象影響第一問題對象的應用程序的至少一個代碼語句; 通過關于第一問題對象從應用程序的開始直到事件跟蹤已經(jīng)實際執(zhí)行的事件流的數(shù)據(jù)值,來創(chuàng)建事件流的前向數(shù)據(jù)流; 通過從第一問題對象的預期結果到第一問題對象的所述至少一個賦值對象的相應初始值,按照與應用程序的實際執(zhí)行相反的順序模擬事件流的所述數(shù)據(jù)值,來創(chuàng)建事件流的至少一個反向數(shù)據(jù)流;以及 使用前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流來生成事件的第一問題對象的候選故障列表。
      17.如權利要求16所述的過程,所述創(chuàng)建所述至少一個反向數(shù)據(jù)流包括 將第一問題對象的預期結果分配給事件流中的所述至少一個代碼語句的最后代碼語句中的第一問題對象; 根據(jù)第一問題對象的預期結果重新計算所述至少一個賦值對象; 確定所述至少一個賦值對象具有影響第一問題對象的所述至少一個賦值對象的相應初始值;以及 生成第一問題對象的第一反向數(shù)據(jù)流。
      18.如權利要求16所述的過程,所述生成候選故障列表包括 通過比較前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流中的所述至少一個賦值對象的各自值來識別第一問題對象,其中前向數(shù)據(jù)流中的第一問題對象的第一值不同于第一代碼語句中的所述至少一個反向數(shù)據(jù)流的第一反向數(shù)據(jù)流中的第一問題對象的第二值; 將第一代碼語句識別為第一候選故障; 通過將不同的一組輸入值應用于所述至少一個賦值對象來模擬新數(shù)據(jù)流; 確定新數(shù)據(jù)流和第一反向數(shù)據(jù)流的各自值相同;以及 將第一候選故障加入第一問題對象的候選故障列表中。
      19.如權利要求16所述的過程,所述方法進一步包括 提示第二用戶檢查前向數(shù)據(jù)流、所述至少一個反向數(shù)據(jù)流和候選故障列表,并從第二用戶接收第一輸入,其中第一輸入指示第二用戶批準基于前向數(shù)據(jù)流和所述至少一個反向數(shù)據(jù)流的所生成候選故障列表,并且其中第二用戶被授權更新應用程序; 響應于從第二用戶接收到第一輸入,使用候選故障列表和應用程序的規(guī)范來生成糾正應用程序的事件的技術規(guī)范; 按照該技術規(guī)范生成解決方案并為用戶或標簽管理工具生成描述該解決方案的結論; 向第二用戶呈現(xiàn)該解決方案并從第二用戶接收第二輸入,其中第二輸入指示第二用戶批準該解決方案;以及 響應于從第二用戶接收到第二輸入,利用該解決方案更新應用程序使得應用程序無事件地運行,并且將該結論傳送給用戶或標簽管理工具。
      20.如權利要求19所述的過程,所述生成技術規(guī)范包括 檢索包括第一問題對象的候選故障列表的至少一個候選故障列表并檢索應用程序的規(guī)范; 從所述至少一個候選故障列表中識別事件的源頭; 設計源頭的替代物,其中該替代物是從由如下組成的群體中選擇的新數(shù)據(jù)對象、新代碼語句及其組合;以及 將源頭和替代物加入事件的技術規(guī)范中。
      全文摘要
      本發(fā)明公開了基于應用程序的運行時行為自動糾正應用程序的系統(tǒng)和相關聯(lián)方法。事件表示其中問題對象產(chǎn)生用戶或標簽管理工具沒有預期的結果的應用程序的執(zhí)行。自動分析問題對象的事件流。應用程序的實際運行得到前向數(shù)據(jù)流,根據(jù)問題對象的預期結果模擬至少一個反向數(shù)據(jù)流。比較前向數(shù)據(jù)流和反向數(shù)據(jù)流以創(chuàng)建問題對象的候選故障列表。隨后設計糾正候選故障列表的技術規(guī)范和替代應用程序的解決方案。
      文檔編號G06F11/36GK102713863SQ201080043731
      公開日2012年10月3日 申請日期2010年9月1日 優(yōu)先權日2009年10月5日
      發(fā)明者A·高什 申請人:國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1