專利名稱:用戶增強的反向工程的制作方法
技術領域:
以下一般涉及代碼庫、二進制代碼和數據庫反向工程及代碼庫、二進制代碼和數據庫的視覺表示的領域。
背景技術:
通常說來,圖像具有數千字。對于試圖在預先存在的代碼庫上工作或以其它方式創(chuàng)建代碼庫二進制代碼或反向工程數據庫的視覺表示的人而言,這種說法尤其正確。隨著計算機硬件和軟件功能性的進步,代碼庫已經變得越來越大且復雜。通常,很多不同的程序員將利用單個代碼庫或項目。這些人可能不熟悉代碼庫的所有元素,因此可能需要代碼庫的總“圖”,或者他們可能需要關于代碼庫內的特定結構的信息。為了幫助具有該問題的人,已經開發(fā)出多種程序,其以流程圖、運行圖、時序圖、樹等方式提供代碼庫的圖形表示。 通??蓪⑻峁┐a庫的圖形表示的這些程序分成兩組靜態(tài)分析制圖程序和運行時間分析制圖程序。靜態(tài)分析程序更加普遍,但它們在很多方面受到限制。經歷靜態(tài)分析的代碼庫可能具有很多靜態(tài)分析不能解決的“邊界”。此外,靜態(tài)分析不能確定代碼庫的實際功能,且它們可能不能定位錯誤和類似物。此外,靜態(tài)代碼庫可能不能聚焦在代碼庫的概覽以及特定類、函數、調用、算法、元素、值、參數、序列、分量、活動等。類似,運行時間表示具有一系列問題。如果系統(tǒng)具有錯誤或差錯,使得運行不能完成,則運行時間表示可能失敗。此外,該運行僅可跟隨動作的特定過程,且可能不會提供全部表示。其它問題可與靜態(tài)和動態(tài)表示的任一個或兩者相關聯(lián)。因此,需要克服靜態(tài)和運行時間代碼庫圖中的問題的系統(tǒng)和方法。
發(fā)明內容
在一實施例中,為了克服與代碼庫、數據庫模式、二進制數據庫等的靜態(tài)和運行時間圖形表示相關聯(lián)的限制,可向用戶提供在代碼庫、數據庫模式、二進制數據庫等的處理期間“聚焦”圖形表示的生成的選項。例如,在大代碼庫的圖形生成期間,用戶可選擇一個或多個類、項、算法、值、項、協(xié)議、序列、分量、活動、使用案例、進程等以限制圖形表示生成的范圍。例如,在代碼庫的圖形表示的生成期間,用戶可暫停圖形生成,提供去除或選擇圖形生成的一個或多個元素的輸入,這可將生成的剩余部分限制在僅與期望元素有關的那些子元素。在另一個實施例中,圖形生成可遇到一個或多個預定的邊界條件。在遇到邊界條件后,圖形表示的生成可確定在沒有附加指令的情況下它不能在預定的一組要求內完成圖形生成。因此,生成可繼續(xù)而不完成邊界條件,直到生成已經創(chuàng)建它能創(chuàng)建的每個元素的表示,或者生成可在遇到邊界條件時暫停并在繼續(xù)生成的剩余部分之前請求用戶輸入。可按各種方式定義邊界條件。在一個實施例中,缺少存儲器可能是邊界條件。在另一個實施例中,關于生成將花費特定時間量的確定是邊界條件。在又一個實施例中,關于代碼的一個或多個部分需要來自外部數據庫或源的輸入的確定可以是邊界條件。在另一個實施例中,當有代碼庫、數據庫模式、二進制數據庫等的可向函數、進程、調用等提供解的多個部分時,系統(tǒng)可向用戶提示可能的解且用戶然后可選擇期望的解。此外,用戶可向反向工程提供指令,使得生成將特定限制視為邊界條件。換言之,邊界條件也可以是用戶定義的。本領域的技術人員將意識到以上不是邊界條件的窮盡列表,而是僅僅提供幾個示例以便一般地描述用戶增強的反向工程。在另一個實施例中,用戶增強的反向工程可包括在圖形表示的生成期間實時接收來自用戶的輸入的可能性并且還可包括檢測一個或 多個預定邊界條件并向用戶提供用于輸入邊界條件相關信息的界面的能力。因此,在圖形表示的生成期間,用戶可向系統(tǒng)提供輸入以完成先前不可能的生成,并且用戶還可在生成本身期間指導圖形生成,因此聚焦在代碼庫、數據庫模式、二進制數據庫等的與用戶有關的部分上。在另一個實施例中,可在代碼庫等的靜態(tài)生成期間和/或在代碼庫等的運行時間生成期間提供上述實施例中的任一種。在任意類型的生成期間,構想到可提供用于信息輸入的用戶界面以便允許用戶聚焦代碼庫、數據庫模式、二進制數據庫等或允許用戶滿足對預先確定的邊界條件的解的請求。
圖I描繪了其中可實現所公開的主題的示例計算機系統(tǒng)。圖2描繪用戶增強的反向工程的各方面的操作的流程圖。圖3描繪在用戶增強的反向工程中的邊界條件的各方面的操作的流程圖。圖4描繪代碼庫、數據庫模式、二進制數據庫等的采樣圖形表示,其中代碼庫、數據庫模式、二進制數據庫等具有邊界條件。圖5 (a)- (b)描繪代碼庫、數據庫模式、二進制數據庫等的采樣圖形表示,其中已經從圖形生成中排除代碼庫、數據庫模式、二進制數據庫等的一部分。圖6描繪克服代碼庫、數據庫模式、二進制數據庫等中的邊界條件的示例方法的流程圖。圖7描繪利用活動環(huán)境來指導代碼庫、數據庫模式、二進制數據庫等的圖形表示的生成的方法的一個實施例的流程圖。圖8描繪具有用于用戶增強的反向工程的指令的計算機可讀介質的一個實施例的流程圖。
具體實施例方式盡管在不包括所有其它選項的情況下在以下說明書中一般地引用“代碼庫”,然而應理解本文公開的實施例包括任何其它類的代碼庫、計算機可讀介質上實現的指令、數據庫模式、二進制模式、數據庫、代碼數據庫、代碼等。在一個實施例中,用戶增強的反向工程包括用于創(chuàng)建代碼庫、數據庫模式、二進制數據庫等的圖形表示的計算機實現的交互式方法。該方法包括生成代碼庫、數據庫模式、二進制數據庫等的第一部分的圖形表示;確定存在預定的邊界條件;向用戶提示與邊界條件有關的輸入;接收關于邊界條件的用戶輸入;以及生成所述代碼庫、數據庫模式、二進制數據庫等的第二部分的圖形表示。
在另一個實施例中,用戶增強反向工程包括用于創(chuàng)建代碼庫的圖形表示的計算機實現的交互式方法。該方法包括審閱代碼庫的第一部分;生成代碼庫的第一部分的圖形表示;在顯示器上顯示代碼庫的第一部分的圖形表示;在該圖形表示的第一部分的生成期間接收輸入,其中該輸入包括所述圖形表示的生成的中斷;以及恢復圖形表示的生成,其中所述恢復的生成從圖形表示中排除代碼庫的第二部分。在另一個實施例中,用戶增強的反向工程包括其上存儲指令的計算機可讀存儲介質,所述指令用于在處理器上執(zhí)行。這些指令包括用于進行以下操作的指令審閱代碼庫的第一部分;生成代碼庫的第一部分的圖形表示;接收輸入,其中該輸入改變圖形表示的范圍;審閱代碼庫的第二部分;生成代碼庫的第二部分的圖形表示;以及顯示代碼庫的圖形表不。用于增強的反向工程的各實施例可以在一個或多個計算機系統(tǒng)上執(zhí)行。圖I及以下討論旨在提供可在其中實現所公開的主題的合適計算環(huán)境的簡要概括描述。貫穿本說明書使用的術語電路可包括諸如硬件中斷控制器、硬盤驅動器、網絡適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件。術語“電路”還可包括微處理器、專用集成電路、和/或一個或多個邏輯處理器,例如由固件和/或軟件配置的多核通用處理單元的一個或多個核。邏輯處理器可由指令來配置,指令具體化可用于執(zhí)行從例如RAM、R0M、固件和/或大容量存儲等存儲器加載的功能的邏輯。在其中電路包括硬件和軟件的組合的示例實施例中,實現者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由邏輯處理器執(zhí)行的機器可讀代碼。因為本領域技術人員可以明白現有技術已經進化到硬件實現的功能或軟件實現的功能之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實現此處描述的功能只是一個設計選擇。換言之,由于本領域的技術人員可以理解軟件進程可被變換成等效的硬件結構,且硬件結構本身可被變換成等效的軟件進程,因此選擇硬件實現或是軟件實現留給了實現者?,F在參考圖1,描繪了示例性計算系統(tǒng)100。計算機系統(tǒng)100可包括邏輯處理器102,例如,執(zhí)行核。盡管示出了一個邏輯處理器102,但在其他實施例中,計算機系統(tǒng)100可具有多個邏輯處理器,例如每一處理器基板有多個執(zhí)行核,和/或各自可具有多個執(zhí)行核的多個處理器基板。如圖I所示,各種計算機可讀存儲介質110可由一個或多個系統(tǒng)總線互聯(lián),系統(tǒng)總線將各種系統(tǒng)組件耦合到邏輯處理器102。系統(tǒng)總線可以是幾種類型的總線·結構中的任何一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用各種總線體系結構中的任一種的局部總線。在示例實施例中,計算機可讀存儲介質110可以包括例如隨機存取存儲器(RAM) 104、存儲設備106 (例如電機硬盤驅動器、固態(tài)硬盤驅動器等)、固件108(例如閃速RAM或ROM)、以及可移動存儲設備118 (例如⑶-ROM、軟盤、DVD、閃速驅動器、夕卜部存儲設備等)。本領域的技術人員應當理解,可使用其他類型的計算機可讀存儲介質,如磁帶盒、閃存卡、和/或數字視頻盤。計算機可讀存儲介質110可提供對計算機100的處理器可執(zhí)行指令122、數據結構、程序模塊和其他數據的非易失性和易失性存儲?;据斎?輸出系統(tǒng)(BIOS) 120可被存儲在固件108中,它包含幫助在諸如啟動期間在計算機系統(tǒng)100內的各元件之間傳遞信息的基本例程。若干個程序可被存儲在固件108、存儲設備106、RAM 104和/或可移動存儲設備118上,并且可由邏輯處理器102來執(zhí)行,包括操作系統(tǒng)和/或應用程序。
命令和信息可由計算機100通過輸入設備116來接收,輸入設備可包括但不限于鍵盤和定點設備。其它輸入設備可以包括話筒、操縱桿、游戲手柄、掃描儀等等。這些和其它輸入設備常通過耦合到系統(tǒng)總線的串行端口接口連接到邏輯處理器102,但也可通過其它接口連接,如并行端口、游戲端口或通用串行總線(USB)。顯示器或其他類型的顯示設備也可經由諸如視頻適配器等可以是圖形處理單元112的一部分或可連接到圖形處理器單元112的接口來連接到系統(tǒng)總線。除了顯示器之外,計算機通常包括其他外圍輸出設備(未示出),如揚聲器和打印機。圖I的示例性系統(tǒng)還可包括主適配器、小型計算機系統(tǒng)接口(SCSI)總線和連接到SCSI總線的外部存儲設備。計算機系統(tǒng)100可以使用至一個或多個遠程計算機的邏輯連接在聯(lián)網環(huán)境中工作。遠程計算機可以是另一計算機、服務器、路由器、網絡PC、對等設備或其它常見的網絡節(jié)點,并且通常包括上面關于計算機系統(tǒng)100所述的許多或全部元件。當在LAN或WAN聯(lián)網環(huán)境中使用時,計算機系統(tǒng)100可通過網絡接口卡(NIC) 114連接至LAN或WAN。NIC 114 (可以是內部的或外部的)可被連接到系統(tǒng)總線。在聯(lián)網環(huán)境 中,相對于計算機系統(tǒng)100或其部分所描述的程序模塊可以被存儲在遠程存儲器存儲設備中。可以理解,所描述的網絡連接是示例性的,且可以使用在計算機之間建立通信鏈路的其他手段。此外,盡管可想到的是可實現的所公開的主題的許多實施例尤其適用于計算機化的系統(tǒng),但是在本文檔中不意味著將所公開的主題限于這些實施例。圖2描繪邏輯流程圖200的一種可能,描繪用戶增強的反向工程的實現。圖2描繪基于輸入201在202發(fā)起圖形生成。在202發(fā)起的圖形生成包括本領域已知的代碼庫的任何視覺表示。因此,在一個實施例中,圖形生成可以是例如流程圖、運行圖、時序圖、時序圖表、樹圖或圖表、曲線圖、圖像或表示代碼庫或代碼庫的功能性的任何其它方式。在202發(fā)起的圖形生成的結構也可以是本領域中已知的任何結構。圖形生成可以例如跟蹤代碼庫的一個或多個特定方面。圖形表示可以是任何上述圖形表示,該圖形表示可繪制特定進程、值、元素、類、序列、分量、時間幀、活動、使用案例、參數、功能性、子進程、元素、輸入、輸出、項、算法等,且它可表示輸入、輸出、進程、序列、元素、值、參數、功能性、子進程、項等的時序,且還可基于存儲器、內部關系、外部關系或以本領域中已知的任何其它方式來構造。在實施例中,在202發(fā)起圖形生成之前,可提供一個或多個輸入201以指導用戶實現的反向工程程序的一個或多個方面。例如,一個或多個輸入可用于在發(fā)起生成之前將圖形表示的生成聚焦在特定元素上。輸入201可以是可縮小、指導、聚焦或以其它方式改變圖形表示的生成的任何值。作為另一個示例,對用戶增強的反向工程的輸入201可以是用戶期望的圖形表示的類型的選擇,例如,時序圖或流程圖。此外,輸入201可限定圖形生成的結構。在一個實施例中,用戶可提供一個或多個輸入201以建立圖形生成的邊界條件。例如,一個或多個邊界條件可以是預先確定的。在這一實施例中,對圖形生成的輸入可導致用戶增強的反向工程增加邊界條件。作為另一個實施例,可利用輸入201來改變先前設定的邊界條件。作為一個非限定的特定示例,用戶可在系統(tǒng)將確定其已經到達邊界條件之前選擇分配給圖形生成的時間量。在這一示例中,用戶可指定5分鐘的時間限制,其中當確定圖形生成會花費多于邊界條件中分配的時間時,用戶增強的反向工程向用戶提供界面,該界面允許他們以一種或多種方式指導圖形表示的生成。在一個實施例中,無論圖形生成的結構、圖形表示的類型、預先選擇的邊界條件及任何其它最初輸入201如何,在202發(fā)起圖形生成。在發(fā)起202之后,圖形生成可包括用戶界面204。用戶界面204允許對圖形生成的信息輸入。用戶可在生成期間和/或生成完成之后輸入對圖形生成的輸入。用戶界面204可通過從本領域中已知的用戶、程序或系統(tǒng)接收輸入的任何方式來實現。例如,用戶界面可允許經由鼠標點擊、鍵盤、操縱桿中的一個或多個、通過語音激活、觸摸墊或觸摸屏、有線或無線連接或本領域的技術人員已知的任何其它方式輸入信息。在圖形表示的生成期間,可在顯示器205上顯示生成的已完成部分。例如,每當用戶增強的反向工程程序確定例如流程圖中的下一步,該步可顯示在輸出設備上,205。輸出設備可以是本領域中已知的用于向用戶顯示視覺信息的任何設備。在一個實施例中,輸出被顯示在屏幕上或被投影,使得可看到圖形生成。被顯示的圖形生成的部分(205)可與用戶界面(204)相關聯(lián)。例如,在一個實施例中,對于圖形表示中顯示的每個元素,輸入可與該元素相關聯(lián)。例如,如果已經構建流程圖,且已經顯示流程圖中的5步,則用戶可在五步中的任一個上移動鼠標并點擊,由此提供與流程圖的所選圖形元素相關聯(lián)的輸入。該特定元素的選擇可提供關于該特定元素的來自用戶的全部輸入,或者它可用于限制用戶的可能輸入。作為用戶界面204的另一個非限制性示例,可提供單個用戶界面204,不管圖形表示上顯示的元素的數量如何。例如,可以存在供用戶在任意時間暫停圖形生成的選項。在暫停之后,可提供附加的用戶輸入,以引導、聚焦或以其它方式提供對圖形生成的輸入。因此,當運行用戶增強的反向工程200時,其配置成在206接收任意上述輸入。如果在206沒有接收到輸入,則生成過程可繼續(xù)。然而,如果在206接收到輸入,則輸入可具有與其相關聯(lián)的圖形生成的中斷208。作為另一個示例,輸入可被配置成中斷圖形生成208。圖形生成的中斷208可以是導致系統(tǒng)暫停審閱代碼庫并且還可使其停止向圖形顯示增加圖形元素的中斷。盡管可在208中斷圖形生成,但用戶增強的反向工程可在中斷點之前保持與圖形生成相關聯(lián)的信息。在圖形生成的中斷208之后,用戶增強的反向工程可從用戶請求附加輸入,或者從用戶界面提供的輸入204可足以發(fā)起恢復的圖形生成210。例如在206接收的輸入可僅包括中斷208。在這一示例中,可提示用戶提供附加輸入以指導生成。 然而,在另一個實施例中,中斷輸入還可被配置成指導在210處恢復的圖形表示的生成。例如,如果用戶通過點擊它選擇流程圖的單個元素,則系統(tǒng)可中斷圖形表示的最初生成,然后恢復圖形生成,其中經恢復的生成聚焦在流程圖的被點擊的方面。因此,在接收足以恢復圖形生成的用戶輸入之后,可向用戶提供在210處恢復圖形生成的選項,或者,作為另一個示例,圖形生成可在210處自動恢復。在任一情況下,生成可恢復,且在用戶期望包括附加輸入的情況下將再次向用戶提供上述用戶界面。在圖形表示生成期間的任何時間,用戶增強的反向工程可遇到212處的預先確定的邊界條件。在一個實施例中,預先確定的邊界條件可以是生成不能完成圖形表示的任何情況。例如,如果經歷圖形生成的代碼庫需要不可用于代碼庫的外部輸入,則圖形生成可確定有邊界條件212。作為另一個示例,如果在代碼庫內,有對調用、問題、算法等的若干可能解,則系統(tǒng)可確定有邊界條件212。防止圖形表示完成的任何其它限制將是本領域的技術人員已知的,且這些限制被包含于此。在附加實施例中,可基于其它因素預先確定邊界條件,諸如提供圖形表示花費的時間或存儲器的量或顯示器上的空間。例如,如果完成生成的一部分(包括但不限于全部)的時間量超過預先確定的量,則用戶增強的反向工程可確定有邊界條件212。在確定有邊界條件212之后,可向用戶提示解214。作為一個示例,界面可開啟、彈出、變?yōu)榛顒拥龋谏苫謴椭八枰脩糨斎胄畔?。作為提示?14的一個示例,圖形生成可運行,且用戶增強的反向工程200可確定在代碼庫中存在對調用、元素、進程、算法等的有限數量的可用解。作為第一示例,可向用戶提供多個可能的解,并要求用戶選擇哪個是適當解。在這一示例中,用戶的輸入被僅限于在代碼庫的背景內“有意義”的那些解。·在提示解214的另一個實施例中,可按一種或多種方式限制來自用戶的輸入。例如,輸入的類型可僅限于數字解或具有與其關聯(lián)的串、函數、進程、元素、值等的解。一般而言,可按可降低來自用戶的不適當輸入的可能性的任何方式來限制對用戶的提示。在提示解214的附加實施例中,對可能的輸入沒有設置任何限制。在這一示例中,用戶可提供可用于它們的任何響應。在214處提示解并且通過用戶輸入之后,在216處接收輸入。如果可能,則圖形表示的生成將繼續(xù)216。作為示例,如果在214處的解足以繼續(xù)生成216,則在提供用戶界面之前生成將繼續(xù),并且生成將繼續(xù)直到接收用戶輸入或在212處遇到另一個邊界條件,或者如果沒有附加用戶輸入或沒有遇到邊界條件,則在218處生成將完成。在216處接收的解可按本領域已知的任何方式影響生成前進。應注意,圖2描繪用戶增強的反向工程的一個示例。在另一個實施例中,可不提供在204處的用戶界面,且生成將繼續(xù),除非遇到邊界條件。在另一個實施例中,生成在預先確定的邊界條件處將不會暫停,且將僅包括可中斷并影響該生成的用戶界面204。對圖2描繪的元素的其它增加、或去除或重新排序被視為在用于增強的反向工程的范圍內,且對圖2的元素的其它布置可由本領域的技術人員理解。圖3描繪具有不同于以上參考圖2描述的邏輯的用戶增強的反向工程的另一個實施例。例如,在一個實施例中,可在254利用輸入252發(fā)起圖形生成。如上所指出的,輸入252可限制生成等的范圍,它們可確定圖形輸出的類型且它們可限定系統(tǒng)的邊界條件。用于用戶增強的反向工程的任何其它輸入可被包含在輸入252中。在接收輸入252并在254發(fā)起圖形生成之后,系統(tǒng)然后可執(zhí)行圖形生成256。在256處的圖形生成期間,可到達一個或兩個或十個或任一其它數量的邊界條件。在一個實施例中,在每次確定有邊界條件時,圖形生成可不暫停。相反,可僅在生成已經滿足輸入的要求或者已經以其它方式對代碼的第一部分執(zhí)行盡可能多的圖形生成之后暫停圖形生成。在一個實施例中,執(zhí)行盡可能多的生成而沒有使用戶輸入對邊界條件作出響應可減少用戶輸入不適當信息的可能性。在圖形生成256之后,用戶增強的反向工程可提供圖形表示,示出該生成和代碼庫中的邊界條件258的一個或多個實例。在一個實施例中,可通過本領域中已知的任意方式在顯示器上標識每個邊界條件258。在標識邊界條件258之后,可提示用戶檢查邊界條件260。在一個實施例中,每個界面可提供對每個邊界條件的訪問并允許通過用戶的輸入。可參考圖2以上述方式中的任一種限制通過用戶的輸入。用戶可選擇以滿足圖形生成突出顯示的每個邊界條件或者他們可選擇地提供對邊界條件的解。因此,用戶可選擇地提供對于任意數量的邊界條件的輸入。當用戶響應于在260處的提示輸入對邊界條件的解時,在262,用戶增強的反向工程可接收解。在接收所有的解之后,或者基于來自用戶的輸入,用戶增強的反向工程可在具有對邊界條件的解的部分上執(zhí)行代碼庫的圖形生成。在生成262中,可發(fā)現新的邊界條件。在260,可再次向用戶進行提示,以滿足那些邊界條件。換言之,進程可繼續(xù)直到沒有更多的邊界條件或直到用戶已經對他希望的所有的邊界條件提供輸入,在那時將完成圖形生成264。圖4描繪系統(tǒng)不能確定代碼庫中的調用的解的邊界條件的示例。在圖4中,進程的圖形生成300發(fā)生,且圖4的流程圖可以是例如代碼庫的進程的圖形表示300。生成可確定進程的開始點302。從開始點302,生成接下來可確定進程300已經與進程A相關聯(lián),·304。進程A可基于在304處對進程A的“是”或“否”解,在306輸出值I和在312輸出值
2。306處的值I和312處的值2可由308處的算法B和316處的算法A利用。然而,在該點,生成可確定它需要來自外部數據庫I的值,310。如果在310來自外部數據庫I的信息不可用于生成,則生成可確定它不能完成圖形表示300。在這種情況下,用戶增強的反向工程可提示用戶在320處輸入以便完成圖形生成。圖4描繪由于在310處外部數據庫I中包含的信息不可用于用戶增強的反向工程而不能完成圖形生成的實施例。如上所述,這僅為一個邊界條件,且該圖不旨在限制可能出現的各種類型的邊界條件。如上所述,用戶、程序員等可選擇任意條件并預先確定所選的條件具有與之相關聯(lián)的邊界條件。此外,本領域的技術人員將意識到用戶增強的反向工程可被配置成將諸如時間、存儲器、丟失元素、一組可能元素等的任意條件納入作為預先確定的邊界條件。圖5 (a)_圖5 (b)描繪基于來自用戶的輸入聚焦圖形生成的結果的示例實施例。圖5 (a)- (b)表示進程中的圖形生成的顯示,其中圖形生成包括開始點402。如上參考圖2所指出的,當圖形生成開始202時,可提供用于輸入的界面。盡管圖5 (a)- (b)中未描繪,但當創(chuàng)建圖5 (a)- (b)中的圖時,應理解向用戶提供用于輸入的界面。在404,可審閱代碼庫的第一層,并且顯示可包括示出若干進程的圖形生成。在圖5 (a)的示例中,描繪了進程A-YY。在圖5 (a),在404處的層I的圖形生成之后,用戶增強的反向工程接下來可轉到層2,406,并且開始該層的圖形生成。層2可包括代碼庫的任意元素且可按本領域中已知的任何方式來表示。然而,參考圖5(a),基于最初進程的數量,并且假設對于404處層I中的每個進程406處的層2中至少有兩個或三個元素,圖形顯示已經變大且笨重。圖5 (b)描繪用戶已經提供輸入之后的圖形表示。在圖5 (b),在408,用戶選擇層I的進程B。因此,對于生成余下部分,排除404處層I和406處層2的剩余部分。事實上,如圖5 (b)所描繪的,在408選擇進程B可排除所有的層3或與進程A或進程C至進程YY中的任一個有關的其它函數。因此,通過向用戶提供界面以中斷圖形生成并提供輸入并基于該輸入排除一部分代碼庫,可極大地降低圖形生成的復雜性、時間和混亂。
圖6描繪用于在用戶增強的反向工程期間對邊界條件進行響應的示例實施例的流程。在步驟502,用戶增強的反向工程可生成代碼庫的第一部分的圖形表示。生成代碼庫的第一部分502可包括接收用戶輸入以設置圖形表示的類型并設立或實現用戶界面以設置或改變邊界條件以聚焦生成等。生成還可包括審閱代碼,其中該審閱是靜態(tài)分析或運行時間分析,以及創(chuàng)建可在顯示器上顯示的代碼的圖形表示。在步驟504,用戶增強的反向工程可確定預定的邊界條件。邊界條件可由用戶或程序員限定,或者它們可出現在代碼本身內。在一個實施例中,邊界條件涉及存儲器或時間。在另一個實施例中,邊界條件涉及代碼本身內的多個可能的解,和/或邊界條件可涉及不能從諸如數據庫、程序等外部源獲得信息。其它邊界條件是可能的,且本領域的技術人員將理解上述不是限制性的而是僅提供邊界條件的幾個示例。步驟504調用邊界條件。應理解,在一個實施例中,發(fā)現存在多個邊界條件。用戶增強的反向工程可在解決邊界條件之前完成圖形表示的生成的任意部分。因此,在一個實施例中,如果在提示用戶提供對邊界條件的解之前發(fā)生全靜態(tài)生成,則用戶輸入較不可能 出錯。在步驟506,可提示用戶提供與在504發(fā)現存在的邊界條件有關的輸入。對用戶的提示可以在圖形顯示器上。提示可具有用戶可從中進行選擇的有限數量的選項,或者它可以是對輸入的開放請求。提示也可被限于一種類型的輸入,諸如特定長度的數字、字母、串或任意其它類型的輸入。本領域的技術人員將意識到以上不限于提示是什么或用戶可被提示做什么,相反僅僅提供與提示有關的一系列示例。在508,可接收來自用戶的輸入??砂幢绢I域中已知的任何方式提供用戶輸入,例如,經由鍵盤或鼠標、觸摸墊或觸摸屏、語音激活、有線或無線連接或任何其它方式。該輸入可與邊界條件有關且可按一種或多種方式影響圖形生成。例如,接收對邊界條件的解可允許用戶增強的反向工程構建出代碼庫的新部分的表示,或者它可聚焦生成,或者它可縮小圖形表示的范圍。在圖6的510,在一個實施例中可恢復圖形生成。在另一個實施例中,它可以不同的參數重新開始,或者它可保持先前生成的一部分并發(fā)起代碼庫的另一部分的新生成。第二部分可按任意方式縮小的再生成,經歷更廣闊的生成或聚焦。如上所述,可以有單個滿足的邊界條件,或者可滿足多個邊界條件。因此,生成的第二部分可與單個邊界條件的解有關,或者它可與多個邊界條件的解有關。圖7描繪用于用戶提供輸入以影響圖形生成的用戶增強的反向工程的示例實施例的流程圖。在步驟602,用戶增強的反向工程可生成代碼庫的第一部分的圖形表示。生成代碼庫的第一部分602可包括接收用戶輸入以設置圖形表示的類型,以設置或改變邊界條件,以設立或實現用戶界面,以聚焦生成等。生成還可包括審閱代碼,其中該審閱是靜態(tài)分析或運行時間分析,以及創(chuàng)建可在顯示器上顯示的代碼的圖形表示。在步驟604,用戶增強的反向工程可包括顯示代碼庫的第一部分的圖形表示604。該顯示可以是向用戶顯示信息的任何裝置或方式,諸如屏幕、投影、聲音等。該顯示可以是實時地或大致實時的顯示,使得當用戶增強的反向工程確定代碼庫的一個或多個元素應被包含在圖形生成中時,它們被顯示。在604,這可經由顯示器以及時的方式向用戶提供信息。在圖7的步驟606,可向用戶提供界面,其中該界面被配置成接收與圖形生成有關的輸入。該界面能夠以本領域中已知的任意方式接收輸入。例如,鼠標點擊、鍵盤輸入、有線或無線連接、觸摸墊或觸摸屏等可被配置成與界面一起使用。該界面也可與圖形生成的狀態(tài)相關聯(lián)。例如,當生成增加元素時,每個元素可變?yōu)榻换ナ剑蚩梢云渌绞奖话诮缑嬷校沟糜脩艨蛇x擇或以其它方式與生成的元素交互。界面606可包括對圖形生成的任意元素的解、增加或從中減去的輸入。輸入可按本領域中已知的任意方式影響圖形生成,包括聚焦生成、縮小生成或擴張生成的范圍。在步驟608,用戶增強的反向工程可在圖形表示的第一部分的生成期間經由界面接收輸入,其中該輸入包括圖形表示的生成的中斷。因此,在圖形表示本身的生成期間,用戶可按任何方式提供輸入并影響生成。輸入將中斷生成并允許生成的影響。該生成可被縮小、改變、擴張,元素可被排除或聚焦等。在一個實施例中,輸入根本不改變生成。以上充當幾個示例,且不限制輸入具有的影響的范圍。輸入還可改變邊界條件等。本領域的技術人員將認識到輸入對圖形表示的生成的影響的其它可能。在步驟610,圖形表示的生成可在中斷后恢復。經恢復的生成可排除一部分代碼庫,因此縮小生成的范圍。這可以是聚焦的或縮小的結果。
圖8描繪用戶增強的反向工程的示例實施例的流程圖。在步驟702,審閱代碼庫的第一部分。該審閱可包括確定代碼庫的元素的功能性或時序或任意其它方面。在審閱期間,圖形表示可與被審閱的代碼庫的元素相關聯(lián)。在步驟704,可構建代碼庫的第一部分的圖形表示。生成代碼庫的第一部分702可包括接收用戶輸入以設置圖形表示的類型,以設置或改變邊界條件,以設立或實現用戶界面,以聚焦生成等。生成還可包括審閱代碼,其中該審閱是靜態(tài)分析或運行時間分析,以及創(chuàng)建可在顯示器上顯示的代碼的圖形表示。在步驟706,可接收對用戶增強的反向工程的輸入,其中輸入改變圖形表示的范圍。例如,輸入可以是鼠標點擊、鍵盤輸入、有線或無線連接、觸摸墊或觸摸屏等可被配置成用作輸入。輸入可包括中斷且可按本領域中已知的方式影響生成的范圍。該生成可被縮小、改變、擴張,元素可被排除或聚焦等。在一個實施例中,輸入根本不改變生成。以上充當幾個示例,且不限制輸入具有的影響的范圍。輸入還可改變邊界條件等。在一個實施例中,對輸入的請求是對確定存在邊界條件的響應。因此,輸入可以是對邊界條件的解。本領域的技術人員將認識到輸入對圖形表示的生成的影響的其它可能。在步驟708,可審閱代碼庫的第二部分。該審閱可包括確定代碼庫的元素的功能性或時序或任意其它方面。在審閱期間,圖形表示可與被審閱的代碼庫的元素相關聯(lián)。代碼庫的第二部分可以是代碼庫中被輸入影響的任意部分。它可以是較小的部分、新部分、相同部分或其任意組合。第二部分可以是相同類型的圖形表示,或者它可按一種或多種方式不同。第二部分可涉及該生成本身期間的邊界條件或輸入。在710,該第二部分然后可經歷圖形表示的生成。這可包括關聯(lián)元素并在712準備用于顯示,其中顯示是如上所述本領域中已知的任意顯示。應該理解,此處所述的配置和/或方法在本質上是示例性的,且這些具體實施例或示例不被認為是限制性的。此處所述的具體例程或方法可表示任何數量的處理策略中的一個或多個。由此,所示出的各個動作可以按所示順序執(zhí)行、按其他順序執(zhí)行、并行地執(zhí)行等等。同樣,可以改變上述過程的次序。
另外,本發(fā)明的主題包括各種過程、系統(tǒng)和配置的組合和子組合、和此處所公開的 其他特征、功能、動作、和/或特性、以及其任何和全部等效物。
權利要求
1.一種用于創(chuàng)建代碼庫的圖形表示的計算機執(zhí)行的交互式方法,包括 生成所述代碼庫的第一部分的圖形表示; 確定一個或多個預定邊界條件存在; 提示用戶與所述一個或多個邊界條件有關的輸入; 接收關于所述一個或多個邊界條件的用戶輸入;以及 生成所述代碼庫的第二部分的圖形表示。
2.如權利要求I所述的方法,其特征在于,還包括向用戶提示用于所述一個或多個邊界條件中的每一個的多個選項,所述多個選項限制所述輸入。
3.如權利要求2所述的方法,其特征在于,還包括基于對所述一個或多個邊界條件中的每一個的可能解來選擇所述多個選項。
4.如權利要求I所述的方法,其特征在于,確定邊界條件存在包括確定沒有足夠的存儲器用于生成代碼庫的圖形表示。
5.如權利要求I所述的方法,其特征在于,確定邊界條件存在包括確定需要來自代碼庫外部的源的數據來完成圖形表示的生成。
6.一種用于創(chuàng)建代碼庫的圖形表示的計算機執(zhí)行的交互式方法,包括 生成所述代碼庫的第一部分的圖形表示; 顯示所述代碼庫的第一部分的圖形表示; 向用戶提供界面,所述界面配置成接收與所述代碼庫的第一部分的圖形表示的生成有關的輸入; 在所述圖形表示的第一部分的生成期間經由所述界面接收輸入,其中所述輸入包括圖形表示的生成的中斷;以及 將所述圖形表示的生成恢復為經恢復的生成,其中經恢復的生成從圖形表示中排除所述代碼庫的第二部分。
7.如權利要求6所述的方法,其特征在于,所述輸入還包括所述代碼庫的第三部分的選擇。
8.如權利要求7所述的方法,其特征在于,所述代碼庫的從經恢復的生成中排除的第二部分包括所述代碼庫中未被包含在所述代碼庫的所述第三部分中的部分。
9.如權利要求7所述的方法,其特征在于,所述圖形表示的經恢復的生成包括所述代碼庫的第三部分的圖形表示。
10.一種具有存儲于其上的指令的計算機可讀存儲介質,所述指令在處理器上執(zhí)行,所述指令包括用于以下動作的指令 審閱代碼庫的第一部分; 生成所述代碼庫的第一部分的圖形表示; 接收輸入,其中所述輸入改變所述圖形表示的范圍; 審閱所述代碼庫的第二部分; 生成所述代碼庫的第二部分的圖形表示;以及 顯示所述代碼庫的圖形表示。
11.如權利要求10所述的指令,其特征在于,還包括 提供用于在所述圖形表示的第一部分的生成期間接收指令的界面;經由所述界面接收輸入,其中所述指令包括所述第一部分的圖形表示的生成的中斷;以及 恢復所述圖形表示的生成,其中經恢復的生成從圖形表示中排除所述代碼庫的第三部分。
12.如權利要求11所述的方法,其特征在于,還包括提供用于在經恢復的圖形表示的生成期間接收請求的界面。
13.如權利要求10所述的指令,其特征在于,還包括用于確定所述代碼庫的所述第一部分中存在邊界條件的指令。
14.如權利要求13所述的指令,其特征在于,還包括 提供與所述邊界條件有關的界面;以及 接收對邊界條件的解作為來自所述界面的響應。
15.如權利要求14所述的指令,其特征在于,確定邊界條件存在包括確定需要來自代碼庫外部的源的數據來完成圖形表示的生成。
全文摘要
本文中公開的是用戶增強的反向工程,其中在一個實施例中,在代碼庫、數據庫、二進制等的圖形表示的生成期間,可向用戶提供用于“聚焦”的選項。例如,在大代碼庫的圖形生成期間,用戶可選擇一個或多個物以限制圖形表示生成的范圍。在另一個實施例中,圖形生成可遇到一個或多個預定的邊界條件。在遇到邊界條件后,圖形表示的生成可確定在沒有附加指令的情況下它不能在預定的一組要求內完成圖形生成。因此,圖形生成可完成然后向用戶提示它已經遇到的任意邊界條件的解,或者該生成可在每次遇到邊界條件時暫停,并向用戶提示對邊界條件的解。
文檔編號G06F3/14GK102947791SQ201180029767
公開日2013年2月27日 申請日期2011年6月6日 優(yōu)先權日2010年6月18日
發(fā)明者S·杜塔, T·特里溫, A·拜恩 申請人:微軟公司