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