王丹+李鶴群
摘 要:隨著CMMI過程能力成熟度模型在軟件開發(fā)行業(yè)的普及,大多數(shù)通過CMMI3級的企業(yè)已經(jīng)開始探索建立適用的過程性能模型,以期達(dá)到預(yù)測項目目標(biāo)、持續(xù)優(yōu)化開發(fā)過程的目的。然而,CMMI模型中并沒有給出具體的建模步驟。結(jié)合CMMI4、5級實(shí)踐經(jīng)驗,以缺陷逃逸率預(yù)測模型為例,介紹了如何高效建立過程性能模型,以及如何有效運(yùn)用該模型的方法。
關(guān)鍵詞關(guān)鍵詞:CMMI過程性能模型; PPM; 缺陷逃逸率
DOIDOI:10.11907/rjdk.162205
中圖分類號:TP302
文獻(xiàn)標(biāo)識碼:A 文章編號文章編號:16727800(2016)011001503
0 引言
過程性能模型(Process Performance Model, PPM)是CMMI4級過程域“組織性能管理”中的一個術(shù)語,主要是對軟件開發(fā)過程中一項或多項過程或工作產(chǎn)品的可度量屬性的相互關(guān)系進(jìn)行描述。它根據(jù)選定的過程或子過程,通過分析組織內(nèi)長期積累的相關(guān)歷史數(shù)據(jù)進(jìn)行開發(fā)[1]。過程性能模型被用來預(yù)測選定過程的性能,比如項目進(jìn)度、成本及質(zhì)量狀態(tài)等,從而為項目計劃及監(jiān)控提供調(diào)整或決策依據(jù)。
從QCD角度劃分,一般以缺陷密度、生產(chǎn)效率、成本及進(jìn)度偏差、顧客滿意度為監(jiān)控和預(yù)測目標(biāo)來建立過程性能模型。最好的過程性能模型就是利用企業(yè)自己長期積累的歷史數(shù)據(jù)回歸出來的模型。筆者結(jié)合在軟件企業(yè)的CMMI4及CMMI5級高成熟度組織的改進(jìn)實(shí)踐,將重點(diǎn)探討如何建立以缺陷逃逸率為監(jiān)控和預(yù)測目標(biāo)的質(zhì)量過程性能模型。
1 缺陷逃逸率
缺陷逃逸率指軟件產(chǎn)品發(fā)布后發(fā)現(xiàn)的缺陷數(shù)量與該軟件產(chǎn)品在整個生命周期發(fā)現(xiàn)的所有缺陷數(shù)量之比。缺陷逃逸率通常用來衡量軟件開發(fā)團(tuán)隊及測試團(tuán)隊對軟件質(zhì)量控制的水平。在很多軟件外包行業(yè),客戶通常用缺陷逃逸率評價軟件開發(fā)能力。
其中i為缺陷注入階段,根據(jù)項目生命周期階段定義不同,可分為需求開發(fā)、概要設(shè)計、詳細(xì)設(shè)計、編碼階段。j為缺陷移除階段,缺陷移除的手段主要有評審及測試,所以此處j可分為需求評審、概要設(shè)計評審、詳細(xì)設(shè)計評審、代碼評審、單元測試、集成測試以及系統(tǒng)測試等幾個階段。如果某一個階段不能100%移除缺陷,則必定有部分缺陷漏出到下一階段,最終漏出到客戶的缺陷數(shù)量就是缺陷逃逸數(shù)量。
2 缺陷逃逸率預(yù)測
實(shí)際開發(fā)中,項目結(jié)束前難以得到缺陷注入的整體數(shù)據(jù)。但是對于高成熟度組織來說,基于大量的歷史數(shù)據(jù),不難得到缺陷注入能力,從而基于缺陷注入能力以及缺陷注入目標(biāo)數(shù)據(jù)得到缺陷逃逸率公式,通過合并移除缺陷的開發(fā)階段以達(dá)到簡化輸入的目的。公式變換如下:
DER=DIRB*(1-DERInDesign-DERInCoding-DERInTest)(2)
式(2)中,DIRB為根據(jù)歷史數(shù)據(jù)識別的缺陷注入能力(基線),DERInDesign為設(shè)計階段的缺陷移除率,DERInCoding為代碼階段的缺陷移除率,DERInTest為測試階段的移除率。由于設(shè)計階段及代碼階段的缺陷移除主要依賴于評審過程的執(zhí)行,因此上述公式還可以繼續(xù)簡化為:DER=DIR*(1-DERByReview-DERInTest) (3) DERByReview為通過評審發(fā)現(xiàn)的缺陷移除率。
綜上分析結(jié)果,只要建立評審及測試子過程的性能模型,即可預(yù)測出整體缺陷逃逸率。
3 過程性能模型建立
3.1 量化目標(biāo)識別
將企業(yè)的商業(yè)目標(biāo)逐層分解到可量化的質(zhì)量及過程性能目標(biāo),是建立過程性能模型的第一步。缺陷逃逸率為客戶考核企業(yè)的一個指標(biāo),因此將該模型對應(yīng)的商業(yè)目標(biāo)描述為“降低缺陷逃逸率,提高客戶滿意度”。經(jīng)過層層分解,得到相應(yīng)的質(zhì)量與過程性能量化目標(biāo),再根據(jù)選定的質(zhì)量及過程性能目標(biāo),選擇對應(yīng)的子過程??梢允且粋€子過程,也可以是多個子過程。建立的模型可以直接或間接預(yù)測相關(guān)結(jié)果,或者預(yù)測在開發(fā)生命周期中處于更下游的結(jié)果。表2列出了基于缺陷逃逸率的量化目標(biāo)及子過程描述。
3.2 模型因子識別
每個子過程與多個因子相關(guān),在建立模型之前,需要識別這些因子。因子分為可控因子和不可控因子兩大類??煽匾蜃邮悄P椭行枰R別的關(guān)鍵要素,通過調(diào)整可控因子可在一定程度上控制過程性能,從而指導(dǎo)項目開發(fā)和過程改善。不可控因子則代表過程實(shí)施的環(huán)境要素,是過程實(shí)施的制約條件,對過程性能的預(yù)測準(zhǔn)確性也起到一定的作用[3]。分析因子需要重點(diǎn)關(guān)注導(dǎo)致結(jié)果的根本原因及和結(jié)果相互關(guān)聯(lián)的要素,通常使用魚骨圖方法或頭腦風(fēng)暴方法進(jìn)行分析。針對設(shè)計評審子過程、編碼評審子過程,經(jīng)過分析得出可控因子為設(shè)計評審?fù)度氡壤?、設(shè)計評審檢出效率、編碼評審?fù)度氡壤?、編碼評審檢出效率;針對測試子過程,識別可控因子為測試實(shí)施投入比例、測試設(shè)計人員經(jīng)驗。表2的最后一列定義了該模型因子。
3.3 歷史數(shù)據(jù)收集,數(shù)據(jù)質(zhì)量評估
識別了模型的可控因子后,就要收集相關(guān)的歷史數(shù)據(jù),進(jìn)行數(shù)據(jù)初步分析。分析方法包括因子相關(guān)性分析、正態(tài)分布等。實(shí)際操作中,往往在建立PPB(過程性能基線)時,就已經(jīng)完成了數(shù)據(jù)收集及質(zhì)量評估工作。最方便的評估數(shù)據(jù)質(zhì)量方法是觀察法,通過對數(shù)據(jù)分布情況的觀察,找出明顯的異常點(diǎn),分析異常點(diǎn)原因。圖1為19個設(shè)計評審檢出效率分布圖,其中黑色圈出來的幾個點(diǎn)與其它點(diǎn)相比差異較大,經(jīng)過與相關(guān)執(zhí)行者討論分析,發(fā)現(xiàn)這3個點(diǎn)由于沒有經(jīng)過自查活動,導(dǎo)致評審的問題相對較多。因此,將這3個點(diǎn)提出后,數(shù)據(jù)大致在相同的范圍內(nèi)。依次類推,可以完成所有數(shù)據(jù)的評估,確保數(shù)據(jù)之間不會偏差過大。
3.4 歷史數(shù)據(jù)回歸分析
對每個模型的因子及預(yù)測目標(biāo)進(jìn)行回歸分析,得出自變量X與因變量Y之間的部分相關(guān)性[4]?;貧w方程擬合結(jié)果需要滿足如下條件才能認(rèn)定其有效。
(1)回歸方程的顯著性檢驗。需要從總體上判定回歸方程是否有效,即R2和調(diào)整后的R2越接近,說明模型擬合得越好。兩者的值越接近1,代表模型擬合越好。
(2)回歸系數(shù)的顯著性檢驗。當(dāng)回歸方程效果顯著時,還需要判定回歸方程中哪些自變量顯著,同時將效果不顯著的自變量刪除,并優(yōu)化模型?;貧w系數(shù)的顯著性主要通過對應(yīng)因子的P值來判斷,如果小于0.05就說明自變量是顯著因子[5]。
圖2和圖3為評審移除百分比模型以及測試移除百分比的回歸結(jié)果。
從回歸結(jié)果可以看出,R2及調(diào)整后的R2基本有效,各因子的P值也證明了其顯著性?;貧w方法如下:
評審移除百分比=設(shè)計評審工作量/總工作量*5.621 46+ 編碼評審工作量/總工作量*6.275 48 + 設(shè)計評審檢出效率*0.086 8+編碼評審檢出效率*0.313 14。
從這個模型的回歸結(jié)果可以看出,R2及調(diào)整后的R2基本有效,但因子測試實(shí)施投入比例0.31,不滿足0.05的條件,不是顯著因子。在數(shù)據(jù)量有限的情況下,繼續(xù)分析該子過程的因子是否還包含其它因子。如果分析后的結(jié)果沒有改變,那么可以暫時認(rèn)可該回歸結(jié)果,待數(shù)據(jù)量積累到一定程度,再對模型因子作進(jìn)一步調(diào)整、分析及再回歸。這里回歸方程為:
測試移除百分比=測試實(shí)施投入比例*0.283 96 - 評審移除百分比*0.377 + 測試設(shè)計經(jīng)驗*0.112 76
4 過程性能模型應(yīng)用
4.1 應(yīng)用場景
前面論述了模型在預(yù)測缺陷逃逸率方面的作用,然而在實(shí)際項目中,過程性能模型應(yīng)用是貫穿項目始終的。仍然以該模型為例,應(yīng)用場景如圖4所示。
(1) 項目計劃階段。 根據(jù)計劃,設(shè)計評審?fù)度牍r、編碼評審?fù)度牍r、測試投入工時與總工時的比例
結(jié)果,使用模型預(yù)測缺陷逃逸率目標(biāo),如果低于預(yù)期目標(biāo)(例如,70%),則調(diào)整上述計劃結(jié)果,提高目標(biāo)達(dá)成可能性。
(2) 設(shè)計階段。 設(shè)計評審結(jié)束后,根據(jù)實(shí)際的設(shè)計評審?fù)度牍r與總工時比例結(jié)果,設(shè)計評審檢出效率再次代入模型,預(yù)測目標(biāo)達(dá)成可能性,如果低于預(yù)期,可以通過組織二次評審或者提高編碼計劃投入工時、提高后續(xù)的測試計劃投入工時,以此提高目標(biāo)達(dá)成可能性。
(3) 編碼階段。與設(shè)計階段思路一致,調(diào)整后續(xù)測試階段計劃。
(4) 測試階段。作為缺陷檢出的最后階段,將所有因子相關(guān)的實(shí)際數(shù)據(jù)代入到模型中。如果仍然低于預(yù)期目標(biāo),則考慮增加測試輪次降低缺陷逃逸率;如果沒有更好的手段,則降低客戶預(yù)期,提前做好應(yīng)急預(yù)案。
4.2 實(shí)現(xiàn)方式
過程性能模型建立以后,為了更直觀地展示和預(yù)測,通過VBA將上述回歸模型嵌入到Excel表中,形成可視化的過程性能預(yù)測模型。
5 結(jié)語
在CMMI模型中,僅對過程性能模型作了簡要介紹,并未給出過程性能模型建立指南。筆者通過總結(jié)工作經(jīng)驗,詳細(xì)介紹了如何快速、有效地建立實(shí)用且適用的過程性能模型,以及如何應(yīng)用模型指導(dǎo)項目開發(fā)的方法,希望能夠為高成熟度組織建立有效的過程性能模型提供幫助。
參考文獻(xiàn):
[1] CMMI PRODUCT TEAM.CMU/SEI2010TR0332010[S].CMMI for Development, Version 1.3.
[2] ROBERT W STODDARD, DENNIS R GOLDENSON.Approaches to process performance modeling:a summary from the SEI series of workshops on CMMI high maturity measurement and analysis[R].America: SEI Administrative Agent, 2010.
[3] 任甲林. 術(shù)以載道軟件過程改進(jìn)實(shí)踐指南[M].北京:人民郵電出版社, 2014:391396.
[4] 王慧,周伯生,羅文劼.基于CMMI的軟件過程性能模型[J].計算機(jī)工程與設(shè)計, 2009(1):109112.
[5] 徐俊,李軍.軟件研發(fā)過程性能基線和模型建立方法及應(yīng)用分析[J].現(xiàn)代計算機(jī),2013(21):1418.
(責(zé)任編輯:杜能鋼)