欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

調(diào)試圖的制作方法

文檔序號:11450332閱讀:334來源:國知局
調(diào)試圖的制造方法與工藝

優(yōu)先權(quán)申明

本申請要求提交于2014年11月5日的美國臨時專利申請序列62/075,466的優(yōu)先權(quán),上述文獻的全部內(nèi)容通過引用而并入于此。



背景技術(shù):

本說明書涉及調(diào)試圖。

代碼開發(fā)人員通常在整個開發(fā)處理中調(diào)試源代碼。這樣做時,可以利用可影響源代碼的功能的調(diào)式代碼來修改源代碼。通常期望在調(diào)試結(jié)束時從源代碼移除添加的調(diào)試代碼,以恢復(fù)源代碼的原始功能。



技術(shù)實現(xiàn)要素:

在一方面,一種方法,包括:接收包括組件和流的第一圖,所述組件表示對數(shù)據(jù)記錄進行的操作,所述流表示組件之間的數(shù)據(jù)記錄的流動;接收與所述第一圖分離的規(guī)范,所述規(guī)范定義一個或多個插入,所述一個或多個插入各自與所述第一圖的流相關(guān)聯(lián);生成各自與所述一個或多個插入之一相對應(yīng)的一個或多個組件;以及生成包括與所述第一圖的組件和流中的至少一部分以及所生成的一個或多個組件相對應(yīng)的組件和流的第二圖。。

實現(xiàn)可以包括以下特征中的一個或多個。

在一些實現(xiàn)中,所生成的一個或多個組件之一是被配置為當數(shù)據(jù)記錄通過所述第二圖的組件之間時監(jiān)視與該數(shù)據(jù)記錄相關(guān)的數(shù)據(jù)的探測器。

在一些實現(xiàn)中,所述探測器被配置為存儲與一個或多個數(shù)據(jù)記錄相關(guān)的數(shù)據(jù)。

在一些實現(xiàn)中,所生成的一個或多個組件之一是被配置為向所述第二圖的組件之一提供數(shù)據(jù)的測試源。

在一些實現(xiàn)中,所述方法還包括執(zhí)行所述第二圖。

在一些實現(xiàn)中,執(zhí)行所述第二圖的并非所有組件。

在一些實現(xiàn)中,所述第二圖的被執(zhí)行的組件包括操作影響所生成的對象中的一個或多個的組件。

在一些實現(xiàn)中,所生成的一個或多個組件之一是探測器,并且所述第二圖的被執(zhí)行的組件包括向該探測器提供數(shù)據(jù)的組件。

在一些實現(xiàn)中,不執(zhí)行所述第二圖的存在于所述探測器的下游的一個或多個組件。

在一些實現(xiàn)中,所生成的一個或多個組件之一是測試源,并且不執(zhí)行所述第二圖的存在于所述測試源的上游的一個或多個組件。

在一些實現(xiàn)中,所述方法還包括:修改與所述第二圖的組件之一相關(guān)聯(lián)的參數(shù);判斷修改后的組件在被執(zhí)行時是否影響所生成的一個或多個組件中的任一個;以及重新執(zhí)行所述第二圖。

在一些實現(xiàn)中,如果所述修改后的組件在被執(zhí)行時不會影響所生成的一個或多個組件中的任一個,則不重新執(zhí)行所述修改后的組件。

在一些實現(xiàn)中,所生成的一個或多個組件之一是探測器,并且所述修改后的組件存在于與該探測器相關(guān)聯(lián)的流的上游。

在一些實現(xiàn)中,所述第一圖和所述規(guī)范存儲在單獨的文件中。

在一些實現(xiàn)中,所述第一圖和所述第二圖存儲在單獨的文件中。

在一些實現(xiàn)中,所述第二圖是沒有存儲在文件中的shell腳本。

在一些實現(xiàn)中,在所述第二圖中,所生成的一個或多個組件之一向與所述第一圖中的從與該所生成的組件相關(guān)聯(lián)的流接收數(shù)據(jù)的組件相對應(yīng)的組件提供數(shù)據(jù)。

在一些實現(xiàn)中,在所述第二圖中,所生成的一個或多個組件之一從與所述第一圖中的向與該所生成的組件相關(guān)聯(lián)的流提供數(shù)據(jù)的組件相對應(yīng)的組件接收數(shù)據(jù)。

在一些實現(xiàn)中,在沒有修改所述第一圖的情況下生成所述第二圖。

在一些實現(xiàn)中,生成所述第二圖包括:生成所述第一圖的至少一部分的副本;以及修改所述第一圖的所述副本以包括所生成的一個或多個組件。

在另一方面,一種系統(tǒng),包括:至少一個處理器;用于接收包括組件和流的第一圖的部件,所述組件表示對數(shù)據(jù)記錄進行的操作,所述流表示組件之間的數(shù)據(jù)記錄的流動;用于接收與所述第一圖分離的規(guī)范的部件,所述規(guī)范定義一個或多個插入,所述一個或多個插入各自與所述第一圖的流相關(guān)聯(lián);用于生成各自與所述一個或多個插入之一相對應(yīng)的一個或多個組件的部件;以及用于生成包括與所述第一圖的組件和流中的至少一部分以及所生成的一個或多個組件相對應(yīng)的組件和流的第二圖的部件。

在另一方面,一種計算機系統(tǒng),包括:處理器,其被配置為:從代碼存儲庫接收包括組件和流的第一圖,所述組件表示對數(shù)據(jù)記錄進行的操作,所述流表示組件之間的數(shù)據(jù)記錄的流動;以及通過用戶接口來接收與所述第一圖分離的規(guī)范,所述規(guī)范定義一個或多個插入,所述一個或多個插入各自與所述第一圖的流相關(guān)聯(lián);編譯器,其被配置為:生成各自與所述一個或多個插入之一相對應(yīng)的一個或多個組件;以及生成包括與所述第一圖的組件和流中的至少一部分以及所生成的一個或多個組件相對應(yīng)的組件和流的第二圖。

在另一方面,一種存儲計算機程序的計算機可讀裝置,所述計算機程序包括用于使計算機進行以下操作的可執(zhí)行指令:接收包括組件和流的第一圖,所述組件表示對數(shù)據(jù)記錄進行的操作,所述流表示組件之間的數(shù)據(jù)記錄的流動;接收與所述第一圖分離的規(guī)范,所述規(guī)范定義一個或多個插入,所述一個或多個插入各自與所述第一圖的流相關(guān)聯(lián);生成各自與所述一個或多個插入之一相對應(yīng)的一個或多個組件;以及生成包括與所述第一圖的組件和流中的至少一部分以及所生成的一個或多個組件相對應(yīng)的組件和流的第二圖。

在另一方面,一種方法,包括:識別第一版本的計算機程序的數(shù)據(jù)處理元件,所述數(shù)據(jù)處理元件被配置為從第一數(shù)據(jù)元件接收數(shù)據(jù)、或者向第一數(shù)據(jù)元件提供數(shù)據(jù);生成表示第二數(shù)據(jù)元件的組件;以及生成第二版本的至少一部分計算機程序,所述第二版本的計算機程序包括所識別出的數(shù)據(jù)處理元件,其中,所述第二版本的計算機程序包括所生成的組件,使得所述第二版本的計算機程序中的所識別出的數(shù)據(jù)處理元件從所生成的組件接收數(shù)據(jù)、或者向所生成的組件提供數(shù)據(jù)。

實現(xiàn)可以包括以下特征中的一個或多個。

在一些實現(xiàn)中,所述方法還包括接收所述第一版本的計算機程序。

在一些實現(xiàn)中,生成所述第二版本的至少一部分計算機程序包括:生成所述計算機程序的該部分的副本。

在一些實現(xiàn)中,所述方法還包括修改所述計算機程序的該部分的副本以包括所生成的組件。

方面可以包括以下優(yōu)點中的一個或多個。

可以在代碼生成開始時創(chuàng)建與所定義的插入相對應(yīng)的對象并將其作為一般組件添加到圖中,同時保持該圖與定義插入的覆蓋規(guī)范相分離。正因如此,開發(fā)人員可以修改并調(diào)試圖,同時避免無意中破壞原始圖的風(fēng)險。

此外,沒有編輯圖的權(quán)限的開發(fā)人員可以使用插入來修改圖。

根據(jù)以下描述和權(quán)利要求書,本發(fā)明的其它特征和優(yōu)點將變得顯而易見。

附圖說明

圖1是圖的示例。

圖2是覆蓋規(guī)范的示例。

圖3示出用于在單執(zhí)行模式(single-executionmode)下執(zhí)行插入定義的典型系統(tǒng)。

圖4a-d是包括插入組件的圖的示例。

圖5示出用于在保存狀態(tài)模式下執(zhí)行插入定義的典型系統(tǒng)。

圖6是用于調(diào)試圖的系統(tǒng)的框圖。

圖7是典型圖調(diào)試過程的流程圖。

具體實施方式

圖可以由一個人來編寫并且由另一人來測試。為了完全測試該圖,測試人員可能需要在數(shù)據(jù)流過圖時訪問該數(shù)據(jù)。例如,測試人員可能希望在數(shù)據(jù)從圖的一個組件流到另一組件時驗證該數(shù)據(jù)。在一些實現(xiàn)中,測試人員可能已經(jīng)適當?shù)仳炞C了上游處理功能,但是尚未驗證下游處理的功能。在一些實現(xiàn)中,上游處理可能需要相對較長的時間來執(zhí)行,從而導(dǎo)致低效的測試。如果測試人員可以用先前證實過的數(shù)據(jù)來代替先前證實過的上游操作的執(zhí)行,則測試效率可以提高。

在傳統(tǒng)的開發(fā)環(huán)境中,測試人員通常將需要修改圖,以便添加觀察點或者用預(yù)先證實的數(shù)據(jù)來代替上游組件。然而,一旦已經(jīng)編輯了圖,測試人員就無法確定他是否已經(jīng)修改了原始圖的功能。在一些環(huán)境中,測試人員可能缺少必要的編輯圖的權(quán)限。

可以使用與圖分離的覆蓋文件(例如,覆蓋規(guī)范)來調(diào)試和測試基于圖的處理。覆蓋規(guī)范可以是定義一個或多個插入的單獨文件。插入可以由與圖的流相關(guān)聯(lián)的組件來表示。與插入相對應(yīng)的組件可以是探測器或測試源。探測器可以在圖執(zhí)行時監(jiān)視組件之間的數(shù)據(jù)傳遞,并且可以使數(shù)據(jù)被保存以備稍后檢查或再使用。測試源可以向圖的組件提供數(shù)據(jù),例如使得不需要為圖的每次執(zhí)行再運行上游計算。

與覆蓋規(guī)范中所定義的插入相對應(yīng)的組件可被包括在圖中,而不成為原始圖的一部分。當編譯原始圖時,編譯器考慮覆蓋文件,并生成包括與插入(這里有時也稱為插入組件)相對應(yīng)的組件的第二圖。第二圖(例如,圖4a-d所示的圖400a-d)包括與原始圖的組件和流中的至少一部分相對應(yīng)的組件和流。第二圖還包括與覆蓋規(guī)范中所定義的插入相對應(yīng)的組件。第二圖可以是第二版本的原始圖100、或者原始圖100的副本。在一些實現(xiàn)中,生成第二圖包括:生成原始圖100的至少一部分的副本并修改該副本以包括與插入相對應(yīng)的一個或多個組件。在一些實現(xiàn)中,第二圖是shell(外殼)腳本,并且不存儲在文件中。在一些實現(xiàn)中,第二圖和第一圖存儲在單獨的文件中。

重要的是要注意,將插入組件并入到第二圖中不會修改正在調(diào)試的原始圖。作為替代,插入定義保持在單獨的文件(例如,單獨的覆蓋規(guī)范)中,并且可以在代碼生成開始時變?yōu)槠胀▓D組件以包含在第二圖中。正因如此,在調(diào)試期間不存在無意間破壞原始圖的風(fēng)險。

圖1示出可被調(diào)試或測試的圖100的示例。圖100包括通過流連接的數(shù)據(jù)處理組件。包括一個或多個數(shù)據(jù)記錄的數(shù)據(jù)集102連接至過濾組件103。兩個組件之間的連接表示來自第一組件(在該示例中為數(shù)據(jù)集102)的輸出記錄被傳遞到第二組件(在該示例中為過濾組件103)。一般來說,過濾組件過濾或移除不滿足預(yù)定標準的記錄。例如,過濾組件103可以使居住在俄亥俄州的客戶的數(shù)據(jù)記錄通過,并拒絕其它記錄數(shù)據(jù)。過濾組件103連接至(例如,通過與客戶相關(guān)聯(lián)的郵政編碼)對過濾后的數(shù)據(jù)記錄進行排序的排序組件104。排序組件104連接至創(chuàng)建數(shù)據(jù)記錄的副本、使得可以以兩種不同的方式處理數(shù)據(jù)記錄的復(fù)制組件106。復(fù)制組件連接至重定格式組件108和按表達式進行過濾組件110。例如,將居住在俄亥俄州的客戶的按郵政編碼進行排序的數(shù)據(jù)記錄的一個實例發(fā)送到重定格式組件108,并且將數(shù)據(jù)記錄的另一實例發(fā)送到按表達式進行過濾組件110。重定格式組件108將數(shù)據(jù)記錄的格式改變?yōu)椴煌臄?shù)據(jù)格式,并且按表達式進行過濾組件110基于與數(shù)據(jù)記錄相關(guān)聯(lián)的表達式來移除數(shù)據(jù)記錄。重定格式組件108和按表達式進行過濾組件110連接至結(jié)合所接收到的數(shù)據(jù)記錄的收集組件312,并且該收集組件連接至輸出數(shù)據(jù)宿組件114(例如,數(shù)據(jù)庫)。雖然圖100在組件之間包括多個流,但是在該示例中,對復(fù)制-重定格式流116和收集-輸出數(shù)據(jù)宿流118特別感興趣。

圖100的測試人員可能希望調(diào)試圖100以便驗證其功能。例如,測試人員可能希望在數(shù)據(jù)從一個組件流到另一組件時監(jiān)視并驗證該數(shù)據(jù)??蛇x地,測試人員可能希望防止圖100中的一個或多個上游組件執(zhí)行,并且作為替代向?qū)⒁云渌绞綇纳嫌谓M件接收數(shù)據(jù)的組件(例如,下游組件)提供數(shù)據(jù)。這樣做時,出于各種原因,可能期望不修改圖。例如,測試人員可能不希望冒破壞圖的功能的風(fēng)險。在一些實現(xiàn)中,測試人員可能已經(jīng)限制了圖或者尚未訪問圖(例如,測試人員可能缺少必要的編輯圖的權(quán)限)。

可以使用覆蓋來生成可用于測試目的的第二圖中所包括的插入組件。圖2示出定義覆蓋的覆蓋規(guī)范200的示例。覆蓋規(guī)范200可以存儲在與可以與存儲圖的文件分離的文件中。覆蓋規(guī)范定義了一個或多個插入。當編譯圖時,與插入相對應(yīng)的組件可被生成并添加到第二圖中,而不成為原始圖的一部分。第二圖還包括與原始圖的組件和流中的至少一部分相對應(yīng)的組件和流。第二圖中的插入組件各自與原始圖的流相關(guān)聯(lián)。插入組件可以是探測器或測試源。

探測器

在一些實現(xiàn)中,當在第二圖的組件之間傳遞數(shù)據(jù)時,探測器監(jiān)視該數(shù)據(jù)。例如,可以監(jiān)視、保存數(shù)據(jù)以備稍后檢查,或者可以在第二圖執(zhí)行時保存數(shù)據(jù)以備再使用。覆蓋規(guī)范200可以定義與原始圖的特定流相關(guān)聯(lián)的探測器。第二圖可以包括與原始圖的特定流相對應(yīng)的流。第二圖還可以包括與原始圖中關(guān)聯(lián)于該特定流的組件相對應(yīng)的組件。第二圖的流表示要監(jiān)視的、有時還要由探測器保存的組件之間的數(shù)據(jù)流。探測器可被配置為報告特定值、或者報告特定值在預(yù)定范圍以內(nèi)或以外的情況??梢员4嫣綔y器所監(jiān)視的數(shù)據(jù)以供稍后分析或使用。在一些實現(xiàn)中,可以將數(shù)據(jù)存儲在平面文件或關(guān)系數(shù)據(jù)庫中。

測試源

在一些實現(xiàn)中,可能先前已經(jīng)驗證了原始圖中的高達某一點(例如,特定組件的位置)的執(zhí)行結(jié)果。在這樣的情況下,每當原始圖執(zhí)行時,上游組件再處理上述功能可能是低效的。覆蓋規(guī)范200可以定義與原始圖的特定流相關(guān)聯(lián)的測試源。第二圖可以包括與原始圖的特定流相對應(yīng)的流。第二圖還可以包括與原始圖中關(guān)聯(lián)于該特定流的組件相對應(yīng)的組件。測試源可以向第二圖中的與原始圖中關(guān)聯(lián)于特定流的組件相對應(yīng)的組件提供數(shù)據(jù)(例如,先前驗證過的數(shù)據(jù))。在一些實現(xiàn)中,測試源可被配置為向下游組件傳遞先前保存的數(shù)據(jù)。以這種方式,可以忽略先前執(zhí)行的圖的整個部分。

參考圖2,覆蓋規(guī)范200可以包括一個或多個插入定義。在該示例中,覆蓋規(guī)范200包括一個測試源定義201和一個探測器定義213。覆蓋規(guī)范200以指定插入定義可以對應(yīng)的圖的3行標題開始。標題之后是測試源定義201,其中該測試源定義201包括名稱202、上游端口204、下游端口206、插入類型208、原型路徑210、以及布局參數(shù)212。

測試源定義201的上游端口204引用圖100中的端口,具體地,引用復(fù)制組件106的輸出。下游端口206指向重定格式組件108的輸入。因此,當執(zhí)行第二圖時,測試源向與圖100的重定格式組件108相對應(yīng)的組件提供數(shù)據(jù)。

插入類型208定義插入是測試源還是探測器。值“0”定義測試源,而值“1”定義探測器。由于插入是測試源,因此插入類型208的值為“0”。

原型路徑210表示插入的類型。在該示例中,由于該插入是測試源,因此原型路徑210指定輸入文件組件。原型路徑210指向包含定義特定類型的插入的文件。布局參數(shù)212定義包含測試源將提供的數(shù)據(jù)的源文件的位置。在一些實現(xiàn)中,該位置是文件路徑。在第二圖中包括測試源的情況下,將源文件中的數(shù)據(jù)提供至重定格式組件108的輸入。

在一些實現(xiàn)中,源文件中的數(shù)據(jù)可以與圖100的正常執(zhí)行期間組件之間將會傳遞的數(shù)據(jù)相同。然而,通過使用第二圖中的測試源來提供數(shù)據(jù),可以不處理第二圖的上游組件。例如,與圖中的其它組件相比,諸如復(fù)制組件106等的上游組件可能需要大量的系統(tǒng)資源來處理數(shù)據(jù),或者可能需要相對較長的時間來處理數(shù)據(jù)。正因如此,可以向第二圖的組件提供已知的數(shù)據(jù)(例如,圖100的正常執(zhí)行期間組件之間將會傳遞的相同數(shù)據(jù)),以節(jié)省時間或節(jié)約系統(tǒng)資源。

測試源定義201之后的是探測器定義213,其中,探測器定義213包括名稱214、上游端口216、下游端口218、插入類型220、以及原型路徑222。

探測器定義213的上游端口216引用圖100中的端口,具體地,引用收集組件112的輸出。探測器定義213的下游端口218引用輸出數(shù)據(jù)宿組件114的輸入。因此,當執(zhí)行圖時,探測器監(jiān)視在第二圖中的與收集組件112相對應(yīng)的組件的輸出和第二圖中的與輸出數(shù)據(jù)宿組件114相對應(yīng)的組件的輸入之間所傳遞的數(shù)據(jù)。

探測器定義213的插入類型220定義插入是測試源還是探測器。值“1”定義探測器。由于該插入是探測器,因此插入類型220的值為“1”。

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

在一些實現(xiàn)中,將探測器所要監(jiān)視的數(shù)據(jù)存儲在系統(tǒng)自動創(chuàng)建的文件中??梢詫⑽募鎯υ谙到y(tǒng)自動確定的位置中。在一些實現(xiàn)中,可以在存儲數(shù)據(jù)之前監(jiān)視該數(shù)據(jù)。

如上所述,編譯器可以考慮覆蓋規(guī)范200,同時編譯原始圖以生成第二圖。編譯器可以接受覆蓋規(guī)范200作為輸入。生成并在第二圖中包括與覆蓋規(guī)范200中所定義的插入相對應(yīng)的一個或多個組件。所生成的插入組件各自與覆蓋規(guī)范200中所包含的插入定義相對應(yīng)。插入組件可以連同與原始圖100的組件和流中的至少一部分相對應(yīng)的組件和流一起包括在第二圖(例如,圖4a-d中所示的圖400a-d)中。插入組件可以通過一個或多個有向流而連接到其它組件或其它插入組件。覆蓋規(guī)范200或存儲該覆蓋規(guī)范的文件保持與包含圖100的文件相分離。

可以使用以下至少兩種模式之一來執(zhí)行覆蓋規(guī)范中所定義的插入組件:單執(zhí)行模式和保存狀態(tài)模式。

單執(zhí)行模式

圖3示出用于在單執(zhí)行模式下執(zhí)行插入組件的典型系統(tǒng)。在該示例中,客戶端302生成或引用圖304、或者定義插入的覆蓋文件306(例如,覆蓋規(guī)范)。例如,覆蓋文件306可以是圖2中的覆蓋規(guī)范200。圖304由編譯器308來編譯。編譯器308考慮覆蓋文件306,并創(chuàng)建包括覆蓋文件306所定義的插入組件的第二圖。然后可以執(zhí)行第二圖。在一些實現(xiàn)中,編譯和執(zhí)行可以同時發(fā)生。如果要再次執(zhí)行第二圖,則必須重復(fù)該處理。即,將需要重新指定、重新編譯圖304,并且將需要重新執(zhí)行第二圖。

圖4a-d示出包括一個或多個插入組件的圖400a-d的示例。圖400a-d可以是上述的第二圖的示例。第二圖可以是第二版本的原始圖100。在這些示例中,已經(jīng)編譯了圖1中的圖100以創(chuàng)建包括插入的圖400a-d之一。在圖2的覆蓋規(guī)范200中定義插入。在圖4a中,圖400a包括測試源插入422。在圖4b中,圖400b包括探測器插入420。在圖4c中,圖400c包括測試源插入422和探測器插入420兩者。測試源插入422可以與測試源定義201相對應(yīng),并且探測器插入420可以與探測器定義213相對應(yīng)。

圖400a-d還包括與原始圖100的組件和流中的至少一部分相對應(yīng)的組件和流。在一些實現(xiàn)中,第二圖中的相應(yīng)組件和流可以具有與它們在原始圖100中的對應(yīng)物具有相同或相似的屬性。在一些實現(xiàn)中,相應(yīng)組件和流和它們在原始圖100中的對應(yīng)物相同。例如,原始圖100的排序組件104可以是圖400a的排序組件404的第二實例。

在這些示例中,當編譯器編譯圖100時,生成插入組件。雖然圖4a-d示出包括插入組件的圖400a-d,但是原始圖100保持未修改。

參考圖4a和4c,探測器插入420定位在表示從收集組件412的輸出到輸出數(shù)據(jù)宿組件414的輸入的數(shù)據(jù)流動的流418上。流418、收集組件412和輸出數(shù)據(jù)宿組件414分別與圖1的原始圖100的流118、收集組件112和輸出數(shù)據(jù)宿組件114相對應(yīng)。探測器插入420的位置基于(圖2所示的)探測器定義213中所定義的上游端口216和下游端口218。當執(zhí)行圖400a、400c時,由探測器插入420來監(jiān)視從收集組件412流動至輸出數(shù)據(jù)宿組件414的數(shù)據(jù)。在一些實現(xiàn)中,還由探測器插入420將該數(shù)據(jù)存儲在系統(tǒng)自動創(chuàng)建的文件中。如上所述,如果要再次執(zhí)行第二圖,則將需要重新指定、重新編譯該圖,并且將需要重新執(zhí)行第二圖。如果要再次執(zhí)行第二圖,則將用數(shù)據(jù)重新填充探測器插入420。

參考圖4b和4c,測試源插入422定位在表示到重定格式組件408的輸入的數(shù)據(jù)流動的流416上。流416和重定格式組件408分別與圖1的原始圖100的流116和重定格式組件108相對應(yīng)。測試源插入422的位置基于測試源定義中所定義的上游端口204和下游端口206。當執(zhí)行圖400b、400c時,來自通過測試源定義201中的布局參數(shù)212所識別的源文件的數(shù)據(jù)流動至重定格式組件408。該數(shù)據(jù)連同從按表達式進行過濾組件410流出的數(shù)據(jù)一起流動至收集組件412。從收集組件412流出的數(shù)據(jù)最終存儲在可以作為數(shù)據(jù)庫的輸出數(shù)據(jù)宿414中。

在一些實現(xiàn)中,測試人員可能想要在不將數(shù)據(jù)寫入諸如輸出數(shù)據(jù)宿414等的數(shù)據(jù)庫的情況下使用探測器插入420來監(jiān)視該數(shù)據(jù)。例如,測試人員可能想要在沒有破壞數(shù)據(jù)庫的風(fēng)險的情況下使用實驗數(shù)據(jù)來測試圖。參考圖4d,圖400d包括測試源插入422和探測器插入420兩者。當執(zhí)行圖400d時,來自通過測試源定義201中的布局參數(shù)212所識別的源文件的實驗數(shù)據(jù)流動至重定格式組件408。該數(shù)據(jù)連同從按表達式進行過濾組件410流出的數(shù)據(jù)一起流動至收集組件412。由探測器插入420監(jiān)視從收集組件412流出的數(shù)據(jù)。在一些實現(xiàn)中,還由探測器插入420來將該數(shù)據(jù)存儲在系統(tǒng)自動創(chuàng)建的文件中。

保存狀態(tài)模式

圖5示出用于利用保存狀態(tài)管理器508在保存狀態(tài)模式下執(zhí)行插入組件的典型系統(tǒng)。在該示例中,客戶端502生成或引用圖504、或者定義插入的覆蓋文件506(例如,覆蓋規(guī)范)。例如,圖504可以是圖1中的圖100,并且覆蓋文件506可以是圖2中的覆蓋規(guī)范200。保存狀態(tài)存儲庫510由保存狀態(tài)管理器508和編譯器512來管理。保存狀態(tài)管理器508還可以識別保存狀態(tài)數(shù)據(jù)在保存狀態(tài)存儲庫510內(nèi)的位置。圖504由編譯器512來編譯。編譯器512考慮覆蓋文件506,并創(chuàng)建包括覆蓋文件506所定義的插入組件的第二圖。然后可以執(zhí)行第二圖。在一些實現(xiàn)中,編譯和執(zhí)行同時發(fā)生。

保存狀態(tài)模式與單執(zhí)行模式的不同之處在于保存狀態(tài)模式使得第二圖能夠執(zhí)行多次、同時保存執(zhí)行之間的信息。例如,參考圖4a-d,如果使用保存狀態(tài)模式來執(zhí)行插入組件,則在第二次執(zhí)行第二圖的期間可以無需重新填充第一次執(zhí)行時所填充的探測器插入420。在一些實現(xiàn)中,探測器插入420在第二次執(zhí)行時可以在內(nèi)部轉(zhuǎn)換為測試源。換句話說,由于探測器插入420是在第一次執(zhí)行第二圖時填充的,因此探測器插入420可以向第二圖的組件(例如,圖4a和4c的輸出數(shù)據(jù)宿組件414)提供所填充的數(shù)據(jù)。

可以存在于保存狀態(tài)管理器目錄中的保存狀態(tài)管理器508管理保存狀態(tài)。保存狀態(tài)存儲庫510中可以保存的信息的示例包括與探測器相關(guān)的信息、與測試源相關(guān)的信息、與覆蓋文件506相關(guān)的信息、以及與圖組件相關(guān)聯(lián)的參數(shù)(例如,屬性)及其它信息。

在一些實現(xiàn)中,當執(zhí)行圖時,僅執(zhí)行圖的特定部分(例如,僅執(zhí)行圖的特定組件)。在一些實現(xiàn)中,執(zhí)行圖的并非所有組件。在圖包括插入組件(例如,在圖4a-d的圖400a-d中)的實現(xiàn)中,該圖可能僅執(zhí)行操作不會影響插入組件的組件。例如,圖可能僅執(zhí)行圖的包括向探測器提供數(shù)據(jù)的組件的一部分。在一些實現(xiàn)中,可以無需執(zhí)行存在于探測器下游的組件。

在一些實現(xiàn)中,在第一次執(zhí)行圖時填充探測器。在執(zhí)行之間,一個或多個圖組件的參數(shù)可以發(fā)生改變。組件的參數(shù)定義該組件如何工作。通過跟蹤與組件相關(guān)聯(lián)的參數(shù),編譯器512可以判斷組件中何時發(fā)生參數(shù)改變。最新值表跟蹤與圖組件相關(guān)聯(lián)的參數(shù)。當圖運行時,將最新值表與組件的當前參數(shù)進行比較以判斷運行之間是否改變了任何參數(shù)。當發(fā)生參數(shù)改變時,這種改變可能影響或者可能不影響探測器所存儲的數(shù)據(jù)。編譯器512判斷組件的改變是否將會影響在下一次執(zhí)行圖時探測器將存儲的數(shù)據(jù)。如果探測器將存儲的數(shù)據(jù)受到改變的影響,則可以在下一次執(zhí)行圖的期間重新執(zhí)行改變后的組件以及從改變后的組件接收數(shù)據(jù)的組件。換句話說,如果改變后的組件影響從改變后的組件接收數(shù)據(jù)、并且(直接或間接地)向探測器提供數(shù)據(jù)的特定組件的執(zhí)行,則可以重新執(zhí)行該特定組件,并且該特定組件影響探測器所存儲的數(shù)據(jù)。在一些實現(xiàn)中,如果探測器將存儲的數(shù)據(jù)不受到改變的影響,則可以無需重新執(zhí)行組件。

圖6示出可以使用上述技術(shù)的典型數(shù)據(jù)處理系統(tǒng)600。系統(tǒng)600包括可以包括諸如存儲裝置或者到在線數(shù)據(jù)流的連接等的一個或多個數(shù)據(jù)源的數(shù)據(jù)源602,其中,該一個或多個數(shù)據(jù)源中的每一個可以以多種格式中的任一種(例如,數(shù)據(jù)庫表、電子表格文件、純文本文件、或者主機所使用的本機格式)來存儲或提供數(shù)據(jù)。在諸如unix操作系統(tǒng)的版本等的適當操作系統(tǒng)的控制下,執(zhí)行環(huán)境604或開發(fā)環(huán)境618可以例如托管在一個或多個通用計算機上。例如,執(zhí)行環(huán)境604可以包括多節(jié)點并行計算環(huán)境,該多節(jié)點并行計算環(huán)境包括使用多個中央處理單元(cpu)或處理器核心的計算機系統(tǒng)的配置,其中,該多個中央處理單元(cpu)或處理器核心是本地的(例如,諸如對稱多處理(smp)計算機)、或本地分布的(例如,連接作為集群或大規(guī)模并行處理(mpp)系統(tǒng)的多個處理器)、或遠程的、或遠程分布的(例如,經(jīng)由局域網(wǎng)(lan)和/或廣域網(wǎng)(wan)而連接的多個處理器)、或其任意組合。

執(zhí)行環(huán)境604從數(shù)據(jù)源602讀取數(shù)據(jù)并生成輸出數(shù)據(jù)。提供數(shù)據(jù)源602的存儲裝置可以在執(zhí)行環(huán)境604本地(例如,存儲在連接至托管執(zhí)行環(huán)境604的計算機的存儲介質(zhì)(例如,硬盤驅(qū)動器608)上),或者可以在執(zhí)行環(huán)境604遠處(例如,托管在通過(例如,云計算基礎(chǔ)架構(gòu)所提供的)遠程連接與托管執(zhí)行環(huán)境604的計算機進行通信的遠程系統(tǒng)(例如,主機610)上)。數(shù)據(jù)源602可以包含測試源定義(例如,圖2的測試源定義201)中所定義的數(shù)據(jù)。即,測試源定義201的布局參數(shù)212可以指向數(shù)據(jù)源602中的源文件的位置。

輸出數(shù)據(jù)可以存儲回數(shù)據(jù)源602中或者執(zhí)行環(huán)境604可訪問的數(shù)據(jù)存儲系統(tǒng)616中,或者以其它方式使用。數(shù)據(jù)存儲系統(tǒng)616還可由開發(fā)環(huán)境618訪問,其中,在開發(fā)環(huán)境618中,開發(fā)人員620能夠開發(fā)、調(diào)試并測試圖。在一些實現(xiàn)中,開發(fā)環(huán)境618是用于將應(yīng)用開發(fā)為包括通過頂點(表示數(shù)據(jù)處理元件或數(shù)據(jù)集)之間的有向流(表示工作元素即數(shù)據(jù)的流動)而連接的頂點的圖的系統(tǒng)。例如,在通過引用而并入于此的名為“managingparametersforgraph-basedapplications”的美國公開號2007/0011668中更詳細地描述了這樣的環(huán)境。在通過引用而并入于此的名為“executingcomputationsexpressedasgraphs”的美國專利5,966,072中描述了用于執(zhí)行這樣的基于圖的計算的系統(tǒng)。根據(jù)本系統(tǒng)制作的圖提供了用于將信息輸入至圖組件所表示的各個處理中并從中輸出信息、用于使信息在處理之間移動以及用于定義處理的運行順序的方法。該系統(tǒng)包括從任何可用方法中選擇處理間通信方法(例如,根據(jù)圖中的流的通信路徑可以使用tcp/ip或unix域套接字或者使用共享內(nèi)存來在處理間傳遞數(shù)據(jù))的算法。

開發(fā)環(huán)境618包括用于存儲源代碼的代碼存儲庫622。源代碼和覆蓋規(guī)范(例如,圖2中的覆蓋規(guī)范220)可以由通過例如用戶界面來訪問開發(fā)環(huán)境的開發(fā)人員620開發(fā)。在一些實現(xiàn)中,圖和覆蓋規(guī)范可以存儲在代碼存儲庫622中。在一些實現(xiàn)中,圖存儲在代碼存儲庫622中,而覆蓋規(guī)范存儲在單獨的覆蓋存儲庫624中。

代碼存儲庫622和覆蓋存儲庫624之一或全部兩者可以與編譯器626進行通信。編譯器626可以(例如,從代碼存儲庫622)檢索圖,并將圖編譯到可執(zhí)行圖628中??蓤?zhí)行圖的示例包括圖4a-d中所示的圖400a-d??蓤?zhí)行圖628可以與從代碼存儲庫622中檢索到的原始圖分離。作為編譯的一部分,編譯器626可以考慮覆蓋規(guī)范。編譯器可以接受覆蓋規(guī)范作為輸入,編譯器被配置為生成各自與覆蓋規(guī)范中所定義的插入相對應(yīng)的一個或多個組件??蓤?zhí)行圖包括與原始圖的組件和流中的至少一部分相對應(yīng)的組件和流??蓤?zhí)行圖還包括所生成的插入組件。

開發(fā)環(huán)境618可以包括用于執(zhí)行可執(zhí)行圖628的測試執(zhí)行環(huán)境630。一旦編譯器626編譯圖,就可以執(zhí)行可執(zhí)行圖628。執(zhí)行可執(zhí)行圖628可以包括:當數(shù)據(jù)(例如,工作元素或數(shù)據(jù)記錄)在組件之間流動時,執(zhí)行與可執(zhí)行圖628的組件、插入和有向流相關(guān)聯(lián)的組件。在一些實現(xiàn)中,測試執(zhí)行環(huán)境630在不修改存儲在代碼存儲庫622中的原始圖的源代碼或者存儲在覆蓋存儲庫624中的源代碼的情況下執(zhí)行可執(zhí)行圖628。測試執(zhí)行環(huán)境可以是可通過開發(fā)環(huán)境618的接口而訪問的,或者可以具有其自身的接口。接口可被配置為顯示與執(zhí)行相關(guān)的信息。接口還可被配置為顯示與插入相關(guān)的信息(例如,探測器正在監(jiān)視或保存的數(shù)據(jù)、或者測試源正在插入的數(shù)據(jù))。測試執(zhí)行環(huán)境630可以使得開發(fā)人員620能夠多次執(zhí)行可執(zhí)行圖628并在執(zhí)行之間修改可執(zhí)行圖628的各方面。

在一些實現(xiàn)中,開發(fā)人員620從代碼存儲庫622選擇圖1中的圖100。開發(fā)人員620還從覆蓋存儲庫624選擇圖2中的覆蓋規(guī)范200。在一些實現(xiàn)中,代替選擇覆蓋規(guī)范200,開發(fā)人員620可以從覆蓋存儲庫624中的多個覆蓋規(guī)范選擇插入定義。開發(fā)人員620指示編譯器626編譯圖。作為編譯的一部分,編譯器626考慮覆蓋規(guī)范200并創(chuàng)建可執(zhí)行圖628??蓤?zhí)行圖628的示例是圖4a-d中的圖400a-d,其包括覆蓋規(guī)范200中所定義的插入。然后在測試執(zhí)行環(huán)境620中執(zhí)行可執(zhí)行圖628。

在執(zhí)行期間或之后,開發(fā)人員620可以觀察與可執(zhí)行圖628組件、插入和流的執(zhí)行相關(guān)的信息。例如,簡要地參考圖4a-d,開發(fā)人員620可以觀察到探測器插入420所監(jiān)視和存儲的數(shù)據(jù)是不正確的或不期望的。開發(fā)人員620可以從覆蓋存儲庫624選擇定義被配置為監(jiān)視從重定格式組件408流出的數(shù)據(jù)的探測器的探測器插入定義、以及定義被配置為監(jiān)視從按表達式進行過濾組件410流出的數(shù)據(jù)的探測器的探測器插入定義。開發(fā)人員620可以分析這兩個探測器所采集到的數(shù)據(jù)來判斷是從重定格式組件408輸出的數(shù)據(jù)還是從按表達式進行過濾組件410輸出的數(shù)據(jù)導(dǎo)致了從收集組件112輸出的數(shù)據(jù)是不正確的或不期望的。

繼續(xù)該示例,開發(fā)人員620可以判斷為從按表達式進行過濾組件410輸出的數(shù)據(jù)是不正確的或不期望的。與其調(diào)試存在于按表達式進行過濾組件410上游的所有組件(例如,過濾組件403、排序組件404、以及復(fù)制組件406)來判斷不正確數(shù)據(jù)的原因,開發(fā)人員620可以作為替代而選擇向收集組件412提供經(jīng)驗證的數(shù)據(jù)(例如,被驗證為正確的數(shù)據(jù))。開發(fā)人員620可以從覆蓋存儲庫624選擇定義被配置為向收集組件112提供數(shù)據(jù)的測試源的測試源插入定義。如果開發(fā)人員620關(guān)注于調(diào)試圖400ad-d中的位于按表達式進行過濾組件410下游的組件,則該方法可以是適當?shù)?。這種方法可以通過減少圖組件的重復(fù)執(zhí)行來節(jié)省系統(tǒng)資源。

在一些實現(xiàn)中,覆蓋規(guī)范不會作為文件永久地存儲在代碼存儲庫622或覆蓋存儲庫624中。相反,由開發(fā)人員620(例如,通過用戶界面)開發(fā)覆蓋文件中通常將會包括的信息(例如,插入定義),并且將該信息臨時地存儲在存儲器中。然后將覆蓋信息傳遞至編譯器(例如,圖3中的308)或保存狀態(tài)管理器(例如,圖5中的508)。

圖7是示出調(diào)試過程700的流程圖。接收第一圖(例如,圖1中的圖100)(702)。第一圖包括組件和流。組件表示對數(shù)據(jù)記錄進行的操作,并且流表示組件之間的數(shù)據(jù)記錄的流動。組件可以包括圖1所示的過濾組件103、排序組件104、復(fù)制組件106、重定格式組件108、按表達式進行過濾組件110、以及收集組件112。流可以包括復(fù)制-重定格式流116和收集-輸出數(shù)據(jù)宿流118。

接收定義一個或多個插入的規(guī)范(例如,覆蓋規(guī)范)(704)。規(guī)范可以是圖2所示的覆蓋規(guī)范200。規(guī)范可以包括一個或多個插入定義(例如,測試源定義201和探測器定義213)。插入定義可以包括(針對測試源定義的)名稱、上游端口、下游端口、插入類型、原型路徑以及布局參數(shù)。上述一個或多個插入各自與第一圖的流相關(guān)聯(lián)。插入可以是探測器和測試源。

生成各自與所定義的一個或多個插入之一相對應(yīng)的一個或多個組件(706)。插入組件的示例包括圖4a-d中的測試源插入422和探測器插入420。測試源插入422與圖100的復(fù)制-重定格式流116相關(guān)聯(lián),并且探測器插入420與圖100的收集-輸出數(shù)據(jù)宿流118相關(guān)聯(lián)。

生成包括與第一圖的組件和流中的至少一部分相對應(yīng)的組件和流的第二圖。第二圖還包括生成的一個或多個的組件。圖4a-d所示的圖400a-d是第二圖的示例。所生成的組件各自與第一圖的特定流相關(guān)聯(lián)。第二圖包括與這些特定流相對應(yīng)的流,并且所生成的組件各自與其在第二圖中的各個相應(yīng)流相關(guān)聯(lián)。例如,參考圖400a-d,測試源插入422與流416相關(guān)聯(lián),其中,流416與圖1的第一圖100的流116相對應(yīng)。測試源插入422向重定格式組件408提供數(shù)據(jù),其中,重定格式組件408與第一圖100的重定格式組件108相對應(yīng)。探測器插入420與流418相關(guān)聯(lián),其中,流418與第一圖100的流118相對應(yīng)。探測器插入420監(jiān)視從收集組件412傳遞的數(shù)據(jù),其中,收集組件412與第一圖100的收集組件112相對應(yīng)。在不修改第一圖100的情況下生成并執(zhí)行第二圖。

雖然我們描述了可以編譯圖和覆蓋規(guī)范以創(chuàng)建包括覆蓋文件所定義的插入的第二圖的的編譯器(例如,圖3的編譯器308和圖5的編譯器512),但是在一些實現(xiàn)中,不編譯圖和覆蓋規(guī)范。例如,可以直接執(zhí)行圖和覆蓋規(guī)范,而無需編譯。解釋器可以通過將每個語句翻譯為已經(jīng)編譯成機器代碼的一個或多個子例程的序列來執(zhí)行圖和覆蓋規(guī)范。

雖然我們描述了探測器和測試源形式的插入,但是在一些實現(xiàn)中,插入可以呈現(xiàn)其它形式。插入可以廣泛地用于在圖的某一點上注入數(shù)據(jù),并從圖的某一點拉取數(shù)據(jù)。例如,插入可被設(shè)計為監(jiān)視傳遞通過圖的流的數(shù)據(jù)的質(zhì)量。如果數(shù)據(jù)質(zhì)量降到閾值以下,則用戶可以接收自動化警告??梢栽诿绹暾埿蛄衳yz(代理人案卷07470-0322001)中找到插入的更多描述,其內(nèi)容通過引用而全文并入于此。

上述的調(diào)試方法可以使用執(zhí)行合適軟件的計算系統(tǒng)來實現(xiàn)。例如,該軟件可以包括在一個或多個編程或可編程計算系統(tǒng)(可以具有諸如分布式、客戶端/服務(wù)器或網(wǎng)格式等的各種架構(gòu))上執(zhí)行的一個或多個計算機程序中的過程,其中該一個或多個編程或可編程計算系統(tǒng)各自包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和/或非易失性存儲器和/或存儲元件)、至少一個用戶接口(用于使用至少一個輸入裝置或端口來接收輸入,并且用于使用至少一個輸出裝置或端口來提供輸出)。該軟件可以包括例如提供與圖的設(shè)計、配置和執(zhí)行有關(guān)的服務(wù)的較大程序的一個或多個模塊??梢詫⒊绦虻哪K(例如,圖的元素)實現(xiàn)為數(shù)據(jù)結(jié)構(gòu)或符合數(shù)據(jù)存儲庫中所存儲的數(shù)據(jù)模型的其它有組織數(shù)據(jù)。

可以將軟件設(shè)置在諸如(利用通用或?qū)S每删幊逃嬎銠C可讀取的)cd-rom或其它計算機可讀介質(zhì)等的有形、非暫時性介質(zhì)上、或者經(jīng)由網(wǎng)絡(luò)的通信介質(zhì)(例如,以編碼在傳播信號中的形式)傳遞至執(zhí)行該軟件的計算系統(tǒng)的有形、非暫時性介質(zhì)。可以在專用計算機上、或者使用諸如協(xié)處理器或現(xiàn)場可編程門陣列(fpga)或?qū)S锰囟ㄓ猛炯呻娐?asic)等的專用硬件來進行一些處理或所有功能。可以以利用不同的計算元件來進行軟件所指定的計算的不同部分的分布式方式來實現(xiàn)該處理。優(yōu)選將每一個這種計算機程序存儲在通用或?qū)S每删幊逃嬎銠C可讀取的存儲裝置的計算機可讀存儲介質(zhì)(例如,固態(tài)存儲器或介質(zhì)、或者磁性或光學(xué)介質(zhì))上或者下載至該存儲介質(zhì),以在利用計算機讀取存儲裝置介質(zhì)以進行這里所述的處理的情況下配置計算機并使該計算機進行工作。本發(fā)明的系統(tǒng)還可被視為作為配置有計算機程序的有形、非暫時性介質(zhì)來實現(xiàn),其中如此配置成的介質(zhì)使計算機以特定的預(yù)定義方式進行工作,以進行這里所述的處理步驟中的一個或多個。

已經(jīng)描述了本發(fā)明的許多實施例。然而,應(yīng)當理解,前述描述旨在示出而不是限制本發(fā)明的范圍,該范圍由所附權(quán)利要求書的范圍限定。因此,其它實施例也在所附權(quán)利要求書的范圍內(nèi)。例如,可以在不偏離本發(fā)明的范圍的情況下作出各種修改。另外,上述步驟中的一些可以是與順序無關(guān)的,因此可以按照與所描述的順序不同的順序執(zhí)行。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
满城县| 铁力市| 东海县| 会宁县| 清丰县| 石河子市| 大竹县| 海门市| 邢台市| 巫溪县| 秦安县| 云霄县| 客服| 古交市| 庆安县| 云龙县| 禹城市| 嫩江县| 浦江县| 财经| 靖安县| 昌图县| 阿拉善盟| 盈江县| 青海省| 杭锦后旗| 深圳市| 芦溪县| 新龙县| 宁强县| 友谊县| 阿瓦提县| 韩城市| 石台县| 汉中市| 勐海县| 威信县| 尼木县| 西充县| 含山县| 九寨沟县|