摘要:CMMI為軟件產(chǎn)品及軟件過程提供了一套定量的表示和分析,即軟件度量的模型。有效的軟件度量過程能促進(jìn)組織的軟件過程能力的改進(jìn)。文章結(jié)合國內(nèi)應(yīng)用特點(diǎn),介紹了基于CMMI的多層架構(gòu)軟件產(chǎn)品的度量模型,并著重討論了基于CMMI的軟件過程度量,總結(jié)了軟件過程度量的工作方法和思路,提出了解決國內(nèi)軟件度量的一般性方法,為軟件過程改進(jìn)提供了可行的方法和實(shí)踐。
關(guān)鍵詞:CMMI;軟件度量;軟件過程能力;度量項(xiàng);門限值
0引言
軟件度量的目的是為項(xiàng)目管理提供項(xiàng)目的執(zhí)行情況的充分可見性,并使項(xiàng)目管理者了解項(xiàng)目實(shí)際進(jìn)展與項(xiàng)目計劃之間的偏差,以便采取糾正行動,保證項(xiàng)目的順利進(jìn)行。有效的軟件度量過程促進(jìn)組織的軟件過程能力的改進(jìn)。軟件度量是軟件特性的定量表示和分析方法;軟件度量可分為軟件產(chǎn)品度量和軟件過程度量兩類。軟件產(chǎn)品度量(定量表示和分析軟件產(chǎn)品特性)是獨(dú)立于產(chǎn)品生產(chǎn)過程的度量;軟件過程度量(定量表示和分析軟件過程特性)是為管理者提供產(chǎn)品生產(chǎn)過程的狀態(tài)信息和指導(dǎo)依據(jù)。
軟件產(chǎn)品度量的要素為質(zhì)量要素、評價準(zhǔn)則、度量元。這里軟件過程度量主要通過需求度量、規(guī)模度量、進(jìn)度度量、工作量度量、風(fēng)險管理度量、質(zhì)量保證度量來分析。
1 三層架構(gòu)軟件產(chǎn)品度量
1.1質(zhì)量要素
軟件質(zhì)量可分解成六個要素,這六個要素是軟件的基本特征。功能性:軟件所實(shí)現(xiàn)的功能滿足用戶需求的程度;可靠性:在規(guī)定的時間和條件下,軟件所能維持其性能水平的程度;易用性:對于一個軟件,用戶學(xué)習(xí)、操作、準(zhǔn)備輸入和理解輸出時所做努力的程度;效率:在指定的條件下,軟件實(shí)現(xiàn)某種功能使用計算機(jī)資源(包括時間)的有效程度;可維修性:為了滿足用戶需求、環(huán)境改變或發(fā)生軟件錯誤時,對軟件進(jìn)行相應(yīng)修改所需的努力程度;可移植性:軟件從一個計算機(jī)系統(tǒng)或環(huán)境轉(zhuǎn)移到另一個計算機(jī)系統(tǒng)或環(huán)境的難易程度。
1.2評價準(zhǔn)則
評價準(zhǔn)則包括:精確性、健壯性、安全性、通信有效性、處理有效性、設(shè)備有效性、可操作性、培訓(xùn)性、完備性、一致性、可追蹤性、可見性、硬件系統(tǒng)無關(guān)性、軟件系統(tǒng)無關(guān)性、可擴(kuò)充性、公用性、模塊性、清晰性、自描述性、簡單性、結(jié)構(gòu)性、產(chǎn)品文件完備性。
1.3度量元
根據(jù)軟件的需求分析、概要設(shè)計、詳細(xì)設(shè)計、實(shí)現(xiàn)、組裝測試、確認(rèn)測試和維護(hù)與使用七個階段,制定針對每一個階段的度量元。
2 基于CMMI軟件過程度量
從軟件企業(yè)的觀點(diǎn)出發(fā),軟件度量(software Measurement)是通過各種不同的量度對軟件生命周期中的各個元素進(jìn)行度量(Measure),為項(xiàng)目管理者提供有關(guān)項(xiàng)目的各種重要信息,也是進(jìn)行軟件評估活動的基礎(chǔ)。
Carnegie Mellon大學(xué)的SEI提出了以下的一個軟件度量過程體系結(jié)構(gòu)圖:
圖1 軟件度量過程體系結(jié)構(gòu)
下面我們就上面的體系結(jié)構(gòu)進(jìn)行分析。
制定度量過程的計劃包括兩個方面的活動,一是確認(rèn)范圍,二是定義程序步驟。確認(rèn)范圍:明確度量需求的大小,以限定一個適合于企業(yè)本身需求的度量過程。因?yàn)樵谡麄€度量過程中是需要花費(fèi)人力物力等有限資源的,不切實(shí)際的大而全或不足以反映實(shí)際結(jié)果的需求都會影響度量過程的可靠性以及企業(yè)的發(fā)展能力。定義程序步驟:在確認(rèn)了范圍后,定義操作及度量過程的步驟,同時成文立案。主要工作包括定義完整、一致、可操作的度量;定義數(shù)據(jù)采集方法以及如何進(jìn)行數(shù)據(jù)記錄與保存;定義可以對度量數(shù)據(jù)進(jìn)行分析的相關(guān)技術(shù),以使用戶能根據(jù)度量數(shù)據(jù)得到實(shí)質(zhì)性的結(jié)果。
過程的實(shí)施包括兩方面的活動,一個是數(shù)據(jù)的采集,一個是數(shù)據(jù)的分析。數(shù)據(jù)的采集:根據(jù)已定義的度量操作進(jìn)行數(shù)據(jù)的采集、記錄及存儲;此外,數(shù)據(jù)還應(yīng)經(jīng)過適當(dāng)?shù)男r?yàn)以確認(rèn)有效性。在進(jìn)行該項(xiàng)活動時應(yīng)具有一定的針對性,應(yīng)注意到不同的項(xiàng)目或活動所需要的實(shí)際數(shù)據(jù)量是有差別的,對活動狀態(tài)的跟蹤是非常重要的。數(shù)據(jù)的分析:包括分析數(shù)據(jù)及準(zhǔn)備報告、提交報告,并進(jìn)行評審以確保報告足夠準(zhǔn)確。這些程序步驟可能需要反復(fù),因?yàn)閳蟾婵赡軟]有為使用者提供有益的幫助或使用者對報告中的內(nèi)容不理解,在這兩種情況下,都應(yīng)回饋并重啟度量過程以再進(jìn)行數(shù)據(jù)分析。
過程的改善僅包含一個方面的活動,即優(yōu)化過程。優(yōu)化過程:用于動態(tài)地改善過程并確保提供一個結(jié)構(gòu)化的方式綜合且處理多個涉及過程改進(jìn)的問題。除此以外,該活動要對度量過程本身進(jìn)行評估,報告的使用者會對數(shù)據(jù)的有效性進(jìn)行反饋。這些反饋可能來自其他的活動,但一般都會溶入到新一輪度量過程的生命周期中,對度量過程進(jìn)行新的確認(rèn)及定義。
在實(shí)現(xiàn)項(xiàng)目中,項(xiàng)目啟動之后,項(xiàng)目度量工作就正式展開。項(xiàng)目經(jīng)理在項(xiàng)目計劃階段要針對項(xiàng)目的特點(diǎn)制訂相應(yīng)的度量計劃,制定度量數(shù)據(jù)收集和量化分析與控制的策略。在項(xiàng)目實(shí)施的過程中,項(xiàng)目相關(guān)成員按照預(yù)先設(shè)定的周期收集各項(xiàng)度量數(shù)據(jù),填寫相關(guān)軟件度量記錄表。度量負(fù)責(zé)人根據(jù)項(xiàng)目度量表采用適當(dāng)?shù)姆椒ū容^和分析項(xiàng)目級的度量數(shù)據(jù),得出度量分析報告。在必要時采取糾正措施,如修正項(xiàng)目計劃、進(jìn)行相關(guān)培訓(xùn)等。項(xiàng)目結(jié)束時,度量負(fù)責(zé)人及相關(guān)人員對度量規(guī)程及有關(guān)文件、度量采集的數(shù)據(jù)、分析結(jié)果及報告進(jìn)行驗(yàn)證后,將其放入相應(yīng)度量數(shù)據(jù)庫。
確定度量項(xiàng)要根據(jù)實(shí)際軟件項(xiàng)目情況。如果我們比較關(guān)注項(xiàng)目進(jìn)度、工作量和質(zhì)量,可以將項(xiàng)目進(jìn)度偏差不超過25%,項(xiàng)目工作量偏差不超過20%,項(xiàng)目的缺陷修復(fù)率不低于90%這三項(xiàng)指標(biāo)作為度量目標(biāo)。
2.1需求度量
需求的穩(wěn)定度在極大程度上影響項(xiàng)目的規(guī)模、工作量和進(jìn)度。不穩(wěn)定的需求將帶來負(fù)面影響,例如軟件產(chǎn)品質(zhì)量下降、項(xiàng)目成本增高、項(xiàng)目進(jìn)度延遲等。跟蹤分析需求的穩(wěn)定性能夠體現(xiàn)項(xiàng)目成員管理和控制軟件需求的能力。目前國內(nèi)軟件項(xiàng)目對需求的分析和控制比較薄弱,開發(fā)人員付出了加倍的努力,用戶滿意度仍不理想。因此有必要對項(xiàng)目需求進(jìn)行有效的度量和管理。
需求度量項(xiàng)主要包括:原始需求總數(shù)、本階段新增需求的數(shù)目、本階段刪除需求的數(shù)目、本階段修改需求的數(shù)目、本階段需求變更數(shù)目、本階段需求總數(shù)目、項(xiàng)目結(jié)束時變更的需求總數(shù)、項(xiàng)目結(jié)束時需求總數(shù)、需求變更比例、需求實(shí)現(xiàn)率等。
需求變更可能直接導(dǎo)致規(guī)模的增長、進(jìn)度的延遲、成本的增加以及返工。項(xiàng)目成員應(yīng)周期性地度量需求變更(包括新增、修改和刪除需求)和需求總數(shù)的變化,控制需求變更并采取相應(yīng)行動。圖2表現(xiàn)了需求的穩(wěn)定度,兩條折線分別表示監(jiān)控過程需求總數(shù)的變化以及需求變更數(shù)目的變化。假設(shè)需求基線化評審發(fā)生在第3次項(xiàng)目監(jiān)控時,該圖顯示,需求評審之后,第4次的需求總數(shù)以及第4、5、6次需求變更數(shù)都有明顯增長,在第7次以后需求趨于穩(wěn)定。說明在需求基線化評審結(jié)束之后相當(dāng)一段時間需求仍然不穩(wěn)定。產(chǎn)生的原因可能有以下幾種:(1)需求調(diào)研不充分、誤解、歧義、不完整、不正確等;(2)客戶需求變化頻繁。解決措施:在進(jìn)行需求調(diào)研時充分挖掘客戶的需求,進(jìn)行需求確認(rèn)。對于頻繁變更的需求,項(xiàng)目成員可能要采取諸如重新分配資源及重新估算規(guī)模、工作量和進(jìn)度等措施。
圖2需求變化趨勢圖
2.2規(guī)模度量
規(guī)模是項(xiàng)目的基本度量項(xiàng),是決定軟件項(xiàng)目成本的最基本因素,是估算工作量和進(jìn)度、計算生產(chǎn)率、缺陷密度及其它項(xiàng)目評估指標(biāo)的基礎(chǔ)。對規(guī)模的有效估算、跟蹤和控制,一方面使得項(xiàng)目得以按照預(yù)定計劃順利開展,另—方面也也保證機(jī)構(gòu)盈利目標(biāo)的實(shí)現(xiàn)。
監(jiān)控實(shí)際規(guī)模與估算規(guī)模的偏差。如果需要,重新估算工作量和進(jìn)度。
在里程碑處(如需求階段、設(shè)計階段)以及大的需求變更發(fā)生時,或進(jìn)行項(xiàng)目情況匯總時,項(xiàng)目經(jīng)理需要分析規(guī)模變化率并監(jiān)控產(chǎn)品有效規(guī)模的偏差。
如果規(guī)模變化率在上下控制限范圍內(nèi),則度量結(jié)果是可以接受的。
如果規(guī)模變化率超出上下控制限范圍,則分析原因并采取相應(yīng)措施。
度量項(xiàng)主要包括:項(xiàng)目估計規(guī)模、項(xiàng)目實(shí)際規(guī)模、規(guī)模變化率、項(xiàng)目估計成本、項(xiàng)目實(shí)際成本、可復(fù)用的代碼行等??梢愿鶕?jù)實(shí)際情況取舍。
2.3進(jìn)度度量
保證軟件項(xiàng)目的進(jìn)度是控制項(xiàng)目成本,贏得用戶滿意的關(guān)鍵。軟件項(xiàng)目容易在進(jìn)度上發(fā)生問題,對項(xiàng)目的進(jìn)度進(jìn)行定量的高透明度的管理,可以盡早發(fā)現(xiàn)進(jìn)度的延誤,迅速做出相應(yīng)的調(diào)整。具體度量項(xiàng)包括:項(xiàng)目估計進(jìn)度、項(xiàng)目實(shí)際進(jìn)度、進(jìn)度偏差、里程碑計劃總天數(shù)、里程碑實(shí)際總天數(shù)、里程碑差異天數(shù)、項(xiàng)目計劃總天數(shù)、項(xiàng)目實(shí)際總天數(shù)、項(xiàng)目總的差異天數(shù)。如果進(jìn)度偏差超出控制界限,則分析原因,采取措施,跟蹤進(jìn)度,直至進(jìn)度得到控制。
2.4工作量度量
追蹤工作量的目的是評估項(xiàng)目人力是否充分以及分配給每個階段的工作量是否合適。對工作量的正確估計和控制,有利于為項(xiàng)目配置合適的人力資源,也便于控制項(xiàng)目成本。統(tǒng)計匯總各個階段、各項(xiàng)活動工作量在總工作量中所占比例,并與計劃比例相對照,可以發(fā)現(xiàn)項(xiàng)目執(zhí)行上的偏差;總結(jié)經(jīng)驗(yàn)教訓(xùn),有利于逐步形成適合軟件企業(yè)開發(fā)團(tuán)隊特點(diǎn)的最佳工作量組合。
工作量度量的具體方法是:確定工作量度量的基本度量項(xiàng),由相關(guān)人員選擇基本度量項(xiàng)填寫工作日志,在一定時間統(tǒng)計各基本度量項(xiàng)及計算相關(guān)派生度量項(xiàng)。相關(guān)的度量項(xiàng)有:各類活動的總工作量、各階段的總工作量、各類活動的工作量分布、各階段的工作量分布、項(xiàng)目估計(總)工作量、項(xiàng)目實(shí)際(總)工作量、工作量偏差等。
圖3 返工工作量分析圖
分析:從數(shù)據(jù)和圖表來看,返工工作量在16%左右,屬正常范圍。沒有超過門限值。
2.5風(fēng)險管理度量
對風(fēng)險進(jìn)行識別與度量,統(tǒng)計識別的風(fēng)險和轉(zhuǎn)化為問題的風(fēng)險的數(shù)目,供以后的項(xiàng)目參考。風(fēng)險度量項(xiàng)主要包括:本階段識別的風(fēng)險數(shù)目、本階段轉(zhuǎn)化為問題的風(fēng)險數(shù)目、項(xiàng)目識別的風(fēng)險總數(shù)、項(xiàng)目轉(zhuǎn)化為問題的風(fēng)險總數(shù)等。
風(fēng)險管理是對項(xiàng)目潛在問題進(jìn)行識別,以便在項(xiàng)目生命周期內(nèi)對處理這些問題制訂管理計劃,減少潛在問題發(fā)生的影響和概率。風(fēng)險度量將為以后的項(xiàng)目的風(fēng)險管理提供參考數(shù)據(jù)。
圖4 項(xiàng)目風(fēng)險和問題趨勢圖
2.6質(zhì)量保證度量
通過對軟件質(zhì)量保證過程中不合格項(xiàng)的有關(guān)統(tǒng)計,可以發(fā)現(xiàn)項(xiàng)目成員對軟件開發(fā)過程規(guī)范的遵從程度,預(yù)防缺陷,改進(jìn)過程。通過對質(zhì)量保證活動的工作量進(jìn)行統(tǒng)計,可以積累項(xiàng)目支持類活動的工作量數(shù)據(jù)。
圖5 不符合項(xiàng)解決率趨勢圖
度量項(xiàng)主要包括:QA活動的工作量、不符合項(xiàng)總數(shù)目、各類問題不符合項(xiàng)數(shù)目、新增不符合項(xiàng)數(shù)目、已解決不符合項(xiàng)數(shù)目、當(dāng)前未解決不符合項(xiàng)數(shù)目、不符合項(xiàng)解決率、解決不符合問題的時間延遲、解決不符合問題的工作量、剪裁組織標(biāo)準(zhǔn)過程集合的工作量等。
3 實(shí)踐結(jié)果
如何提高軟件質(zhì)量始終是軟件工程領(lǐng)域研究的重要方向?;诙攘康牧炕芾硎悄壳白钣行У馁|(zhì)量保證手段之一,國內(nèi)很多軟件企業(yè)也在做這方面的研究和實(shí)踐。本度量分析模型已經(jīng)使用于多個具體的項(xiàng)目應(yīng)用中,并經(jīng)過了SEI專家測評,通過了CMMI3正式評估。本文在軟件過程改進(jìn)和軟件度量分析上作了一定的探索和實(shí)踐,結(jié)合具體軟件項(xiàng)目進(jìn)行了具體實(shí)踐的描述,對以后國內(nèi)軟件度量分析應(yīng)用,改進(jìn)軟件過程有一定現(xiàn)實(shí)意義。
4 結(jié)束語
在接下來的工作中,我們要加強(qiáng)軟件度量庫(如電子政務(wù)應(yīng)用安全軟件度量庫)的建設(shè)和應(yīng)用,將軟件度量分析工作作為一個長效機(jī)制堅持下去,保證軟件過程有序、健康地發(fā)展。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。