魏 崢
摘要:度量技術是保證軟件質量的重要手段,它定量地反映了軟件某一方面的特征。隨著面向對象技術的發展,傳統的結構化度量不再適合面向對象的軟件,面向對象度量是對象技術不可分割的一部分,基于對象技術的軟件度量成為必然的需求,從而面向對象軟件設計度量的研究與實現是文章研究的內容。文章在現有度量公式的基礎上,利用正則表達式,可以簡單度量出Java源代碼的復雜度屬性。
關鍵詞:軟件度量;面向對象;度量工具
中圖分類號:TP311.5
文獻標識碼:A
文章編號:1006-8937(2009)16-0116-02
1軟件度量的背景和意義
軟件度量(software measurement)是對軟件開發項目、過程及其產品進行數據定義、收集以及分析的持續性定量化過程,目的在于對此加以理解、預測、評估、控制和改善。沒有軟件度量,就不能從軟件開發的暗箱中跳將出來。通過軟件度量可以改進軟件開發過程,促進項目成功,提高軟件質量。
隨著面向對象開發方法和面向對象設計語言的廣泛使用,用戶采用面向對象技術開發的軟件系統和產品日益增多,有關面向對象軟件度量的研究也受到軟件界的重視,面向對象技術采用數據抽象、封裝、繼承、多態性、信息隱藏、重用機制等。為提高軟件的可重用性,增強可維護性、可靠性,提高生產效率等方面提供了可能。
2面對對象軟件度量
2.1度量的定義
度量(Metrics)的定義是:“度量是一個函數,它的輸入是軟件數據,輸出是單一的數值,能用以解釋軟件所具有的一個給定屬性對軟件質量影響的程度。”軟件質量度量是對影響軟件質量的屬性所進行的定量測量。
人們已經提出的軟件度量包括軟件復雜性度量、模塊性度量、可修改性度量、可移植性度量、可擴充性度量、可靠性度量、可維護性度量等等。盡管在IEEE的定義中,“軟件數據”沒明確提出,但如果評測一個軟件產品,則這個被評測的產品就是輸入的軟件數據,這些軟件數據均可以形式地予以定義。
2.2面向對象軟件度量模型
傳統的非面向對象的軟件度量較多的關心軟件復雜度的度量。通過軟件復雜性折射軟件的質量。面向對象的方法學的出現帶來了軟件開發的革命,也帶來了面向對象軟件度量的革命。針對面向對象的軟件生命周期和質量保證,F.B.Abem非形式的提出了七條標準:①度量應該形式化定義;②度量應該與系統大小無關;③度量應該選擇合適的刻度類型;④度量應該在生命周期的早期就可用;⑤度量應該具有可擴展性;⑥度量應該易于計算;⑦度量應該獨立于語言。
Abreu的七條標準對開發針對面向對象的度量具有一定的意義。近幾年來涌現了大量面向對象的軟件度量模型,比較有影響的如:C&K度量集,MOOD度量集,MOOD2度量集等。
3Java軟件的度量工具的設計思想與開發
3.1Java軟件度量工具(Metric Tool)的設計
所謂Java軟件的質量度量,就是對Java程序源代碼進行分析度量。Java軟件的度量工具設計的總體思路將遵從面向對象設計的基本原則,如圖1。
文章設計的軟件度量工具是一個基于C&K和MOOD理論的度量工具,該工具可以運行在Windows XP上,其主要功能就是通過對用戶Java源程序的掃描,計算出C&K度量指標:方法數、繼承類的總數,接口總數,繼承樹深度(DIT)、孩子數目(NOC)、每個類的加權方法(WMC);MOOD度量指標:方法繼承因子(MIF)、多態因子(PF)。通過所該工具得到的度量數據,可以幫助開發人員及時地了解程序的復雜性,估計出程序的穩定性及可維護性,指導測試人員進行有效的測試。
3.2實現功能模塊的簡述
查看度量結果有兩個入口,首先是本地工程度量,其次是歷史工程查看。
3.2.1本地工程度量(XML信息庫的創建)
由于我們設計的度量工具以xml作為信息庫,因此度量某工程首先必須把需要度量的信息存入xml信息庫中,實現的步驟如下:
①選擇工程目錄,遍歷整個工程目錄,提取出.java的文件名。②得到的.java的輸出流(BufferedReader),將其傳人語法分析器中,返回List集合類,該集合存放著XClass對象。由從該XClass對象中可以提取出這個類的繼承類、實現的接口、方法個數、方法名稱、變量個數及名稱、子類的個數、繼承數的深度等信息。③將得到的XClass傳入XML創建類(XmlFileCreate)中,該類通過傳入的信息返回要一定格式的Document,通過idom來構建xml信息庫。JDOM是一個開源項目,它基于樹型結構,利用純JAVA的技術對XML文檔實現解析、生成、序列化以及多種操作。JDOM直接為JAVA編程服務。它利用更為強有力的JAVA語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結合起來。在使用設計上盡可能地隱藏原來使用XML過程中的復雜性。④將得到的Document寫入創建的XML文件中,存放在工程目錄xmlfile文件夾下面,該文件默認以工程名稱+時間作為文件名,來避免出現相同的文件名,名字規范如下:softmeasure-2008-05-31 18:36:50.xml。⑤歷史文件的管理。包括歷史文件的修改名稱、刪除、查看度量結果。
3.2.2度量計算器的實現
度量計算器讀取xml信息庫的結果,根據度量模型對相關度量指標進行計算。度量計算器只和知識庫交換,不受外界環境的影響,這是知識庫的隔離變化和分析器的適應變化發揮功效的體現。度量計算器套用C&K和MOOD度量集給出了一些計算公式,來實現軟件工程的度量。
3.2.3度量結果的展示
①窗口視圖展現。度量結果的展示由三個窗口視圖JInteranlFrame和中間JTabbedPane組成。三個窗口視圖分別是項目視圖、類視圖、信息視圖。類視圖:以樹的形式展現了類的信息,包括繼承類、實現接口、方法體及名稱;信息視圖:以JTable顯示有C&K、MOOD套件度量出的信息、以及其他類的信息;項目視圖:以樹的形式展現了工程目錄所有java文件。樹的結構按工程目錄一>包名稱一>類名稱,該樹添加了一個鼠標事件監聽器。②中間區域信息的展現。中間信息區域為一個JTabbedPane面板,有4中的tab頁的類型,報表的實現一JFmeChart包來實現,JFreeChart目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求,本系統中用到了餅圖和柱狀圖的實現。③XML信息庫的讀取和存放。對XML信息庫的讀取同樣是用jdom包實現,讀取到的信息則將其存在Map集合類中,以key值作為包名,值是一個以類名為key值,TreeNode類為value值的HashMap。④面板工廠管理。由于系統面板比較多,所以采用工廠模式對面板進行管理,使得代碼更加清晰易懂。⑤程序截圖,如圖2所示。
3.3Java軟件度量工具開發平臺與工具的介紹
Eclipse平臺:Eclipse是一個開放源代碼的、基于Java的可擴展開發平臺。Eclipse是一個開發源碼項目,可擴展性很好,而且任何人都可以免費得到,并可以在此基礎上開發各自的插件,開源插件和商業插件都可以用來擴充Eclipse。因此越來越受人們關注。
4結語
面向對象軟件度量及其自動化的研究具有廣闊的應用前景。面向對象軟件的度量目前只是處于探討階段,尚沒有從面向對象軟件的特點挖掘出具有理論價值和實用價值的度量方法和準則。以上的度量方法只是對面向對象技術中某一方面特有的內部屬性進行了評估,還不能將它們與整個系統的件復雜性對應起來。即使不精確,也有一定的參考價值,因此,我們所設計出的度量工具也正基于這些度量集來實現。