引言
本文主要討論過程執行程度如何被度量,以及如何通過度量過程執行程度來提高軟體產品的質量。
文章中還給出了Cpk指數及其使用的簡短描述,並通過幾個具體案例分析了針對所選定的度量標準,如何使用Cpk指數對項目定義軟體過程進行度量和分析。
“要想獲得透徹的了解,必須首先進行精確的度量。”
縮寫
CMM
Capability Maturity Model(能力成熟度模型)
IPF In Process Faults(過程缺陷)
KPA Key Process Area(關鍵過程域)
LL Lower Limit(下限)
SEI Software Engineering Institute(軟體工程研究所)
SPC Statistic Process Control(統計過程控制)
SQA Software Quality Assurance(軟體質量保證)
UL Upper Limit(上限)
度量標準
分析中所使用的和所度量的度量標準
IPF密集度是一種度量標準,可以用來判定過程產品的質量以及檢測過程的執行程度。
IPF密集度可以表示如下:
其中缺陷數目是指每次檢測所發現的缺陷數目;工作產品大小是指每次檢測的代碼頁數或行數。
過程能力
過程能力分析
進行過程能力分析,實質上就是通過系統地分析和研究來評定過程能力與指定需求的一致性。在我們所舉的案例中,指定需求就是所建立的軟體度量基線。
之所以要進行過程能力分析,有兩個主要原因。首先,我們需要知道過程度量所能夠提供的基線在數量上的受控性;其次,由於我們的度量計畫還相當“不成熟”,因此需要對過程度量基線進行評估,來決定是否對其進行改動以反映過程能力的改進情況。根據過程能力的數量指標,我們可以相應地放寬或縮小基線的控制條件。
基線
建立和使用基線
5.1相對於均值的標準偏差
由於軟體的過程能力度量技術還處於“初步探索”階段,傳統的做法仍然是通過建立標準偏差的上限和下限來設定基線。當發現超出上限或下限的度量值及其產生原因時,就可以有系統地將其去除,並在必要的情況下採取一些改進措施。
整個過程可以總結如下:
(1) 收集關於度量的所有可用數據
(2) 建立均值(即所有數據點的平均值)
(3) 建立上限(均值+標準偏差)
(4) 建立下限(均值-標準偏差)
(5) 刪除超出上下限的數據值
(6) 找出刪除原因並文檔化
5.2比較產品度量與基線
在項目開發過程中可以使用所建立的基線。通過將項目度量值與基線進行比較,可以找出哪些度量指標高於上限、哪些低於下限以及哪些處在控制條件之內。
這種做法一般是可以接受的,因為這提供了對過程進行評估的一種公正的方法。但是使用這種方法並不能從數量上給出過程執行程度的度量。特別是,我們可能需要得出某個特定過程執行的σ級別。例如,我們需要通過數量化的方式比較在相同或者不同的項目中檢測過程的執行程度。最後可能需要以下面這種方式給出比較結果:需求檢測過程執行程度為5.3σ,而代碼檢測過程的執行程度為3σ。然後就可以根據這種數量化的結果來判定檢測過程想對於當前的過程能力等級的執行程度如何。
5.3過程能力度量
參照組織當前的實際開發過程,我們可以通過使用Cpk指數進行過程能力度量來評定實際過程與基線的目標均值的接近程度以及過程變更的數量。
要度量組織的過程能力,首先需要有如下信息:
1) 指定界限(即上限和下限)
2) 指定寬度(可根據指定界限得出)
3) 過程界限(通過過程度量所得出的上限和下限)
4) 過程寬度(可根據過程界限得出)
5.4設定基線的指定界限
在控制表中,可以使用相對於均值的1σ標準偏差來設定界限。但是在過程能力度量中,如果也使用1σ標準偏差來設定規範界限,將會大大限制過程範圍而產生很多界外值。在正態曲線中,均值± 1s只能給出68%的覆蓋程度,而使用均值± 3s則可以界定正態曲線中99%的覆蓋程度。
圖1 使用m±1s界定的需求文檔缺陷密集度
在過程能力度量中,我們可以使用相對於均值的3s標準偏差來確定指定界限。
圖2使用m±3s界定的需求文檔缺陷密集度
可以使用柱狀圖來描述實際過程輸出與常態分配曲線的相似性。柱狀圖能夠比較直觀地展示度量數值集合。我們可以使用Microsoft Excel中的Analysis Toolpak工具繪製柱狀圖。根據大多數統計方法參考書的建議,在繪製的柱狀圖中所採用的柱形條不能少於6個,但也不能多於15個。在Excel工具中可以設定這一條件。這樣做可以或多或少地避免在定義柱形條間隔距離時的個人偏見。
圖3 使用Excel Analysis Toolpak工具所繪製的需求文檔缺陷密集度的柱形圖
Cpk指數
使用Cpk指數度量過程能力
在使用Cpk指數進行過程能力度量時,我們將相對於均值的3s標準偏差改為傳統做法中的1s標準偏差。基線的上限和下限控制條件也根據1s標準偏差來建立。下面我們通過幾個案例來分析如何開展對檢測過程的度量。
6.1Cpk目標
本文對於Cpk和Cp指數的導出不作詳細討論,但我們將介紹一下Cpk和Cp指數能夠反映過程能力的哪些情況。Cp指數反映的是當指定的規範或基線與實際過程相同時過程所具有的潛在能力,而Cpk指數則反映了在綜合考慮過程的潛在Cp和不同的均值之後所具有的實際過程能力。
下表列出了與不同的Cp值相當的s值。
下表展示了針對不同k值的一種定級標準,該標準由Fon K.C.(參考文獻[1])所建立,並在Measuring Process Capability(參考文獻[2])一文中進行了描述。
有了上面兩個表格,Cpk和Cp以及k指數中的每個過程參數都可以獨立進行分析。我們可以通過分析k指數來決定某項工作是否應該做為核心工作來開展,也可以通過集中分析Cp指數來決定是否應該減少對過程的變更。
較大的1-k值(即較小的k值)和較大的Cp指數是比較受歡迎的,因為這樣兩者的乘積可以得出比較大的Cpk指數。
Cpk指數具有Davis R. Bothe(參考文獻[2])所描述的如下各種定級結果:
Cpk<1表示過程沒有達到執行能力的最低標準
Cpk =1表示過程恰好達到最低要求
Cpk >1表示過程超過了預定的最低標準
Cpk分析
對缺陷密集度的Cpk分析
我們給出了幾個項目在不同過程階段的缺陷密集度的度量,並使用Cpk指數對其進行分析來評定其過程能力,同時與所設定的基線指定界限進行比較。
分析的結果總結如下:
根據上面的分析結果,我們可以定量化識別過程的3個重要方面。
7.1案例1:項目A-需求
項目A在檢測過程中蒐集到的需求缺陷密集度得出的Cpk指數為1.52。這表明該過程的執行達到並超過了預定的最低標準,也就是缺陷密集度基線。
此外,所顯示的k值為0.22表明“精確性定級”為良好。這表示過程的均值與指定均值的目標相差不大。
Cp值表明過程的變更非常接近6σ。較大的Cp值表示通過指定寬度和過程寬度比較可知,過程的變更不大。
7.2案例2:項目B-需求
項目B的Cpk指數值為0.75。很顯然,這表明過程沒有達到執行能力的最低標準。
同樣較小的k值再次表明精確性定級非常好。過程均值非常接近於指定均值。因此,必定有其他因素影響了Cpk指數的值。
Cp的值為0.86是導致Cpk指數值比較低的原因。參照Cp與σ的對應列表可知,0.86的Cp值明顯要低於3σ。要想獲得6σ的過程執行,就必須提高Cp值。
從分析可知,過程寬度實際上要大於指定寬度。進一步分析可以發現,項目B是一個新的項目平台,軟體開發小組對該項目是完全陌生的。因此過程的變更性比一般的常態分配要大。過程能力值Cpk表明該項目的開發過程相對於一般的軟體開發項目具有較大的變異性。
7.3案例3:項目C-設計
項目C的Cpk指數值為1.23。這表明過程超過了最低執行標準。
k值為0.008表明過程均值與指定均值之間幾乎是沒有差別的。
Cp的值為1.23表明其σ等價值為小於4σ。該案例中產生過程變更的一個原因可能在於項目採樣數目較少。在該案例中只有4個數據點。儘管如此,項目的過程能力還是可以接受的。
7.4案例4:項目B-設計
項目B的Cpk指數值高達2.49。k值為0.32表明精確性定級僅為“一般”。Cp的值則高達3.68。
在對項目B這一分析中故意只採用少數幾個數據點作為樣本,其目的是為了說明在度量過程能力時數據點的抽樣是非常重要的。
作為首選規則,在度量過程能力中如果要刪除某些界外值,需要蒐集所有相關的數據點和極端的實踐情況進行分析。因為錯誤的刪除有可能會給出錯誤的過程能力度量結果。
知識等級
如同John Frei(參考文獻[3])所述,過程描述中的知識定級有如下幾種:
(1) 沒有數據——經驗
(2) 收集的數據——數據的數量
(3) 分組後的數據——表格、圖形
(4) 描述性統計——均值,標準偏差
(5) 特徵化統計——Cpk指數和Cp指數
(6) 受控的統計——SPC圖表
(7) 推論性統計——ANOVA,衰退,DOE
結束語
在軟體開發小組中蒐集度量數據曾經耗費了我們很長的時間,並且在最初蒐集的度量數據中,有一些是從來都沒有用到過的。通過多年的研究,我們積累了許多使用所蒐集到的度量數據的經驗,從簡單地參考度量數據的數目,到將數據繪製成圖表,再到從數據中計算出均值和標準偏差以及繪製出SPC圖表。使用過程能力度量中的Cpk指數來特徵化描述過程的執行程度,為我們提供了另一個角度的統計過程控制方法。通過分析Cpk指數,我們可以斷定過程在多大程度上受到定量化的控制和管理。同樣,根據Cpk指數和Cp指數,我們還可以決定基線的均值和(或)控制條件是否需要進行修改,以反映過程能力的改進。
參考文獻
[1] Fon, K. C., Control Charts, 1980, Chinese Society for Quality Control, Taipei, Taiwan.
[2] Davis R. Bothe, Measuring Process Capability, McGraw-Hill, 1997.
[3] John Frei, Process Characterization, SPC Training Material, XXX Radio Products Americas Group.