在Audit的內部定義了大量的質量度量元,度量元是檢驗一個軟件質量好壞的最基本元素。在Logiscope提供的這個默認質量模型文件中,選取的度量元都是為最后評價可維護性提供服務的。通過觀察Logiscope.ref質量模型文件,你會發現,度量元都可以量化為數字,允許我們在質量模型文件中為每個度量元設定上限值和下限值。當某一度量元超出我們設定的上限值和下限值的范圍時,Audit就認為被檢測的代碼在該項度量元上不符和要求。
下面舉一個度量元的例子:lc_stat度量。該度量元表示函數中可執行語句的數量。lc_stat度量元對于衡量函數的復雜性是很有用的,比如我們可以設定它的上限值為30,下限值為0,即我們規定了:一個函數中可執行的語句數不能超過30條。這就是Audit對質量模型中度量元級的處理方法。
通過這一個個單獨的度量元,我們還不能判斷程序的可維護性如何,因為過于片面,只有將這些度量元按某種規則組織起來,才能對軟件的可維護性作出評價。通過觀察Logiscope.ref這個質量模型文件我們會發現,每個質量標準都是由若干個度量元按權相加組成的,質量標準最后也用數字來表示它自己的值。通過質量標準值的大小,Audit給出程序代碼遵守該項質量標準的級別。級別共有四個,由高到底依次是 EXCELLENT(優秀)、GOOD(良好)、FAIR(合格)、POOR(不合格)。下面從Logiscope.ref文件中摘錄一段,作為如何計算質量標準的例子:
這個質量標準是評價函數的穩定性的。最上面一行是這個質量標準的計算公式:
function_STABILITY = ic_varpe + ct_exit + dc_calls + ic_param
該公式表明,該質量標準由四個度量元所決定,即ic_varpe 、ct_exit、dc_calls、ic_param,每個度量元的權重均為1。該質量標準的最高得分為4分,即當構成該質量標準的四個度量元的值均在我們設定的范圍內時,該項質量標準得分為4分,當有三個度量元的值均在我們設定的范圍內時,該項質量標準得分為3分,以此類推。最后根據具體的得分,可以判定程序代碼在該項質量標準上所處的等級。這就是Audit對質量模型中質量準則級的處理方法,可以看出,質量準則是建立在質量度量元的基礎之上的,是比質量度量元更加綜合的一級。
最后,綜合多個質量標準,得出代碼的可維護性質量因素??删S護性因素的計算方法如下:
function_MAINTAINABILITY: component? =? function_ANALYZABILITY
function_CHANGEABILITY
function_STABILITY
function_TESTABILITY
這是在計算函數的可維護性。最上面是計算公式,函數的可維護性由四個質量標準的得分相加得出(質量標準得分的計算方法上面已經說過了)。對于這個例子來說,它的最高得分為12分,最低得分為0分。最后根據具體的得分,可以判定程序代碼在可維護性上所處的等級(EXCELLENT、GOOD、FAIR、POOR)。通過層層綜合,最后終于得到了可維護性質量因素的結果。
OK,以上通過Audit為我們提供的默認質量模型,講述了在Audit中由質量度量元、到質量準則、最后到質量因素的逐級評價方法。如果是我們自己制定的質量模型,其原理是完全一樣的。
怎么樣,這個過程清楚了嗎?如果還是有些迷惑,建議你看一看“LogiscopeHOME\Logiscope\Ref\Logiscope.ref”這個文件的內容,那會對你理解這些內容有所幫助。
3.3 作用域的劃分
我們在人工分析一個應用程序的代碼時,通常先會查看應用程序的總體情況,然后分析應用程序中的各個類(對于使用面向對象這類語言實現的代碼來說),進而再分析類中的成員函數。
Audit在分析、顯示對代碼的審查結果時,也按這種形式進行劃分,我們稱它為作用域,比如對于C++、Java語言實現的代碼,Audit劃分的作用域有:應用程序作用域、類作用域、函數作用域。通過它們的名字,你應該可以猜出各個作用域所包含的內容。應用程序作用域針對整個應用程序,類作用域針對系統中的各個類,函數作用域針對系統中的各個函數。
不同作用域之間是彼此獨立的,但它們都是遵照我們前面提到的那個質量模型對代碼進行分析。
3.4 Audit對代碼的處理過程
對于使用Audit的用戶來說,輸入的是源程序代碼,輸出的是Audit的分析結果。Audit對代碼的處理過程如圖所示:
3.5 結束
好了,Audit的測試機理到此就介紹完了。
原文轉自:http://www.uml.org.cn/Test/200609075.htm