亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

增強(qiáng)軟件的軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)的制作方法

文檔序號(hào):6584057閱讀:151來源:國知局
專利名稱:增強(qiáng)軟件的軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件行為的可視化技術(shù),更具體而言,涉及一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)。
背景技術(shù)
信息可視化(Visualization)技術(shù)是利用計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來,并進(jìn)行交互處理的技術(shù)。通常,開發(fā)人員具有對(duì)于在圖形用戶界面(GUI)上可視化所需信息和工具的工具支持。在軟件性能分析中分析軟件調(diào)用棧是常用且非常有用的手段。這里“軟件調(diào)用棧”是指對(duì)于軟件執(zhí)行過程中軟件行為的記錄。開發(fā)人員通常通過能夠可視化軟件調(diào)用棧的圖形用戶界面來瀏覽和分析軟件調(diào)用棧。軟件調(diào)用棧可視化的輸入來自于系統(tǒng)中 !Profiling(采樣)工具的輸出。Profiling技術(shù)被開發(fā)用于提供程序?qū)嶋H執(zhí)行時(shí)的相關(guān)信息。Profiling工具捕獲在軟件運(yùn)行過程中的調(diào)用信息——諸如特定方法/函數(shù)是否被調(diào)用、調(diào)用特定方法/函數(shù)的次數(shù)、調(diào)用者和被調(diào)用者之間的關(guān)系、花費(fèi)在執(zhí)行特定方法/函數(shù)上的時(shí)間等——并且產(chǎn)生作為明文文本輸出的數(shù)據(jù)文件,諸如文本文件或二進(jìn)制文件。 Profiling工具能夠幫助用戶分析并發(fā)現(xiàn)軟件程序運(yùn)行的瓶頸,找到耗時(shí)所在,從而最終實(shí)現(xiàn)程序的優(yōu)化。但是,Profiling工具的輸出主要記錄軟件程序在代碼級(jí)別的行為,例如, 有多少工作線程以及詳細(xì)的數(shù)據(jù)流和控制流(諸如,調(diào)用信息)等等。現(xiàn)有技術(shù)中已經(jīng)存在解析Profiling工具輸出的軟件調(diào)用棧的數(shù)據(jù)文件并還原軟件調(diào)用棧以生成軟件調(diào)用??梢暬墓ぞ??!敖馕觥庇糜诨谲浖{(diào)用棧的數(shù)據(jù)文件生成一組調(diào)用對(duì)象,這里軟件調(diào)用棧中的一個(gè)“調(diào)用對(duì)象”指的是一個(gè)軟件在其運(yùn)行中執(zhí)行的一個(gè)方法或函數(shù)?!斑€原”用于識(shí)別出代碼級(jí)別的所有的調(diào)用對(duì)象之間的調(diào)用關(guān)系。圖1示出了利用一個(gè)現(xiàn)有軟件調(diào)用??梢暬ぞ攉@得的軟件調(diào)用??梢暬囊徊糠值钠聊唤貓D。但是,現(xiàn)有軟件調(diào)用??梢暬ぞ呔哂腥缦氯毕?.在現(xiàn)有軟件調(diào)用棧的可視化中對(duì)軟件調(diào)用棧進(jìn)行瀏覽和定位非常耗時(shí)軟件調(diào)用棧的信息非常龐雜,數(shù)據(jù)量巨大。在軟件調(diào)用棧中,從應(yīng)用的開始點(diǎn)到特定調(diào)用,可能要深入數(shù)千級(jí)。如果到達(dá)的調(diào)用不是感興趣的那個(gè)調(diào)用,則用戶需要從另一分支重新開始并深入。這么一遍又一遍地重復(fù),直到定位性能問題為止。這甚至可能使用戶瀏覽數(shù)萬至數(shù)十萬級(jí)調(diào)用棧,甚至更多。2.軟件的所有信息都被堆疊到代碼級(jí)別中軟件調(diào)用棧僅僅涉及到代碼級(jí)別的軟件行為。它不能呈現(xiàn)高層次的軟件設(shè)計(jì)和軟件架構(gòu)信息,而這些信息在分析軟件的性能時(shí)可能會(huì)有很大幫助。在本領(lǐng)域中通常以結(jié)構(gòu)化的方式設(shè)計(jì)軟件。軟件架構(gòu)師常常將軟件設(shè)計(jì)成一組模塊的組合。這些模塊及模塊之間的交互通常被定義為軟件架構(gòu)。有關(guān)這些模塊及模塊之間的交互的信息通常被定義為軟件架構(gòu)信息。軟件架構(gòu)在軟件設(shè)計(jì)階段完成,并且可以被相關(guān)人員獲得。圖2是示出一個(gè)現(xiàn)有軟件的軟件架構(gòu)的示例性框圖,其中一個(gè)方框代表一個(gè)模塊,不同模塊之間的重疊表示模塊之間具有調(diào)用關(guān)系。通常可以在軟件設(shè)計(jì)階段中完成所有模塊定義。例如,模塊可以被定義為執(zhí)行某一功能的代碼單元。當(dāng)軟件運(yùn)行時(shí),軟件的各個(gè)模塊協(xié)作以作為一個(gè)整體完成功能或服務(wù)。 如果軟件具有性能問題,則很可能是由于在某些模塊中存在瓶頸。所以在多數(shù)情況下,性能分析關(guān)心的僅僅是一部分軟件調(diào)用棧。該部分軟件調(diào)用??梢员挥成涞杰浖軜?gòu)中的一個(gè)或多個(gè)模塊?,F(xiàn)有技術(shù)已經(jīng)進(jìn)行了如下嘗試來解決在現(xiàn)有軟件調(diào)用??梢暬ぞ咧写嬖诘纳鲜鰡栴}1.使用基于關(guān)鍵詞或表達(dá)式的搜索,其提供基于關(guān)鍵詞搜索調(diào)用棧的功能2.通過預(yù)先定義的度量或閾值來分組和過濾,其提供基于正則表達(dá)式或閾值的過濾功能使用這種搜索技術(shù)的例子之一是IBM Visual PerformanceAnalyzer (VPA,可視性能分析器)(其詳細(xì)描沭可以從網(wǎng)址http://w驟.alphaworks. ibm. com/tech/vpa處獲得)。圖3示出了使用IBM VPA可視化窗口提供的查詢界面的屏幕截圖。這些手段雖然有用,但是所起作用非常有限。這些手段僅僅涉及到軟件調(diào)用棧本身,并且軟件的所有信息仍然被堆疊在代碼級(jí)別中。通過這些手段用戶仍然不能在瀏覽和定位軟件調(diào)用棧中應(yīng)用其對(duì)于軟件架構(gòu)的了解。因此,需要一種能夠增強(qiáng)軟件的軟件調(diào)用棧的可視化的方式,使得用戶能夠在可視化和分析軟件調(diào)用棧的同時(shí)應(yīng)用其對(duì)軟件產(chǎn)品架構(gòu)的了解來幫助搜索和定位感興趣模塊的執(zhí)行信息。

發(fā)明內(nèi)容
考慮到現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提供了一種用于增強(qiáng)軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)。根據(jù)本發(fā)明的所述軟件調(diào)用棧的可視化結(jié)合有軟件架構(gòu)信息。根據(jù)本發(fā)明實(shí)現(xiàn)的軟件調(diào)用棧的可視化能夠幫助用戶應(yīng)用其對(duì)軟件產(chǎn)品架構(gòu)的了解,從而加速對(duì)軟件調(diào)用棧的瀏覽并且?guī)椭ㄎ恍阅芷款i。本發(fā)明可以以包括方法、設(shè)備或系統(tǒng)的多種方式實(shí)施。下面討論本發(fā)明的幾個(gè)實(shí)施例。作為一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的方法,本發(fā)明的一個(gè)實(shí)施例至少包括下列操作獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息;解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng);獲得所述軟件調(diào)用棧的調(diào)用對(duì)象,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較;以及根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象。作為一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的設(shè)備,本發(fā)明的一個(gè)實(shí)施例至少包括用于獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息的裝置;用于解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象的裝置,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng); 用于獲得所述軟件調(diào)用棧的調(diào)用對(duì)象的裝置,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);用于將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較的裝置;以及用于根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象的裝置。作為一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的系統(tǒng),本發(fā)明的一個(gè)實(shí)施例至少包括上述設(shè)備。本發(fā)明的其中一個(gè)實(shí)施例至少提供了以下優(yōu)點(diǎn)之一1.對(duì)于軟件行為的新視點(diǎn)-檢視設(shè)計(jì)層面上軟件模塊之間的調(diào)用關(guān)系;以及-檢視分到軟件的各個(gè)模塊的CPU和存儲(chǔ)資源的使用情況2.瀏覽調(diào)用棧的新方法(按照軟件模塊的類別瀏覽調(diào)用棧)3.定位調(diào)用棧的一部分的新方法(按照軟件模塊進(jìn)行過濾)4.使得軟件架構(gòu)師、軟件開發(fā)人員和性能分析師能夠協(xié)作描述特定軟件的架構(gòu)。


圖1示出了利用一個(gè)現(xiàn)有軟件調(diào)用??梢暬ぞ攉@得的軟件調(diào)用??梢暬囊徊糠值钠聊唤貓D。圖2是示出一個(gè)現(xiàn)有軟件的軟件架構(gòu)的示例性框圖。圖3示出了使用IBM VPA可視化窗口提供的查詢界面的屏幕截圖。圖4是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。圖5是示出了作為例子的一個(gè)軟件的軟件架構(gòu)的示意性模塊結(jié)構(gòu)圖。圖6是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的優(yōu)選的用于增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。圖7是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的優(yōu)選的用于響應(yīng)于用戶輸入進(jìn)行增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。圖8是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于增強(qiáng)軟件調(diào)用棧的可視化的設(shè)備的示例性框圖。圖9示出了使用根據(jù)本發(fā)明的軟件調(diào)用??梢暬翱谔峁┑牟樵兘缑娴钠聊唤貓D。圖10示出了使用根據(jù)本發(fā)明的增強(qiáng)的軟件調(diào)用棧可視化而獲得的各個(gè)軟件模塊對(duì)系統(tǒng)資源的使用情況的直方圖。圖11示出了使用根據(jù)本發(fā)明的增強(qiáng)的軟件調(diào)用??梢暬@得的各個(gè)軟件模塊之間的調(diào)用關(guān)系的示意圖。圖12示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的使用描述文件的屬性生成的示例性標(biāo)簽。
具體實(shí)施例方式現(xiàn)在將以具體的、示例性實(shí)施例描述本發(fā)明。應(yīng)該理解,本發(fā)明不限于所披露的示例性實(shí)施例。還應(yīng)該理解,目前所披露的增強(qiáng)軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)的每一個(gè)特征并非都是實(shí)現(xiàn)所附權(quán)利要求任一具體權(quán)項(xiàng)要求保護(hù)的發(fā)明必不可少的。描述設(shè)備的多個(gè)元件和特征是為了使本發(fā)明完全能夠得以實(shí)施。還應(yīng)該理解的是,在本說明書中,在表示或者描述處理或方法之處,方法的步驟可以按照任何順序執(zhí)行或者同時(shí)執(zhí)行,除非從上下文中顯然可以看出一個(gè)步驟依賴于先前執(zhí)行的另一步驟。本發(fā)明提供了用于增強(qiáng)軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)。具體而言,根據(jù)本發(fā)明的一個(gè)實(shí)施例的技術(shù)方案獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息;解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng);獲得所述軟件調(diào)用棧的調(diào)用對(duì)象,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較;以及根據(jù)比較結(jié)果, 將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象。在一個(gè)可替換實(shí)施例中,本發(fā)明也可以首先如現(xiàn)有技術(shù)中那樣生成軟件調(diào)用棧的可視化。然后根據(jù)用于請(qǐng)求填充的用戶輸入再如上述那樣將軟件架構(gòu)信息關(guān)聯(lián)到軟件調(diào)用棧的可視化。在一個(gè)實(shí)施例中,本發(fā)明提供了一種對(duì)于軟件架構(gòu)進(jìn)行格式化描述的格式。在另一個(gè)實(shí)施例中,軟件調(diào)用棧的調(diào)用對(duì)象是通過解析軟件調(diào)用棧的數(shù)據(jù)文件獲得的。在另一個(gè)實(shí)施例中,軟件調(diào)用棧的調(diào)用對(duì)象是從軟件調(diào)用棧的可視化中獲得的。在另一個(gè)實(shí)施例中,所述填充是通過把當(dāng)前匹配的模塊對(duì)象的屬性寫入到內(nèi)存中的另一地址處并建立從匹配的調(diào)用對(duì)象指向該另一地址的鏈接、或?qū)傩詫懭肱c調(diào)用對(duì)象相鄰的地址,例如將屬性寫入與對(duì)應(yīng)的調(diào)用對(duì)象的存儲(chǔ)地址相鄰的偶地址或奇地址、將屬性作為對(duì)應(yīng)的調(diào)用對(duì)象的參數(shù)之一、或者任何可以將模塊對(duì)象的屬性與對(duì)應(yīng)的調(diào)用對(duì)象關(guān)聯(lián)起來的方式來實(shí)現(xiàn)的。 在再一個(gè)實(shí)施例中,模塊對(duì)象的屬性包括模塊名稱、模塊的調(diào)用接口、該模塊的前驅(qū)模塊 (即,調(diào)用該模塊的另一模塊)。在再一個(gè)實(shí)施例中,描述文件也具有屬性,所述屬性包括所述描述文件的版本、作者以及所描述的軟件的版本、名稱等。本發(fā)明通過提供上述屬性可以建造描述文件庫以存儲(chǔ)和共享對(duì)不同軟件架構(gòu)的描述文件。圖4是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。根據(jù)本發(fā)明的處理過程開始于步驟401。然后過程前進(jìn)到步驟403。在步驟403,獲得用于描述一個(gè)軟件的軟件架構(gòu)的軟件架構(gòu)信息。然后過程前進(jìn)到步驟405。如上所述,軟件架構(gòu)在軟件設(shè)計(jì)階段就已經(jīng)確定了,相關(guān)技術(shù)人員可以從軟件設(shè)計(jì)中獲得軟件架構(gòu)信息。但是,這些與本發(fā)明并不密切相關(guān)。在本發(fā)明的一個(gè)實(shí)施例中,所述軟件架構(gòu)信息采用使用預(yù)定格式結(jié)構(gòu)化描述軟件架構(gòu)的描述文件的形式。在步驟405,解析所述軟件架構(gòu)信息以生成所述軟件的一組模塊對(duì)象。模塊對(duì)象與軟件模塊相對(duì)應(yīng),通常為一一對(duì)應(yīng)。然后過程前進(jìn)到步驟407。以下示出了作為例子的一個(gè)模塊對(duì)象。在這個(gè)示例性實(shí)現(xiàn)方式中,模塊對(duì)象為通過解析軟件架構(gòu)信息而生成的存儲(chǔ)在內(nèi)存中的多組數(shù)據(jù)。在這種實(shí)現(xiàn)方式中,一個(gè)模塊對(duì)象為一組數(shù)據(jù),包括模塊名稱、該模塊的前驅(qū)模塊、以及該模塊的調(diào)用接口。0x0001 WWW Security0x0003 Dogear Access0x0005 I: com/ibm/ws/security/web/FormLoginExtensionProcessor. handleRequest(ServletRequest,
ServletResponse)void在另一種實(shí)現(xiàn)方式中,軟件架構(gòu)信息被解析為多個(gè)軟件程序中的類對(duì)象,每個(gè)類對(duì)象指向存儲(chǔ)一組信息的首地址,例如,指向0x0001。當(dāng)然,本領(lǐng)域技術(shù)人員還可以設(shè)想出其它的實(shí)現(xiàn)方式,只有能夠找到各個(gè)軟件模塊的信息就可以,并且這些實(shí)現(xiàn)方式都在本發(fā)明的保護(hù)范圍之內(nèi)。在步驟407,獲得軟件調(diào)用棧的調(diào)用對(duì)象。然后過程前進(jìn)到步驟409。以下示出了作為例子的軟件調(diào)用棧的一個(gè)調(diào)用對(duì)象。如前所述,調(diào)用棧中的一個(gè)調(diào)用對(duì)象指的是一個(gè)軟件在其運(yùn)行中執(zhí)行的一個(gè)方法或函數(shù)。void FormLoginExtensionProcessor. handleRequest (ServletRequest, ServletResponse)該方法是web應(yīng)用容器(web container)中安全控制模塊的一個(gè)接口調(diào)用方法。 該調(diào)用接口具有兩個(gè)參數(shù),即,ServletRequest和ServletResponse。程序調(diào)用該調(diào)用接口后,將進(jìn)入到安全控制模塊中,具體執(zhí)行安全控制模塊的功能,并將執(zhí)行結(jié)果寫入到參數(shù) ServletResponse 中。在步驟409,將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較。然后過程前進(jìn)到步驟411。在步驟411,根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到軟件調(diào)用棧的調(diào)用對(duì)象。然后過程前進(jìn)到步驟413。在步驟413,過程結(jié)束。本發(fā)明提供了一種用于結(jié)構(gòu)化地描述軟件架構(gòu)的格式,本發(fā)明提供該格式是基于如下假設(shè)軟件的架構(gòu)可以被圖示為一組模塊。根據(jù)本發(fā)明的用于描述軟件架構(gòu)的格式被定義為通用且平臺(tái)無關(guān)的,這意味著該格式可以應(yīng)用于不同類型的軟件,即使該軟件是使用不同技術(shù)以架構(gòu)方式構(gòu)造的。按照該格式,對(duì)軟件架構(gòu)的描述可以由不同人員——包括軟件架構(gòu)師、開發(fā)人員、和性能分析師——來定義和重用。根據(jù)本發(fā)明的格式被設(shè)計(jì)成包括軟件的各個(gè)模塊之間的關(guān)系,用于描述當(dāng)各個(gè)模塊一起協(xié)作時(shí)這些模塊之間的調(diào)用關(guān)系。根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例,該格式僅描述一個(gè)模塊被其它模塊調(diào)用的關(guān)系,也就是說,僅描述直接調(diào)用該模塊的前驅(qū)模塊。這種格式與軟件代碼的執(zhí)行順序一致,便于用戶實(shí)現(xiàn)。在另一實(shí)施例中,該格式能夠描述一個(gè)模塊對(duì)其它模塊調(diào)用的關(guān)系,也就是說,僅描述該模塊直接調(diào)用的后繼模塊。在再一個(gè)實(shí)施例中,該格式也可以包括冗余調(diào)用關(guān)系信息。也就是說,除了描述一個(gè)模塊(作為被調(diào)用者)被其它模塊調(diào)用的關(guān)系之外,該格式還描述該模塊(作為調(diào)用者)對(duì)其它模塊調(diào)用的關(guān)系。此外,根據(jù)本發(fā)明的格式還被設(shè)計(jì)成包括各個(gè)模塊的特征。每個(gè)模塊都具有某些特征,諸如模塊名稱、供調(diào)用的調(diào)用接口等等。對(duì)于一個(gè)模塊,該格式通過模塊名稱和通過其可以調(diào)用模塊的功能的調(diào)用接口來描述模塊的特征。在本文中,將模塊之間的調(diào)用關(guān)系、模塊的特征等稱為模塊的屬性。根據(jù)本發(fā)明的格式使用模塊的各個(gè)屬性來定義模塊。對(duì)于可以表示為一組模塊的軟件架構(gòu),根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于結(jié)構(gòu)化描述軟件架構(gòu)的格式被表示如下所示Arch 一 ArchModules 一 ArchModule 一 Entries 一 Entry
該格式首先定義軟件架構(gòu),然后定義包括在架構(gòu)中的ー個(gè)或多個(gè)模塊,再然后定 義ー個(gè)或多個(gè)模塊中的每ー個(gè)模塊,再然后定義每ー個(gè)模塊包括的一個(gè)或多個(gè)調(diào)用接ロ, 最后定義ー個(gè)或多個(gè)調(diào)用接ロ中的每ー個(gè)調(diào)用接ロ。以下示出了使用XML語言編寫的描述根據(jù)本發(fā)明的格式的文件。該文件如下定 義〈? xml version=" 1.0〃 encoding=" UTF—8" ? ><xs:schemaxmlns:xs = “ http://www. w3. org/2001/XMLSchema"elementFormDefault =" qualified" ><xs:element name=" Arch" ><xs: complexType><xs: sequence)<xs:element maxOccurs = " 1" minOccurs = /r 0" ref = " ModuleList/ruse=" required" /></xs: sequence)<xs:attribute name ニ" version“ type =” xs:string" use =" required" /><xs:attribute name = ” author“ type = ” xs:string" use = “ required" />〈xs:attribute name =" software" type ニ” xs:string" use =" required" /><xs:attribute name = " software-version"type = " xs: string"use=" required" /></xs: complexType></xs: element)<xs:element name = " ModuleList" ><xs: complexType><xs: sequence)<xs:elementmaxOccurs = “ unbounded"minOccurs = “ 1 “ref=" Module" /></xs: sequence)</xs: complexType></xs: element〉<xs:element name = " Module" ><xs: complexType><xs: sequence)<xs:element minOccurs =" 1" ref=" Entries'7 />く/xs: sequence)
</xs: complexType><xs:attribute name = " name" type = " xs: string" use = " required" /><xs:attribute name = " prev" type = " xs: string" use = " requried" /></xs: element〉<xs:element name = “ Entries" >

<xscomplexType> <xssequence)〈xs:elementmaxOccurs = 〃 unbounded" minOccurs = 〃 1〃 ref = 〃 Entry“ /></xs: sequence)</xs: complexType>〈/xs: element〉<xs: element name = “ Entry“ ><xs: complexType>〈xs:attribute name =” name“ type =” xs: string" use =” required" /></xs: complexType>〈/xs: element〉</xs: schema)在上述文件中,第1行是XML的聲明語句開頭,在之前不能有任何形式的字符,其中Version表示XML的版本號(hào);encoding表示文檔的編碼方式,默認(rèn)是“UTF-8”。第2 行聲明“http://www. w3. org/2001/XMLSchema”是一個(gè) XML 文件格式的描述。前兩行是XML文件所需的聲明性語句。第3-13行定義了元素“Arch”,其最少出現(xiàn)1次,引用Modulelist,具有以下4個(gè)屬性版本、作者、軟件、和軟件版本,這些屬性都用字符串表示。第14-20行定義了元素“Modulelist”,其最多出現(xiàn)未限定次,最少出現(xiàn)1次,引用 Module。第21- 行定義了元素“Module”,其最多出現(xiàn)未限定次,最少出現(xiàn)0次,引用 Entries,具有以下2個(gè)屬性名稱、和前一模塊,這些屬性都用字符串表示。第30-36行定義了元素“Entries”,其最多出現(xiàn)未限定次,最少出現(xiàn)1次,引用 Entry0第37-41行定義了元素“Entry”,其具有1個(gè)屬性名稱,該屬性都用字符串表示。圖5是示出了作為例子的一個(gè)軟件的軟件架構(gòu)的示意性模塊結(jié)構(gòu)圖。以下以一個(gè)軟件,在此稱之為“WWW”,的軟件架構(gòu)為例,示出了使用根據(jù)本發(fā)明的格式對(duì)該軟件架構(gòu)進(jìn)行結(jié)構(gòu)化描述的描述文件。WWW軟件的軟件架構(gòu)由一系列模塊組成,如圖5所示。使用本發(fā)明的格式用XML編寫的其軟件架構(gòu)的描述文件如下所示< ? xml version = " 1.0〃 encoding = " UTF-8" ? >〈Archversion =" 0. I" author =" linhc" software =" Lotus Connection"software-version = " 7. I" ><ModuleList>〈Module name = " Lotus Connection" prev = " WWW" >〈Entries〉〈Entryname = " I: com/ibm/lconn/core/web/auth/LCUserDataConstraintFilter. doFilter(ServletRequest, ServletResponse, FilterChain)void" />
〈Entryname = “ I com/ibm/1 conn/core/web/auth/LCBasicAuthFi 1 ter. doFilter(ServletRequest,ServletResponse, FilterChain)void" />〈/Entries〉〈/Module〉<Module name =〃 Wffff Servlet" prev =〃 Lotus Connection" >〈Entries〉〈Entryname = " I :com/ibm/ws/webcontainer/servlet/Servlet Wrap per. service (ServletRequest,ServletResponse)void" />〈/Entries〉〈/Module〉〈Module name = 〃 Dogear Access" prev = " WWW" >〈Entries〉〈Entryname = " I : com/ibm/dogear/f i 11er/auth/DogearAuthFi 11er· doFilter(ServletRequest,ServletResponse, FilterChain)void" />〈Entryname = " I : com/ibm/dogear/fi 1 ter/Utf8CharEncodingFi 1 ter. doFilter(ServletRequest,ServletResponse, FilterChain)void" />〈Entryname = " I: com/ibm/dogear/filter/auth/DogearPrivateAccessFilter. doFilter(ServletRequest, ServletResponse, FilterChain) void" />〈Entryname = " I: com/ibm/dogear/filter/stats/RequestStatisticsFilter. doFilter(ServletRequest,ServletResponse, FilterChain)void" />〈/Entries〉〈/Module〉〈Module name = 〃 Wffff Security" prev = " Dogear Access" >〈Entries〉〈Entryname = " I: com/ibm/ws/security/web/FormLoginExtensionProcessor.
handleRequest(Ser
vletRequest, ServletResponse) void" />〈/Entries〉〈/Module〉</ModuleList></Arch>在上述文件中,第1行是XML的聲明語句開頭。第2行定義了本描述文件的名稱為“Arch”,作者是“l(fā)inhc”,本描述文件描述的軟件的名稱是“Lotus Connection”,軟件版本是“7. 1”。第3行定義了模塊列表。第4行定義了模塊列表的第一個(gè)模塊的名稱是“WWW ThreadPool”。第5行定義了模塊的調(diào)用接口。第6行定義了模塊的調(diào)用接口之一的名稱是“ I com/ibm/ws/wswebcontainer/ WebContainer. handleRequest (IRequest, IResponse) void,,。第9行定義了模塊列表的第二個(gè)模塊的名稱是“ffffffcontainer”,其前驅(qū)模塊的名稱是“ffffff Thread Pool”。在上述文件的后續(xù)部分中,以類似方式對(duì)各個(gè)模塊的屬性進(jìn)行了描述。在本發(fā)明的另一個(gè)實(shí)施例中,使用上述格式產(chǎn)生的軟件架構(gòu)的描述文件自身也具有一些屬性,諸如描述文件的版本、描述文件的作者以及描述文件所描述軟件的版本、描述文件所描述軟件的名稱等。利用這些屬性,還能夠構(gòu)造不同軟件架構(gòu)的描述文件的庫。在該描述文件庫中,可以使用某些社會(huì)性計(jì)算(Social Computing)技術(shù)來實(shí)現(xiàn)描述文件的共享和協(xié)作。下面結(jié)合附圖給出本發(fā)明的優(yōu)選實(shí)施例,但是這里給出的具體描述并非意欲將本發(fā)明限于這種特殊的方式,而意欲包括所有的修改、變型和等同等等。圖6是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的優(yōu)選的用于增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。根據(jù)本發(fā)明的處理過程開始于步驟601。然后過程前進(jìn)到步驟603。在步驟603,解析軟件架構(gòu)的描述文件以生成一組模塊對(duì)象。模塊對(duì)象與軟件模塊相對(duì)應(yīng)。這里,描述文件是使用根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的格式對(duì)軟件架構(gòu)進(jìn)行結(jié)構(gòu)化描述的文件。所述描述文件可以是用戶自己預(yù)先生成的,或者從其它用戶那里獲得的,但是這與本發(fā)明并不密切相關(guān)。然后過程前進(jìn)到步驟605。在步驟605,將解析軟件調(diào)用棧的數(shù)據(jù)文件而獲得的一個(gè)調(diào)用對(duì)象與各個(gè)模塊對(duì)象的調(diào)用接口進(jìn)行比較。然后過程前進(jìn)到步驟407。如前所述,軟件調(diào)用棧的數(shù)據(jù)文件是從現(xiàn)有的!Profiling工具輸出的明文文本文件。在步驟607,確定二者是否匹配。如果匹配,過程前進(jìn)到步驟609。如果不匹配,過程前進(jìn)到步驟611。這里,“匹配”指的是字符串之間的嚴(yán)格匹配。當(dāng)然,還可以使用其它匹配方法,只有能夠確定調(diào)用對(duì)象和模塊對(duì)象的調(diào)用接口指示同一方法或函數(shù)即可。在步驟609,將匹配的模塊對(duì)象的屬性填充到該調(diào)用對(duì)象,并將匹配的模塊對(duì)象標(biāo)識(shí)為系統(tǒng)中的當(dāng)前匹配的模塊對(duì)象。然后過程前進(jìn)到步驟613。在本文中,術(shù)語“填充”是指將匹配模塊對(duì)象的屬性與進(jìn)行比較的對(duì)應(yīng)調(diào)用對(duì)象相關(guān)聯(lián),使得由該對(duì)應(yīng)調(diào)用對(duì)象可以獲得其所屬的模塊對(duì)象的屬性。在一個(gè)實(shí)施例中,所述填充是通過把匹配的模塊對(duì)象的屬性寫入到內(nèi)存中的另一地址處并建立從對(duì)應(yīng)的調(diào)用對(duì)象指向該另一地址的鏈接來實(shí)現(xiàn)的。在另一實(shí)施例中,使匹配模塊對(duì)象的屬性成為對(duì)應(yīng)的調(diào)用對(duì)象的參數(shù)之一。例如,模塊對(duì)象的屬性為A,而對(duì)應(yīng)的調(diào)用對(duì)象為B (C,D),那么所述填充是實(shí)現(xiàn)了 B(C,D) — B(C,D,A)。在再一實(shí)施例中,所述填充是將匹配模塊對(duì)象的屬性寫入與對(duì)應(yīng)的調(diào)用對(duì)象相鄰的地址,例如模塊對(duì)象的屬性和對(duì)應(yīng)的調(diào)用對(duì)象的存儲(chǔ)地址分別為相鄰的偶地址和奇地址等。當(dāng)然也可以使用本領(lǐng)域技術(shù)人員設(shè)想到的其它方法,只要能夠使得由對(duì)應(yīng)的方法/函數(shù)可以獲得其所屬的模塊對(duì)象的屬性即可。在步驟611,將當(dāng)前匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象。由于該進(jìn)行比較的調(diào)用對(duì)象與各個(gè)模塊對(duì)象的調(diào)用接口都不匹配,這被認(rèn)為是該調(diào)用對(duì)象仍在與系統(tǒng)中被標(biāo)識(shí)為當(dāng)前匹配的模塊對(duì)象相對(duì)應(yīng)的模塊中運(yùn)行,因此,當(dāng)前模塊對(duì)象的屬性沒有發(fā)生改變。因此,將系統(tǒng)中存儲(chǔ)的當(dāng)前匹配的模塊對(duì)象的屬性填充到該調(diào)用對(duì)象中。然后過程前進(jìn)到步驟613。在步驟613,確定是否還從軟件調(diào)用棧的數(shù)據(jù)文件中解析出另一個(gè)調(diào)用對(duì)象。如果還有其它的調(diào)用對(duì)象,則返回到步驟605。如果沒有,過程前進(jìn)到步驟615。在步驟615,過程結(jié)束。圖7是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的優(yōu)選的用于響應(yīng)于用戶輸入進(jìn)行增強(qiáng)軟件調(diào)用棧的可視化的方法的流程圖。根據(jù)本發(fā)明的處理過程開始于步驟701。然后過程前進(jìn)到步驟703。在步驟703,使用現(xiàn)有技術(shù)中的軟件調(diào)用棧的可視化工具,由軟件調(diào)用棧的數(shù)據(jù)文件生成軟件調(diào)用棧的可視化。然后過程前進(jìn)到步驟705。在步驟705,確定是否收到對(duì)于將軟件架構(gòu)信息關(guān)聯(lián)到軟件調(diào)用棧的可視化中的用戶請(qǐng)求。如果接收到,則過程前進(jìn)到步驟707。如果沒有接收到,則過程前進(jìn)到步驟719。在步驟707,解析軟件架構(gòu)的描述文件以生成一組模塊對(duì)象。模塊對(duì)象與軟件模塊相對(duì)應(yīng)。然后過程前進(jìn)到步驟709。在步驟709,將從軟件調(diào)用棧的可視化中獲得的一個(gè)調(diào)用對(duì)象與各個(gè)模塊對(duì)象的調(diào)用接口進(jìn)行比較。然后過程前進(jìn)到步驟711。在步驟711,確定二者是否匹配。如果匹配,過程前進(jìn)到步驟713。如果不匹配,過程前進(jìn)到步驟715。在步驟713,將匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象,并將匹配的模塊對(duì)象標(biāo)識(shí)為當(dāng)前匹配的模塊對(duì)象。然后過程前進(jìn)到步驟717。在步驟715,將當(dāng)前匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象。然后過程前進(jìn)到步驟717。在步驟717,確定是否還從軟件調(diào)用棧的可視化中獲得另一調(diào)用對(duì)象。如果還有其它的調(diào)用對(duì)象,則返回到步驟709。如果沒有,過程前進(jìn)到步驟719。在步驟719,過程結(jié)束。當(dāng)然,根據(jù)本發(fā)明的方法不必按照所示出的執(zhí)行順序執(zhí)行。例如,在圖7中,步驟707也可以在步驟705或步驟703之前執(zhí)行。圖8是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于增強(qiáng)軟件調(diào)用棧的可視化的設(shè)備的示例性框圖。該設(shè)備包括軟件調(diào)用??梢暬?01和解析器803。軟件調(diào)用??梢暬?01接收ftOfiling工具輸出的軟件調(diào)用棧的數(shù)據(jù)文件作為輸入。軟件調(diào)用??梢暬?01具有傳統(tǒng)的軟件調(diào)用??梢暬ぞ叩墓δ?,S卩,解析接收到的軟件調(diào)用棧的數(shù)據(jù)文件并還原軟件調(diào)用棧以生成軟件調(diào)用??梢暬\浖{(diào)用??梢暬?01還接收來自解析器803的輸出作為另一輸入。解析器803接收軟件架構(gòu)信息。在本實(shí)施例中,該軟件架構(gòu)信息具有軟件架構(gòu)的描述文件的形式。所述描述文件是使用根據(jù)本發(fā)明的上述格式生成的。所述描述文件可以使用XML編寫,但是本發(fā)明不限于此。所述描述文件也可以使用任何其它可以被解析的語言來編寫。解析器803將接收到的描述文件解析成一組模塊對(duì)象。根據(jù)本發(fā)明的軟件調(diào)用??梢暬?01還包括比較模塊805和關(guān)聯(lián)模塊807。 比較模塊805將軟件調(diào)用??梢暬?01從軟件調(diào)用棧的數(shù)據(jù)文件解析出的每個(gè)調(diào)用對(duì)象與從解析器803接收的各個(gè)模塊對(duì)象的調(diào)用接口進(jìn)行比較,并將比較結(jié)果,即匹配還是不匹配告知關(guān)聯(lián)模塊807。關(guān)聯(lián)模塊807根據(jù)從比較模塊805接收的比較結(jié)果,將相應(yīng)的軟件架構(gòu)信息關(guān)聯(lián)到軟件調(diào)用棧的可視化。如果接收到的比較結(jié)果指示匹配,則關(guān)聯(lián)模塊807將匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中,并將匹配的模塊對(duì)象標(biāo)識(shí)為系統(tǒng)中的當(dāng)前匹配的模塊對(duì)象。如果接收到的比較結(jié)果指示不匹配,則關(guān)聯(lián)模塊807將系統(tǒng)中的當(dāng)前匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中。在另一個(gè)實(shí)施例中,除了軟件調(diào)用棧可視化引擎801還可以接收用于請(qǐng)求填充的用戶輸入和比較單元805從軟件調(diào)用棧的可視化中獲得調(diào)用對(duì)象之外,該設(shè)備中包括的各單元和各單元的功能都與上述實(shí)施例的相同。如果根據(jù)該實(shí)施例的軟件調(diào)用??梢暬?801沒有接收到用戶輸入,則使用傳統(tǒng)的軟件調(diào)用??梢暬δ苡绍浖{(diào)用棧的數(shù)據(jù)文件產(chǎn)生軟件調(diào)用棧的可視化,而不考慮來自解析器803的任何輸入。如果根據(jù)該實(shí)施例的軟件調(diào)用??梢暬?01接收到用戶輸入,則按照針對(duì)上述實(shí)施例所描述的方式,將來自解析器803的一組模塊對(duì)象的屬性填充到對(duì)應(yīng)的調(diào)用對(duì)象。在再一個(gè)實(shí)施例中,除了解析器803也接收用戶輸入之外,該設(shè)備中包括的各單元和各單元的功能都與上述另一個(gè)實(shí)施例的相同。如果解析器803沒有接收到用戶輸入, 則不解析軟件架構(gòu)的描述文件,從而不給軟件調(diào)用棧可視化引擎801提供任何輸入。如果接收到用戶輸入,則將軟件架構(gòu)的描述文件解析成一組模塊對(duì)象,并將其輸出給軟件調(diào)用棧可視化引擎801。這樣能夠減少對(duì)于系統(tǒng)資源的使用。以上例子僅僅示出了將軟件架構(gòu)信息結(jié)合到軟件調(diào)用棧的可視化中的優(yōu)選方式, 本領(lǐng)域技術(shù)人員可以據(jù)此設(shè)想出其它的實(shí)現(xiàn)方式,但是都在本發(fā)明的保護(hù)范圍之內(nèi)。圖9示出了使用根據(jù)本發(fā)明的軟件調(diào)用??梢暬翱谔峁┑牟樵兘缑娴钠聊唤貓D。圖9示出的可視化還是基于圖5所示的軟件架構(gòu)。從圖9所示的屏幕截圖上可以看出, 能夠按照軟件模塊來瀏覽、過濾、或定位軟件調(diào)用棧。此外,還可以如圖9所示,以不同的顏色來突出顯示不同軟件模塊的調(diào)用棧。用不同顏色突出顯示僅僅是示例性的,本領(lǐng)域技術(shù)人員可以據(jù)此設(shè)想出其它的可視地區(qū)別不同模塊的調(diào)用棧的方式,但是都在本發(fā)明的保護(hù)范圍之內(nèi)。圖10示出了使用根據(jù)本發(fā)明的增強(qiáng)的軟件調(diào)用??梢暬@得的各個(gè)軟件模塊對(duì)系統(tǒng)資源的使用情況的直方圖。本發(fā)明可以在解析和還原每個(gè)調(diào)用的方法/函數(shù)的同時(shí),針對(duì)每個(gè)調(diào)用的方法/函數(shù),確定其屬于哪個(gè)模塊,并針對(duì)該模塊累加其中的每個(gè)方法 /函數(shù)使用的基本CPU周期或字節(jié)(這是用于執(zhí)行調(diào)用實(shí)體自身的消耗),從而形成如圖10 所示的直方圖。圖11示出了使用根據(jù)本發(fā)明的增強(qiáng)的軟件調(diào)用??梢暬@得的各個(gè)軟件模塊之間的調(diào)用關(guān)系的示意圖。在現(xiàn)有技術(shù)中,僅僅可以生成各個(gè)方法/函數(shù)之間的調(diào)用關(guān)系, 如圖11中的虛線所示。但是不清楚各個(gè)調(diào)用的方法/函數(shù)屬于哪個(gè)軟件模塊以及各個(gè)軟件模塊之間的調(diào)用關(guān)系。由于根據(jù)本發(fā)明的軟件調(diào)用棧的可視化具有了軟件模塊的知識(shí),就可以顯示各個(gè)軟件模塊包括那些調(diào)用的方法/函數(shù)以及軟件模塊之間的調(diào)用關(guān)系。在圖11所示的調(diào)用圖形可視化中,同一軟件模塊的所有方法/函數(shù)被分組到一個(gè)矩形框——諸如1101、1103、 1105所示——中,一個(gè)矩形框代表一個(gè)軟件模塊。軟件模塊之間的調(diào)用被標(biāo)識(shí)為實(shí)線。在圖11中矩形框的左上角上的文本是模塊的名稱。矩形框中的各個(gè)小方框代表其調(diào)用接口, 小方框中的文本是調(diào)用接口的名稱。此外,通過使用根據(jù)本發(fā)明的格式來生成對(duì)于軟件架構(gòu)進(jìn)行結(jié)構(gòu)化描述的描述文件,可以建造描述文件庫以存儲(chǔ)和共享對(duì)不同軟件架構(gòu)的描述。該描述文件庫使得軟件生命周期或軟件開發(fā)團(tuán)體中的不同人員貢獻(xiàn)其對(duì)于軟件架構(gòu)的描述。由于不同人員具有不同知識(shí),對(duì)軟件理解的不同深度,共享的描述文件庫使得能夠協(xié)作并因而提供對(duì)軟件架構(gòu)更深刻的描述。描述文件庫能夠維護(hù)和管理不同人員所貢獻(xiàn)的描述文件,按照其屬性描述文件的作者、描述文件的版本、描述文件描述的軟件的名稱、描述文件描述的軟件的版本對(duì)描述文件進(jìn)行分類并將其保存到庫中。此外,可以將描述文件的某些屬性用作為標(biāo)簽。隨著描述文件庫的增長,能夠使用現(xiàn)有技術(shù)工具構(gòu)造用于描述文件的標(biāo)簽以便圖示出描述文件的熱點(diǎn)和協(xié)作趨勢(shì)。這種方式可以幫助和引導(dǎo)對(duì)于描述文件的貢獻(xiàn)。圖12示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的使用描述文件的屬性生成的示例性標(biāo)簽。應(yīng)該理解,以上出于說明清楚的目的參照不同功能部件和處理器對(duì)本發(fā)明的實(shí)施例進(jìn)行了描述。顯然,在不偏離本發(fā)明的條件下,可在不同功能部件或處理器之間使用任何合適的功能分布。例如,所示出的由分立單元或處理器執(zhí)行的功能可由同一單元或處理器執(zhí)行。因此,僅將針對(duì)具體功能部件的描述視為是對(duì)用于提供所述功能的合適裝置的描述, 而不表示嚴(yán)格的邏輯或物理結(jié)構(gòu)或組織。此外,在權(quán)利要求中特征的順序并不表示特征起作用的任何特定順序,特別是在方法權(quán)利要求中各步驟的順序并不表示一定按照該順序執(zhí)行這些步驟。而是,這些步驟可采用任何合適的順序執(zhí)行。本發(fā)明通過使用本發(fā)明的實(shí)施例的詳細(xì)說明被描述,這些實(shí)施例作為例子被提供,并且不打算限制本發(fā)明的范圍。所描述的實(shí)施例包括不同的特性,不是所有的這些特性在本發(fā)明的所有的實(shí)施例中都是需要的。本發(fā)明的某些實(shí)施例僅僅利用某些特性或特性的可能的組合。所描述的本發(fā)明的實(shí)施例的變例和包括在描述的實(shí)施例中指出的特性的不同的組合的本發(fā)明的實(shí)施例是本領(lǐng)域技術(shù)人員將會(huì)設(shè)想到的。
權(quán)利要求
1.一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的方法,包括步驟 獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息;解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng);獲得所述軟件調(diào)用棧的調(diào)用對(duì)象,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較;以及根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象。
2.如權(quán)利要求1所述的方法,其中,所述關(guān)聯(lián)的步驟包括如果所述比較結(jié)果指示匹配,則將匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中,并將匹配的模塊對(duì)象標(biāo)識(shí)為當(dāng)前匹配的模塊對(duì)象;以及如果所述比較結(jié)果指示不匹配,則將當(dāng)前匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中。
3.如權(quán)利要求2所述的方法,其中,所述填充是通過將匹配的模塊對(duì)象的屬性與進(jìn)行比較的調(diào)用對(duì)象相關(guān)聯(lián)以使得由所述調(diào)用對(duì)象能夠獲得與其所屬的模塊相對(duì)應(yīng)的模塊對(duì)象的屬性而實(shí)現(xiàn)的。
4.如權(quán)利要求3所述的方法,其中,所述填充是通過使用以下方式之一實(shí)現(xiàn)的 把當(dāng)前匹配的模塊對(duì)象的屬性寫入到內(nèi)存中的另一地址處并建立從進(jìn)行比較的調(diào)用對(duì)象指向所述另一地址的鏈接;將當(dāng)前匹配的模塊對(duì)象的屬性寫入與進(jìn)行比較的調(diào)用對(duì)象相鄰的地址中;和使當(dāng)前匹配的模塊對(duì)象的屬性成為進(jìn)行比較的調(diào)用對(duì)象的參數(shù)之一。
5.如權(quán)利要求2所述的方法,其中,所述模塊對(duì)象的屬性至少包括模塊的名稱、模塊的調(diào)用接口和模塊的前驅(qū)模塊中的一個(gè)或多個(gè)。
6.如權(quán)利要求1所述的方法,其中,所述軟件架構(gòu)信息是使用預(yù)定格式結(jié)構(gòu)化描述軟件架構(gòu)的描述文件,其中所述格式描述了軟件架構(gòu)、軟件架構(gòu)的模塊的列表和模塊的調(diào)用接口。
7.如權(quán)利要求1所述的方法,其中,所述調(diào)用對(duì)象是通過解析軟件調(diào)用棧的數(shù)據(jù)文件而獲得的。
8.如權(quán)利要求1所述的方法,還包括步驟使用軟件調(diào)用棧的數(shù)據(jù)文件生成軟件調(diào)用棧的可視化;以及。 當(dāng)接收到用于請(qǐng)求填充的用戶輸入時(shí),才執(zhí)行權(quán)利要求1中的各個(gè)步驟。
9.如權(quán)利要求8所述的方法,其中,所述調(diào)用對(duì)象是從軟件調(diào)用棧的可視化中而獲得的。
10.如權(quán)利要求6所述的方法,其中,所述描述文件具有用于共享和協(xié)作目的的屬性, 所述描述文件的屬性至少包括描述文件的版本、描述文件的作者以及描述文件所描述軟件的版本、描述文件所描述軟件的名稱。
11.如權(quán)利要求10所述的方法,還包括步驟使用所述描述文件的一個(gè)或多個(gè)屬性為所述描述文件生成標(biāo)簽。
12.如權(quán)利要求1所述的方法,還包括步驟圖形顯示軟件的各個(gè)模塊對(duì)系統(tǒng)資源的使用情況或各個(gè)模塊之間的調(diào)用關(guān)系。
13.一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的設(shè)備,包括用于獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息的裝置; 用于解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象的裝置,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng);用于獲得所述軟件調(diào)用棧的調(diào)用對(duì)象的裝置,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);用于將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較的裝置;以及用于根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象的裝置。
14.如權(quán)利要求13所述的設(shè)備,其中,所述用于關(guān)聯(lián)的裝置包括用于如果所述比較結(jié)果指示匹配,則將匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中,并將匹配的模塊對(duì)象標(biāo)識(shí)為當(dāng)前匹配的模塊對(duì)象的裝置;以及用于如果所述比較結(jié)果指示不匹配,則將當(dāng)前匹配的模塊對(duì)象的屬性填充到進(jìn)行比較的調(diào)用對(duì)象中的裝置。
15.如權(quán)利要求14所述的設(shè)備,其中,所述填充是通過將匹配的模塊對(duì)象的屬性與進(jìn)行比較的調(diào)用對(duì)象相關(guān)聯(lián)以使得由所述調(diào)用對(duì)象能夠獲得與其所屬的模塊相對(duì)應(yīng)的模塊對(duì)象的屬性而實(shí)現(xiàn)的。
16.如權(quán)利要求15所述的設(shè)備,其中,所述填充是通過使用以下方式之一實(shí)現(xiàn)的 把當(dāng)前匹配的模塊對(duì)象的屬性寫入到內(nèi)存中的另一地址處并建立從進(jìn)行比較的調(diào)用對(duì)象指向所述另一地址的鏈接;將當(dāng)前匹配的模塊對(duì)象的屬性寫入與進(jìn)行比較的調(diào)用對(duì)象相鄰的地址中;和使當(dāng)前匹配的模塊對(duì)象的屬性成為進(jìn)行比較的調(diào)用對(duì)象的參數(shù)之一。
17.如權(quán)利要求14所述的設(shè)備,其中,所述模塊對(duì)象的屬性至少包括模塊的名稱、模塊的調(diào)用接口和模塊的前驅(qū)模塊中的一個(gè)或多個(gè)。
18.如權(quán)利要求13所述的設(shè)備,其中,所述軟件架構(gòu)信息是使用預(yù)定格式結(jié)構(gòu)化描述軟件架構(gòu)的描述文件,其中所述格式描述了軟件架構(gòu)、軟件架構(gòu)的模塊的列表和模塊的調(diào)用接口。
19.如權(quán)利要求13所述的設(shè)備,其中,所述調(diào)用對(duì)象是通過解析軟件調(diào)用棧的數(shù)據(jù)文件而獲得的。
20.如權(quán)利要求18所述的設(shè)備,其中,所述描述文件具有用于共享和協(xié)作目的的屬性, 所述描述文件的屬性至少包括描述文件的版本、描述文件的作者以及描述文件所描述軟件的版本、描述文件所描述軟件的名稱。
21.一種用于增強(qiáng)軟件的軟件調(diào)用棧的可視化的系統(tǒng),所述系統(tǒng)包括如權(quán)利要求13至 20所述的設(shè)備。
全文摘要
公開了一種用于增強(qiáng)軟件調(diào)用棧的可視化的方法、設(shè)備和系統(tǒng)。根據(jù)本發(fā)明的方法包括步驟獲得用于描述所述軟件的軟件架構(gòu)的軟件架構(gòu)信息;解析所述軟件架構(gòu)信息以生成一組模塊對(duì)象,其中所述模塊對(duì)象與所述軟件的軟件模塊相對(duì)應(yīng);獲得所述軟件調(diào)用棧的調(diào)用對(duì)象,其中所述調(diào)用對(duì)象對(duì)應(yīng)于所述軟件的運(yùn)行中執(zhí)行的方法或函數(shù);將所述模塊對(duì)象的調(diào)用接口與所述調(diào)用對(duì)象進(jìn)行比較;以及根據(jù)比較結(jié)果,將模塊對(duì)象的對(duì)應(yīng)信息關(guān)聯(lián)到所述軟件調(diào)用棧的調(diào)用對(duì)象。通過使用本發(fā)明,能夠?qū)④浖a(chǎn)品的架構(gòu)信息結(jié)合到軟件產(chǎn)品的調(diào)用棧的可視化中,使得用戶能夠應(yīng)用其對(duì)軟件產(chǎn)品架構(gòu)的了解來幫助搜索和定位感興趣模塊的執(zhí)行信息。
文檔編號(hào)G06F9/44GK102486731SQ20091022583
公開日2012年6月6日 申請(qǐng)日期2009年11月30日 優(yōu)先權(quán)日2009年11月30日
發(fā)明者孫劍橋, 林鴻昌, 沈華品, 陳沁悅 申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1