每個(gè)軟件公司都可以并且應(yīng)該做好的度量——缺陷度量
就算一個(gè)開(kāi)發(fā)極不規(guī)范公司,我想總會(huì)對(duì)缺陷有一定的管理辦法吧?至少缺陷會(huì)被記錄下來(lái)(哪怕是各種方式),而不會(huì)只是口頭說(shuō)而毫無(wú)記錄吧?
大多數(shù)軟件公司都會(huì)有一套管理缺陷的系統(tǒng),我們應(yīng)該如何把缺陷度量做得更好呢?
我們需要目標(biāo)驅(qū)動(dòng)地把度量工作做好,首先有兩個(gè)最基本的要求:
1.缺陷被準(zhǔn)確的記錄和跟蹤。
2.客觀(guān)地依據(jù)缺陷狀況對(duì)軟件發(fā)布進(jìn)行決策。
根據(jù)這兩個(gè)要求,我們需要詳細(xì)定義缺陷的屬性,這些缺陷的屬性就是我們要度量的內(nèi)容。很多公司都會(huì)定義缺陷的描述、嚴(yán)重程度等屬性,另外也會(huì)規(guī)定發(fā)布的時(shí)候,什么嚴(yán)重級(jí)別的缺陷不能超過(guò)多少個(gè)等要求。
以上兩個(gè)目標(biāo)只是缺陷度量的兩個(gè)基本目標(biāo),如果更深入一點(diǎn),我們希望能預(yù)防缺陷的再次發(fā)生,最簡(jiǎn)單有效的辦法就是:直接讓項(xiàng)目組成員一起來(lái)分析缺陷的原因,讓大家避免重犯。
如果想做更系統(tǒng)更深入的分析,就需要考慮在組織層面來(lái)做這個(gè)分析工作。這時(shí)有必要增加缺陷一個(gè)屬性,叫做“缺陷來(lái)源”,就是說(shuō)產(chǎn)生這個(gè)缺陷的源頭是在哪里,是需求沒(méi)有分析到位,還是設(shè)計(jì)沒(méi)有做好,還是編碼出問(wèn)題?按“缺陷來(lái)源”來(lái)分析公司不同類(lèi)型的項(xiàng)目的缺陷情況,您就會(huì)發(fā)現(xiàn)公司的軟件開(kāi)發(fā)過(guò)程最有問(wèn)題的是哪個(gè)過(guò)程?哪些過(guò)程做得比較好?這些分析結(jié)果會(huì)很好的指引過(guò)程改進(jìn)的方向。
缺陷度量有很多可以發(fā)掘的地方,這是每一個(gè)公司都應(yīng)該做好也是最有條件做好的一種度量。
成功的基礎(chǔ)——軟件規(guī)模度量
最近有這樣的一個(gè)辯論,功能點(diǎn)VS代碼行,辯論的焦點(diǎn)就是用哪一種來(lái)代表軟件規(guī)模更好一點(diǎn)。項(xiàng)目規(guī)模的度量大有學(xué)問(wèn),如果您想去聽(tīng)聽(tīng)專(zhuān)業(yè)的軟件功能點(diǎn)法課程,您可能要付上高昂的學(xué)費(fèi),并且有可能學(xué)了后還不知道如何用上這個(gè)辦法。這里我不想談?wù)撨@兩種辦法,這些方法可能僅是理論上可行,目前我也沒(méi)有見(jiàn)到過(guò)一個(gè)成功實(shí)踐這類(lèi)方法的案例。
我們?yōu)槭裁匆M(jìn)行軟件規(guī)模度量呢?目的無(wú)非是:
1.作為報(bào)價(jià)或者決策的依據(jù)。
2.安排具體的項(xiàng)目進(jìn)度。
3.可以作為組織的生產(chǎn)力數(shù)據(jù),可以有很多用途,如:各項(xiàng)目間橫向比較,供以后項(xiàng)目參考等。
如果是為了投標(biāo)報(bào)價(jià),建議用Delphi法,功能點(diǎn)法、代碼行法太慢了,不能適應(yīng)商戰(zhàn)社會(huì),投標(biāo)經(jīng)常是沒(méi)有這么多時(shí)間讓你去折騰的。Delphi法的大致方法如下:
1.找?guī)酌Y深專(zhuān)家,一起對(duì)項(xiàng)目進(jìn)行WBS,把項(xiàng)目的工作分解為十幾條最多二三十條的工作項(xiàng)。
2.全部專(zhuān)家各自估計(jì)每條工作項(xiàng)的工作量,并向其他專(zhuān)家闡述自己的理由。
3.第一次各專(zhuān)家估出來(lái)的結(jié)果可能差異比較大,每位專(zhuān)家聽(tīng)取別人的意見(jiàn)后,重新估算。
4.按照上述辦法,各專(zhuān)家反復(fù)估算幾次,一般次數(shù)就是2-4次,各專(zhuān)家估計(jì)的工作量會(huì)越來(lái)越趨近,這個(gè)時(shí)候取全部專(zhuān)家的平均值。
如果是為了目標(biāo)2,安排具體的項(xiàng)目進(jìn)度,我建議用“傻瓜估算法”,而我們親愛(ài)的微軟,就是采用這樣的方法來(lái)估算規(guī)模的。這樣的辦法雖然原始,但有效,并且容易掌握。雖然這種辦法被扣上主觀(guān)成分大、項(xiàng)目間難以橫向?qū)Ρ鹊?、難以積累歷史數(shù)據(jù)等多種“罪狀”,但不好意思,用功能點(diǎn)法或者代碼行法就很準(zhǔn)嗎?我們親愛(ài)的軟件工程師們認(rèn)可功能點(diǎn)法或者代碼行法嗎?搞功能點(diǎn)法代碼行法等這些“虛”辦法,還不如老老實(shí)實(shí)地WBS,直接估算每個(gè)工作的工作量。
第一步:把公司內(nèi)部最有項(xiàng)目經(jīng)驗(yàn)最有估算經(jīng)驗(yàn)的工程們召集在一起,制訂組織級(jí)別的估算表框架。
軟件開(kāi)發(fā)活動(dòng),可以分類(lèi)以下幾類(lèi):
l 直接生產(chǎn)軟件的活動(dòng),如:需求開(kāi)發(fā)、設(shè)計(jì)、編碼、測(cè)試等工程類(lèi)活動(dòng)。
l 項(xiàng)目管理類(lèi)活動(dòng),如:編寫(xiě)項(xiàng)目計(jì)劃、計(jì)劃跟蹤、發(fā)布評(píng)審等活動(dòng)。
l 項(xiàng)目支持類(lèi)活動(dòng)