軟件質(zhì)量是指與軟件產(chǎn)品滿(mǎn)足規(guī)定和隱含的需求的能力和有關(guān)的特征的全體,即所有描述計(jì)算機(jī)軟件優(yōu)秀程度的特性的組合。
應(yīng)用軟件的質(zhì)量依賴(lài)于問(wèn)題需求的描 述、解決方案的建模設(shè)計(jì)、可執(zhí)行程序的編碼的產(chǎn)生以及為發(fā)現(xiàn)錯(cuò)誤而運(yùn)行軟件的測(cè)試。一個(gè)優(yōu)秀的監(jiān)理工程師應(yīng)該能夠使用定量的方法來(lái)評(píng)估軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的分析及設(shè)計(jì)模型、源代碼和測(cè)試用例(use case)的質(zhì)量。
軟件開(kāi)發(fā)質(zhì)量的定量監(jiān)理
為了實(shí)現(xiàn)這種實(shí)時(shí)的質(zhì)量評(píng)估,監(jiān)理工程師們必須采用技術(shù)度量來(lái)客觀地評(píng)估質(zhì)量,而不能僅僅采用主觀的方法進(jìn)行評(píng)估。
在評(píng)估中,首先要明確的一點(diǎn)是,軟件需求是度量軟件質(zhì)量的基礎(chǔ)。不符合需求的軟件就不具備質(zhì)量。
而在定量監(jiān)理實(shí)踐中,通常需要使用一種被稱(chēng)為尺度度量的方法,這種定量度量適用于一些能夠直接度量的特性,比如,出錯(cuò)率定義為錯(cuò)誤數(shù)/KLOC/單位時(shí)間等。
因而,對(duì)質(zhì)量控制所應(yīng)該建立的一些定量數(shù)據(jù)是:
(1)明確性(無(wú)二義性)、完全性、正確性、可理解性、可驗(yàn)證性、內(nèi)部和外部一致性、可完成性、簡(jiǎn)潔性、可追蹤性、可修改性、精確性和可復(fù)用性的數(shù)據(jù)。這些數(shù)據(jù)可以用來(lái)評(píng)價(jià)分析模型和相應(yīng)的需求規(guī)約質(zhì)量的特征。
公開(kāi)的可能缺陷數(shù)與報(bào)告總?cè)毕輸?shù)的對(duì)比則可以用來(lái)評(píng)價(jià)測(cè)試精確度和測(cè)試覆蓋度,同時(shí)也可以預(yù)測(cè)項(xiàng)目發(fā)布時(shí)間。
(2)產(chǎn)品發(fā)布前清除的缺陷數(shù)在總?cè)毕輸?shù)中所占的百分比,有助于評(píng)估產(chǎn)品的質(zhì)量。
(3)按嚴(yán)重缺陷、子系統(tǒng)缺陷來(lái)劃分,分類(lèi)統(tǒng)計(jì)出平均修復(fù)時(shí)間,這樣將有助于規(guī)劃糾正缺陷的工作。
(4)利用測(cè)試的統(tǒng)計(jì)數(shù)據(jù),估算可維護(hù)性、可靠性、可用性和原有故障總數(shù)等數(shù)據(jù)。這些數(shù)據(jù)將有助于評(píng)估應(yīng)用軟件的穩(wěn)定程度和可能產(chǎn)生的失敗。
在上述定量數(shù)據(jù)的基礎(chǔ)上,就可以開(kāi)始進(jìn)行估算。
1、基本的定量估算
基本定量估算示例:
設(shè):
F為用功能點(diǎn)描述的軟件規(guī)模;
D1為在開(kāi)發(fā)過(guò)程(提交之前)中發(fā)現(xiàn)的所有缺陷數(shù);
D2為提交后發(fā)現(xiàn)的缺陷數(shù);
D為發(fā)現(xiàn)的總?cè)毕輸?shù)。
因此, D=D1+D2
對(duì)于一個(gè)應(yīng)用軟件項(xiàng)目,則有如下計(jì)算方程式(可以從不同的角度估算軟件的質(zhì)量):
質(zhì)量=D2/F;
缺陷注入率=D/F;
整體缺陷清除率=D1/D;
同樣以上期中的CAD軟件為例,根據(jù)上期計(jì)算所得結(jié)果,功能點(diǎn)F為366,而在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)了15個(gè)錯(cuò)誤,提交后又發(fā)現(xiàn)了4個(gè)錯(cuò)誤,則:
D1=15,D2=4
D=D1 +D2=15+4=19
質(zhì)量(每功能點(diǎn)的缺陷數(shù))=D2/F=4/366=0.0109
缺陷注入率=D/F=19/366=0.05191
整體缺陷清除率=D1/D=15/19=0.7895
有資料報(bào)告,美國(guó)的平均整體缺陷清除率目前只達(dá)到大約85%。而像AT&T、IBM、摩托羅拉和惠普這樣一些大公司的項(xiàng)目,通過(guò)實(shí)施實(shí)踐,其缺陷清除率可以超過(guò)99%。
眾所周知,清除軟件缺陷的難易程度是不同的。需求錯(cuò)誤、規(guī)格說(shuō)明、設(shè)計(jì)問(wèn)題及錯(cuò)誤修改是最難清除的。表1給出了美國(guó)平均缺陷的情況:
表2反映的是CMM五個(gè)等級(jí)是如何影響軟件質(zhì)量的,其數(shù)據(jù)來(lái)源于美國(guó)空軍1994年委托SPR(美國(guó)一家的調(diào)查公司)進(jìn)行的一項(xiàng)研究。
從表中可以看出,CMM級(jí)別越高,缺陷清除率也越高。
在監(jiān)理過(guò)程中,可以將這這些標(biāo)準(zhǔn)或指標(biāo)結(jié)合起來(lái)使用,用以辨明可能存在的質(zhì)量問(wèn)題。
2、對(duì)軟件需求的估算
假設(shè)在一個(gè)規(guī)約中有nr個(gè)需求,所以
nr=nf+nnf
其中,nf是功能需求的數(shù)目,nnf是非功能需求數(shù)目(例如性能)。
為了確定需求的確定性(無(wú)二義性),一種基于復(fù)審者對(duì)每個(gè)需求解釋的一致性的度量方法為:
Q1=nui/nr
其中,Q1表示需求的確定性,nui是所有復(fù)審者都有相同解釋的需求數(shù)目。當(dāng)需求的模糊性越低時(shí),Q1的值越接近1。
在CAD軟件的例子中,假設(shè)計(jì)算機(jī)圖形顯示功能模塊的功能性需求是10個(gè),非功能性需求(響應(yīng)速度和分辨率)是2個(gè),所有復(fù)審者都有相同解釋的需求數(shù)目是11個(gè),則:
Q1=11/12=0.916667
而功能需求的完整性Q2則可以通過(guò)計(jì)算以下比率獲得:
Q2=nu/(ni×ns)
其中,nu是功能需求的數(shù)目,ni是由規(guī)約定義或包含的輸入(刺激)的個(gè)數(shù),ns是被表示的狀態(tài)的個(gè)數(shù)。
Q2只是測(cè)度了一個(gè)系統(tǒng)所表示的必需的功能百分比,但是它并沒(méi)有考慮非功能需求。為了把這些非功能需求結(jié)合到整體度量中以求完整,必須考慮已有需求已經(jīng)被確認(rèn)的程度。這可以用Q3來(lái)表示:
Q3=nc/(nc+nnv)
其中,nc是已經(jīng)確認(rèn)為正確的需求的個(gè)數(shù),nnv是尚未被確認(rèn)的需求的個(gè)數(shù)。
在CAD軟件的例子中,假設(shè)數(shù)據(jù)庫(kù)管理功能模塊的功能需求是10個(gè),由規(guī)約定義或包含的輸入個(gè)數(shù)也是10個(gè),表示的狀態(tài)的個(gè)數(shù)是1個(gè),已經(jīng)被確認(rèn)的需求是8個(gè),未被確認(rèn)的需求是2個(gè),則:
Q2=10/(10×1)=1.0
Q3=8 /(8+2)=0.8
3、估算驗(yàn)收測(cè)試階段預(yù)期發(fā)現(xiàn)的缺陷數(shù)
(1)如果使用類(lèi)似項(xiàng)目的數(shù)據(jù),那么可以估計(jì)當(dāng)前項(xiàng)目在驗(yàn)收測(cè)試時(shí)發(fā)現(xiàn)缺陷數(shù),它等于在類(lèi)似項(xiàng)目的驗(yàn)收測(cè)試階段發(fā)現(xiàn)的缺陷數(shù)和這個(gè)項(xiàng)目估計(jì)的工作量與類(lèi)似的總工作量比率的乘積。用如下公式表示:
驗(yàn)收測(cè)試缺陷的估計(jì)=驗(yàn)收測(cè)試缺陷數(shù)×工作量估計(jì)/實(shí)際工作量
在CAD軟件的例子中,若以前有一個(gè)相似的圖形處理軟件,在驗(yàn)收測(cè)試的時(shí)候發(fā)現(xiàn)了12個(gè)缺陷,本項(xiàng)目估算的工作量是66人/月,實(shí)際的工作量是82人/月,則CAD軟件項(xiàng)目在驗(yàn)收測(cè)試時(shí)可能出現(xiàn)的缺陷是:
驗(yàn)收測(cè)試缺陷的估計(jì)=12×66/82=10
(2)使用過(guò)程能力基線(xiàn)中的數(shù)據(jù),那么可以使用幾種方法來(lái)計(jì)算這個(gè)值:
a、估算每功能單元的缺陷數(shù),那么功能點(diǎn)規(guī)模按前面討論的方式進(jìn)行估計(jì),預(yù)期的缺陷數(shù)是質(zhì)量數(shù)據(jù)和估計(jì)規(guī)模的乘積。
b、估算過(guò)程缺陷清除率。在這種情形下,在驗(yàn)收測(cè)試階段預(yù)期存在的缺陷數(shù)可以由缺陷注入率、過(guò)程中的清除率目標(biāo)以及估計(jì)的規(guī)模一起來(lái)決定。
4、針對(duì)維護(hù)活動(dòng)設(shè)計(jì)的度量
IEEE Std.982.1-1988[IEE94]建議了一個(gè)軟件成熟度指標(biāo)(SMI),它提供了對(duì)軟件產(chǎn)品的穩(wěn)定性的指示(基于為每一個(gè)產(chǎn)品的發(fā)布而做的變動(dòng)),以下信息可以確定:
MT=當(dāng)前發(fā)布中的模塊數(shù);
Fc=當(dāng)前發(fā)布中已經(jīng)變動(dòng)的模塊數(shù);
Fa=當(dāng)前發(fā)布中已經(jīng)增加的模塊數(shù);
Fd=當(dāng)前發(fā)布中已刪除的前一發(fā)布中的模塊數(shù);
那么,軟件成熟度指標(biāo)可以用下面的公式來(lái)計(jì)算:
SMI=[MT-(Fa+Fc+Fd)]/MT
當(dāng)SMI接近1.0的時(shí)候,產(chǎn)品開(kāi)始穩(wěn)定。SMI也可以用作計(jì)劃軟件維護(hù)活動(dòng)的度量。產(chǎn)生一個(gè)軟件產(chǎn)品的發(fā)布的平均時(shí)間可以和SMI關(guān)聯(lián)起來(lái),并且也可以開(kāi)發(fā)一個(gè)維護(hù)工作量的經(jīng)驗(yàn)?zāi)P汀?
在CAD軟件的例子中,若目前的軟件是2.0版,當(dāng)前發(fā)布的模塊數(shù)是32個(gè),當(dāng)前發(fā)布中已經(jīng)變動(dòng)的模塊數(shù)是8個(gè),當(dāng)前發(fā)布中已經(jīng)增加的模塊數(shù)是2個(gè),當(dāng)前發(fā)布中已刪除的前一發(fā)布中的模塊數(shù)是1個(gè),則:
SMI=(32-8-2-1)/32=0.656,
從結(jié)果可以看出,目前的情況離產(chǎn)品穩(wěn)定還有相當(dāng)?shù)木嚯x。
5、軟件可用性的計(jì)算
軟件可用性是指在某個(gè)給定時(shí)間點(diǎn)上程序能夠按照需求執(zhí)行的概率。其定義為:
可用性=MTTF/(MTTF+MTTR)×100%
其中,MTTF是“平均失敗時(shí)間”,MTTR是“平均修復(fù)時(shí)間”。
在CAD軟件的例子中,若軟件在6個(gè)月內(nèi)失敗一次,每次恢復(fù)平均需要20分鐘(恢復(fù)時(shí)間為排除故障或系統(tǒng)重新啟動(dòng)所用的時(shí)間),那么,它的可用性是:
6個(gè)月/(6個(gè)月+20分鐘)X100=99.92%
通常,提高系統(tǒng)的可用性基本上有兩種方法:即增加MTTF或減少M(fèi)TTR。而增加MTTF還要求增加系統(tǒng)的可靠性。
6、利用植入故障法估算程序中原有故障總數(shù)ET
通??梢圆捎貌东@-再捕獲抽樣法來(lái)估算程序中原有故障總數(shù)。
設(shè)Ns是在測(cè)試前人為地向程序中植入的故障數(shù)(稱(chēng)播種故障),ns 是經(jīng)過(guò)一段時(shí)間測(cè)試后發(fā)現(xiàn)的播種故障的數(shù)目,n是在測(cè)試中又發(fā)現(xiàn)的程序原有故障數(shù)。
假設(shè)測(cè)試用例發(fā)現(xiàn)植入故障和原有故障的能力相同,則程序中原有故障總數(shù) N(=ET) 估算值為:
例如,在CAD軟件的測(cè)試過(guò)程中,人為播入的故障數(shù)是5個(gè),經(jīng)過(guò)一段時(shí)間的測(cè)試后發(fā)現(xiàn)的播種故障數(shù)是4個(gè),在測(cè)試中又發(fā)現(xiàn)原有的故障數(shù)是2個(gè),則程序中原有的故障數(shù)是:
N=(5/4)× 2=15個(gè)
軟件開(kāi)發(fā)風(fēng)險(xiǎn)的定量監(jiān)理
很多應(yīng)用軟件項(xiàng)目之所以陷入混亂狀態(tài)而使項(xiàng)目組人員經(jīng)常感到疲于奔命,就是因?yàn)閷?duì)風(fēng)險(xiǎn)管理的不重視。在監(jiān)理過(guò)程中也常常如此,很多情況下都是問(wèn)題發(fā)生時(shí)才意識(shí)到問(wèn)題的存在。而資源和項(xiàng)目周期的壓力,使得項(xiàng)目的相關(guān)方不得不在沒(méi)有很充分準(zhǔn)備的情況下倉(cāng)促應(yīng)戰(zhàn),而在這種情況下產(chǎn)生的結(jié)果往往是不理想的。
軟件風(fēng)險(xiǎn)監(jiān)理就是在風(fēng)險(xiǎn)成為影響軟件項(xiàng)目成功的威脅之前,識(shí)別、著手處理并消除風(fēng)險(xiǎn)的源頭。
風(fēng)險(xiǎn)關(guān)注未來(lái)將要發(fā)生的事情。那么,什么樣的風(fēng)險(xiǎn)會(huì)導(dǎo)致軟件項(xiàng)目徹底失敗呢?改變也是我們所關(guān)心的—用戶(hù)需求、開(kāi)發(fā)技術(shù)、目標(biāo)計(jì)算機(jī)以及所有其他與項(xiàng)目相關(guān)的因素的改變,將會(huì)對(duì)按時(shí)交付和總體成功產(chǎn)生什么影響呢?最后,我們必須抓住選擇機(jī)會(huì)—我們應(yīng)該采用什么方法和工具?需要多少人員來(lái)參與工作?對(duì)質(zhì)量的要求要達(dá)到什么程度才是“足夠的”?……諸如此類(lèi)的問(wèn)題還有很多,這些問(wèn)題是風(fēng)險(xiǎn)監(jiān)理最關(guān)鍵的部分。
對(duì)風(fēng)險(xiǎn)進(jìn)行定量監(jiān)理的第一步,就是要識(shí)別那些可能將風(fēng)險(xiǎn)帶到項(xiàng)目計(jì)劃中的因素,也就是對(duì)風(fēng)險(xiǎn)進(jìn)行分類(lèi)。
1、項(xiàng)目風(fēng)險(xiǎn)威脅到項(xiàng)目計(jì)劃。也就是說(shuō),如果項(xiàng)目風(fēng)險(xiǎn)變成現(xiàn)實(shí),有可能會(huì)拖延項(xiàng)目的進(jìn)度,且增加項(xiàng)目的成本。
項(xiàng)目風(fēng)險(xiǎn)是指潛在的預(yù)算、進(jìn)度、人力(工作人員及組織)、資源、客戶(hù)、及需求等方面的問(wèn)題以及它們對(duì)軟件項(xiàng)目的影響。項(xiàng)目復(fù)雜性、規(guī)模以及結(jié)構(gòu)不確定性也被定義為項(xiàng)目風(fēng)險(xiǎn)因素。
2、技術(shù)風(fēng)險(xiǎn)威脅到要開(kāi)發(fā)軟件的質(zhì)量及交付時(shí)間。如果技術(shù)風(fēng)險(xiǎn)變成現(xiàn)實(shí),則開(kāi)發(fā)工作可能變得很困難或根本不可能。
技術(shù)風(fēng)險(xiǎn)是指潛在的設(shè)計(jì)、實(shí)現(xiàn)、接口、驗(yàn)證、和維護(hù)等方面的問(wèn)題。此外,規(guī)約的二義性、技術(shù)的不確定性、陳舊的技術(shù)及“先進(jìn)的”技術(shù)也是風(fēng)險(xiǎn)因素。
3、組織風(fēng)險(xiǎn)。常見(jiàn)的組織風(fēng)險(xiǎn)是組織內(nèi)部對(duì)目標(biāo)未達(dá)成一致、高層對(duì)項(xiàng)目不重視、資金不足或與其他項(xiàng)目有資源沖突等都是潛在的組織風(fēng)險(xiǎn)。
4、外部風(fēng)險(xiǎn)。比如法律法規(guī)變化、項(xiàng)目相關(guān)接口方的情況發(fā)生變化,這些事件往往是不可控制的。但要注意的是,一般將不可控制的“不可抗力”不作為風(fēng)險(xiǎn),而是將它們當(dāng)作災(zāi)難進(jìn)行防御。
風(fēng)險(xiǎn)預(yù)測(cè),又稱(chēng)為風(fēng)險(xiǎn)估算,試圖從兩個(gè)方面評(píng)估每一個(gè)風(fēng)險(xiǎn)—風(fēng)險(xiǎn)發(fā)生的可能性或概率,以及如果風(fēng)險(xiǎn)發(fā)生后所產(chǎn)生的后果。
項(xiàng)目計(jì)劃者以及其他管理人員和技術(shù)人員需要一起執(zhí)行四個(gè)風(fēng)險(xiǎn)預(yù)測(cè)活動(dòng):
(1)建立一個(gè)尺度,以反映風(fēng)險(xiǎn)發(fā)生的可能性;
(2)描述風(fēng)險(xiǎn)的后果;
(3)估算風(fēng)險(xiǎn)對(duì)項(xiàng)目及產(chǎn)品的影響;
(4)標(biāo)注風(fēng)險(xiǎn)預(yù)測(cè)的整體精確度,以免產(chǎn)生誤解。
風(fēng)險(xiǎn)表可以給項(xiàng)目管理者、監(jiān)督者提供一種簡(jiǎn)單的風(fēng)險(xiǎn)預(yù)測(cè)技術(shù)。風(fēng)險(xiǎn)表的樣本如表3所示。
在這里,PS指產(chǎn)品/項(xiàng)目規(guī)模風(fēng)險(xiǎn),BU指商業(yè)風(fēng)險(xiǎn),CU是指客戶(hù)特性風(fēng)險(xiǎn),TE是指建造技術(shù)風(fēng)險(xiǎn),DE是指開(kāi)發(fā)環(huán)境風(fēng)險(xiǎn),ST是指人員經(jīng)驗(yàn)與經(jīng)驗(yàn)風(fēng)險(xiǎn),……像這樣風(fēng)險(xiǎn)可以有許多,在這里就不一一舉例了。
項(xiàng)目組一開(kāi)始要在表中的第一列列出所有風(fēng)險(xiǎn)(不管多么細(xì)微)。每一個(gè)風(fēng)險(xiǎn)在第二列上加以分類(lèi)。每個(gè)風(fēng)險(xiǎn)發(fā)生的概率則輸入到第三列中。每個(gè)風(fēng)險(xiǎn)的概率值可以由項(xiàng)目組成員個(gè)別估算,然后將這些單個(gè)值求平均,得到一個(gè)有代表性的概率值。
下一步是評(píng)估每個(gè)風(fēng)險(xiǎn)所產(chǎn)生的影響。使用表3所述的特性評(píng)估每個(gè)風(fēng)險(xiǎn)因素,并確定其影響的類(lèi)別。對(duì)四個(gè)風(fēng)險(xiǎn)因素--性能、支持、成本及進(jìn)度的影響類(lèi)別求平均可得到一個(gè)整體的影響值(如果其中一個(gè)風(fēng)險(xiǎn)因素對(duì)項(xiàng)目特別重要,也可以使用加權(quán)求平均值)。
影響類(lèi)別取值如下:
1-災(zāi)難的,2-嚴(yán)重的,3-輕微的,4-可忽略的
完成了風(fēng)險(xiǎn)表的前四列內(nèi)容之后,就要根據(jù)概率及影響來(lái)進(jìn)行排序。高發(fā)生概率、高影響的風(fēng)險(xiǎn)放在表的上方,而低概率風(fēng)險(xiǎn)則移到表的下方。這樣就完成了第一次風(fēng)險(xiǎn)排序。
項(xiàng)目監(jiān)理者研究已排序的表,并定義一條中止線(xiàn)。該中止線(xiàn)(表中某一點(diǎn)上的一條水平線(xiàn))表示:只有那些在線(xiàn)之上的風(fēng)險(xiǎn)才會(huì)得到進(jìn)一步的關(guān)注。而在線(xiàn)之下的風(fēng)險(xiǎn)則需要再評(píng)估以完成第二次排序。排序后找出需要關(guān)注的風(fēng)險(xiǎn)點(diǎn),進(jìn)行處理。可以依次類(lèi)推完成第三次排序或更多的排序。
從監(jiān)理的角度來(lái)考慮,風(fēng)險(xiǎn)影響及概率是起著不同的作用的。一個(gè)具有高影響但發(fā)生概率很低的風(fēng)險(xiǎn)因素不應(yīng)該花費(fèi)太多的監(jiān)理時(shí)間和精力。而高影響且發(fā)生概率為中到高的風(fēng)險(xiǎn)、以及低影響且高概率的風(fēng)險(xiǎn),應(yīng)該首先列入重點(diǎn)監(jiān)理考慮之中。
應(yīng)用軟件的質(zhì)量依賴(lài)于問(wèn)題需求的描 述、解決方案的建模設(shè)計(jì)、可執(zhí)行程序的編碼的產(chǎn)生以及為發(fā)現(xiàn)錯(cuò)誤而運(yùn)行軟件的測(cè)試。一個(gè)優(yōu)秀的監(jiān)理工程師應(yīng)該能夠使用定量的方法來(lái)評(píng)估軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的分析及設(shè)計(jì)模型、源代碼和測(cè)試用例(use case)的質(zhì)量。
軟件開(kāi)發(fā)質(zhì)量的定量監(jiān)理
為了實(shí)現(xiàn)這種實(shí)時(shí)的質(zhì)量評(píng)估,監(jiān)理工程師們必須采用技術(shù)度量來(lái)客觀地評(píng)估質(zhì)量,而不能僅僅采用主觀的方法進(jìn)行評(píng)估。
在評(píng)估中,首先要明確的一點(diǎn)是,軟件需求是度量軟件質(zhì)量的基礎(chǔ)。不符合需求的軟件就不具備質(zhì)量。
而在定量監(jiān)理實(shí)踐中,通常需要使用一種被稱(chēng)為尺度度量的方法,這種定量度量適用于一些能夠直接度量的特性,比如,出錯(cuò)率定義為錯(cuò)誤數(shù)/KLOC/單位時(shí)間等。
因而,對(duì)質(zhì)量控制所應(yīng)該建立的一些定量數(shù)據(jù)是:
(1)明確性(無(wú)二義性)、完全性、正確性、可理解性、可驗(yàn)證性、內(nèi)部和外部一致性、可完成性、簡(jiǎn)潔性、可追蹤性、可修改性、精確性和可復(fù)用性的數(shù)據(jù)。這些數(shù)據(jù)可以用來(lái)評(píng)價(jià)分析模型和相應(yīng)的需求規(guī)約質(zhì)量的特征。
公開(kāi)的可能缺陷數(shù)與報(bào)告總?cè)毕輸?shù)的對(duì)比則可以用來(lái)評(píng)價(jià)測(cè)試精確度和測(cè)試覆蓋度,同時(shí)也可以預(yù)測(cè)項(xiàng)目發(fā)布時(shí)間。
(2)產(chǎn)品發(fā)布前清除的缺陷數(shù)在總?cè)毕輸?shù)中所占的百分比,有助于評(píng)估產(chǎn)品的質(zhì)量。
(3)按嚴(yán)重缺陷、子系統(tǒng)缺陷來(lái)劃分,分類(lèi)統(tǒng)計(jì)出平均修復(fù)時(shí)間,這樣將有助于規(guī)劃糾正缺陷的工作。
(4)利用測(cè)試的統(tǒng)計(jì)數(shù)據(jù),估算可維護(hù)性、可靠性、可用性和原有故障總數(shù)等數(shù)據(jù)。這些數(shù)據(jù)將有助于評(píng)估應(yīng)用軟件的穩(wěn)定程度和可能產(chǎn)生的失敗。
在上述定量數(shù)據(jù)的基礎(chǔ)上,就可以開(kāi)始進(jìn)行估算。
1、基本的定量估算
基本定量估算示例:
設(shè):
F為用功能點(diǎn)描述的軟件規(guī)模;
D1為在開(kāi)發(fā)過(guò)程(提交之前)中發(fā)現(xiàn)的所有缺陷數(shù);
D2為提交后發(fā)現(xiàn)的缺陷數(shù);
D為發(fā)現(xiàn)的總?cè)毕輸?shù)。
因此, D=D1+D2
對(duì)于一個(gè)應(yīng)用軟件項(xiàng)目,則有如下計(jì)算方程式(可以從不同的角度估算軟件的質(zhì)量):
質(zhì)量=D2/F;
缺陷注入率=D/F;
整體缺陷清除率=D1/D;
同樣以上期中的CAD軟件為例,根據(jù)上期計(jì)算所得結(jié)果,功能點(diǎn)F為366,而在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)了15個(gè)錯(cuò)誤,提交后又發(fā)現(xiàn)了4個(gè)錯(cuò)誤,則:
D1=15,D2=4
D=D1 +D2=15+4=19
質(zhì)量(每功能點(diǎn)的缺陷數(shù))=D2/F=4/366=0.0109
缺陷注入率=D/F=19/366=0.05191
整體缺陷清除率=D1/D=15/19=0.7895
有資料報(bào)告,美國(guó)的平均整體缺陷清除率目前只達(dá)到大約85%。而像AT&T、IBM、摩托羅拉和惠普這樣一些大公司的項(xiàng)目,通過(guò)實(shí)施實(shí)踐,其缺陷清除率可以超過(guò)99%。
眾所周知,清除軟件缺陷的難易程度是不同的。需求錯(cuò)誤、規(guī)格說(shuō)明、設(shè)計(jì)問(wèn)題及錯(cuò)誤修改是最難清除的。表1給出了美國(guó)平均缺陷的情況:
表2反映的是CMM五個(gè)等級(jí)是如何影響軟件質(zhì)量的,其數(shù)據(jù)來(lái)源于美國(guó)空軍1994年委托SPR(美國(guó)一家的調(diào)查公司)進(jìn)行的一項(xiàng)研究。
從表中可以看出,CMM級(jí)別越高,缺陷清除率也越高。
在監(jiān)理過(guò)程中,可以將這這些標(biāo)準(zhǔn)或指標(biāo)結(jié)合起來(lái)使用,用以辨明可能存在的質(zhì)量問(wèn)題。
2、對(duì)軟件需求的估算
假設(shè)在一個(gè)規(guī)約中有nr個(gè)需求,所以
nr=nf+nnf
其中,nf是功能需求的數(shù)目,nnf是非功能需求數(shù)目(例如性能)。
為了確定需求的確定性(無(wú)二義性),一種基于復(fù)審者對(duì)每個(gè)需求解釋的一致性的度量方法為:
Q1=nui/nr
其中,Q1表示需求的確定性,nui是所有復(fù)審者都有相同解釋的需求數(shù)目。當(dāng)需求的模糊性越低時(shí),Q1的值越接近1。
在CAD軟件的例子中,假設(shè)計(jì)算機(jī)圖形顯示功能模塊的功能性需求是10個(gè),非功能性需求(響應(yīng)速度和分辨率)是2個(gè),所有復(fù)審者都有相同解釋的需求數(shù)目是11個(gè),則:
Q1=11/12=0.916667
而功能需求的完整性Q2則可以通過(guò)計(jì)算以下比率獲得:
Q2=nu/(ni×ns)
其中,nu是功能需求的數(shù)目,ni是由規(guī)約定義或包含的輸入(刺激)的個(gè)數(shù),ns是被表示的狀態(tài)的個(gè)數(shù)。
Q2只是測(cè)度了一個(gè)系統(tǒng)所表示的必需的功能百分比,但是它并沒(méi)有考慮非功能需求。為了把這些非功能需求結(jié)合到整體度量中以求完整,必須考慮已有需求已經(jīng)被確認(rèn)的程度。這可以用Q3來(lái)表示:
Q3=nc/(nc+nnv)
其中,nc是已經(jīng)確認(rèn)為正確的需求的個(gè)數(shù),nnv是尚未被確認(rèn)的需求的個(gè)數(shù)。
在CAD軟件的例子中,假設(shè)數(shù)據(jù)庫(kù)管理功能模塊的功能需求是10個(gè),由規(guī)約定義或包含的輸入個(gè)數(shù)也是10個(gè),表示的狀態(tài)的個(gè)數(shù)是1個(gè),已經(jīng)被確認(rèn)的需求是8個(gè),未被確認(rèn)的需求是2個(gè),則:
Q2=10/(10×1)=1.0
Q3=8 /(8+2)=0.8
3、估算驗(yàn)收測(cè)試階段預(yù)期發(fā)現(xiàn)的缺陷數(shù)
(1)如果使用類(lèi)似項(xiàng)目的數(shù)據(jù),那么可以估計(jì)當(dāng)前項(xiàng)目在驗(yàn)收測(cè)試時(shí)發(fā)現(xiàn)缺陷數(shù),它等于在類(lèi)似項(xiàng)目的驗(yàn)收測(cè)試階段發(fā)現(xiàn)的缺陷數(shù)和這個(gè)項(xiàng)目估計(jì)的工作量與類(lèi)似的總工作量比率的乘積。用如下公式表示:
驗(yàn)收測(cè)試缺陷的估計(jì)=驗(yàn)收測(cè)試缺陷數(shù)×工作量估計(jì)/實(shí)際工作量
在CAD軟件的例子中,若以前有一個(gè)相似的圖形處理軟件,在驗(yàn)收測(cè)試的時(shí)候發(fā)現(xiàn)了12個(gè)缺陷,本項(xiàng)目估算的工作量是66人/月,實(shí)際的工作量是82人/月,則CAD軟件項(xiàng)目在驗(yàn)收測(cè)試時(shí)可能出現(xiàn)的缺陷是:
驗(yàn)收測(cè)試缺陷的估計(jì)=12×66/82=10
(2)使用過(guò)程能力基線(xiàn)中的數(shù)據(jù),那么可以使用幾種方法來(lái)計(jì)算這個(gè)值:
a、估算每功能單元的缺陷數(shù),那么功能點(diǎn)規(guī)模按前面討論的方式進(jìn)行估計(jì),預(yù)期的缺陷數(shù)是質(zhì)量數(shù)據(jù)和估計(jì)規(guī)模的乘積。
b、估算過(guò)程缺陷清除率。在這種情形下,在驗(yàn)收測(cè)試階段預(yù)期存在的缺陷數(shù)可以由缺陷注入率、過(guò)程中的清除率目標(biāo)以及估計(jì)的規(guī)模一起來(lái)決定。
4、針對(duì)維護(hù)活動(dòng)設(shè)計(jì)的度量
IEEE Std.982.1-1988[IEE94]建議了一個(gè)軟件成熟度指標(biāo)(SMI),它提供了對(duì)軟件產(chǎn)品的穩(wěn)定性的指示(基于為每一個(gè)產(chǎn)品的發(fā)布而做的變動(dòng)),以下信息可以確定:
MT=當(dāng)前發(fā)布中的模塊數(shù);
Fc=當(dāng)前發(fā)布中已經(jīng)變動(dòng)的模塊數(shù);
Fa=當(dāng)前發(fā)布中已經(jīng)增加的模塊數(shù);
Fd=當(dāng)前發(fā)布中已刪除的前一發(fā)布中的模塊數(shù);
那么,軟件成熟度指標(biāo)可以用下面的公式來(lái)計(jì)算:
SMI=[MT-(Fa+Fc+Fd)]/MT
當(dāng)SMI接近1.0的時(shí)候,產(chǎn)品開(kāi)始穩(wěn)定。SMI也可以用作計(jì)劃軟件維護(hù)活動(dòng)的度量。產(chǎn)生一個(gè)軟件產(chǎn)品的發(fā)布的平均時(shí)間可以和SMI關(guān)聯(lián)起來(lái),并且也可以開(kāi)發(fā)一個(gè)維護(hù)工作量的經(jīng)驗(yàn)?zāi)P汀?
在CAD軟件的例子中,若目前的軟件是2.0版,當(dāng)前發(fā)布的模塊數(shù)是32個(gè),當(dāng)前發(fā)布中已經(jīng)變動(dòng)的模塊數(shù)是8個(gè),當(dāng)前發(fā)布中已經(jīng)增加的模塊數(shù)是2個(gè),當(dāng)前發(fā)布中已刪除的前一發(fā)布中的模塊數(shù)是1個(gè),則:
SMI=(32-8-2-1)/32=0.656,
從結(jié)果可以看出,目前的情況離產(chǎn)品穩(wěn)定還有相當(dāng)?shù)木嚯x。
5、軟件可用性的計(jì)算
軟件可用性是指在某個(gè)給定時(shí)間點(diǎn)上程序能夠按照需求執(zhí)行的概率。其定義為:
可用性=MTTF/(MTTF+MTTR)×100%
其中,MTTF是“平均失敗時(shí)間”,MTTR是“平均修復(fù)時(shí)間”。
在CAD軟件的例子中,若軟件在6個(gè)月內(nèi)失敗一次,每次恢復(fù)平均需要20分鐘(恢復(fù)時(shí)間為排除故障或系統(tǒng)重新啟動(dòng)所用的時(shí)間),那么,它的可用性是:
6個(gè)月/(6個(gè)月+20分鐘)X100=99.92%
通常,提高系統(tǒng)的可用性基本上有兩種方法:即增加MTTF或減少M(fèi)TTR。而增加MTTF還要求增加系統(tǒng)的可靠性。
6、利用植入故障法估算程序中原有故障總數(shù)ET
通??梢圆捎貌东@-再捕獲抽樣法來(lái)估算程序中原有故障總數(shù)。
設(shè)Ns是在測(cè)試前人為地向程序中植入的故障數(shù)(稱(chēng)播種故障),ns 是經(jīng)過(guò)一段時(shí)間測(cè)試后發(fā)現(xiàn)的播種故障的數(shù)目,n是在測(cè)試中又發(fā)現(xiàn)的程序原有故障數(shù)。
假設(shè)測(cè)試用例發(fā)現(xiàn)植入故障和原有故障的能力相同,則程序中原有故障總數(shù) N(=ET) 估算值為:
例如,在CAD軟件的測(cè)試過(guò)程中,人為播入的故障數(shù)是5個(gè),經(jīng)過(guò)一段時(shí)間的測(cè)試后發(fā)現(xiàn)的播種故障數(shù)是4個(gè),在測(cè)試中又發(fā)現(xiàn)原有的故障數(shù)是2個(gè),則程序中原有的故障數(shù)是:
N=(5/4)× 2=15個(gè)
軟件開(kāi)發(fā)風(fēng)險(xiǎn)的定量監(jiān)理
很多應(yīng)用軟件項(xiàng)目之所以陷入混亂狀態(tài)而使項(xiàng)目組人員經(jīng)常感到疲于奔命,就是因?yàn)閷?duì)風(fēng)險(xiǎn)管理的不重視。在監(jiān)理過(guò)程中也常常如此,很多情況下都是問(wèn)題發(fā)生時(shí)才意識(shí)到問(wèn)題的存在。而資源和項(xiàng)目周期的壓力,使得項(xiàng)目的相關(guān)方不得不在沒(méi)有很充分準(zhǔn)備的情況下倉(cāng)促應(yīng)戰(zhàn),而在這種情況下產(chǎn)生的結(jié)果往往是不理想的。
軟件風(fēng)險(xiǎn)監(jiān)理就是在風(fēng)險(xiǎn)成為影響軟件項(xiàng)目成功的威脅之前,識(shí)別、著手處理并消除風(fēng)險(xiǎn)的源頭。
風(fēng)險(xiǎn)關(guān)注未來(lái)將要發(fā)生的事情。那么,什么樣的風(fēng)險(xiǎn)會(huì)導(dǎo)致軟件項(xiàng)目徹底失敗呢?改變也是我們所關(guān)心的—用戶(hù)需求、開(kāi)發(fā)技術(shù)、目標(biāo)計(jì)算機(jī)以及所有其他與項(xiàng)目相關(guān)的因素的改變,將會(huì)對(duì)按時(shí)交付和總體成功產(chǎn)生什么影響呢?最后,我們必須抓住選擇機(jī)會(huì)—我們應(yīng)該采用什么方法和工具?需要多少人員來(lái)參與工作?對(duì)質(zhì)量的要求要達(dá)到什么程度才是“足夠的”?……諸如此類(lèi)的問(wèn)題還有很多,這些問(wèn)題是風(fēng)險(xiǎn)監(jiān)理最關(guān)鍵的部分。
對(duì)風(fēng)險(xiǎn)進(jìn)行定量監(jiān)理的第一步,就是要識(shí)別那些可能將風(fēng)險(xiǎn)帶到項(xiàng)目計(jì)劃中的因素,也就是對(duì)風(fēng)險(xiǎn)進(jìn)行分類(lèi)。
1、項(xiàng)目風(fēng)險(xiǎn)威脅到項(xiàng)目計(jì)劃。也就是說(shuō),如果項(xiàng)目風(fēng)險(xiǎn)變成現(xiàn)實(shí),有可能會(huì)拖延項(xiàng)目的進(jìn)度,且增加項(xiàng)目的成本。
項(xiàng)目風(fēng)險(xiǎn)是指潛在的預(yù)算、進(jìn)度、人力(工作人員及組織)、資源、客戶(hù)、及需求等方面的問(wèn)題以及它們對(duì)軟件項(xiàng)目的影響。項(xiàng)目復(fù)雜性、規(guī)模以及結(jié)構(gòu)不確定性也被定義為項(xiàng)目風(fēng)險(xiǎn)因素。
2、技術(shù)風(fēng)險(xiǎn)威脅到要開(kāi)發(fā)軟件的質(zhì)量及交付時(shí)間。如果技術(shù)風(fēng)險(xiǎn)變成現(xiàn)實(shí),則開(kāi)發(fā)工作可能變得很困難或根本不可能。
技術(shù)風(fēng)險(xiǎn)是指潛在的設(shè)計(jì)、實(shí)現(xiàn)、接口、驗(yàn)證、和維護(hù)等方面的問(wèn)題。此外,規(guī)約的二義性、技術(shù)的不確定性、陳舊的技術(shù)及“先進(jìn)的”技術(shù)也是風(fēng)險(xiǎn)因素。
3、組織風(fēng)險(xiǎn)。常見(jiàn)的組織風(fēng)險(xiǎn)是組織內(nèi)部對(duì)目標(biāo)未達(dá)成一致、高層對(duì)項(xiàng)目不重視、資金不足或與其他項(xiàng)目有資源沖突等都是潛在的組織風(fēng)險(xiǎn)。
4、外部風(fēng)險(xiǎn)。比如法律法規(guī)變化、項(xiàng)目相關(guān)接口方的情況發(fā)生變化,這些事件往往是不可控制的。但要注意的是,一般將不可控制的“不可抗力”不作為風(fēng)險(xiǎn),而是將它們當(dāng)作災(zāi)難進(jìn)行防御。
風(fēng)險(xiǎn)預(yù)測(cè),又稱(chēng)為風(fēng)險(xiǎn)估算,試圖從兩個(gè)方面評(píng)估每一個(gè)風(fēng)險(xiǎn)—風(fēng)險(xiǎn)發(fā)生的可能性或概率,以及如果風(fēng)險(xiǎn)發(fā)生后所產(chǎn)生的后果。
項(xiàng)目計(jì)劃者以及其他管理人員和技術(shù)人員需要一起執(zhí)行四個(gè)風(fēng)險(xiǎn)預(yù)測(cè)活動(dòng):
(1)建立一個(gè)尺度,以反映風(fēng)險(xiǎn)發(fā)生的可能性;
(2)描述風(fēng)險(xiǎn)的后果;
(3)估算風(fēng)險(xiǎn)對(duì)項(xiàng)目及產(chǎn)品的影響;
(4)標(biāo)注風(fēng)險(xiǎn)預(yù)測(cè)的整體精確度,以免產(chǎn)生誤解。
風(fēng)險(xiǎn)表可以給項(xiàng)目管理者、監(jiān)督者提供一種簡(jiǎn)單的風(fēng)險(xiǎn)預(yù)測(cè)技術(shù)。風(fēng)險(xiǎn)表的樣本如表3所示。
在這里,PS指產(chǎn)品/項(xiàng)目規(guī)模風(fēng)險(xiǎn),BU指商業(yè)風(fēng)險(xiǎn),CU是指客戶(hù)特性風(fēng)險(xiǎn),TE是指建造技術(shù)風(fēng)險(xiǎn),DE是指開(kāi)發(fā)環(huán)境風(fēng)險(xiǎn),ST是指人員經(jīng)驗(yàn)與經(jīng)驗(yàn)風(fēng)險(xiǎn),……像這樣風(fēng)險(xiǎn)可以有許多,在這里就不一一舉例了。
項(xiàng)目組一開(kāi)始要在表中的第一列列出所有風(fēng)險(xiǎn)(不管多么細(xì)微)。每一個(gè)風(fēng)險(xiǎn)在第二列上加以分類(lèi)。每個(gè)風(fēng)險(xiǎn)發(fā)生的概率則輸入到第三列中。每個(gè)風(fēng)險(xiǎn)的概率值可以由項(xiàng)目組成員個(gè)別估算,然后將這些單個(gè)值求平均,得到一個(gè)有代表性的概率值。
下一步是評(píng)估每個(gè)風(fēng)險(xiǎn)所產(chǎn)生的影響。使用表3所述的特性評(píng)估每個(gè)風(fēng)險(xiǎn)因素,并確定其影響的類(lèi)別。對(duì)四個(gè)風(fēng)險(xiǎn)因素--性能、支持、成本及進(jìn)度的影響類(lèi)別求平均可得到一個(gè)整體的影響值(如果其中一個(gè)風(fēng)險(xiǎn)因素對(duì)項(xiàng)目特別重要,也可以使用加權(quán)求平均值)。
影響類(lèi)別取值如下:
1-災(zāi)難的,2-嚴(yán)重的,3-輕微的,4-可忽略的
完成了風(fēng)險(xiǎn)表的前四列內(nèi)容之后,就要根據(jù)概率及影響來(lái)進(jìn)行排序。高發(fā)生概率、高影響的風(fēng)險(xiǎn)放在表的上方,而低概率風(fēng)險(xiǎn)則移到表的下方。這樣就完成了第一次風(fēng)險(xiǎn)排序。
項(xiàng)目監(jiān)理者研究已排序的表,并定義一條中止線(xiàn)。該中止線(xiàn)(表中某一點(diǎn)上的一條水平線(xiàn))表示:只有那些在線(xiàn)之上的風(fēng)險(xiǎn)才會(huì)得到進(jìn)一步的關(guān)注。而在線(xiàn)之下的風(fēng)險(xiǎn)則需要再評(píng)估以完成第二次排序。排序后找出需要關(guān)注的風(fēng)險(xiǎn)點(diǎn),進(jìn)行處理。可以依次類(lèi)推完成第三次排序或更多的排序。
從監(jiān)理的角度來(lái)考慮,風(fēng)險(xiǎn)影響及概率是起著不同的作用的。一個(gè)具有高影響但發(fā)生概率很低的風(fēng)險(xiǎn)因素不應(yīng)該花費(fèi)太多的監(jiān)理時(shí)間和精力。而高影響且發(fā)生概率為中到高的風(fēng)險(xiǎn)、以及低影響且高概率的風(fēng)險(xiǎn),應(yīng)該首先列入重點(diǎn)監(jiān)理考慮之中。

