5 个常用的软件质量指标
在軟件開發(fā)中,軟件質(zhì)量是衡量軟件是否符合需求、標(biāo)準(zhǔn)的重要體現(xiàn)。除了代碼質(zhì)量外,影響軟件整體質(zhì)量的因素還有很多。因此,要確保軟件的整體質(zhì)量,就需要在各個(gè)環(huán)節(jié)嚴(yán)格控制。
本文列出了衡量軟件質(zhì)量的5個(gè)最常用的指標(biāo)。
1. SLOC(Source Lines of Code,源代碼行)
計(jì)算代碼行數(shù)可能是最簡單的衡量指標(biāo),主要體現(xiàn)了軟件的規(guī)模,并為項(xiàng)目增長和規(guī)劃提供了相關(guān)數(shù)據(jù)。例如,如果每月統(tǒng)計(jì)一次代碼的行數(shù),就可以繪制一個(gè)項(xiàng)目發(fā)展概覽圖。當(dāng)然,由于存在項(xiàng)目重構(gòu)或是設(shè)計(jì)階段等因素,這種方式并不太可靠,但是可以為項(xiàng)目的發(fā)展提供一個(gè)視角。
可以只統(tǒng)計(jì)邏輯代碼行(Source Logical Line of Code,SLLOC),這樣可以獲得稍準(zhǔn)確的信息。邏輯代碼行不包含空行、單個(gè)括號(hào)行和注釋行。可以使用Metrics工具來統(tǒng)計(jì)。
代碼行數(shù)不應(yīng)該用來評(píng)估開發(fā)者的效率,否則,可能會(huì)產(chǎn)生重復(fù)、不可維護(hù)的或不專業(yè)的代碼。
2. 每個(gè)代碼段/模塊/時(shí)間段中的bug數(shù)
要想實(shí)現(xiàn)更好的測試以及更高的可維護(hù)性,bug跟蹤是必不可少的。每個(gè)代碼段、模塊或時(shí)間段(天、周、月等)內(nèi)的bug可以很容易通過工具統(tǒng)計(jì)出來(如Mantis)。這樣,可以及早發(fā)現(xiàn)并及時(shí)修復(fù)。
Bug數(shù)可以作為評(píng)估開發(fā)者效率的指標(biāo)之一,但必須注意,如果過分強(qiáng)調(diào)這種評(píng)估方法,軟件開發(fā)者和測試者可能會(huì)成為敵人。在生產(chǎn)企業(yè)中,要保證員工彼此之間的凝聚力。
為了更好的實(shí)現(xiàn)評(píng)估,可以根據(jù)重要性和解決成本將bug劃分為低、中、高三個(gè)級(jí)別。
3. 代碼覆蓋率
在單元測試階段,代碼覆蓋率常常被拿來作為衡量測試好壞的指標(biāo),也用來考核測試任務(wù)完成情況。可以使用的工具也有很多,如Cobertura等。
代碼覆蓋率并不能代表單元測試的整體質(zhì)量,但可以提供一些測試覆蓋率相關(guān)的信息,可以和其他一些測試指標(biāo)一起來使用。
此外,在查看代碼覆蓋率時(shí),還需注意單元測試代碼、集成測試場景和結(jié)果等。
4. 設(shè)計(jì)/開發(fā)約束
軟件開發(fā)中有很多設(shè)計(jì)約束和原則,其中包括:
類/方法的長度
一個(gè)類中方法/屬性的個(gè)數(shù)
方法/構(gòu)造函數(shù)參數(shù)的個(gè)數(shù)
代碼文件中魔術(shù)數(shù)字、字符串的使用(魔術(shù)數(shù)字指直接寫在代碼中的具體數(shù)值,其他人難以理解數(shù)字的意義)
注釋行比例等
代碼的可維護(hù)性和可讀性是很重要的,開發(fā)團(tuán)隊(duì)可以選擇以上這些原則中的一個(gè)或全部,并通過一些自動(dòng)化工具(如maven pmd插件)來遵循這些原則,這將大大提高軟件產(chǎn)品的質(zhì)量。
5. 圈復(fù)雜度(Cyclomatic Complexity)
圈復(fù)雜度是用來衡量一個(gè)模塊判定結(jié)構(gòu)的復(fù)雜程度,已經(jīng)成為評(píng)估軟件質(zhì)量的一個(gè)重要標(biāo)準(zhǔn),能幫助開發(fā)者識(shí)別難于測試和維護(hù)的模塊,在成本、進(jìn)度和性能之間尋求平衡。圈復(fù)雜度可以使用pmd工具來自動(dòng)化計(jì)算。
圈復(fù)雜度數(shù)量上表現(xiàn)為獨(dú)立路徑的條數(shù),即合理的預(yù)防錯(cuò)誤所需測試的最少路徑條數(shù),圈復(fù)雜度大說明程序代碼可能質(zhì)量低且難于測試和維護(hù)。
計(jì)算公式為:V(G) = E - N + 2P
E:邊,代表節(jié)點(diǎn)間的程序流;
N:節(jié)點(diǎn),程序中代碼的最小單元
P:出口節(jié)點(diǎn)
上圖中共8條邊,7個(gè)節(jié)點(diǎn),因此圈復(fù)雜度為8 - 7 + 2*1=3。這意味著,理論上需要編寫3個(gè)測試用例來覆蓋所有的判定條件。
其實(shí),圈復(fù)雜度的計(jì)算還有更直觀的方法,因?yàn)槿?fù)雜度所反映的是“判定條件”的數(shù)量,所以圈復(fù)雜度實(shí)際上就是等于判定節(jié)點(diǎn)的數(shù)量再加上1,也即控制流圖的區(qū)域數(shù),對(duì)應(yīng)的計(jì)算公式為:V(G)=區(qū)域數(shù)=判定節(jié)點(diǎn)數(shù)+1。
在項(xiàng)目開發(fā)中,可以根據(jù)項(xiàng)目類型,來定義上限數(shù)(6、8或10等)。
以上是最常用的5種軟件質(zhì)量度量指標(biāo),當(dāng)然,還可以結(jié)合其他的指標(biāo),對(duì)項(xiàng)目有一個(gè)更清晰的認(rèn)識(shí)。
英文原文:5 Common Automized Software Quality Metrics
總結(jié)
以上是生活随笔為你收集整理的5 个常用的软件质量指标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Canvas制作简单的画图工具
- 下一篇: 丑山兼艮明年择日