新四季網

應用程式測試的製作方法

2023-07-10 01:04:41


優先權要求

本申請要求2015年5月19日提交的美國專利申請14/715,807的優先權,其中該美國專利申請14/715,807要求2014年11月5日提交的美國臨時專利申請序列號62/075,451的優先權,這兩個申請的全部內容通過引用包含於此。



背景技術:

本說明書涉及調試圖。

代碼開發人員經常在整個開發過程中調試原始碼。如此,可以利用可能會影響原始碼的功能的調試代碼來修改原始碼。經常期望在調試結束時從原始碼中去除所添加的調試代碼以恢復原始碼的原始功能。



技術實現要素:

在一般方面中,一種方法,包括:利用處理器來分析第一版本的電腦程式。所述分析包括識別所述第一版本的電腦程式中所包括的第一數據處理元素。所述第一數據處理元素引用位於所述第一版本的電腦程式外部的第一數據源。所述方法包括:生成表示與所述第一數據源不同的第二數據源的數據源元素。所述方法包括:生成第二版本的電腦程式。所述第二版本的電腦程式包括所生成的數據源元素和基於所述第一數據處理元素的第二數據處理元素。在所述第二版本的電腦程式中,所述第二數據處理元素引用所生成的數據源元素。

實施例可以包括以下特徵中的一個或多個特徵。

所述方法包括:確定所述第二數據源的位置。確定所述第二數據源的位置包括:接收表示所述位置的輸入。

所述方法包括:在用戶接口中呈現所識別的所述第一數據處理元素、所述第一數據源或這兩者的標識符。所述方法包括:接收所識別的所述第一數據處理元素、所述第一數據源或這兩者的選擇。

分析所述第一版本的電腦程式包括:分析向所述第一版本的電腦程式中的數據處理元素至少之一的輸入流。

所述方法包括:在所述電腦程式的運行時分析所述第一版本的電腦程式。

所述電腦程式包括圖。生成所述第二版本的電腦程式包括:使所生成的數據源元素位於向所述第二數據處理元素的輸入流處。

來自所述第二數據源的數據具有與來自所述第一數據源的數據相同的格式。

生成數據源元素包括:針對所生成的數據源元素定義覆蓋規範。

所述方法包括:利用基於來自所述第一數據源的數據的數據來填充所述第二數據源。

在所述第一版本的電腦程式中,第三數據處理元素引用位於所述第一版本的電腦程式外部的第一數據目的地。在所述第二版本的電腦程式中,基於所述第三數據處理元素的第四數據處理元素引用與所述第一數據目的地不同的第二數據目的地。

所述方法包括:識別所述第一版本的電腦程式中所包括的第三數據處理元素。所述第三數據處理元素引用位於所述第一版本的電腦程式外部的第一數據目的地。所述方法包括:生成表示與所述第一數據目的地不同的第二數據目的地的輸出元素。所述第二版本的電腦程式包括所生成的輸出元素和基於所述第三數據處理元素的第四數據處理元素。在所述第二版本的電腦程式中,所述第四數據處理元素引用所生成的輸出元素。所述方法包括:確定所述第二數據目的地的位置。確定所述第二數據目的地的位置包括:接收表示所述位置的輸入。

所述方法包括:執行所述第二版本的電腦程式。

執行所述第二版本的電腦程式使得能夠對所述電腦程式進行調試。

生成所述第二版本的至少一部分的電腦程式包括:生成所述電腦程式的該部分的副本。所述方法包括:修改所述電腦程式的該部分的副本以包括所生成的數據源元素。

在一般方面中,一種系統,包括用於利用處理器來分析第一版本的電腦程式的部件。所述分析包括識別所述第一版本的電腦程式中所包括的第一數據處理元素。所述第一數據處理元素引用位於所述第一版本的電腦程式外部的第一數據源。所述系統包括用於生成表示與所述第一數據源不同的第二數據源的數據源元素的部件。所述系統包括用於生成第二版本的電腦程式的部件。所述第二版本的電腦程式包括所生成的數據源元素和基於所述第一數據處理元素的第二數據處理元素。在所述第二版本的電腦程式中,所述第二數據處理元素引用所生成的數據源元素。

在一般方面中,一種系統,包括處理器,所述處理器連接至存儲器,所述處理器和所述存儲器被配置為利用所述處理器來分析第一版本的電腦程式。所述分析包括識別所述第一版本的電腦程式中所包括的第一數據處理元素。所述第一數據處理元素引用位於所述第一版本的電腦程式外部的第一數據源。所述處理器和所述存儲器被配置為生成表示與所述第一數據源不同的第二數據源的數據源元素。所述處理器和所述存儲器被配置為生成第二版本的至少一部分的電腦程式。所述第二版本的電腦程式包括所生成的數據源元素和基於所述第一數據處理元素的第二數據處理元素。在所述第二版本的電腦程式中,所述第二數據處理元素引用所生成的數據源元素。

在一般方面中,一種用於存儲指令的非暫時性計算機可讀介質,所述指令用於使計算系統利用處理器來分析第一版本的電腦程式。所述分析包括識別所述第一版本的電腦程式中所包括的第一數據處理元素。所述第一數據處理元素引用位於所述第一版本的電腦程式外部的第一數據源。所述指令使所述計算系統生成表示與所述第一數據源不同的第二數據源的數據源元素。所述指令使所述計算系統生成第二版本的至少一部分的電腦程式。所述第二版本的電腦程式包括所生成的數據源元素和基於所述第一數據處理元素的第二數據處理元素。在所述第二版本的電腦程式中,所述第二數據處理元素引用所生成的數據源元素。

根據以下的說明書、以及根據權利要求書,本發明的其它特徵和優點將變得明顯。

附圖說明

圖1是圖(graph)的示例。

圖2是覆蓋規範的示例。

圖3是框圖。

圖4是流程圖。

圖5a~5d是修改後的圖的示例。

圖6~8是框圖。

圖9是流程圖。

具體實施方式

在測試或調試諸如圖等的可執行應用程式時,測試人員或開發人員可能想要使用特殊的一組輸入數據來進行測試。在一些示例中,測試人員可能希望對應用程式作出改變。通過在改變之前和之後都使用一致的一組輸入數據執行應用程式,可以監測該改變對應用程式所輸出的數據的影響。在一些示例中,測試人員可以具有在測試應用程式時要使用的特定一組測試數據,諸如將使得至少執行一次應用程式的所有功能的一組測試數據等。同樣,測試人員可能希望將應用程式所輸出的數據寫入與應用程式將其輸出數據寫入至的標準目的地不同的特殊目的地。

在傳統的開發環境中,測試人員手動提供測試所用的期望的一組輸入數據並且指定輸出數據的目的地。這裡,說明用以自動識別用於向應用程式提供輸入數據的數據源和用於從應用程式接收輸出數據的輸出數據宿的方法。所識別的數據源可以被替換數據源(有時稱為測試源)自動替換。所識別的輸出數據宿可以被替代目的地(有時稱為探測器)自動替換。測試源和探測器是插入的示例。

在一些示例中,可執行應用程式是基於圖的處理。諸如測試源和探測器等的插入是與基於圖的處理中的流相關聯的對象。測試源可以利用新數據替換通過流的數據(例如,上遊數據),使得上遊計算不必針對圖的每次執行重新運行。例如,測試源可以替換數據源,使得從測試源而不是從數據源向圖提供測試數據。探測器可以監測在圖執行時通過流的數據,並且可以使得保存該數據以供隨後檢查或重複使用。例如,探測器可以接收原本將被保存至諸如資料庫等的輸出數據宿的數據。

可以利用作為與圖或其它可執行應用程式分開的文件的覆蓋規範來定義諸如測試源和探測器等的插入。在一些示例中,可以基於應用程式的自動化分析、例如基於應用程式的數據源和輸出數據宿的自動識別,來自動定義插入。

覆蓋規範中所定義的插入可以在執行期間被添加到應用程式中,而不是成為原始程序的一部分。在編譯應用程式時,編譯人員考慮覆蓋文件並且生成包括插入的可執行應用程式。有時將原始應用程式稱為第一版本應用程式並且將包括插入的應用程式稱為第二版本應用程式。例如,在基於圖的處理的示例中,可以將可執行圖從視覺上表示為包括第一版本圖的與覆蓋規範中所定義的插入對象相組合的組件的第二版本圖。在一些示例中,可執行圖是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)。

圖100的測試人員可能希望調試圖100以驗證其功能。在一些情況下,測試人員可能想要在數據從一個組件流向另一組件時驗證數據。在一些情況下,測試人員可能想要繞過圖100中的上遊組件,而是將數據插入所繞過的組件的位置。在一些情況下,測試人員可能想要使用一致的一組輸入數據來測試圖100的操作以監測改變該圖對該圖所輸出的數據的影響。在一些情況下,測試人員可能想要使用該測試人員知曉的將使得至少執行一次圖的所有功能的一組輸入數據來測試圖100的操作,由此使得能夠完成圖的測試。

在調試圖100時,可以期望避免修改圖。例如,測試人員可能不想冒破壞圖的功能的風險。在一些示例中,測試人員對圖的訪問權限可能受限或者可能無權訪問圖(例如,測試人員可能缺少編輯圖所需的許可)。為了在無需修改圖100的情況下調試該圖,可以使用覆蓋來調試圖。在一些示例中,可以例如基於圖的自動化分析來自動指定覆蓋。可以基於原始圖100(有時稱為第一版本圖)和覆蓋規範來生成第二版本的至少一部分的圖100。

圖2示出用於定義覆蓋的覆蓋規範200的示例。覆蓋規範200可以存儲在文件中。該文件可以與包含圖的文件分開。覆蓋規範定義一個或多個插入。插入可以是與圖100的流相關聯的對象並且可以採用探測器或測試源的形式。

探測器在數據通過圖100的組件之間的流(例如,沿著從第一組件向第二組件的流或者沿著向輸出數據宿的流通過)時收集或監測該數據。例如,在圖100執行時數據通過流的情況下,可以監測該數據、可以保存該數據以供隨後檢查、或者可以保存該數據以供重複使用。覆蓋規範可以定義參考攜載要收集或監測的數據的流的探測器。探測器指定要收集或監測數據所經由的流。探測器可被配置為報告特定值,或者報告特定值何時在預定範圍內或在預定範圍外。可以保存通過探測器的數據以供隨後分析或使用,例如可以將數據存儲在平面文件或關係資料庫中。

在一些示例中,探測器可以參考從圖100的組件向諸如文件或資料庫等的輸出數據宿的流。通過在圖100的調試期間沿著向數據宿的流配置探測器,該探測器接收從圖100輸出的數據。例如,每次在調試模式中執行圖100時,輸出數據可被探測器接收到並且寫入文件,使得可以比較或評價來自各種圖執行的輸出數據。在一些示例中,自動識別輸出數據宿並且自動指定覆蓋,以定義供所識別的輸出數據宿之前的插入用的探測器。

在一些示例中,探測器可以參考從圖100的上遊組件向下遊組件的流。通過在圖100的調試期間沿著向下遊組件的流配置探測器,該探測器接收原本將被下遊組件接收到的數據,由此防止下遊組件執行。例如,測試人員可能希望監測下遊組件之前的圖處理的結果。例如,下遊組件可以具有對圖的外部產生影響的功能,例如下遊組件可以向該下遊組件處理信用卡記錄的各人發送文本消息。在圖的調試期間,測試人員可能希望禁用對圖的外部產生影響的組件。

測試源將數據插入圖100中的圖100的兩個組件之間的特定流處。覆蓋規範可以定義參考如下流的測試源,其中該流攜載要利用來自測試源的數據替換的數據。在一些示例中,測試源利用新數據替換通常將通過流的數據。在一些方案中,測試源可被配置為讀取先前保存的數據,並且將該數據傳遞至下遊組件。在一些示例中,測試源將數據插入圖100中的來自數據源(諸如資料庫或文件等)的流處。測試源可以插入具有與數據源原本將提供的數據相同的格式的數據。在一些示例中,自動識別數據源並且自動指定覆蓋,以定義要替換所識別的數據源的測試源。

在一些示例中,圖100的直到特定點為止(例如,直到特定組件為止)的執行的結果可能以前已被驗證。換句話說,可能已驗證了直到特定點為止的上遊處理功能。在這些情況下,上遊組件在每次圖100執行時重新處理功能這一做法可能效率低。測試源可以將數據(例如,先前驗證的數據)插入圖中的該特定點處。這樣,可以繞過圖100的先前執行的整個部分。

圖2示出用於定義覆蓋的覆蓋規範200的示例。覆蓋規範200可以包括一個或多個插入定義。在該示例中,覆蓋規範200包括一個測試源定義201和一個探測器定義213。覆蓋規範200從指定插入定義可以對應於的圖的3行標題開始。該標題之後是測試源定義201,其中該測試源定義201包括名稱202、上遊埠204、下遊埠206、插入類型208、原型路徑210和布局參數212。

測試源定義201的上遊埠204引用測試源要被插入圖100中的流的正上遊的組件的輸出埠。流的上遊的組件是輸出埠數據被輸出到流上的組件。在圖2的示例中,測試源定義201的上遊埠204指向資料庫102的輸出。測試源定義201的下遊埠206引用測試源要插入到圖100中的流的正下遊的組件的輸入埠。流的下遊的組件是從該流接收到輸入埠數據的組件。在圖2的示例中,測試源定義的下遊埠206指向過濾組件103的輸入。因而,該示例中的測試源定義201表示要在資料庫102的輸出和過濾組件103的輸入之間的流中配置測試源,使得測試源所提供的數據可以替換來自資料庫102的輸入數據。

插入類型208定義插入是測試源還是探測器。值「0」定義測試源,並且值「1」定義探測器。由於該插入是測試源,因此插入類型108的值是「0」。

原型路徑210表示插入的類型。在該示例中,由於該插入是測試源,因此原型路徑210指定輸入文件組件。原型路徑210指向包含用於定義特定類型的插入的代碼的文件。布局參數212定義包含測試源將包含的數據的源文件的位置。在一些示例中,該位置是文件路徑。源文件中的數據要替換通常將通過由上遊埠204和下遊埠206定義的流的數據。即,在將測試源應用於圖100時,過濾組件103接收源文件中的數據而不是從資料庫102接收數據。

源文件包含具有與測試源的下遊的組件原本將接收到的數據相同的格式的數據。在一些示例中,源文件中的數據可以與測試源的上遊的數據源(例如,資料庫)中的數據相同。例如。可以將來自資料庫102的數據記錄複製到源文件中。在一些示例中,數據源表示諸如sql查詢等的可執行語句。在這些示例中,可以執行sql查詢並且可以將查詢執行的結果存儲在源文件中。在一些示例中,可以從除數據源以外的某處獲得源文件中的數據。例如,可以生成源文件中的數據,從而確保對特定數據(例如,特定範圍的值)進行處理以進行圖100的完整調試。在一些示例中,即使數據源中的數據改變,源文件中的數據也保持相同,由此使得能夠利用一致的一組輸入數據繼續調試。

在一些示例中,源文件中的數據可以與圖100的正常執行期間將通過流的數據相同,但通過使用測試源插入數據,上遊組件可以避免處理。例如,諸如複製組件106等的上遊組件可能要求大量的系統資源來處理數據,或者與數據流圖100中的其它組件相比可能需要相對較長的時間來處理數據。如此,可以將已知數據(例如,在正常執行期間將通過流的相同數據)插入流中以節省時間或節約系統資源。

測試源定義201之後是探測器定義213,其中該探測器定義213包括名稱214、上遊埠216、下遊埠218、插入類型220和原型路徑222。

探測器定義213的上遊埠216引用探測器要被插入圖100中的流的正上遊的組件的輸出埠。在圖2的示例中,探測器定義213的上遊埠216指向收集組件112的輸出。探測器定義213的下遊埠218引用探測器要被插入圖100中的流的正下遊的組件的輸入埠。在圖2的示例中,探測器定義213的下遊埠218指向輸出數據宿組件114。因而,該示例中的探測器定義213表示要在收集組件112的輸出和輸出數據宿組件114之間的流中配置探測器,使得探測器接收原本將被寫入輸出數據宿組件的數據。

探測器定義213的插入類型220定義插入是測試源還是探測器。值「1」表示探測器。由於該插入是探測器,因此插入類型220的值是「1」。

原型路徑222表示插入的類型。在該示例中,由於該插入是探測器,因此原型路徑222指定輸出文件組件。原型路徑222指向包含用於定義特定類型的插入的代碼的文件。

在一些示例中,要利用探測器監測的數據被存儲在系統自動創建的文件中。該文件可以存儲在系統所確定的位置中。探測器監測通過由上遊埠216和下遊埠218所定義的流的數據。即,在將探測器應用於圖100時,監測從收集組件112的輸出通向輸出數據宿組件114的輸入的數據並且將該數據存儲在系統自動創建的文件中。在一些示例中,可以在存儲該數據之前監測該數據。該文件能夠接收具有探測器定義所引用的組件(在該示例中為外部數據宿組件114)將接收的相同格式的數據。

在一些示例中,作為圖的自動化分析的結果,可以利用覆蓋規範來定義一個或多個插入。例如,可以進行圖100的自動化分析以識別諸如資料庫、文件或其它類型的數據源等的任何數據源。所識別的數據源中的一個或多個數據源可被測試源自動替換。被替換的數據源是指將測試源插入該數據源的正下遊的流中,使得將來自該測試源的數據而不是將來自該數據源的數據提供至下遊組件。同樣,圖100的自動化分析可以識別諸如資料庫、文件或其它類型的輸出數據宿等的任何輸出數據宿。所識別的輸出數據宿中的一個或多個輸出數據宿可被探測器自動替換。被替換的輸出數據宿是指將探測器插入該輸出數據宿的正上遊的流中,使得來自上遊組件的數據被探測器而不是被該輸出數據宿接收到。還可以使用圖100的自動化分析來識別諸如特定類型的組件(例如,執行對圖100的外部產生影響的特定類型的組件)等的其它組件。

參考圖3,分析引擎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指定輸出數據文件所用的位置。

參考圖4,在用以自動定義插入的一般方法中,接收要被測試源和探測器分別替換的數據源和輸出數據宿的列表(400)。例如,該列表可以由測試人員基於他關於數據源和輸出數據宿的知識或者基於調試的目標或目的來提供。在一些示例中,該列表還可以包括要替換該列表上所包括的數據源和輸出數據宿的文件的諸如位置和文件名等的標識符。

例如利用處理器自動分析圖,以識別該圖中的數據源、輸出數據宿或這兩者(402)。特別地,不具有傳入連接的組件被識別為數據源,並且不具有傳出連接的組件被識別為輸出數據宿。例如,分析各組件以識別該組件的傳入連接和傳出連接,並且來自各組件的各連接被實現直到相鄰組件以識別該組件的傳入連接和傳出連接。這樣,可以分析圖的所有組件。在一些示例中,可以在運行時(例如,在圖被參數化之後)自動進行該分析。在一些示例中,可以自動地且動態地(例如,在圖正運行時)進行該分析。例如,可以在圖的執行期間解析特定參數時進行動態分析。在一些示例中,圖被接收到短期存儲器中,其中利用處理器從該短期存儲器中分析圖以識別數據源或輸出數據宿。

自動將所識別的數據源和輸出數據宿與列表上的數據源和輸出數據宿進行比較(404)。針對列表上所包括的各個所識別的數據源或輸出數據宿定義覆蓋規範(406)。在執行圖之前,編譯器可以將圖編譯成可執行圖。作為編譯的一部分,編譯器考慮覆蓋規範200。例如,編譯器可以接受覆蓋規範200作為輸入。對一個或多個插入進行處理並且將該一個或多個插入以各自與覆蓋規範200中所包含的插入定義相對應的對象的形式插入圖中。可以將插入對象連同第一版本圖100中所包括的數據處理組件一起在(圖5a所示的)第二版本圖500中表示。插入對象可以通過定向流連接至數據處理組件或其它插入。然而,覆蓋規範200或存儲該覆蓋規範的文件保持與包含圖的文件分開。即,儘管插入對象以及第一版本圖100中所包括的數據處理組件可以出現在第二版本圖500中,但包含第一版本圖100的文件不包括插入定義。插入對象有時被簡稱為插入。

在一些示例中,測試人員沒有供給要替換的數據源和輸出數據宿的初始列表。相反,自動分析圖並且經由用戶接口向測試人員呈現與圖相關聯的所有數據源和輸出數據宿的列表。測試人員可以選擇數據源和輸出數據宿中的要被插入替換的一個或多個數據源和輸出數據宿。測試人員可以提供要替換列表上所包括的數據源和輸出數據宿的文件的諸如位置和文件名等的標識符,或者可以提供用於生成插入所用的源文件的指令。

可以使用單執行模式(single-executionmode)和保存狀態模式(saved-statemode)的至少兩個模式其中之一來執行覆蓋規範中所定義的插入。

圖6示出用於在單執行模式中執行插入定義的示例系統。在該示例中,客戶端602生成或引用第一版本圖604和用於定義插入的覆蓋文件606(例如,覆蓋規範)。例如,覆蓋文件606可以是圖2的覆蓋規範200。然後,利用編譯器608編譯圖604。編譯器608考慮覆蓋文件606並且創建第二版本圖。第二版本圖是可執行的並且包括覆蓋文件606所定義的插入。然後,可以執行第二版本圖。在一些示例中,編譯和執行同時發生。如果要再次執行第二版本圖,則重複該處理,其中該處理包括重新指定、重新編譯圖604並且重新執行第二版本圖。從可執行圖的一次執行起直到可執行圖的下次執行為止,沒有保存信息。

圖5a示出第二版本圖500的示例。第二版本圖500是圖的視覺表示。在該示例中,第二版本圖500與圖1的第一版本圖100相似,並且已被修改為包括插入。第二版本圖500包括圖2的覆蓋規範200中所定義的插入的表示。測試源插入502與測試源定義201相對應,並且探測器插入504與探測器定義213相對應。在該示例中,在編譯器編譯圖100時生成插入。儘管圖5a示出第二版本圖500,但原始的第一版本圖100保持未被修改。

在數據源102的輸出和過濾組件103的輸入之間配置測試源插入502,其中流116已位於第一版本圖100中。該插入的位置是基於測試源定義中的上遊埠204和下遊埠206(圖2)。在執行第二版本圖500的情況下,數據沒有如第一版本圖100的情況那樣從數據源102流向過濾組件103。作為代替,來自利用測試源502的測試源定義201中的布局參數212所標識的源文件的數據流向過濾組件103。

在收集組件112的輸出和輸出數據宿組件114的輸入之間的流118中配置探測器插入504。該插入的位置是基於探測器定義213中的上遊埠216和下遊埠218(圖2)。在執行第二版本圖500的情況下,利用探測器插入504來監測並存儲從收集組件112流向輸出數據宿組件114的數據。如上所述,為了再次執行可執行圖,對圖進行重新指定和重新編譯,並且要重新執行可執行圖。從可執行圖的一次執行起直到可執行圖的下次執行為止,沒有保存信息。例如,如果要再次執行可執行圖,則將利用相同的數據重新填充探測器插入504。

在圖5a的示例中,沿著流118流動的數據被探測器插入504和輸出數據宿組件114這兩者接收到。參考圖5b,在一些示例中,第二版本圖可以包括探測器插入其中該探測器插入使向輸出數據宿組件114的流中斷,使得數據被探測器插入接收到而沒有流向輸出數據宿組件114。

在圖5a和5b的示例中,第二版本圖500、包括測試源插入502(或)和探測器插入504(或)這兩者。在一些示例中,第二版本圖可以包括多個測試源插入和多個探測器插入。參考圖5c,在一些示例中,第二版本圖可以包括一個或多個測試源插入但不包括探測器插入。參考圖5d,在一些示例中,第二版本圖可以包括一個或多個探測器插入但不包括測試源插入。

圖7示出用於利用保存狀態管理器708在保存狀態模式中執行插入定義的示例系統。在該示例中,客戶端702生成或引用圖704和用於定義插入的覆蓋文件706(例如,覆蓋規範)。例如,覆蓋文件706可以是圖2的覆蓋規範200。保存狀態儲存庫710由保存狀態管理器708和編譯器712來管理。保存狀態管理器708還可以識別保存狀態數據位於保存狀態儲存庫710內的何處。利用編譯器712對圖704進行編譯。編譯器712考慮覆蓋文件706並且創建包括覆蓋文件706所定義的插入的第二版本圖。然後,可以執行該第二版本圖。在一些示例中,編譯和執行同時發生。保存狀態模式與單執行模式的不同之處在於:保存狀態模式使得能夠在執行之間保存信息的同時,多次執行可執行圖。例如,參考圖5a,如果使用保存狀態模式來執行圖2的覆蓋規範200中所定義的插入,則在第二次執行期間可以不必重新填充在第一次執行第二版本圖時所填充的探測器插入504。在一些示例中,由於探測器插入504實質是將數據插入到圖中的收集組件112的輸出和輸出數據宿組件114的輸入之間的流處,因此在第二次執行時探測器插入504可以在內部變換為測試源。

可以駐留在保存狀態管理器目錄中的保存狀態管理器708管理保存狀態。可以保存在保存狀態儲存庫710中的信息的示例包括與探測器插入有關的信息、與測試源插入有關的信息、與覆蓋文件706有關的信息和與圖組件相關聯的參數(例如,屬性)等。

在一些示例中,在執行可執行圖時,僅執行圖的特定部分。即,僅執行圖的特定組件。在一些示例中,執行比圖的所有組件少的組件。可執行圖可以僅執行將會影響插入的組件。例如,可執行圖可以僅執行圖中的所定義的探測器插入監測並存儲數據所需的部分。在一些示例中,可能不必執行最下遊探測器的下遊的組件。在一些示例中,第二版本圖是整個原始圖的第二版本。在一些示例中,第二版本圖是整個原始圖的僅一部分的第二版本、例如該圖的僅與所定義插入有關的部分的第二版本。

在一些示例中,在第一次執行可執行圖時填充探測器。在執行之間,可以改變圖組件中的一個或多個圖組件的參數。組件的參數定義了組件如何工作。可以追蹤與組件相關聯的參數,使得編譯器712可以確定在組件中何時發生參數變化。最後值表追蹤與圖組件相關聯的參數。在運行可執行圖時,將最後值表與組件的當前參數進行比較以判斷在運行之間任何參數是否發生改變。在發生參數變化的情況下,該變化可能會或者可能不會影響探測器所存儲的數據。編譯器712判斷組件和變化是否影響下次執行可執行圖時探測器將存儲的數據。如果探測器將存儲的數據受到該變化影響,則在下次執行可執行圖期間,重新執行改變後的組件以及駐留於該改變後的組件和探測器之間的流上的組件。換句話說,如果改變後的組件影響組件的執行並且該組件影響探測器所存儲的數據,則再次執行該改變後的組件和探測器之間的組件。如果探測器將存儲的數據不會受到該變化影響,則可以不必重新執行任何組件。

圖8示出可以使用調試技術的示例數據處理系統800。該系統800包括數據源802,其中該數據源802可以包括諸如存儲裝置或者至線上數據流的連接等的一個或多個數據源,其中該一個或多個數據源各自可以以各種格式(例如,資料庫表、電子表格文件、非結構文本(flattext)文件或大型機所使用的原本格式)中的任何格式來存儲或提供數據。執行環境804和開發環境818例如可以在諸如某個版本的unix作業系統等的適當的作業系統的控制下安裝在一個或多個通用計算機上。例如,執行環境804可以包括包含使用多個中央處理單元(cpu)或多個處理器內核的計算機系統的結構的多節點並行計算環境,可以是本地的(例如,諸如對稱多處理(smp)計算機等的多處理器系統)或本地分布式的(例如,作為集群所連接的多個處理器或大規模並行處理(mpp)系統)、或者遠程或遠程分布式的(例如,經由區域網(lan)和/或廣域網(wan)連接的多個處理器)、或者它們的任何組合。

執行環境804從數據源802讀取數據並且生成輸出數據。提供數據源802的存儲裝置相對於執行環境804可以是本地的,例如存儲在連接至安裝有執行環境804的計算機的存儲介質(例如,硬碟驅動器808)上,或者相對於執行環境804可以是遠程的,例如安裝在經由(例如雲計算基礎設施所提供的)遠程連接與安裝有執行環境804的計算機進行通信的遠程系統(例如,大型機110)上。數據源802可以包含測試源定義(例如,圖2的測試源定義201)中所定義的數據。即,測試源定義201的布局參數212可以指向數據源802中的源文件的位置。

輸出數據可被存儲回至數據源802中或者存儲回至執行環境804可訪問的數據存儲系統816中,或者被使用。開發環境818也可以訪問數據存儲系統816,其中在開發環境818中,開發人員820能夠開發、調試並測試圖。在一些實現中,開發環境818是用於開發作為圖的應用程式的系統,其中這些圖包括頂點(表示數據處理組件或數據集),並且這些頂點通過頂點之間的定向流(directedflow)(表示工作元素(即,數據)的流)相連接。例如,在標題為「managingparametersforgraph-basedapplications」的美國公開號2007/0011668中更詳細地說明了這種環境。

簡單的數據流圖可以處理通過流連接至諸如過濾組件等的數據處理元素的輸入數據集。過濾組件通過流連接至輸出數據集。數據集例如可以包括用於提供數據(例如,輸入數據集)或接收數據(例如,輸出數據集)以供數據流圖所進行的計算用的文件或資料庫表。可以將數據流圖中利用「流」表示的數據的流組織成離散的數據元素。例如,這些元素可以包括來自被組織成記錄(或行)和欄位(或列)的數據集的記錄。描述與記錄中的值相對應的欄位和數據類型的序列的元數據被稱為「記錄格式」。圖中的組件和數據集具有用於連接至流的輸入和/或輸出埠。流的「源端」與輸入數據集的輸出埠並且與過濾組件的輸出埠相連接。流的「宿端」與過濾組件的輸入埠並且與輸出數據集的輸入埠相連接。數據集或組件的輸入或輸出埠與元數據(諸如流入埠或從埠流出的數據所用的記錄格式等)相關聯。可以使用與形成「子圖」的流互連的其它組件來實現圖中所使用的組件。

在標題為「executingcomputationsexpressedasgraphs」的美國專利5,966,072中說明了用於執行這種基於圖的計算的系統。根據該系統所製作的圖提供用於將信息輸入至圖組件所表示的個別處理或從圖組件所表示的個別處理獲得信息的方法、用於在處理之間移動信息的方法以及用於定義處理的運行順序的方法。該系統包括用於從任何可用方法中選取處理間通信方法的算法(例如,與圖的流相對應的通信路徑可以使用tcp/ip或unix域套接字或者使用共享存儲器在處理之間傳遞數據)。

開發環境818包括用於存儲原始碼的代碼儲存庫822。在一些示例中,可以由例如經由用戶接口有權訪問開發環境的開發人員820來開發原始碼和覆蓋規範(例如,圖2的覆蓋規範200)。在一些示例中,原始碼和覆蓋規範例如是由上述的分析引擎300和插入引擎306自動確定的。在一些示例中,圖和覆蓋規範可以存儲在代碼儲存庫822中。在一些示例中,圖存儲在代碼儲存庫822中,並且覆蓋規範存儲在單獨的覆蓋儲存庫824中。

代碼儲存庫822和覆蓋儲存庫824其中之一或這兩者可以與編譯器826進行通信。編譯器826可以將第一版本圖和覆蓋規範(例如,圖2的覆蓋規範200)編譯成可執行的第二版本圖828。例如,編譯器可以接受覆蓋規範作為輸入。對一個或多個插入進行處理並且將該一個或多個插入以各自與覆蓋規範中所包含的插入定義相對應的對象的形式插入圖中。可以利用修改圖(例如,圖5a的第二版本圖500)來從視覺上表示第二版本圖828。可以在第二版本圖500中表示插入對象。

開發環境818可以包括測試執行環境830,其中該測試執行環境830用於執行第二版本圖828。例如,一旦利用編譯器826對圖進行了編譯,則可以執行第二版本圖828。執行第二版本圖828可以包括執行與第二版本圖828的組件、插入和定向流相關聯的計算作為組件之間的數據流(例如,工作元素或數據記錄)。在一些示例中,測試執行環境830在無需修改代碼儲存庫822中所存儲的第一版本圖的原始碼或者覆蓋儲存庫824中所存儲的原始碼的情況下,執行第二版本圖828。測試執行環境830可以是經由開發環境818的接口可訪問的,或者可以具有其自己的接口。該接口可被配置為顯示與執行有關的信息。該接口還可被配置為顯示與插入有關的信息(例如,探測器正監測並保存的數據、或者測試源正插入的數據)。測試執行環境830可以允許開發人員820多次執行第二版本圖828並且在執行之間修改第二版本圖828的多個方面。

在一些示例中,開發人員指導圖的插入和編譯。例如,開發人員820從代碼儲存庫822中選擇圖1的第一版本圖100。開發人員820還從覆蓋儲存庫824中選擇圖2的覆蓋規範200。在一些示例中,代替選擇覆蓋規範200,開發人員820可以從覆蓋儲存庫824內的各種覆蓋規範中選擇插入定義。開發人員820指示編譯器826基於第一版本圖100和覆蓋規範200來對第二版本圖828進行編譯。

在一些示例中,插入可以是自動插入的。例如,如上所述,例如通過識別不具有傳入連接或不具有傳出連接的組件來自動識別圖100中的數據源和輸出數據宿。自動將所識別的數據源和輸出數據宿與在圖100的調試期間要被插入替換的數據源和輸出數據宿的列表進行比較。例如,該列表可以由開發人員820提供。根據該列表來針對圖100的數據源和輸出數據宿自動創建覆蓋規範。然後,自動編譯第二版本圖。

在一些示例中,在執行之後,開發人員820可以評價輸出到探測器插入504中的數據。在必要的情況下,開發人員820可以仍然使用來自測試源502的相同輸入數據,來對第一版本圖100作出改變並且重新執行改變後的第一版本圖100。通過使輸入數據在圖的多輪執行內保持相同,開發人員820可以將從改變後的第一版本圖輸出的數據與先前輸出的數據進行比較,以判斷第一版本圖是否正按照期望進行。

在一些示例中,在執行期間或在執行之後,開發人員820可以觀察與第二版本圖828的執行及其組件、插入和流有關的信息。例如,返回參考圖5a,開發人員820可以觀察到探測器插入504所監測並存儲的數據不正確或出乎意料。開發人員820可以從覆蓋儲存庫824中選擇用於定義要插入在重定格式組件108和收集組件112之間的流中的探測器的探測器插入定義以及用於定義要插入在按表達式過濾組件和收集組件112之間的流中的探測器的探測器插入定義。開發人員820可以分析這兩個探測器所收集到的數據,以判斷是來自重定格式組件108的數據還是來自按表達式過濾組件110的數據正導致從收集組件112輸出的數據不正確。

繼續該示例,假定開發人員820判斷為來自按表達式過濾組件110的數據不正確。代替調試按表達式過濾組件110的上遊的所有組件(例如,過濾組件103、排序組件104和複製組件106)以判斷不正確數據的原因,開發人員820可以選擇將正確數據(例如,預期從按表達式過濾組件110輸出的數據)插入按表達式過濾組件110和收集組件112之間的流中。開發人員820可以從覆蓋儲存庫824中選擇用於定義要插入在按表達式過濾組件110和收集組件112之間的流中的測試源的測試源插入定義。如果開發人員820關注對按表達式過濾組件110的下遊的第二版本圖500的組件進行調試,則該方法可以是適當的。

在一些示例中,覆蓋規範沒有被作為文件永久地存儲在代碼儲存庫822或覆蓋儲存庫824中。相反,通常將包括在覆蓋文件中的信息(例如,插入定義)是由開發人員820(例如,經由用戶接口)所開發的、或者是由分析引擎300和插入引擎306自動確定的並暫時存儲在存儲器中。然後,將覆蓋信息傳遞至編譯器(例如,圖6的608)或保存狀態管理器(例如,圖7的708)。

圖9是示出調試過程900的流程圖。接收到第一版本圖(例如,圖1的圖100)(902)。例如,第一版本圖可被接收到處理器可訪問的短期存儲器中。第一版本圖100包括組件和流。組件表示針對數據記錄所進行的操作,並且流表示組件之間的數據記錄的流。這些組件可以包括圖1所示的過濾組件103、排序組件104、複製組件106、重定格式組件108、按表達式過濾組件110和收集組件112。這些流可以包括圖1所示的複製-重定格式流116和收集-輸出數據宿流118。

接收到用於定義一個或多個插入的覆蓋規範(904)。在一些示例中,覆蓋規範是從開發人員或測試人員接收到的。在一些示例中,例如如上所述,覆蓋規範是自動定義的。覆蓋規範可以是圖2所示的覆蓋規範200。覆蓋規範可以包括一個或多個插入定義(例如,測試源定義201和探測器定義213)。插入定義可以包括(測試源定義所用的)名稱、上遊埠、下遊埠、插入類型、原型路徑和布局參數。所定義的各個插入可以與圖100的流相關聯。插入可以採取探測器或測試源的形式。採用圖的組件的形式的插入的示例包括圖5a的測試源插入502和探測器插入504。例如,測試源插入502與圖100的資料庫-過濾流116相關聯,並且探測器插入504與圖100的收集-輸出數據宿流118相關聯。

生成各自與所定義的插入其中之一相對應的一個或多個對象(906)。這些對象可以是圖的組件。對象的示例包括圖5a的測試源插入502和探測器插入504。例如,測試源插入502與圖100的複製-重定格式流116相關聯,並且探測器插入504與圖100的收集-輸出數據宿流118相關聯。

生成第二版本的至少一部分的圖(908),其中該圖包括圖100的該部分的組件和流中的至少一些組件和流以及所生成的一個或多個對象。在一些示例中,第二版本圖是原始圖100的被修改為包括圖100的該部分的組件和流中的至少一些組件和流以及所生成的一個或多個對象的副本。可以利用修改後的圖(例如,圖5a的第二版本圖500)來從視覺上表示第二版本圖。將各對象插入與對應於該對象的所定義插入相關聯的流處。例如,參考第二版本圖500,將測試源插入502插入複製-重定格式流116中,並且將探測器插入504插入收集-輸出數據宿流118中。儘管所生成的插入對象以及圖100的數據處理組件可以出現在第二版本圖500中,但第一版本圖100(或包含第一版本圖100的文件)沒有被修改。

儘管描述了可以對圖和覆蓋規範進行編譯以創建包括覆蓋文件所定義的插入的第二版本圖的編譯器(例如,圖6的編譯器608和圖7的編譯器712),但在一些實施例中,沒有對圖和覆蓋規範進行編譯。例如,可以在無需編譯的情況下直接執行圖和覆蓋規範。解釋器可以通過將各語句翻譯成已編譯成機器代碼的一個或多個子例程的序列來直接執行圖和覆蓋規範。

儘管描述了採用探測器和測試源的形式的插入,但在一些實施例中,插入可以採用其它形式。插入可以廣泛地用於將數據注入圖的給定點並從圖的給定點提取數據。例如,插入可被設計成監測通過圖的流的數據的質量。如果數據質量低於閾值,則用戶可以接收自動警報。在美國申請序列號14/715,904(代理人案號07470-0313001)中可以發現關於插入的更多說明。

此外,儘管在圖的上下文中描述了插入,但在一些實施例中,可以將插入與其它可執行應用程式相結合地使用。例如,可以通過針對通用的可執行應用程式的自動化分析來識別該應用程式所用的數據源和輸出數據宿。所識別的數據源和輸出數據宿可以被測試源和探測器分別替換。這樣,可執行應用程式可以處理來自測試源的數據並向探測器輸出數據。該結構對於測試或調試可執行應用程式而言可以是有用的。

上述的調試方法可以使用執行適當軟體的計算系統來實現。例如,該軟體可以包括在一個或多個編程或可編程計算系統(可以具有諸如分布式、客戶端/伺服器或網格等的各種架構)上執行的一個或多個電腦程式中的過程,其中該一個或多個編程或可編程計算系統各自包括至少一個處理器、至少一個數據存儲系統(包括易失性和/或非易失性存儲器和/或存儲元件)、(用於使用至少一個輸入裝置或埠接收輸入、並且用於使用至少一個輸出裝置或埠提供輸出的)至少一個用戶接口。該軟體可以包括例如提供與圖的設計、結構和執行相關的服務的更大程序的一個或多個模塊。該程序的模塊(例如,圖的元素)可以實現為符合數據儲存庫中所存儲的數據模型的數據結構或其它有組織的數據。

可以將軟體設置在諸如(例如,利用通用或專用計算系統或裝置可讀取的)cd-rom或其它計算機可讀介質等的有形非暫時性介質上、或者經由網絡的通信介質(例如,以編碼在傳播信號中的形式)傳遞至執行該軟體的計算系統的有形非暫時性介質。可以在專用計算機上、或者使用諸如協處理器或現場可編程門陣列(fpga)或專用集成電路(asic)等的專用硬體來進行該處理的一部分或全部。可以以利用不同的計算元件來進行軟體所指定的計算的不同部分的分布式方式來實現該處理。優選將這種電腦程式各自存儲在通用或專用可編程計算機可訪問的存儲裝置的計算機可讀存儲介質(例如,固態存儲器或介質、或者磁性或光學介質)上或者下載至該計算機可讀存儲介質,以在利用計算機讀取存儲裝置介質以進行這裡所述的處理的情況下配置計算機並使該計算機進行工作。本發明的系統還可被視為作為配置有電腦程式的有形非暫時性介質來實現,其中如此配置成的介質使計算機以特定的預定義方式進行工作,以進行這裡所述的處理步驟中的一個或多個。

已經說明了本發明的多個實施例。然而,應當理解,上述說明意圖例示而並非限制由所附權利要求書的範圍所限定的本發明的範圍。因此,其它實施例也在所附權利要求書的範圍內。例如,可以在沒有背離本發明的範圍的情況下進行各種變形。另外,上述步驟中的一部分可以是與順序無關的,因而可以以與所描述的順序不同的順序來進行。

例如,除上述特徵外或者作為上述特徵的替代,說明以下實施例:

實施例1涉及一種方法,該方法包括利用處理器來分析第一版本的電腦程式。所述分析包括識別所述第一版本的電腦程式中所包括的第一數據處理元素。所述第一數據處理元素引用位於所述第一版本的電腦程式外部的第一數據源。所述方法還包括生成表示與所述第一數據源不同的第二數據源的數據源元素。所述方法還包括生成第二版本的電腦程式。所述第二版本的電腦程式包括所生成的數據源元素和基於所述第一數據處理元素的第二數據處理元素。在所述第二版本的電腦程式中,所述第二數據處理元素引用所生成的數據源元素。

實施例2涉及實施例1,其中,所述方法還包括:確定所述第二數據源的位置。

實施例3涉及前述實施例中的任一項,其中,確定所述第二數據源的位置包括:接收表示所述位置的輸入。

實施例4涉及前述實施例中的任一項,其中,所述方法還包括:在用戶接口中呈現所識別的第一數據處理元素、所述第一數據源或這兩者的標識符。

實施例5涉及實施例4,其中,所述方法還包括:接收所識別的第一數據處理元素、所述第一數據源或這兩者的選擇。

實施例6涉及前述實施例中的任一項,其中,分析所述第一版本的電腦程式包括:分析向所述第一版本的電腦程式中的數據處理元素至少之一的輸入流。

實施例7涉及前述實施例中的任一項,其中,所述方法還包括:在所述電腦程式的運行時分析所述第一版本的電腦程式。

實施例8涉及前述實施例中的任一項,其中,所述電腦程式包括圖。

實施例9涉及實施例8,其中,生成所述第二版本的電腦程式包括:使所生成的數據源元素位於向所述第二數據處理元素的輸入流處。

實施例10涉及前述實施例中的任一項,其中,來自所述第二數據源的數據具有與來自所述第一數據源的數據相同的格式。

實施例11涉及前述實施例中的任一項,其中,生成數據源元素包括:針對所生成的數據源元素定義覆蓋規範。

實施例12涉及前述實施例中的任一項,其中,所述方法還包括:利用基於來自所述第一數據源的數據的數據來填充所述第二數據源。

實施例13涉及前述實施例中的任一項,其中,在所述第一版本的電腦程式中,第三數據處理元素引用位於所述第一版本的電腦程式外部的第一數據目的地。在所述第二版本的電腦程式中,基於所述第三數據處理元素的第四數據處理元素引用與所述第一數據目的地不同的第二數據目的地。

實施例14涉及前述實施例中的任一項,其中,所述方法還包括:識別所述第一版本的電腦程式中所包括的第三數據處理元素。所述第三數據處理元素引用位於所述第一版本的電腦程式外部的第一數據目的地。所述方法還包括:生成表示與所述第一數據目的地不同的第二數據目的地的輸出元素。所述第二版本的電腦程式包括所生成的輸出元素和基於所述第三數據處理元素的第四數據處理元素。在所述第二版本的電腦程式中,所述第四數據處理元素引用所生成的輸出元素。

實施例15涉及實施例14,其中,所述方法還包括:確定所述第二數據目的地的位置。

實施例16涉及實施例15,其中,確定所述第二數據目的地的位置包括:接收表示所述位置的輸入。

實施例17涉及前述實施例中的任一項,其中,所述方法還包括:執行所述第二版本的電腦程式。

實施例18涉及前述實施例中的任一項,其中,執行所述第二版本的電腦程式使得能夠對所述電腦程式進行調試。

實施例19涉及前述實施例中的任一項,其中,生成所述第二版本的至少一部分的電腦程式包括:生成所述電腦程式的該部分的副本。

實施例20涉及實施例19,其中,所述方法還包括:修改所述電腦程式的該部分的副本以包括所生成的數據源元素。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀