李 斌
廣州醫(yī)學院第二附屬醫(yī)院,廣東 廣州 210260
TSP(Team Software Process)即團隊軟件過程,TSP是由“軟件質(zhì)量之父”Watts s.Humphrey提出的一種采用廣泛的團隊過程。TSP提供了各方面的計劃和日志來幫助實現(xiàn)定量的軟件質(zhì)量管理。比如項目初期的軟件質(zhì)量計劃、進度計劃和任務(wù)計劃,項目進行中各階段的評審會日志還有貫穿整個項目的缺陷日志等。
1)質(zhì)量計劃步驟:
(1)明確其范圍和目的及需達到的質(zhì)量目標;
(2)組織實際運作的各過程的步驟(可用流程圖或類似圖表展示過程要求);
(3)在項目的不同階段,相關(guān)職責、權(quán)限和資源的具體分配;
(4)采用的具體的文件化程序和指導書;
(5)適宜階段適用的檢驗、試驗、檢查和審核大綱;
(6)隨項目的進展進行更改和完善質(zhì)量計劃的文件化程序;
(7)達到質(zhì)量目標的度量方法及所采取的措施。
2)質(zhì)量計劃包括以下幾個方面的內(nèi)容:主要比率,無缺陷比率(PDF),缺陷數(shù)/頁,缺陷數(shù)/千代碼行(KLOC),缺陷比率,開發(fā)時間比率,估計與失效比率(A/FR),復(fù)查比率,評審比率,缺陷引入比率,缺陷去除比率,階段成品率,過程成品率。
主要比率由3條主要的度量標準組成,它對過程質(zhì)量提供了一個總覽。代碼行/小時體現(xiàn)了小組的總生產(chǎn)率:比值越高,說明生產(chǎn)率越高,成本越低。重復(fù)利用率體現(xiàn)的是本產(chǎn)品中對先前產(chǎn)品中程序代碼復(fù)用的代碼行數(shù)的百分比,對于一個包括500行代碼的產(chǎn)品,10%的重復(fù)利用率意味著50行代碼是重復(fù)利用的。新重復(fù)利用率則是本周期對將來的周期或項目可能做出的貢獻。例如,15%的新重復(fù)利用率意味著,本項目內(nèi)開發(fā)出的代碼中有15%是可以加進重用代碼庫的,它們可以在接下來的周期或是其他的項目中被用到。
無缺陷比率(PDF)就是在給定的階段內(nèi)沒有缺陷的產(chǎn)品部件占產(chǎn)品部件總數(shù)的百分比。例如,如果1個集合包含8個部分,而其中6個部分都在周期1中有編譯缺陷,則這個集合在編譯階段就有25%是無缺陷的。這個比值與單個部分的編譯缺陷數(shù)無關(guān)。同樣,如果集合的8個部分中有4個在集成測試中有問題,那么在集成測試中這個集合就有50%是無缺陷的。PDF提供了一個對產(chǎn)品質(zhì)量的初步估算方法。舉例來說,如果PDF不是平衡均勻的增長,那么就需要檢查那些缺陷數(shù)目很多的部分,這些部分很可能在將來造成更大的影響。雖然PDF值可以用來發(fā)現(xiàn)質(zhì)量問題,但是它卻沒法發(fā)現(xiàn)哪些部分是造成問題的根本,因此還需要進一步仔細研究各部分的數(shù)據(jù)來發(fā)現(xiàn)問題的根本。
缺陷數(shù)/頁指的是從每頁需求或概要設(shè)計文檔中去除缺陷的平均數(shù)。盡管各個小組的缺陷數(shù)/頁大相徑庭,但是比值通常會大于人們的預(yù)期。缺陷數(shù)/KLOC指的是從每千行詳細設(shè)計文檔或代碼中去除缺陷的平均數(shù)。在測試階段發(fā)現(xiàn)的缺陷數(shù)/KLOC體現(xiàn)了產(chǎn)品在這個階段開始和結(jié)束時的質(zhì)量。當一個產(chǎn)品有許多缺陷的時候,通過測試可以發(fā)現(xiàn)許多,但同時也會漏掉許多。比如單元測試中發(fā)現(xiàn)了很多缺陷,那么單元測試后可能仍遺留著許多缺陷。如果在測試中只發(fā)現(xiàn)的少量的缺陷,那么產(chǎn)品通常就不會有太大的問題。經(jīng)驗表明,如果一個產(chǎn)品在創(chuàng)建和集成測試中的缺陷數(shù)/KLOC小于0.5,在系統(tǒng)測試中小于0.2,那么它通常就不會再有什么遺留問題了。
缺陷比率提供了深入分析設(shè)計復(fù)查和代碼復(fù)查質(zhì)量的方法。經(jīng)驗表明,如果在代碼復(fù)查階段發(fā)現(xiàn)的缺陷數(shù)大于編譯階段的2倍,那么說明代碼復(fù)查做得很成功。由此得出了代碼復(fù)查/編譯的缺陷比率的一個參考值:2.0。開發(fā)時間比率是另一種分析過程及產(chǎn)品質(zhì)量的方法。經(jīng)驗表明,如果詳細設(shè)計的時間多于編碼的時間,那么這個詳細設(shè)計通常都很出色。經(jīng)驗也表明,當詳細設(shè)計復(fù)查的時間比詳細設(shè)計時間多50%以上的時候,詳細設(shè)計復(fù)查就是徹底的。在需求分析方面也存在一個原則,那就是用需求分析時間的25%或更多來進行需求評審。對于概要設(shè)計的要求是用概要設(shè)計時間的50%或更多來進行復(fù)查和評審。
另一個有用的開發(fā)時間比率是A/FR。它代表估計與失效的比率,即:用在估計型活動(如復(fù)查和評審)上的時間與用在失效型活動(如編譯和測試)上的時間的比值。對于小的獨立產(chǎn)品,A/FR通常大于2.0。對于相對龐大一些的產(chǎn)品(如用TSP完成的產(chǎn)品),A/FR等于1.0是較為合適的。這是因為大型復(fù)雜產(chǎn)品通常需要較多的測試時間,即使產(chǎn)品本身沒有缺陷或缺陷很少也要如此。要得到高質(zhì)量的產(chǎn)品,就要在復(fù)查和評審中使用足夠的時間。一個衡量評審與復(fù)查時間是否足夠的方法就是使用復(fù)查比率與評審比率。
開發(fā)人員在工作中必然會引入缺陷。缺陷引入比率提供了一個估計每個階段引入的缺陷數(shù)的方法:用估計的缺陷引入比率乘以該階段的估計時間。同樣方法也可以用來計算各階段的缺陷排除比率。
階段成品率指的是一個產(chǎn)品在一個給定的階段內(nèi)去掉的缺陷的百分比。比如一段代碼在代碼復(fù)查開始前有17個缺陷,在代碼復(fù)查時引入了3個缺陷,同時又找到了18個缺陷,那么代碼復(fù)查的階段成品率就是90%。也就是說:
成品率=100%×(找到的缺陷數(shù))/ (產(chǎn)品的缺陷總數(shù))=100%×18 /(17+ 3)=90%
這個公式可以應(yīng)用到過程的每一個階段。由于產(chǎn)品中可能遺留著未被發(fā)現(xiàn)的缺陷,隨著這些未被發(fā)現(xiàn)的缺陷逐漸被發(fā)現(xiàn),階段成品率會逐漸降低,因此需要在階段結(jié)束時對總?cè)毕輸?shù)(包括已經(jīng)發(fā)現(xiàn)的和未被發(fā)現(xiàn)的)進行一個預(yù)測。
類似的,過程成品率指的是在一個特定階段之前除去缺陷數(shù)的百分比。比如編譯以前的過程成品率衡量的就是在編譯前除去的缺陷總數(shù)占編譯前引入的缺陷總數(shù)的百分比。
在TSP中,質(zhì)量計劃(SUMQ)的制訂與計劃小結(jié)(SUMP)的制訂相輔相成,缺一不可。計劃小結(jié)的制訂又需要參考產(chǎn)品規(guī)模摘要(SUMS)和任務(wù)計劃(TASK),而任務(wù)計劃又與進度計劃(SCHEDULE)密切相關(guān)。除此而外,質(zhì)量計劃的制訂還需要參考質(zhì)量標準(QUAL)的要求。質(zhì)量計劃與進度計劃之間的內(nèi)在聯(lián)系如圖1所示。
圖1 SUMQ計劃數(shù)據(jù)的來源
在制訂質(zhì)量計劃之前首先需要制訂一個質(zhì)量標準來約束它。因為質(zhì)量計劃需要與進度計劃進行協(xié)調(diào)、修訂,所以就必須用一個質(zhì)量標準來限制它,作為底線。只有合乎質(zhì)量標準的質(zhì)量計劃才是合格的,否則就需要重新制訂質(zhì)量計劃。質(zhì)量標準通常是根據(jù)以往的項目數(shù)據(jù)和經(jīng)驗得來的若干個固有標準,制訂時只需從若干個備選的質(zhì)量標準中選出一個即可。
當選定質(zhì)量標準以后就可以開始制訂質(zhì)量計劃,制訂質(zhì)量計劃應(yīng)當從估計各個階段可能出現(xiàn)的產(chǎn)品缺陷開始。需要使用質(zhì)量標準對本周期的最終產(chǎn)品進行估計。接著,再制訂出每個缺陷去除階段的階段成品率。最后得到一個質(zhì)量計劃草案,看看它是否滿足質(zhì)量標準。如果不滿足,就對草案進行調(diào)整,直到得到一個合乎質(zhì)量標準的質(zhì)量計劃。具體按照下面的步驟進行:
1)估計在每個階段中開發(fā)小組可能引入的產(chǎn)品缺陷數(shù)。這個估計應(yīng)當以這個階段所用的時間乘以該階段的缺陷引入率得到;
2)估計每個缺陷去除階段開發(fā)小組得到的階段成品率。這個比率應(yīng)當根據(jù)質(zhì)量標準中的階段成品率標準得到;
3)在估計測試階段的階段成品率時需要注意測試階段的階段成品率是依賴于測試階段引入的缺陷密度的。假設(shè)單元測試開始時每1000行代碼中有5個或者更少的缺陷,那么單元測試的階段成品率可能高達90%。然而如果每1000行代碼的缺陷數(shù)大于20個的話,那么單元測試的階段成品率可能就小于50%了。同理,在集成測試和系統(tǒng)測試階段,如果缺陷密度小于1/KLOC,階段成品率可能達到80%。如果缺陷密度大于10/KLOC,階段成品率可能就只有30%了。因此需要檢查每個測試階段的缺陷密度是否在特定范圍內(nèi),如果缺陷密度太高的話,就降低階段成品率的預(yù)期,直到階段成品率和缺陷密度符合標準為止;
4)得到一個質(zhì)量計劃草案;
5)把質(zhì)量計劃草案中的數(shù)據(jù)和質(zhì)量標準中的數(shù)據(jù)進行對比。如果總?cè)毕萋什辉陬A(yù)定范圍之內(nèi),那么就增加或者減少設(shè)計和編碼階段的時間,抑或調(diào)整一個或多個階段中引入的缺陷數(shù),直到總?cè)毕萋试陬A(yù)定范圍內(nèi)為止。注意,改變階段時間必須通過修改任務(wù)計劃(TASK)來完成,而不能僅僅修改質(zhì)量計劃中的相應(yīng)條款;
6)如果缺陷去除比率、復(fù)查比率和評審比率與質(zhì)量標準不符,那么就需要調(diào)整缺陷去除階段的時間或者改變?nèi)毕萑コA段的階段成品率,直到這些數(shù)值符合質(zhì)量標準的要求為止。同樣地,只能通過改變?nèi)蝿?wù)計劃(TASK)中的階段時間來改變各階段的時間,而不能僅僅修改質(zhì)量計劃中的相應(yīng)條款;
7)如果缺陷比率很低,就再檢查一遍數(shù)據(jù)以確定其他標準都得到了滿足。如果其他數(shù)據(jù)都滿足了質(zhì)量標準,缺陷比率就應(yīng)當滿足質(zhì)量標準;
8)如果編碼和測試階段缺陷密度太高的話,就檢查總?cè)毕萋适遣皇窃谫|(zhì)量標準的范圍內(nèi)。如果在,就檢查復(fù)查評審階段的階段成品率。如果這個數(shù)值太低的話,就提高這些階段的階段成品率,直到缺陷密度符合質(zhì)量標準為止。同樣也可以用增加復(fù)查評審階段時間的辦法來保證缺陷去除比率在質(zhì)量標準范圍內(nèi)。但如果總?cè)毕萋什辉谝?guī)定范圍內(nèi)的話,就不得不檢查其他數(shù)據(jù),看它們是不是都正確。如果都正確的話,缺陷密度是應(yīng)當在規(guī)定范圍內(nèi)的;
9)重復(fù)步驟4到步驟8,直到質(zhì)量計劃符合質(zhì)量標準為止;
10)完成最終的質(zhì)量計劃。
由于所有階段的時間、規(guī)模和缺陷數(shù)據(jù)都是有內(nèi)在聯(lián)系的,所以必須仔細檢查所有的計算,以確定沒有什么被遺忘或是做錯。最終可以得到一份既符合質(zhì)量標準的又與進度計劃相匹配的質(zhì)量計劃。
[1]Cerpers Jones, Software Assessments,Version,2003,4.
[2]Watts S.Humphrey, Comments on Software Quality,Fellow Software Engineering Institute Camegie MellonUniversity, 1999,12.
[3]黃錫滋.軟件可靠性、安全性與質(zhì)量保證[M].電子工業(yè)出版社,2002,3.