两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種面向嵌入式軟件的軟件分析集成方法

文檔序號:6366916閱讀:262來源:國知局
專利名稱:一種面向嵌入式軟件的軟件分析集成方法
技術領域
本發(fā)明涉及嵌入式技術領域,尤其涉及一種面向嵌入式軟件的軟件分析集成方法。
背景技術
目前已經(jīng)有很多軟件分析方法的集成框架,這些集成框架所針對的分析方法有的是基于模型的分析方法,有的是基于源代碼的分析方法;有的分析框架所集成的是動態(tài)的分析方法,有的集成的是靜態(tài)的分析方法;有的是基于web的分析方法集成框架,有的則非基于web的分析方法集成框架。比較典型的工作有以下幾項基于模型轉換的軟件分析方法集成框架DUALLY[Malavolta 09]是意大利拉奎拉大學(Universit'a dell’Aquila, Italy)提出的一個提供軟件體系結構語言和工具進行交互的自動框架。DUALLY框架的方法總覽如圖I所示。DUALLY的基于模型轉換技術,為不同ADL之間的轉換提供了簡單且可復用的描述方式,并且為自動轉換提供了工具支持。除此之外,DUALLY有著良好的擴展性。由于框架中集成的ADL與AO之間的星形關系,新加入到DUALLY框架的ADL能夠獲得與框架中所有已集成的ADL之間進行互操作的能力。運行時刻的分析方法集成框架KAMI (Keep Alive Models with Implementations) [Epifani 09]是意大利米蘭理工大學(Politecnico di Milano, Italy)提出的一個運行時刻系統(tǒng)分析框架。KAMI為分析方法的集成提供了一個基于插件的框架,如圖2所示。模型插件(Model plugin)支持KAMI通過解析模型文件來獲得不同的模型。在此基礎上,模型插件還負責基于需求對模型進行分析。當需求不能滿足時,則調(diào)用在系統(tǒng)模型中定義好的異常處理。輸入插件(input plugin)負責在模型與運行系統(tǒng)之間建立聯(lián)系。運行系統(tǒng)通過監(jiān)控獲得數(shù)據(jù),并將數(shù)據(jù)反饋給模型。輸入插件的目標是處理運行時刻系統(tǒng)提供的使用不同輸入格式和協(xié)議的數(shù)據(jù)。運行系統(tǒng)模型不停地被更新,模型插件以模型為輸入,進行持續(xù)的分析,以驗證需求是否得到滿足。當出現(xiàn)需求違背的情況,KAMI拋出異常,記錄事件,并調(diào)用相關的異常處理程序。異常處理程序是用戶提供的Java代碼。使用這種方法,模型插件可以將異常的約束作為警告或者根據(jù)異常對系統(tǒng)進行重配置,從而支持自適應過程?;趙eb的分析方法集成框架 SOFAS是一個基于web的輕量級軟件分析方法集成框架,該框架基于目前軟件分析方法無論從種類還是從數(shù)量上都變得越來越多,但分析方法與分析方法之間很少存在協(xié)同作用的現(xiàn)實情況,提出了一種輕量級的框架一 S0FAS,一個分布式的軟件分析工具集成平臺,該平臺使得分析方法之間能夠無縫協(xié)同作用。軟件分析方法作為一種web Service的形式被組裝進該平臺。此外,軟件分析人員能夠根據(jù)自身需要選擇、組裝、調(diào)用已被集成于平臺中的分析方法,分析能夠獨立地執(zhí)行,分析人員從中提取分析結果。這樣,軟件開發(fā)人員,軟件測試人員以及QA就能夠?qū)υ撥浖到y(tǒng)的質(zhì)量屬性有一個充分的了解。不同的分析方法集成框架所針對集成的分析方法各不相同,一方面,分析方法由于設計與實現(xiàn)的獨立性其分析目的各不相同,有些分析方法針對的是運行時的軟件系統(tǒng),而有些分析方法針對的是代碼,而代碼又可以分為源代碼與目標代碼兩種,有些分析方法分析的是源代碼,有些分析方法分析的是目標代碼。因此由于分析方法設計與實現(xiàn)的獨立性,分析方法集成框架的設計與實現(xiàn)也各不相同。因此分析方法集成框架中有些分析方法所針對的是運行時的軟件系統(tǒng),所集成的運行時候軟件分析工具,而且的分析方法所針對的軟件系統(tǒng)軟件架構方法的屬性,所以所針對分析的是軟件架構方面的屬性。不同的分析方法集成框架的要求各不相同,由于目前基于Eclipse存在很多開源并且可用的分析方法,這種分析方法以插件的形式體現(xiàn)。本發(fā)明為了克服現(xiàn)有技術的缺陷,提供了一種基于Eclipse的分析方法集成工具。

發(fā)明內(nèi)容
本發(fā)明的目的是為了克服現(xiàn)有技術的缺陷,提供一種面向嵌入式軟件的軟件分析集成方法,通過本發(fā)明使得分析方法以插件的形式體現(xiàn),軟件分析方法不但能被用戶直接使用,而且能夠通過工具間的相互調(diào)用,實現(xiàn)功能組合,減少人工參與,提高軟件分析效率。一種面向嵌入式軟件的軟件分析集成方法,該方法包括軟件分析方法集成模塊、分析方法執(zhí)行模塊與分析方法結果追蹤模塊;采用基于Eclipse的分析方法集成機制,并在集成的過程中采用基于Eclipse的輸入適配方法,具體的流程為Stepl :根據(jù)分析方法獨一無二標識,在Eclipse平臺提供的插件注冊庫中得到平臺對于該分析方法的描述(IPluginDescripter),這些描述包括分析方法的安裝地址,分析方法的名字,分析方法在平臺上的擴展點等;如果該分析方法不存在,則返回;Step2 :根據(jù)所得到的分析方法擴展點的描述(IPluginDescripter)得到分析方法的擴展點集合;Step3 :利用Eclipse平臺提供的ISelection,獲得實際的輸入制品,并根據(jù)實際的輸入制品與分析方法所要求的制品之間的差異,調(diào)用相應的適配方法,并最終轉換成分析方法所要求的制品的集合,提供給分析方法;Step4 :根據(jù)Step2得到的分析方法的擴展點的集合,得到其中對于org. eclipse,ui. popupMenus擴展點的擴展,因為分析方法只有通過擴展該擴展點才能在Eclipse中右擊相應的制品并啟動分析方法;Step5 對于St印4中得到的結果,獲得其中的配置點的集合(IConfigurationElement []),因為對于每個擴展 org. eclipse, ui. popupMenus 的兀素來說,可以存在多個配置項,這些配置項聲明了該擴展點的輸入類型,可以根據(jù)該輸入類型對軟件制品進行輸入適配; Step6 :從上一步的配置點中得到相應的分析方法的函數(shù)集合,函數(shù)集合是指標簽是由class聲明的集合,由于一個分析方法可能有若干個不同類型的啟動函數(shù),因此本工具需要將其列出來由分析工具集成人員來選擇正確的分析方法啟動函數(shù);Step7 :由集成人員選出正確的啟動函數(shù)后,本集成工具會將這些啟動函數(shù)保存成為一個啟動函數(shù)列表,在真正執(zhí)行的時候供分析方法使用人員進行調(diào)用;StepS :在分析方法真正執(zhí)行時利用回調(diào)方式啟動該分析工具,并從Step3中得到與該分析方法相匹配的輸入制品,分析方法對該制品進行分析,得到相應的分析結果?;贓clipse的輸入適配方法的流程為對于JAVA模型,輸入制品特定于一個JAVA項目,需要從JAVA模型的根節(jié)點出發(fā)進行層層解析,得到不同的制品集合,提供給分析方法使用,具體的解析步驟如下所示Stepll :由Java模型解析成為每個包路徑的根節(jié)點,得到這些根節(jié)點的集合;Stepl2 :將上述得到的包路徑根節(jié)點進一步向下轉換得到包的集合;Stepl3 :將上述得到的包的集合再進一步轉換成為編譯單元的集合;而由于在 Eclipse 中是分別在 org. eclipse, core, resources 與 org. eclipse,jdt. core兩種自然結構來描述相類似的制品的,因此對于輸入的IJavaProject,轉換為IProject,并進一步得到其它制品的集合,這種情況下的適配方法如下Step21 :把 IJavaProject 轉換得到 IProject ;Step22 :由得到IProject得到其下的IFolder的集合;Step23 :由所得到的IFolder得到其中的IFile的集合。Eclipse把制品類型定義成為抽象語法樹上相對應的節(jié)點,根據(jù)這些節(jié)點的位置獲得與該節(jié)點相對應的軟件制品,從而獲得該制品的集合,其具體的解析過程為a、把java源文件中的java源代碼保存成為字符數(shù)組;b、通過抽象語法樹的解析程序解析第I步所得到的字符數(shù)組,把字符數(shù)組解析成所對應的抽象語法樹,而這棵抽象語法樹上的每個節(jié)點代表java語言中特定制品;C、抽象語法樹根據(jù)節(jié)點是否需要決定是否要把與該節(jié)點相關的其他信息通過捆綁(binding)的方式加載進來;d、如果用戶修改了語法樹上的節(jié)點,可以通過直接修改語法樹或者通過重構語法樹來實現(xiàn);e、如果語法樹有修改,則需要把修改的地方重新寫回語法樹。Eclipse平臺對于不同軟件制品已經(jīng)有比較明確的分層與定義,這些分層與定義的方式也是嚴格按照JAVA面向?qū)ο笏枷雭韺崿F(xiàn)的,所以Eclipse平臺下不同的軟件制品在UML模型中也能找到其所相對應的表示方法,不同的軟件制品與UML模型元素之間是一一對應的關系,把分析結果附著到表示該制品的模型元素需要以下過程Stepl :把分析人員指定分析的軟件制品通過逆向工程轉換到該制品相對應的UML模型元素;Step2 :將UML模型元素與該模型元素所代表的實際的軟件制品二者建立映射關系;Step3 :把分析結果的保存路徑與分析方法的輸入制品二者的建立匹配關系,建立輸入適配后分析方法的輸入制品與分析結果保存文件之間的匹配關系,保存于resultMap.xml文件中。本發(fā)明技術方案帶來的有益效果通過本發(fā)明使得分析方法以插件的方式添加,軟件分析方法不但能被用戶直接使用,而且能夠通過工具間的相互調(diào)用,實現(xiàn)功能組合,減少人工參與,提高軟件分析效率,滿足綜合的軟件分析需求。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖I是現(xiàn)有技術中DUALLY框架的結構圖;圖2是現(xiàn)有技術中KAMI框架的結構圖;圖3是本發(fā)明面向嵌入式軟件的軟件分析集成方法結構圖;圖4是本發(fā)明中Eclipse對于軟件制品的定義框架;圖5是本發(fā)明中基于Eclipse的軟件制品輸入適配方法的流程圖;圖6是本發(fā)明中Eclipse對于java文件的解析過程圖;圖7是本發(fā)明中基于Eclipse的插件的分析集成方法啟動方式圖;圖8是本發(fā)明面向嵌入式軟件的軟件分析集成方法的流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。軟件分析方法集成工具是一種集成化、可擴展、協(xié)同化的軟件分析環(huán)境,它將軟件分析過程中涉及的人、工具、制品等要素,按照一定的軟件分析順序,有序組織起來,并使其相互協(xié)作。軟件分析方法集成能夠提供成套的軟件分析方法的支撐,其內(nèi)在驅(qū)動是軟件生產(chǎn)過程,目的是生產(chǎn)軟件制品。分析方法集成工具不僅是分析方法集成人員、工具、制品的靜態(tài)集合,更是一種動態(tài)的、能夠反映軟件分析方法學特征的軟件環(huán)境。這種動態(tài)特性通過軟件分析工具集成的過程模型表達。過程模型是對軟件分析方法集成的過程抽象,基于過程模型表達機制,將分析方法集成刻畫為由一系列制品加工步驟組成的加工工序。軟件分析中的開發(fā)者、工具、制品通過加工步驟實現(xiàn)關聯(lián),集成在一套集成的軟件分析工具中。基于上述針對軟件分析方法集成的研究現(xiàn)狀的分析,本發(fā)明提供一種面向嵌入式軟件的軟件分析集成方法框架,框架主要包含三大部份軟件分析方法集成模塊、分析方法執(zhí)行模塊與分析方法結果追蹤模塊,該集成框架的結構圖如圖3所示。軟件分析方法是軟件分析方法集成工具中用以輔助完成軟件分析活動的各類分析方法。在集成的軟件分析方法中,軟件分析方法不但能被用戶直接使用,而且能夠通過工具間的相互調(diào)用,實現(xiàn)功能組合,減少人工參與,提高軟件分析效率。軟件分析方法由于設計與實現(xiàn)的獨立性,不同的分析方法對于輸入制品有不同的要求。而對于整個集成工具的輸入制品又是統(tǒng)一確定的,在本發(fā)明中特定為一個軟件系統(tǒng),因此在分析方法輸入的過程中需要對分析方法進行輸入適配,把實際輸入的軟件制品轉換為符合分析方法要求的軟件制品。本發(fā)明特定于Eclipse平臺設計與實現(xiàn),因此所做的輸入適配工具也基于Eclipse對于制品的定義。分析方法對于輸入制品的要求受限制于分析方法所基于平臺對于軟件制品結構的定義方式。特定平臺下的分析方法的輸入制品為平臺所定義的某個軟件制品。在本發(fā)明中,集成工具基于Eclipse設計與實現(xiàn),集成的分析方法包含兩種運行方式Eclipse插件方式與Java命令行方式。需要說明的是,這兩種運行方式并不是互斥存在的。
由于分析方法基于Eclipse平臺設計與實現(xiàn),因此分析方法的輸入制品也是Eclipse平臺上某個特定的軟件制品。分析方法的輸入制品分為以下幾類表I :制品分類列表
IJavaProject代表一個完整的Java軟件項目,是一個項目結構的根節(jié)
點,它包含IPackageFragmentRoot作為它的子節(jié)點。
IPackageFragmentRoot 代表若千個包(IPackageFragment)的根節(jié)點。在具體表現(xiàn)
形式上可能是一個目錄或者是一個庫文件(zip文件/jar文 件)。
IPackageFragment代表一個獨立的包,包中所包含的文件可能是源代碼文
件或者是字節(jié)碼文件。注意包與包之間的組織方式并不是以 父親-孩子的組織方式,包與包之間的關系是相對獨立的。
ICompilationUnit代表源代碼文件(.java文件)。
IClassFile代表字節(jié)碼文件(.class文件)。
IType代表文件中的某個類。上述制品類型在Eclipse中組織成為樹狀結構,由于上一級制品可以得到下一級制品結構的一個集合,例如由IPackageFragmentRoot可以得到位于IPackageFragmentRoot下所有IPackageFragment的集合。基于Eclipse的分析方法的輸入對應于上述制品結構中的某項制品或者是該項制品的集合。由上表可以看到,每個java項目包括若干個根包片段,每個根包片段又包含若干個包片段,在每個包中又包含了若干各種類型的制品,這些制品可以是java源文件,也可以是一些其他類型的文件,而JDT對他們的定義則如圖4所示由圖4可以知道每種制品都是屬于一種特定的java元素,它們都繼承于java元素,因此在他們之間可以通過適配實現(xiàn)彼此的轉換?;贓clipse的分析方法集成機制
由于分析方法自身所基于實現(xiàn)的平臺各不相同,因此不同的平臺有不同的集成方法,因此本發(fā)明所實現(xiàn)的分析方法集成工具是基于Eclipse平臺實現(xiàn)的,基于Eclipse的分析方法的集成方法,主要有兩種集成方式(I)由分析方法集成人員向集成工具提供jar包,由分析方法集成工具自動對該分析方法的jar包進行解析,得出分析方法的唯一標識id、分析方法的輸入要求等等分析方法的屬性;(2)由分析方法集成人員向集成工具提供分析方法的上述各種屬性信息,然后由集成工具把分析方法集成到集成具中;這兩種方式的同一個前提條件是分析方法已經(jīng)在Eclipse平臺下正確安裝。下面詳細闡述兩種集成方法Jar包集成方法為了對集成人員提供友好的分析方法集成方式以及滿足工具可擴展的需求,因此本工具提供了對于Eclipse插件jar包的集成方式。由于一個分析插件的jar包中可能包含有若干個分析方法,因此不僅需要提取jar包中的內(nèi)容,獲得其中對于分析方法擴展點的描述,而且根據(jù)這些描述還需要列出可能的分析方法以及這些方法對于輸入制品的要求,以供集成人員選出正確的分析方法,當集成人員選出分析方法后,工具將選中后的分析方法以及分析方法的輸入要求等一些信息保存在一個獨立的XML文件中。表單集成方法分析方法除了有第一種集成方式之外,集成工具還為無法提供插件jar包的分析方法提供表單集成的方法,在此表單中集成人員只需要提供插件在Eclipse平臺上的唯一標識、插件的名稱以及插件的地址,集成工具會通過這些信息在Eclipse平臺上找到該插件,并從中讀出該插件中的所有方法以及方法對于輸入制品的要求。同理,集成工具將列出這些方法供集成人員選出可能的分析方法,并把選出的分析方法存儲在一個獨立的XML文檔中。對于上述JAVA模型,輸入制品特定于一個JAVA項目,因此需要從JAVA模型的根節(jié)點出發(fā)進行層層解析,得到不同的制品集合,提供給分析方法使用。具體的解析步驟如下所示Stepl :由Java模型解析成為每個包路徑的根節(jié)點,得到這些根節(jié)點的集合;Step2 :將上述得到的包路徑根節(jié)點進一步向下轉換得到包的集合;Step3 :將上述得到的包的集合再進一步轉換成為編譯單元的集合;而由于在 Eclipse 中是分別在 org. eclipse, core, resources 與 org. eclipse,jdt. core兩種自然結構來描述相類似的制品的,所以我們的適配方法也有所不同,因此對于輸入的IJavaProject,可以轉換為IProject,并進一步得到其它制品的集合。這種情況下的適配方法如下Stepl :把 IJavaProject 轉換得到 IProject ;Step2 :由得到IProject得到其下的IFolder的集合;Step3 :由所得到的IFolder得到其中的IFile的集合;
基于Eclipse的輸入適配方法的流程如圖5所示。對于有些分析方法所分析的是編譯單元或者文件類的制品,這些分析方法的目的在于得到這些制品中所定義的變量、方法或者類等元素,而在Eclipse中,Eclipse把這些制品類型定義成為抽象語法樹上相對應的節(jié)點,根據(jù)這些節(jié)點的位置我們可以獲得與該節(jié)點相對應的軟件制品,從而獲得該制品的集合。其具體的解析過程如圖6所示a、把java源文件中的java源代碼保存成為字符數(shù)組;b、通過抽象語法樹的解析程序解析第I步所得到的字符數(shù)組,把字符數(shù)組解析成所對應的抽象語法樹,而這棵抽象語法樹上的每個節(jié)點代表java語言中特定制品;C、抽象語法樹根據(jù)節(jié)點是否需要決定是否要把與該節(jié)點相關的其他信息通過捆 綁(binding)的方式加載進來;d、如果用戶修改了語法樹上的節(jié)點,可以通過直接修改語法樹或者通過重構語法樹來實現(xiàn);e、如果語法樹有修改,則需要把修改的地方重新寫回語法樹;以Eclipse插件方式運行分析工具的目的在于把分析結果通過用戶界面展現(xiàn)給分析人員,使分析人員理解明白被分析對象的軟件質(zhì)量屬性。為了使得分析方法的啟動具有通用性,需要研究Eclipse對于插件的啟動方式,并以同樣的方式加載分析方法并運行。由于分析方法在Eclipse中以popupMenu的方式提供給外界調(diào)用,popupMenu會把所分析的對象包裝成為ISelection結構,因此集成工具需要把適配完成的輸入制品封裝成ISelection結構作為Eclipse插件的輸入。分析方法以插件的形式加載于Eclipse的微內(nèi)核之上,啟動方法以一種擴展點的形式添加到該平臺上,該微內(nèi)核主要具有以下四個功能(I)它提供核心插件服務,開發(fā)人員根據(jù)標準自定義插件增加原有插件的功能;(2)對于每一個擴展并不限制可以調(diào)用的啟動函數(shù)的數(shù)量,一個擴展可以對應于多個啟動函數(shù),例如一個objectContribution可以對應于多個action ;(3)它要求每個插件以一種回調(diào)的方式調(diào)用自身,產(chǎn)生一個與action標簽相對應的代理對象。因為該對象的產(chǎn)生與Eclipse的啟動相分離,所以Eclipse啟動時并不會將該action實例化,因此在Eclipse運行的過程中該對象實際上是不存在的,只有當用戶要求時該對象再實例化并運行;(4)微內(nèi)核為新添加的插件提供了界面支持,新添加的插件也是以擴展的方式調(diào)用微內(nèi)核所提供的服務;因此根據(jù)分析方法是懶加載的方式運行,在這種方式下,代理對象是真正執(zhí)行動作的實體。Eclipse定義了一個標準的接口來實例化并且初始化這個代理對象(porxyobject)。這個回調(diào)對象代表了提供服務的實體,因此,對于每個分析方法我們也設計成一種回調(diào)的對象,并通過真正調(diào)用時才實例化的方式來避免分析工具一次性實例化對內(nèi)核造成不必要的壓力,這樣的設計也達不到分析人員對于分析工具的具體要求。基于Eclipse的插件的啟動方法具體如圖7所示根據(jù)上述對Eclipse平臺的分析,對于集成在集成工具中的分析方法,我們的解析步驟如下,具體如圖8所示。Stepl :根據(jù)分析方法獨一無二標識,在Eclipse平臺提供的插件注冊庫中得到平臺對于該分析方法的描述(IPluginDescripter),這些描述包括分析方法的安裝地址,分析方法的名字,分析方法在平臺上的擴展點等等;如果該分析方法不存在,則返回;
Step2 :根據(jù)所得到的分析方法擴展點的描述(IPluginDescripter)得到分析方法的擴展點集合;Step3 :利用Eclipse平臺提供的ISelection,獲得實際的輸入制品,并根據(jù)實際的輸入制品與分析方法所要求的制品之間的差異,調(diào)用相應的適配方法,并最終轉換成分析方法所要求的制品的集合,提供給分析方法;Step4 :根據(jù)Step2得到的分析方法的擴展點的集合,得到其中對于org. eclipse,ui. popupMenus擴展點的擴展,因為分析方法只有通過擴展該擴展點才能在Eclipse中右 擊相應的制品并啟動分析方法;St印5 對于St印4中得到的結果,獲得其中的配置點的集合(IConfigurationElement []),因為對于每個擴展 org. eclipse, ui. popupMenus 的兀素來說,可以存在多個配置項,這些配置項聲明了該擴展點的輸入類型,可以根據(jù)該輸入類型對軟件制品進行輸入適配;St印6 :從上一步的配置點中得到相應的分析方法的函數(shù)集合,函數(shù)集合是指標簽是由class聲明的集合,由于一個分析方法可能有若干個不同類型的啟動函數(shù),因此本工具需要將其列出來由分析工具集成人員來選擇正確的分析方法啟動函數(shù);Step7 :由集成人員選出正確的啟動函數(shù)后,本集成工具會將這些啟動函數(shù)保存成為一個啟動函數(shù)列表,在真正執(zhí)行的時候供分析方法使用人員進行調(diào)用;StepS :在分析方法真正執(zhí)行時利用回調(diào)方式啟動該分析工具,并從Step3中得到與該分析方法相匹配的輸入制品,分析方法對該制品進行分析,得到相應的分析結果;軟件分析的目的是在于使分析得到的結果能夠很好的顯示出被分析的制品中的某種軟件質(zhì)量屬性,從而使軟件工程人員能夠客觀了解被分析的軟件制品。對制品中存在的某方面質(zhì)量屬性上的不足做出適當調(diào)整。然而由于軟件分析方法設計與實現(xiàn)的獨立性,分析方法對于輸入制品的平臺要求、輸入制品的大小以及制品的運行情況等的要求各不相同,而且軟件分析方法的分析結果的保存方式也各不相同,分析方法的輸入與輸出之間的不能很好地保持追蹤性,特別是在多個分析方法連續(xù)運行的情況下,分析方法的輸入與輸出間的關系的保持顯得尤為重要。本文基于Eclipse平臺設計與實現(xiàn)了一套以模型為中心的分析方法輸入制品與分析結果的追蹤機制。由于UML模型支持面向?qū)ο蠹夹g的主要概念,所有的UML模型中的實體都能找到面向?qū)ο蠹夹g中與其相對應的概念(例如包、類、接口、方法等等)。集成工具的輸入制品根據(jù)代表原UML模型的樹裝結構圖指定。集成工具根據(jù)樹狀結構指定分析方法的分析對象。Eclipse平臺對于不同軟件制品已經(jīng)有比較明確的分層與定義,這些分層與定義的方式也是嚴格按照JAVA面向?qū)ο笏枷雭韺崿F(xiàn)的,所以Eclipse平臺下不同的軟件制品也可以在UML模型中找到其所相對應的表示方法,不同的軟件制品與UML模型元素之間是
一一對應的關系。把分析結果附著到表示該制品的模型元素需要以下幾個過程Stepl :把分析人員指定分析的軟件制品通過逆向工程轉換到該制品相對應的UML模型元素;Step2 :將UML模型元素與該模型元素所代表的實際的軟件制品二者建立映射關系,具體的映射關系如表2-2所示;Step3 :把分析結果的保存路徑與分析方法的輸入制品二者的建立匹配關系,建立輸入適配后分析方法的輸入制品與分析結果保存文件之間的匹配關系,保存于resultMap.xml文件中。表2-2UML元素與Eclipse制品映射關系
權利要求
1.一種面向嵌入式軟件的軟件分析集成方法,其特征在于,該方法包括軟件分析方法集成模塊、分析方法執(zhí)行模塊與分析方法結果追蹤模塊;采用基于Eclipse的軟件分析方法集成機制,并在集成的過程中采用基于Eclipse的軟件制品輸入適配方法,具體的流程為 Stepl :根據(jù)分析方法獨一無二標識,在Eclipse平臺提供的插件注冊庫中得到平臺對于該分析方法的描述(IPluginDescripter),這些描述包括分析方法的安裝地址,分析方法的名字,分析方法在平臺上的擴展點等;如果該分析方法不存在,則返回; Step2 :根據(jù)所得到的分析方法擴展點的描述(IPluginDescripter)得到分析方法的擴展點集合; Step3 :利用Eclipse平臺提供的ISelection,獲得實際的輸入制品,并根據(jù)實際的輸入制品與分析方法所要求的制品之間的差異,調(diào)用相應的適配方法,并最終轉換成分析方法所要求的制品的集合,提供給分析方法; Step4 :根據(jù)Step2得到的分析方法的擴展點的集合,得到其中對于org. eclipse,ui. popupMenus擴展點的擴展,因為分析方法只有通過擴展該擴展點才能在Eclipse中右擊相應的制品并啟動分析方法; Step5 :對于Step4中得到的結果,獲得其中的配置點的集合(IConfigurationElement[]),因為對于每個擴展org. eclipse, ui. popupMenus的兀素來說,可以存在多個配置項,這些配置項聲明了該擴展點的輸入類型,可以根據(jù)該輸入類型對實際輸入的軟件制品進行輸入適配;Step6 :從上一步的配置點中得到相應的分析方法的函數(shù)集合,函數(shù)集合是指標簽是由class聲明的集合,由于一個分析方法可能有若干個不同類型的啟動函數(shù),因此本工具需要將其列出來由分析工具集成人員來選擇正確的分析方法啟動函數(shù); Step7 由集成人員選出正確的啟動函數(shù)后,本集成工具會將這些啟動函數(shù)保存成為一個啟動函數(shù)列表,在真正執(zhí)行的時候供分析方法使用人員進行調(diào)用; StepS :在分析方法真正執(zhí)行時利用回調(diào)方式啟動該分析工具,并從Step3中得到與該分析方法相匹配的輸入制品,分析方法對該制品進行分析,得到相應的分析結果。
2.如權利要求I所述的方法,其特征在于,基于Eclipse的輸入適配方法的流程為對于JAVA模型,輸入制品特定于一個JAVA項目,需要從JAVA模型的根節(jié)點出發(fā)進行層層解析,得到不同的制品集合,提供給分析方法使用,具體的解析步驟如下所示 Stepll :由Java模型解析成為每個包路徑的根節(jié)點,得到這些根節(jié)點的集合; Stepl2 :將上述得到的包路徑根節(jié)點進一步向下轉換得到包的集合; Stepl3 :將上述得到的包的集合再進一步轉換成為編譯單元的集合; 而由于在 Eclipse 中是分別在 org. eclipse, core, resources 與 org. eclipse,jdt. core兩種自然結構來描述相類似的制品的,因此對于輸入的IJavaProject,轉換為IProject,并進一步得到其它制品的集合,這種情況下的適配方法如下Step21 :把 IJavaProject 轉換得到 IProject ; Step22 :由得至Ij IProject得到其下的IFolder的集合; St印23 :由所得到的IFolder得到其中的IFile的集合。
3.如權利要求I所述的方法,其特征在于,Eclipse把制品類型定義成為抽象語法樹上相對應的節(jié)點,根據(jù)這些節(jié)點的位置獲得與該節(jié)點相對應的軟件制品,從而獲得該制品的集合,其具體的解析過程為 a、把java源文件中的java源代碼保存成為字符數(shù)組; b、通過抽象語法樹的解析程序解析第I步所得到的字符數(shù)組,把字符數(shù)組解析成所對應的抽象語法樹,而這棵抽象語法樹上的每個節(jié)點代表java語言中特定制品; C、抽象語法樹根據(jù)節(jié)點是否需要決定是否要把與該節(jié)點相關的其他信息通過捆綁(binding)的方式加載進來; d、如果用戶修改了語法樹上的節(jié)點,可以通過直接修改語法樹或者通過重構語法樹來實現(xiàn); e、如果語法樹有修改,則需要把修改的地方重新寫回語法樹。
4.如權利要求I所述的方法,其特征在于,Eclipse平臺對于不同軟件制品已經(jīng)有比較明確的分層與定義,這些分層與定義的方式也是嚴格按照JAVA面向?qū)ο笏枷雭韺崿F(xiàn)的,所以Eclipse平臺下不同的軟件制品在UML模型中也能找到其所相對應的表示方法,不同的軟件制品與UML模型元素之間是一一對應的關系,把分析結果附著到表示該制品的模型元素需要以下過程 Stepl :把分析人員指定分析的軟件制品通過逆向工程轉換到該制品相對應的UML模型元素; Step2 :將UML模型元素與該模型元素所代表的實際的軟件制品二者建立映射關系; Step3 :把分析結果的保存路徑與分析方法的輸入制品二者的建立匹配關系,建立輸入適配后分析方法的輸入制品與分析結果保存文件之間的匹配關系,保存于resultMap. xml文件中。
全文摘要
本發(fā)明公開了一種面向嵌入式軟件的軟件分析集成方法。該方法包括軟件分析方法集成模塊、分析方法執(zhí)行模塊與軟件分析方法分析結果追蹤模塊。該方法是采用基于Eclipse的分析方法集成機制,并在集成的過程中采用基于Eclipse的軟件制品輸入適配方法。通過本發(fā)明使得分析方法以插件的方式添加,軟件分析方法不但能被用戶直接使用,而且能夠通過工具間的相互調(diào)用,實現(xiàn)功能組合,減少人工參與,提高軟件分析效率,滿足綜合的軟件分析需求。
文檔編號G06F9/44GK102662661SQ201210081950
公開日2012年9月12日 申請日期2012年3月23日 優(yōu)先權日2012年3月23日
發(fā)明者孟思明, 羅笑南, 羅育澤, 陳家熙 申請人:中山大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
巴楚县| 杭州市| 太湖县| 佛教| 建昌县| 叶城县| 萍乡市| 池州市| 来凤县| 白沙| 环江| 安顺市| 措勤县| 松原市| 美姑县| 万安县| 孝感市| 宾阳县| 安岳县| 博爱县| 阜平县| 中西区| 贵港市| 安庆市| 句容市| 香格里拉县| 孟津县| 福海县| 吉林省| 瑞金市| 兰州市| 昌图县| 三门县| 姚安县| 青铜峡市| 武义县| 辽中县| 定结县| 三穗县| 莱州市| 二连浩特市|