一、度量的目的
1、引例
引用Lord Kelvin曾說過一句話: ①當你能夠測量你所說的并將其用數字表達出來,你就對它有了一些了解;②但當你不能測量,不能用數字表達它時,你對它的了解就很貧乏、很不令人滿意;③它可能是知識的開始,但你在思想上還遠沒有進入科學的境地。
這句話說明,想要得到一個可量化的結果,需要先去測量它,有了測量結果后,才會有度量;也就是說,測量是度量的基礎。
2、度量的目的
進行度量工作,是為了了解產品開發的技術過程和產品本身。
-
度量開發過程的目的是為了改進過程;
度量產品的目的是為了提高產品的質量。
3、度量的作用
-
度量的作用是為了有效地定量地進行管理。
二、測量、度量和指標區別
1、引例
假設有A和B兩個人,我們都知道A比B高。但不知道A比B高多少?
這個時候是不是就得經過測量身高才能知道具體值。
所以,A和B的身高值即為測量值。
經過測量,A的身高為189cm,B的身高為170cm。
得出結論,A比B高19cm。
所以,A比B高19cm是度量值。
2、測量、度量和指標的區別
(1)測量(measure)—— 對一個產品或過程的某個屬性的范圍、數量、維數、容量或大小提供了一個定量的指示。
(2)度量(metrics)—— 對一個系統、部件或過程具有的某個給定屬性的度的一個定量測量。
(3)指標(indicator)—— 軟件工程師收集測量并開發度量,這樣就可以獲得“指標(indicator)”;指標是一個度量或度量的組合,它對軟件過程、軟件項目或產品本身提供了更深入的理解。
3、思考題
Q:指出下面這段話中哪些是測量,哪些是度量,哪些是指標?
有四個軟件小組共同完成一個大型項目,但是每個小組必須進行技術評審,
通過檢查每人每小時所發現的錯誤數,管理者發現,采用更加正式評審方法的兩個小組比起另外兩個小組,每人每小時所發現的錯誤數要高40%。
Answer:
從上面這段話中可以得出,每人每小時所發現的錯誤數為測量值,更加正式的評審方法為指標,每人每小時所發現的錯誤數要高40%為度量值。
假設其它參數相同,這就給管理者提供一個指標:正式的評審方法比起其他評審方法在時間投資上能得到更大的回報,他可能會建議所有小組都采用正式的評審方法。
得出結論,測量是度量的基礎,度量是為了得到指標,它們的關系為:測量->度量->指標。
三、過程度量和項目度量
軟件過程度量主要用于戰略的目的,軟件項目度量則是戰術的。
1、過程
(1)過程度量
-
在軟件發布之前的錯誤數的測量;
交付給最終用戶并由最終用戶報告的缺陷的測量;
交付的工作產品(生產率)的測量;
花費的工作量的測量;
花費的時間的測量;
與進度是否一致的測量。
(2)過程指標
-
使得軟件工程組織能夠洞悉一個已有過程的功效(如范型、軟件工程任務、工作產品及里程碑);
使得管理者和開發者能夠評估哪些部分可以起作用,哪些部分不行;
過程度量(Metrics)的收集跨越所有的項目,并經歷很長的時間,目的是獲得改善軟件過程的指標。
2、項目
(1)項目度量
-
大多數軟件項目度量的第一個應用是在估算時發生的;
從過去的項目中收集的度量可用來作為估算現在軟件項目的工作量及時間的基礎;
所花費的工作量及時間的測量可以和預估算值進行比較,項目管理者使用這些數據來監督和控制項目的進展。
(2)項目度量的目的
-
能指導進行一些進度上的必要調整,以避免延遲、減少問題及風險,從而使得開發時間減到最少;
項目度量可在項目進行的基礎上評估質量,在必要時修改技術方法以改進質量。
(3)項目指標
-
評估正在進行的項目的狀態;
跟蹤潛在的風險;
在問題造成不良影響之前發現它們;
調整工作流程或任務;
評估項目組在控制軟件工程工作產品的質量的能力。
四、度量的方式
1、物理世界中的測量
(1)直接測量—— 例如,測量一個螺栓的長度;
(2)間接測量—— 例如,用次品率來測量生產出的螺栓質量。
2、軟件測量
軟件測量與物理測量一樣,也同樣分為兩類。
(1)直接測量
過程 —— 軟件工程過程的直接測量包括所投入的成本和工作量;
產品 —— 軟件產品的直接測量包括產生的代碼行數(LOC)、執行速度、存儲量大小、在某種時間周期中所報告的差錯數。
(2)間接測量
產品 —— 軟件產品的間接測量包括功能性、復雜性、效率、可靠性、可維護性和許多其它的質量特性。
五、面向規模的度量
1、定義
(1)面向規模的度量是對軟件和軟件開發過程的直接度量;
(2)可以建立一個面向規模的數據表格來記錄項目的某些信息。
2、有用度量的計算——舉例闡述
項目 | LOC | 工作量 | 成本 | 文檔頁數 | 錯誤 | 缺陷 | 人員 |
---|---|---|---|---|---|---|---|
Alpha | 12100 | 24 | 168 | 365 | 134 | 29 | 3 |
Beta | 27200 | 62 | 440 | 1224 | 321 | 86 | 5 |
Gamma | 20200 | 43 | 314 | 1050 | 256 | 64 | 6 |
… | … | … | … | … | … | … | … |
Q:該表格列出了在過去幾年完成的每一個軟件開發項目和關于這些項目的相應的面向規模的數據。那么,①從該表中可以獲得哪些有用信息?②三個項目哪個項目的軟件質量最高?③哪個項目的生產率最高?④哪個項目的單位成本最高?
注:LOC即Line Of Code,表示代碼行數;PM即Person Month,表示每人每月。
需要注意的是:在表格中記載的工作量和成本是整個軟件工程的活動(分析、設計、編碼和測試),而不僅僅是編碼活動;
對于每一個項目,可以根據表格中列出的基本數據計算簡單的面向規模的生產率和質量等的度量。
A:根據表格可以對所有的項目計算出以下有用度量:
生產率 = KLOC/PM(人月);(成正比)
質量 = 錯誤數/KLOC;(成正比)
質量 = 缺陷數/KLOC;(成反比)
成本 = 元/LOC;(成正比)
文檔 = 文檔頁數/KLOC。(成正比)
六、面向功能的度量
1、定義
(1)面向功能的軟件度量是對軟件和軟件開發過程的間接度量;
(2)面向功能的度量主要考慮程序的“功能性”和“實用性”,而不是對LOC計數;
(3)該度量是一種叫做功能點方法的生產率度量法,利用軟件信息域中的一些計數和軟件復雜性估計的經驗關系式而導出功能點FP。
2、功能點度量的計算
(1)圖例
需了解以下公式:
①FP=總計數值х(0.65 0.01 х ΣFi);
②“ 0.65 0.01 х ΣFi ” :復雜度調整因子。
注:
FP即Function Points,表示功能點;
總計數值是所有加權計數項的和;與五個信息域有關,即輸入,輸出,查詢,文件,接口,且需考慮加權因子;
Fi為復雜度校正值,需回答14個問題,詳情看下方第(3)點
(2)五個信息域
-
用戶輸入數:各個用戶輸入是面向不同應用的輸入數據;
用戶輸出數:各個用戶輸出是面向應用的輸出信息,包括報表,屏幕信息,錯誤信息等。在報表中的各個數據項不應該再分別計數;
用戶查詢數:查詢是一種聯機的交互操作,每一個不同的查詢都要計算;
文件數:每一個邏輯主文件都應計數。邏輯主文件是指邏輯上的一組數據,可以是一個大數據庫的一部分,也可以是一個單獨的文件;
外部接口數:與系統中其他設備通過外部接口讀寫信息次數均應計數。
(3)關于復雜性校正值Fi
-
系統是否需要可靠的備份和恢復?
是否需要數據通信?
是否有分布處理的功能?
是否性能成為關鍵?
系統是否運行在現存的高度實用化的操作環境中?
系統是否需要聯機數據項?
聯機數據項是否需要建立多重窗口顯示和操作,以處理輸入處理?
主文件是否聯機更新?
輸入、輸出、文件、查詢是否復雜?
內部處理過程是否復雜?
程序代碼是否可復用?
設計中是否包括了轉移和安裝?
系統是否設計成可以重復安裝在不同機構中?
系統是否設計成易修改和易使用?
(4)關于計算
①一旦收集到上述數據,就可以計算出與每一個計數相關的復雜性值;
②一個信息域是簡單的、平均(中等)的還是復雜的,由使用功能點方法的機構自行確定,從而計算出加權計數;
③計算功能點,使用如下的計算公式:
FP=總計數值×[0.65 0.01 × ∑(Fi)],總計數值是所有加權計數項的和;
④Fi(i=1..14)是復雜性校正值,它們應該通過逐一回答14個問題來確定,詳情看第(3)點;
③④注意點:
Fi的取值0~5:0表示沒有影響;1表示微小影響;2表示輕度;3表示中度;4表示顯著;5表示重大;
∑(Fi)是求和函數。
⑤一旦計算出功能點,就可仿照LOC的方式度量軟件的生產率、質量和其它屬性,具體公式如下:
生產率=FP/PM(人月);(成正比)
質量=錯誤數/FP;(成正比)
質量 = 缺陷數/FP;(成反比)
成本=元/FP;(成正比)
文檔=文檔頁數/FP;(成正比)
(5)基于FP的軟件度量
-
每個FP的錯誤數(Errors per FP) —— 質量
每個FP的缺陷數(Defects per FP) —— 質量
每個FP的花費($ per FP) —— 成本
每個FP的文檔頁數(Pages of documentation per FP) —— 文檔
每人月完成的FP數(FP per person-month) —— 生產率
(6)思考題——think more
功能點FP和總計數值之間的關系,最小值是x 總計數值,最大值是x 總計數值。
如果14個問題的復雜度調整值總和為42,總計數值假設為100,則功能點FP的值為___。
解析:
最小值為0.65 x 總計數值,最大值為1.35 x 總計數值。
功能點FP的值為FP = 總計數值×[0.65 0.01 × ∑(Fi)] = 100 x (0.65 0.01 x 42) = 100 x 1.07 = 107
3、擴展的功能點度量 —— 特征點
(1)基礎知識
①擴展的功能點也叫特征點度量法,是另外一種功能點度量;
②功能點度量最初主要是用于商業信息系統應用中;
③強調數據維而排除了功能維及行為(控制)維;
④因此,功能點度量不適合用于很多工程及嵌入式系統(它們強調功能及控制)。
(2)特征點
功能點測量的超集(superset),適用于算法復雜性較高的應用,主要應用于系統和工程軟件的應用,例如,實時系統、過程控制軟件及嵌入式軟件應用。
(3)特征點的計算
由上圖可以發現:
①在FP信息域值計算的基礎上增加了一個新的軟件特性,即算法——特定計算機程序中所包含的一個界定的計算問題;
②在特征點的計算中,權值是固定的,而原來功能點的度量計算中,權值有簡單、平均、復雜三種取值。
PS:權值即加權因子
4、調和不同的度量方法
Q:如果我知道LOC的數量,有沒有可能估算功能點(FP)的數量?
A:代碼行數和功能點之間的關系依賴于用來實現軟件的程序設計語言和設計質量。
那么不同程序語言建造一個功能點所需的平均代碼行數是多少呢?
如下圖所示:
看到這里,小伙伴們對功能點是否有一定了解了呢?
不妨試問下自己,如果開發一個信息系統需要用到56000行VB代碼,3000行SQL代碼,那么該系統的功能點(FP)是多少?
軟件質量度量
1、軟件質量的度量
質量度量貫穿于軟件工程的全過程以及軟件交付給用戶使用之后。
(1)交付前度量
-
在軟件交付之前得到的度量可作為判斷設計和測試質量好壞的依據;
這一類度量包括程序復雜性、有效的模塊性和總的程序規模。
(2)交付后度量
-
在軟件交付之后的度量則把注意力集中于還未發現的缺陷數和系統的可維護性方面;
2、軟件質量的度量指標
為了實現實時的質量評估,工程師們必須采用技術測量客觀地評估質量,而不能采用主觀的方法。以下列出4種客觀的度量指標:
(1)正確性(最重要)
-
一個程序必須正確地運行,并為它的用戶提供某些輸出;
正確性要求軟件執行所要求的功能;
關于正確性的最常用的測量是每KLOC的缺陷數(Defects/KLOC),這里的缺陷數定義為“驗證結果與需求不符的地方”。
思考:
Q:缺陷數越高越好還是越少越好?
A:缺陷數越高,軟件質量越低;所以缺陷數應該盡可能少。
(2)可維護性
-
可維護性是指遇到錯誤時程序能被修改的容易程度,維護所占的工作量比其他活動都大,它無法直接測量;
面向時間:
有一種簡單的面向時間的度量,稱MTTC(平均變更時間),可以作為可維護性的度量;
這個時間包括分析變更要求、設計適當的修改、實現變更并測試、及把變更發送給所有的用戶。
面向成本:
還有一種面向成本的可維護性度量,稱損壞度,指的是軟件發布給最終用戶后修改遇到缺陷的成本。
思考:
Q1:MTTC越低,可維護性越好還是越差呢?
A1:MTTC即平均變更時間,變更時間越少,說明軟件質量越好;所以,MTTC越低,可維護性越好。
Q2:當每千代碼行的缺陷數降低的同時,損壞度有可能提高嗎?
A2:損壞度即遇到缺陷的成本。
舉個例子:
假設在一個軟件中,遇到50個缺陷,這50個缺陷都是些很小很細微的問題,很快就能修復完,那么所花費的成本也就不會很高;
再或者在另一個軟件中,遇到5個缺陷,這5個缺陷剛好是5個非常重大的漏洞問題,需要很多時日才能修復完,那么所花費的成本就會很高,即損壞度提高;
所以,缺陷數低并不代表成本就會低,這也就意味著,當每千代碼行的缺陷數降低的同時,損壞度有可能提高。
(3)完整性
-
完整性是度量一個系統在安全方面的抗攻擊的能力;
軟件的三個成分,程序、數據和文檔都會遭到攻擊;
度量完整性,需要定義兩個附加的屬性:危險性和安全性;
危險性是特定類型的攻擊將在一個給定時間內發生的概率;
安全性是排除特定類型攻擊的概率;
一個系統的完整性可定義為 完整性=∑[1-危險性×( 1-安全性) ]其中,對每一個攻擊的危險性和安全性都進行累加。
思考:
Q:某個攻擊的危險性是70%,安全性是40%,那它的完整性等于多少?
A:完整性 = ∑ [1-危險性×( 1-安全性) ] = 1 – 0.7(1 – 0.4) = 1 – 0.7×0.6 = 1 – 0.42 = 0.58
試想下,一個完整性為0.58的系統,它合格嗎?
答案自然是不合格的。一個軟件,連最基礎的60%的合格率都達不到,又怎么能合格呢。
(4)可用性
如果一個程序不具有“用戶友好性”,即使它所執行的功能很有價值,也常常會失敗。可使用性量化“用戶友好性”,并依據以下四個特征進行度量:
-
為學習系統所需要的體力上的和智力上的技能;
為達到適度有效使用系統所需要的時間;
當軟件被某些人適度有效地使用時所度量的在生產率方面的凈增值;
用戶角度對系統的主觀評價(可以通過問題調查表得到)。
八、DRE
1、DRE的全稱
DRE,即Defect Removal Efficiency,表示缺陷排除效率。
2、衡量DRE的兩種角度
(1)DRE=E/(E D)
-
DRE是對質量保證及控制活動中濾除缺陷能力的一個測量;
E是軟件交付給最終用戶之前所發現的錯誤數,D是軟件交付之后所發現的缺陷數。
(2)
-
DRE也能夠用于在項目中評估一個小組在錯誤傳遞到下一個活動或任務之前發現這些錯誤的能力。在這種情況下,我們定義DRE為:
可以把前一個活動,后一個活動。
3、思考題 —— think more
軟件團隊將軟件交付給了最終用戶。在使用的第一個月中,用戶發現了8個缺陷。在交付之前,軟件團隊在正式的評審和所有的測試任務中發現了72個錯誤。那么,項目總的缺陷排除效率公式是DRE=E/ ( ),最后的結果是____(寫成小數點的形式)。
解析:
項目總的缺陷排除效率公式是DRE=E/(E D);
最后的結果是DRE = 72 / (72 8) = 0.9。
本文作者:星期一研究室 來源:稀土掘金
CIO之家 www.ciozj.com 微信公眾號:imciow
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。