張帆 黃繼海
摘要:該文使用C/C++代碼度量工具對四款采用不同程序設(shè)計語言編寫的游戲應(yīng)用程序進行軟件度量。四款應(yīng)用程序中有三個完全使用C++編寫,每個應(yīng)用程序所包含的類都不盡相同。該工具計算每個應(yīng)用的度量結(jié)果,給出度量的極限值,并以此為依據(jù)進行評估。通過分析不同程序每行注釋的圈復(fù)雜度結(jié)果的相關(guān)性,揭示出編程時需要采用的編碼基準(zhǔn)。
關(guān)鍵詞:代碼度量;代碼行;游戲應(yīng)用程序
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)22-0082-02
1概述
如今,計算機在我們生活的各個領(lǐng)域都扮演著不可或缺的角色,與此同時,在計算機上運行的軟件也就越來越重要。因此,對軟件開發(fā)和軟件產(chǎn)品的控制與預(yù)測就成為一個亟待解決的問題。軟件度量就是衡量軟件品質(zhì)高低的一種方法。軟件品質(zhì)就是指軟件本身及其執(zhí)行流程能滿足用戶的需求的程度。
在過去30年間,軟件度量或者軟件工程度量是一個非?;钴S的軟件研究領(lǐng)域。它可以理解為:度量是客觀對象到數(shù)字對象的同態(tài)映射。同態(tài)映射包括所有關(guān)系和結(jié)構(gòu)映射。用另一句話說,軟件品質(zhì)和軟件度量成直對關(guān)系。
C/C++程序設(shè)計語言編寫的游戲應(yīng)用程序可以通過一些代碼度量工具進行評估。C++代碼度量工具(CCCC)是用以度量C/C++源代碼的工具,它以HTML格式生成度量報告。報告中包含各種表格、交換區(qū)和覆蓋區(qū)的各種模塊。為了驗證度量工具的有效性,我們選擇了四款由不同編程語言開發(fā)的游戲應(yīng)用程序,并選擇一些典型度量標(biāo)準(zhǔn)評估這些應(yīng)用。目前,這些度量工具已經(jīng)通過網(wǎng)絡(luò)得到了廣泛推廣和使用。
2度量環(huán)境
我們選取了四款使用C/C++開發(fā)的游戲:貪吃蛇、彈珠球、拳擊、賽車。這四款游戲沒有任何相似之處,且均可在計算機上獨立運行,對系統(tǒng)內(nèi)存負載很小。它們都不是圖形化的游戲,可以在任何支持基本視頻處理器和2GB以上內(nèi)存的計算機上運行。因此,使用C++代碼度量工具(CCCC)和R工具很容易評估它們的度量數(shù)據(jù)。
3度量數(shù)據(jù)
NOM:模塊數(shù)(包括主模塊的類)。分析儀識別出的非常重要的模塊數(shù)量。有價值的模塊包含所有的類和一些被甄別出的功能模塊。
LOC:代碼行數(shù)。分析儀識別出的非空白、非備注的代碼行數(shù)。
COM:注釋行數(shù)。分析儀識別出的備注行數(shù)。
MVG:McCabe圈復(fù)雜度。度量組成程序功能選擇上的不可預(yù)測性。嚴(yán)格含義上講,是將軟件的流程圖轉(zhuǎn)化為有向圖,然后以圖論的知識和計算方法來衡量軟件的質(zhì)量。分析儀通過識別包含在每個功能內(nèi)的明確選擇結(jié)果,從而對正式度量變量進行有效的估算。
ILC=Lines 0f code per line of remark which demonstrates
thickness of remarks as for printed size of the program.
Lc:代碼行一注釋行比,體現(xiàn)程序打印尺寸中備注的百分比。
M_C=Cyclomatic Complexity per line 0f remark which
demonstrates thickness of remarks as for consistent
muhifaceted nature of program
M_C:每行注釋的圈復(fù)雜度,體現(xiàn)連續(xù)、多面性的程序中備注的百分比。
REJ:解析器忽略的行數(shù)。
4結(jié)果分析
我們使用C++代碼度量工具(CCCC)對四款游戲進行軟件度量,結(jié)果如表1所示。表中給出了每款游戲的度量結(jié)果,從中可以看出:當(dāng)應(yīng)用程序的代碼行減少,注釋行和功能模塊的數(shù)量也同步減少時,McCabe圈復(fù)雜度就會降低。
5度量工具
5.1CCCC
C++代碼度量工具(CCCC)是一種用于分析各種程序設(shè)計語言(主要是C/C++)源代碼的工具,它在分析各種代碼處理結(jié)果的基礎(chǔ)上,會生成HTML格式的度量報告。盡管該工具設(shè)計之初主要用以分析C/C++源代碼,但現(xiàn)在的版本也可用來分析C#、Java、Pvthon等程序設(shè)計語言的源代碼。這種對源代碼的度量通常被稱為“軟件度量”,或更準(zhǔn)確地稱為“軟件過程度量”(因為“軟件度量”也包括對軟件生產(chǎn)過程的度量)。在現(xiàn)代軟件工程領(lǐng)域有一種達成共識的主流思想,即對應(yīng)用程序而言,雖然就什么是值得度量的和哪些度量的意義不大的問題上還沒有達成統(tǒng)一的意見,但進行某種意義上的度量終歸是一件好事。C++代碼度量工具(CCCC)現(xiàn)已被開發(fā)成一款免費軟件,并以開源的形式發(fā)布,用以鼓勵用戶自己編譯程序并修改源代碼,體現(xiàn)其偏好和興趣。
5.2R工具
R工具是一個界面友好、免費開源的工具,用戶可以使用它來繪制圖表。R工具提供各種類型的圖表模板,來比較不同應(yīng)用程序的數(shù)據(jù)。使用該工具時,用戶只需先加載數(shù)據(jù),然后根據(jù)提示,一步步按指令形成圖表即可。
我們通過R工具繪制出的若干圖表,能更清晰、直觀地觀察到表中各應(yīng)用程序的評估結(jié)果及關(guān)聯(lián)性。最終,圖表6展現(xiàn)了各種應(yīng)用程序的圈復(fù)雜度。
6結(jié)論
通過使用C++代碼度量工具(CCCC),我們可以評估每個應(yīng)用程序的度量結(jié)果,而無需獲取信息。每個應(yīng)用程序的評估結(jié)果由工具給出,而圖表則進一步佐證了度量的準(zhǔn)確和結(jié)果的有效。
游戲開發(fā)與制作所使用的方法和工具有很多,以至于難以追蹤其數(shù)據(jù)。隨著游戲應(yīng)用份額的迅猛增長和類型趨于多樣化,統(tǒng)計數(shù)據(jù)的比較往往成為不可能完成的任務(wù),但是在使用這些工具和方法后,讓一切成為可能。因此,擁有廣闊的應(yīng)用前景。endprint