劉 麗,朱小冬,葉 飛
(1.軍械工程學院裝備指揮與管理系,河北石家莊 050051;2.石家莊機械化步兵學院教研部,河北石家莊 050003;3.武漢大學計算機學院,湖北武漢 430072)
基于WEKA的軟件維護性評價模型的實驗研究
劉 麗1,2,朱小冬1,3,葉 飛1
(1.軍械工程學院裝備指揮與管理系,河北石家莊 050051;2.石家莊機械化步兵學院教研部,河北石家莊 050003;3.武漢大學計算機學院,湖北武漢 430072)
為了能夠對軟件維護性進行評價,以類級軟件維護性數據集為例進行了軟件維護性實驗,應用Logiscope對類的維護性做了定性評價;運用Krakatau Professional收集類各個度量的度量值;通過WEKA得到了類級度量關鍵屬性;最后,選取決策樹分類方法訓練分類模型,并利用訓練好的分類模型對測試集進行測試,得到基本滿足要求的類級軟件維護性評價模型。
軟件維護性評價;Logiscope;Krakatau Professional;WEKA;決策樹分類器
作為軟件產品的重要質量特性,可維護性是軟件開發階段各個時期的關鍵目標,決定了軟件可以被更改以滿足用戶要求或能檢測到缺陷并予以改正的難易程度,其評估目的是確認軟件系統的維護性是否達到設計或標準的要求。對軟件可維護性進行度量和評價不僅有利于了解軟件是否滿足規定的可維護性要求,而且有助于及時發現設計缺陷,指導軟件可維護性的分析與設計。
軟件的最終產品是由源代碼編譯成的可執行文件,對軟件的維護最終要落到對源代碼的更改上。因此,對軟件實現及實現后的基于源代碼的軟件維護性評價也是軟件維護性評價的一個重要研究內容。通過基于源代碼的軟件維護性評價可以了解軟件整體的維護性水平,并發現維護性薄弱環節,進而有針對性地改進源代碼質量和維護性,最終保證軟件具有良好的維護性。基于此,筆者試圖對軟件源代碼的維護性進行評價。
筆者以面向對象軟件的類維護性評價為對象,對收集的300個類級源代碼(C++)進行了維護性評價實驗,首先應用Logiscope依據ISO 9126軟件質量模型對類的維護性進行了定性評價,對各類的維護性給出一個綜合的優、良、可、差的結果。其次由于ISO 9126軟件質量模型不易指導軟件可維護性分析與設計,因此從規模、耦合度、內聚度、繼承、復雜度5方面共選擇了21個源代碼度量集,運用Krakatau Professional對類的各個度量值進行度量,然后,考慮到度量數據過多,如果度量集都用來構造軟件維護性評價模型,會導致構造模型的效率和模型的準確度嚴重下降,因此,提出了進行關鍵屬性選擇。最后,選取決策樹分類方法訓練分類模型,并利用訓練好的分類模型對測試集進行測試,建立了基本滿足要求的類級軟件維護性評價模型,運用該評價模型可對系統中的各個類進行評價,發現系統維護性的薄弱環節——維護性差的類。
Logiscope是法國Telelogic公司推出的專用于軟件質量保證和軟件測試的產品。其主要功能是對軟件做質量分析和測試以保證軟件的質量,并可做認證、反向工程和維護,特別是針對要求高可靠性和高安全性的軟件項目和工程。本文用的是Logiscope的Audit工具,它可以定位錯誤模塊,可評估軟件質量及復雜程度,對系統各類的維護性進行定性評價。
Krakatau Professional是一款軟件度量工具,是為源代碼質量而設計,是度量軟件工具中的專家。該工具可對面向對象軟件系統的各種特性進行度量。通過分析軟件結構,在方法、類、模塊和系統級上對軟件維護性度量進行選擇,并提供可視化的報告和圖形化的輸出。
WEKA是基于JAVA環境下開源的機器學習(machine learning)以及數據挖掘(data mining)軟件。本文選用的是WEKA的Explorer數據處理模塊,在此模塊環境中,WEKA提供了數據的預處理、數據格式的轉化(從CSV格式到ARFF格式的轉化)、各種數據挖掘算法(包括分類與回歸算法、聚類算法、關聯規則等),并提供了結果的可視化工具。
評估軟件可維護性,指標的合理選取至關重要。本文結合ISO 9126的軟件維護性定義,對軟件可維護性進行分類(如圖1所示)。從規模、耦合度、內聚度、繼承、復雜度5方面共選擇了21個源代碼度量集[1-4](如表1所示)。
本文對軟件進行維護性評價,遵循圖2所示的流程圖。

圖1 軟件可維護性分類圖Fig.1 Classification of software maintainability
2.2.1 數據預處理
數據預處理包括數據準備以及關鍵屬性選擇。
1)數據準備
要構建維護性評價模型,需要獲得2組數據,一組是關于軟件本身設計特性的數據,它評價模型中的自變量,另一組數據是軟件維護性數據,它是模型中的變量。本文是通過表2所描述的維護性實驗來獲取軟件維護性數據集的。

圖2 軟件可維護性評價流程圖Fig.2 Flow of software maintainability evaluation model

表1 類級面向對象軟件系統源代碼度量集Tab.1 Class level OO software source code metrics set

表2 面向對象軟件維護性實驗描述Tab.2 Maintainability experiment(OO source code)
通過上述實驗,其部分輸出結果見表3。

表3 部分結果Tab.3 A part of the output
2)關鍵屬性選擇
選擇關鍵屬性來建造軟件維護性評價模型是本文建模中的一個重要問題,由于維數災難,所列的度量集不可能都被用來進行軟件維護性評價模型的訓練。如果度量集都用來構造軟件維護性評價模型,會導致構造模型的效率和模型的準確度嚴重下降。在收集的類的軟件維護性度量之中,有太多的度量需要學習方案進行處理,其中部分屬性是無關或者重復的。因此,需要對屬性進行選擇,選擇出關鍵屬性,消除高度相關的其他屬性運用于學習中。
本文選用WEKA中的CfsSubsetEval評估器和多種搜索算法,屬性選擇的模式采用將數據全集作為訓練和測試集,classperformence屬性作為分類屬性,對類的度量數據集進行處理。CfsSubset Eval評估器可逐一評估每個屬性的預測能力和它們之間的重復程度,進而選擇那些與類有高度關聯但相互之間關聯程度卻較低的屬性。根據數據特點及搜索算法與屬性子集評估器的匹配原則,選取了WEKA工具中集成的屬性空間搜索方法中的5種搜索算法進行了實驗。它們分別是:Best First算法、Greedy Stepwise算法、ExhaustiveSearch算法、GeneticSearch算法和RandomSearch算法。由于篇幅有限,僅給出采用Best First算法對屬性子集進行搜索的結果顯示,如圖3所示。
綜合以上5種算法搜索屬性子集的結果,可知第2,3,4,14,16,19(對應的是 OSavg,CSAO,CSO,NOOC,PPPC,SLOC)項屬性是關鍵屬性,其在軟件維護體系中,占更重要的作用。
2.2.2 軟件維護性評價模型建立與檢驗

圖3 Best First算法屬性選擇結果Fig.3 Outcome of attribute choice base on Best First
本文采用C4.5決策樹算法[5-8]來構建軟件維護性評價模型。C4.5算法是目前應用最為廣泛的機器學習算法。該算法可以描述成從一個假設空間中搜索一個擬合訓練樣例的假設。被算法搜索的假設空間就是可能的決策樹的集合。該算法以一種從簡單到復雜的爬山算法遍歷這個假設空間,從空的樹開始,然后逐步考慮更加復雜的假設,目的是搜索到一個正確分類訓練數據的決策樹。它通過2個步驟來構造決策樹:決策樹的生成階段和剪枝階段。
1)決策樹生成階段
決策樹生成階段,即建立一個模型。建立過程可簡述如下:從根節點開始在每個節點上按照給定標準選擇測試屬性,然后按照相應屬性的所有可能取值向下建立分枝、劃分訓練樣本,直到一個節點上的所有樣本都被劃分到同一個類,或者某一節點中的樣本數量低于給定值為止。此階段需要有一個訓練集作為輸入,因此,將前270個實例作為一個訓練集來訓練分類器。首先將訓練數據集載入WEKA下的Explorer模塊,去掉classname一列屬性,然后選用J48算法(它是C4.5決策樹分類算法在WEKA中的實現),模型測試模式選擇10折交叉驗證(將初始數據集劃分為10個互不相交的折,每個折的大小大致相等,訓練和測試進行10次迭代),分類屬性為classperformence,如圖4所示。點擊“Start”開始訓練模型,最后得到模型并保存模型,其圖形化形式如圖5所示。該圖是對軟件維護性進行分類,其中每個內部節點(矩形框)代表對某個屬性的一次檢測,一條邊代表測試的結果,每個葉子節點(橢圓框)代表一個類。最上面的節點是根節點。

圖4 模型訓練算法選擇及參數設置Fig.4 Arithmetic of choice and setup of parameters
決策樹符合IF-THEN規則,如下所示。


2)剪枝階段
利用訓練好的分類模型預測軟件維護性,來檢驗預測的準確度。此階段需用非訓練集的實例檢驗,因此,將后30個實例用來測試預測結果的準確度。通過選擇圖4中的“Supplied test set”找到測試集的路徑,將包含30個實例的測試集載入到模型中。得到預測輸出與測試數據集中的分類的不同,對比可得其預測的準確率為80%,基本達到了對軟件維護性評價的目的。運用該評價模型可對系統中的各個類進行評價,發現系統維護性的薄弱環節——維護性差的類。

圖5 決策樹分類模型的圖形化表示Fig.5 Graphic show of decision tree classifier model
通過維護性實驗獲取了實現階段源代碼度量的數據以及可維護性的關鍵屬性,利用這些數據構建了基于類級源代碼度量的軟件可維護性評價模型,模型經過檢驗表明,達到了對軟件維護性評價的目的。運用該評價模型可對系統中的各個類進行評價。
在下一步的研究中,將嘗試對系統級和模塊級的維護性進行評價;并運用多種方法對數據集進行分析和建模,以建立最優的軟件維護性評價模型。
[1]THWIN M M T,QUAH T S.Application of neural networks for software quality prediction using object-oriented metrics[J].Journal of Systems and Software,2005,76(2):147-156.
[2]LI W,HENRY S.Object-oriented metrics that predict maintainability[J].Journal of Systems and Software,1993,23(2):111-122.
[3]BANDI R K,VAISHNAVI V K,TURK D E.Predicting maintenance performance using object-oriented design complexity metrics[J].IEEE Transactions on Software Engineering,2003,29(1):77-87.
[4]FENTON N E,NEIL M.Software measurement:Uncertainty and causal modeling[J].IEEE Software,2002,19(4):116-122.
[5]張云濤,龔 玲.數據挖掘原理與技術[M].北京:電子工業出版社,2004.
[6]TODOROVSKI L,DZEROSKI S.Combining multiple models with meta decision trees[J].Principles of Data Mining and Knowledge Discovery,2000,19(10):69-84.
[7]YAO Y,FU Z L,ZHAO X H,et al.Combining classifier based on decision tree[A].Information Engineering,2009[C].Taiyuan:ICIE′09 WASE International Conference,2009.37-40.
[8]李 萍,李法朝.基于決策樹的知識表示模型及其應用[J].河北科技大學學報(Journal of Hebei University of Science and Technology),2009,30(2):87-91.
Experimental research in evaluation model of software maintainability based on WEKA
LIU Li1,2,ZHU Xiao-dong1,3,YE Fei1
(1.Department of Equipment Command and Management,Ordnance Engineering College,Shijiazhuang Hebei 050051,China;2.Department of Teaching and Research,Shijiazhuang Mechanized Infantry Academy,Shijiazhuang Hebei 050003,China;3.School of Computer,Wuhan University,Wuhan Hubei 430072,China)
In order to evaluate software maintainability,an experiment was made about class dates of software maintainability.Class maintainability was qualitatively evaluated by applying Losiscope.Some class metrics were collected by using Krakatau Professional,metric attributes were analysed through WEKA and the key attributes were obtained.At last,professional class model was trained through decision tree classifier,and the model was tested.
evaluation of software maintainability;Logiscope;Krakatau Professional;WEKA;decision tree classfier
TP301
A
1008-1542(2012)01-0069-05
2011-10-13;
2011-11-11;責任編輯:王海云
裝備預先研究項目
劉 麗(1980-),女,河北鹿泉人,講師,博士研究生,主要從事裝備軟件保障與應用方面的研究。