劉 麗,朱小冬,葉 飛
(1.軍械工程學(xué)院裝備指揮與管理系,河北石家莊 050051;2.石家莊機(jī)械化步兵學(xué)院教研部,河北石家莊 050003;3.武漢大學(xué)計(jì)算機(jī)學(xué)院,湖北武漢 430072)
基于WEKA的軟件維護(hù)性評(píng)價(jià)模型的實(shí)驗(yàn)研究
劉 麗1,2,朱小冬1,3,葉 飛1
(1.軍械工程學(xué)院裝備指揮與管理系,河北石家莊 050051;2.石家莊機(jī)械化步兵學(xué)院教研部,河北石家莊 050003;3.武漢大學(xué)計(jì)算機(jī)學(xué)院,湖北武漢 430072)
為了能夠?qū)浖S護(hù)性進(jìn)行評(píng)價(jià),以類(lèi)級(jí)軟件維護(hù)性數(shù)據(jù)集為例進(jìn)行了軟件維護(hù)性實(shí)驗(yàn),應(yīng)用Logiscope對(duì)類(lèi)的維護(hù)性做了定性評(píng)價(jià);運(yùn)用Krakatau Professional收集類(lèi)各個(gè)度量的度量值;通過(guò)WEKA得到了類(lèi)級(jí)度量關(guān)鍵屬性;最后,選取決策樹(shù)分類(lèi)方法訓(xùn)練分類(lèi)模型,并利用訓(xùn)練好的分類(lèi)模型對(duì)測(cè)試集進(jìn)行測(cè)試,得到基本滿足要求的類(lèi)級(jí)軟件維護(hù)性評(píng)價(jià)模型。
軟件維護(hù)性評(píng)價(jià);Logiscope;Krakatau Professional;WEKA;決策樹(shù)分類(lèi)器
作為軟件產(chǎn)品的重要質(zhì)量特性,可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo),決定了軟件可以被更改以滿足用戶(hù)要求或能檢測(cè)到缺陷并予以改正的難易程度,其評(píng)估目的是確認(rèn)軟件系統(tǒng)的維護(hù)性是否達(dá)到設(shè)計(jì)或標(biāo)準(zhǔn)的要求。對(duì)軟件可維護(hù)性進(jìn)行度量和評(píng)價(jià)不僅有利于了解軟件是否滿足規(guī)定的可維護(hù)性要求,而且有助于及時(shí)發(fā)現(xiàn)設(shè)計(jì)缺陷,指導(dǎo)軟件可維護(hù)性的分析與設(shè)計(jì)。
軟件的最終產(chǎn)品是由源代碼編譯成的可執(zhí)行文件,對(duì)軟件的維護(hù)最終要落到對(duì)源代碼的更改上。因此,對(duì)軟件實(shí)現(xiàn)及實(shí)現(xiàn)后的基于源代碼的軟件維護(hù)性評(píng)價(jià)也是軟件維護(hù)性評(píng)價(jià)的一個(gè)重要研究?jī)?nèi)容。通過(guò)基于源代碼的軟件維護(hù)性評(píng)價(jià)可以了解軟件整體的維護(hù)性水平,并發(fā)現(xiàn)維護(hù)性薄弱環(huán)節(jié),進(jìn)而有針對(duì)性地改進(jìn)源代碼質(zhì)量和維護(hù)性,最終保證軟件具有良好的維護(hù)性?;诖?,筆者試圖對(duì)軟件源代碼的維護(hù)性進(jìn)行評(píng)價(jià)。
筆者以面向?qū)ο筌浖念?lèi)維護(hù)性評(píng)價(jià)為對(duì)象,對(duì)收集的300個(gè)類(lèi)級(jí)源代碼(C++)進(jìn)行了維護(hù)性評(píng)價(jià)實(shí)驗(yàn),首先應(yīng)用Logiscope依據(jù)ISO 9126軟件質(zhì)量模型對(duì)類(lèi)的維護(hù)性進(jìn)行了定性評(píng)價(jià),對(duì)各類(lèi)的維護(hù)性給出一個(gè)綜合的優(yōu)、良、可、差的結(jié)果。其次由于ISO 9126軟件質(zhì)量模型不易指導(dǎo)軟件可維護(hù)性分析與設(shè)計(jì),因此從規(guī)模、耦合度、內(nèi)聚度、繼承、復(fù)雜度5方面共選擇了21個(gè)源代碼度量集,運(yùn)用Krakatau Professional對(duì)類(lèi)的各個(gè)度量值進(jìn)行度量,然后,考慮到度量數(shù)據(jù)過(guò)多,如果度量集都用來(lái)構(gòu)造軟件維護(hù)性評(píng)價(jià)模型,會(huì)導(dǎo)致構(gòu)造模型的效率和模型的準(zhǔn)確度嚴(yán)重下降,因此,提出了進(jìn)行關(guān)鍵屬性選擇。最后,選取決策樹(shù)分類(lèi)方法訓(xùn)練分類(lèi)模型,并利用訓(xùn)練好的分類(lèi)模型對(duì)測(cè)試集進(jìn)行測(cè)試,建立了基本滿足要求的類(lèi)級(jí)軟件維護(hù)性評(píng)價(jià)模型,運(yùn)用該評(píng)價(jià)模型可對(duì)系統(tǒng)中的各個(gè)類(lèi)進(jìn)行評(píng)價(jià),發(fā)現(xiàn)系統(tǒng)維護(hù)性的薄弱環(huán)節(jié)——維護(hù)性差的類(lèi)。
Logiscope是法國(guó)Telelogic公司推出的專(zhuān)用于軟件質(zhì)量保證和軟件測(cè)試的產(chǎn)品。其主要功能是對(duì)軟件做質(zhì)量分析和測(cè)試以保證軟件的質(zhì)量,并可做認(rèn)證、反向工程和維護(hù),特別是針對(duì)要求高可靠性和高安全性的軟件項(xiàng)目和工程。本文用的是Logiscope的Audit工具,它可以定位錯(cuò)誤模塊,可評(píng)估軟件質(zhì)量及復(fù)雜程度,對(duì)系統(tǒng)各類(lèi)的維護(hù)性進(jìn)行定性評(píng)價(jià)。
Krakatau Professional是一款軟件度量工具,是為源代碼質(zhì)量而設(shè)計(jì),是度量軟件工具中的專(zhuān)家。該工具可對(duì)面向?qū)ο筌浖到y(tǒng)的各種特性進(jìn)行度量。通過(guò)分析軟件結(jié)構(gòu),在方法、類(lèi)、模塊和系統(tǒng)級(jí)上對(duì)軟件維護(hù)性度量進(jìn)行選擇,并提供可視化的報(bào)告和圖形化的輸出。
WEKA是基于JAVA環(huán)境下開(kāi)源的機(jī)器學(xué)習(xí)(machine learning)以及數(shù)據(jù)挖掘(data mining)軟件。本文選用的是WEKA的Explorer數(shù)據(jù)處理模塊,在此模塊環(huán)境中,WEKA提供了數(shù)據(jù)的預(yù)處理、數(shù)據(jù)格式的轉(zhuǎn)化(從CSV格式到ARFF格式的轉(zhuǎn)化)、各種數(shù)據(jù)挖掘算法(包括分類(lèi)與回歸算法、聚類(lèi)算法、關(guān)聯(lián)規(guī)則等),并提供了結(jié)果的可視化工具。
評(píng)估軟件可維護(hù)性,指標(biāo)的合理選取至關(guān)重要。本文結(jié)合ISO 9126的軟件維護(hù)性定義,對(duì)軟件可維護(hù)性進(jìn)行分類(lèi)(如圖1所示)。從規(guī)模、耦合度、內(nèi)聚度、繼承、復(fù)雜度5方面共選擇了21個(gè)源代碼度量集[1-4](如表1所示)。
本文對(duì)軟件進(jìn)行維護(hù)性評(píng)價(jià),遵循圖2所示的流程圖。
圖1 軟件可維護(hù)性分類(lèi)圖Fig.1 Classification of software maintainability
2.2.1 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理包括數(shù)據(jù)準(zhǔn)備以及關(guān)鍵屬性選擇。
1)數(shù)據(jù)準(zhǔn)備
要構(gòu)建維護(hù)性評(píng)價(jià)模型,需要獲得2組數(shù)據(jù),一組是關(guān)于軟件本身設(shè)計(jì)特性的數(shù)據(jù),它評(píng)價(jià)模型中的自變量,另一組數(shù)據(jù)是軟件維護(hù)性數(shù)據(jù),它是模型中的變量。本文是通過(guò)表2所描述的維護(hù)性實(shí)驗(yàn)來(lái)獲取軟件維護(hù)性數(shù)據(jù)集的。
圖2 軟件可維護(hù)性評(píng)價(jià)流程圖Fig.2 Flow of software maintainability evaluation model
表1 類(lèi)級(jí)面向?qū)ο筌浖到y(tǒng)源代碼度量集Tab.1 Class level OO software source code metrics set
表2 面向?qū)ο筌浖S護(hù)性實(shí)驗(yàn)描述Tab.2 Maintainability experiment(OO source code)
通過(guò)上述實(shí)驗(yàn),其部分輸出結(jié)果見(jiàn)表3。
表3 部分結(jié)果Tab.3 A part of the output
2)關(guān)鍵屬性選擇
選擇關(guān)鍵屬性來(lái)建造軟件維護(hù)性評(píng)價(jià)模型是本文建模中的一個(gè)重要問(wèn)題,由于維數(shù)災(zāi)難,所列的度量集不可能都被用來(lái)進(jìn)行軟件維護(hù)性評(píng)價(jià)模型的訓(xùn)練。如果度量集都用來(lái)構(gòu)造軟件維護(hù)性評(píng)價(jià)模型,會(huì)導(dǎo)致構(gòu)造模型的效率和模型的準(zhǔn)確度嚴(yán)重下降。在收集的類(lèi)的軟件維護(hù)性度量之中,有太多的度量需要學(xué)習(xí)方案進(jìn)行處理,其中部分屬性是無(wú)關(guān)或者重復(fù)的。因此,需要對(duì)屬性進(jìn)行選擇,選擇出關(guān)鍵屬性,消除高度相關(guān)的其他屬性運(yùn)用于學(xué)習(xí)中。
本文選用WEKA中的CfsSubsetEval評(píng)估器和多種搜索算法,屬性選擇的模式采用將數(shù)據(jù)全集作為訓(xùn)練和測(cè)試集,classperformence屬性作為分類(lèi)屬性,對(duì)類(lèi)的度量數(shù)據(jù)集進(jìn)行處理。CfsSubset Eval評(píng)估器可逐一評(píng)估每個(gè)屬性的預(yù)測(cè)能力和它們之間的重復(fù)程度,進(jìn)而選擇那些與類(lèi)有高度關(guān)聯(lián)但相互之間關(guān)聯(lián)程度卻較低的屬性。根據(jù)數(shù)據(jù)特點(diǎn)及搜索算法與屬性子集評(píng)估器的匹配原則,選取了WEKA工具中集成的屬性空間搜索方法中的5種搜索算法進(jìn)行了實(shí)驗(yàn)。它們分別是:Best First算法、Greedy Stepwise算法、ExhaustiveSearch算法、GeneticSearch算法和RandomSearch算法。由于篇幅有限,僅給出采用Best First算法對(duì)屬性子集進(jìn)行搜索的結(jié)果顯示,如圖3所示。
綜合以上5種算法搜索屬性子集的結(jié)果,可知第2,3,4,14,16,19(對(duì)應(yīng)的是 OSavg,CSAO,CSO,NOOC,PPPC,SLOC)項(xiàng)屬性是關(guān)鍵屬性,其在軟件維護(hù)體系中,占更重要的作用。
2.2.2 軟件維護(hù)性評(píng)價(jià)模型建立與檢驗(yàn)
圖3 Best First算法屬性選擇結(jié)果Fig.3 Outcome of attribute choice base on Best First
本文采用C4.5決策樹(shù)算法[5-8]來(lái)構(gòu)建軟件維護(hù)性評(píng)價(jià)模型。C4.5算法是目前應(yīng)用最為廣泛的機(jī)器學(xué)習(xí)算法。該算法可以描述成從一個(gè)假設(shè)空間中搜索一個(gè)擬合訓(xùn)練樣例的假設(shè)。被算法搜索的假設(shè)空間就是可能的決策樹(shù)的集合。該算法以一種從簡(jiǎn)單到復(fù)雜的爬山算法遍歷這個(gè)假設(shè)空間,從空的樹(shù)開(kāi)始,然后逐步考慮更加復(fù)雜的假設(shè),目的是搜索到一個(gè)正確分類(lèi)訓(xùn)練數(shù)據(jù)的決策樹(shù)。它通過(guò)2個(gè)步驟來(lái)構(gòu)造決策樹(shù):決策樹(shù)的生成階段和剪枝階段。
1)決策樹(shù)生成階段
決策樹(shù)生成階段,即建立一個(gè)模型。建立過(guò)程可簡(jiǎn)述如下:從根節(jié)點(diǎn)開(kāi)始在每個(gè)節(jié)點(diǎn)上按照給定標(biāo)準(zhǔn)選擇測(cè)試屬性,然后按照相應(yīng)屬性的所有可能取值向下建立分枝、劃分訓(xùn)練樣本,直到一個(gè)節(jié)點(diǎn)上的所有樣本都被劃分到同一個(gè)類(lèi),或者某一節(jié)點(diǎn)中的樣本數(shù)量低于給定值為止。此階段需要有一個(gè)訓(xùn)練集作為輸入,因此,將前270個(gè)實(shí)例作為一個(gè)訓(xùn)練集來(lái)訓(xùn)練分類(lèi)器。首先將訓(xùn)練數(shù)據(jù)集載入WEKA下的Explorer模塊,去掉classname一列屬性,然后選用J48算法(它是C4.5決策樹(shù)分類(lèi)算法在WEKA中的實(shí)現(xiàn)),模型測(cè)試模式選擇10折交叉驗(yàn)證(將初始數(shù)據(jù)集劃分為10個(gè)互不相交的折,每個(gè)折的大小大致相等,訓(xùn)練和測(cè)試進(jìn)行10次迭代),分類(lèi)屬性為classperformence,如圖4所示。點(diǎn)擊“Start”開(kāi)始訓(xùn)練模型,最后得到模型并保存模型,其圖形化形式如圖5所示。該圖是對(duì)軟件維護(hù)性進(jìn)行分類(lèi),其中每個(gè)內(nèi)部節(jié)點(diǎn)(矩形框)代表對(duì)某個(gè)屬性的一次檢測(cè),一條邊代表測(cè)試的結(jié)果,每個(gè)葉子節(jié)點(diǎn)(橢圓框)代表一個(gè)類(lèi)。最上面的節(jié)點(diǎn)是根節(jié)點(diǎn)。
圖4 模型訓(xùn)練算法選擇及參數(shù)設(shè)置Fig.4 Arithmetic of choice and setup of parameters
決策樹(shù)符合IF-THEN規(guī)則,如下所示。
2)剪枝階段
利用訓(xùn)練好的分類(lèi)模型預(yù)測(cè)軟件維護(hù)性,來(lái)檢驗(yàn)預(yù)測(cè)的準(zhǔn)確度。此階段需用非訓(xùn)練集的實(shí)例檢驗(yàn),因此,將后30個(gè)實(shí)例用來(lái)測(cè)試預(yù)測(cè)結(jié)果的準(zhǔn)確度。通過(guò)選擇圖4中的“Supplied test set”找到測(cè)試集的路徑,將包含30個(gè)實(shí)例的測(cè)試集載入到模型中。得到預(yù)測(cè)輸出與測(cè)試數(shù)據(jù)集中的分類(lèi)的不同,對(duì)比可得其預(yù)測(cè)的準(zhǔn)確率為80%,基本達(dá)到了對(duì)軟件維護(hù)性評(píng)價(jià)的目的。運(yùn)用該評(píng)價(jià)模型可對(duì)系統(tǒng)中的各個(gè)類(lèi)進(jìn)行評(píng)價(jià),發(fā)現(xiàn)系統(tǒng)維護(hù)性的薄弱環(huán)節(jié)——維護(hù)性差的類(lèi)。
圖5 決策樹(shù)分類(lèi)模型的圖形化表示Fig.5 Graphic show of decision tree classifier model
通過(guò)維護(hù)性實(shí)驗(yàn)獲取了實(shí)現(xiàn)階段源代碼度量的數(shù)據(jù)以及可維護(hù)性的關(guān)鍵屬性,利用這些數(shù)據(jù)構(gòu)建了基于類(lèi)級(jí)源代碼度量的軟件可維護(hù)性評(píng)價(jià)模型,模型經(jīng)過(guò)檢驗(yàn)表明,達(dá)到了對(duì)軟件維護(hù)性評(píng)價(jià)的目的。運(yùn)用該評(píng)價(jià)模型可對(duì)系統(tǒng)中的各個(gè)類(lèi)進(jìn)行評(píng)價(jià)。
在下一步的研究中,將嘗試對(duì)系統(tǒng)級(jí)和模塊級(jí)的維護(hù)性進(jìn)行評(píng)價(jià);并運(yùn)用多種方法對(duì)數(shù)據(jù)集進(jìn)行分析和建模,以建立最優(yōu)的軟件維護(hù)性評(píng)價(jià)模型。
[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]張?jiān)茲?玲.數(shù)據(jù)挖掘原理與技術(shù)[M].北京:電子工業(yè)出版社,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,F(xiàn)U 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]李 萍,李法朝.基于決策樹(shù)的知識(shí)表示模型及其應(yīng)用[J].河北科技大學(xué)學(xué)報(bào)(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;責(zé)任編輯:王海云
裝備預(yù)先研究項(xiàng)目
劉 麗(1980-),女,河北鹿泉人,講師,博士研究生,主要從事裝備軟件保障與應(yīng)用方面的研究。