摘要:度量是保證軟件產品質量的基本手段。本文通過對度量技術的分析研究,結合CMMI模型度量與分析過程域標準,提出了一套基于CMMI的軟件度量分析框架。這套框架可以幫助軟件組織從沒有度量活動逐步發(fā)展為基于數據進行管理決策及改進的高成熟度軟件組織。
關鍵詞:CMMI軟件過程度量量化管理
1 概述
為了提高軟件產品的質量,唯一的方法是通過提高軟件研發(fā)過程的質量來帶動軟件產品質量的提高。軟件過程管理是指成功地對軟件產品和對強化軟件系統的開發(fā)、維護和支持活動的工作過程進行管理。
軟件度量是對軟件開發(fā)項目、過程及其產品進行數據定義、收集、分析的量化過程,目的在于對此加以理解、預測、評估、控制和改善。通過軟件度量可以改進軟件開發(fā)過程,促進項目成功,開發(fā)高質量的軟件產品。
采用何種方法對軟件過程進行度量是軟件組織面臨的難點。本文介紹了一套使用有效的基于CMMI的軟件度量分析框架可以有效指導組織開展度量活動。
2 分析
2.1 CMMI中的度量與分析
CMMI是美國卡內基梅隆大學軟件工程研究所應美國聯邦政府的要求,于1991年開始開發(fā)并持續(xù)完善的一種用于評價軟件開發(fā)組織能力并幫助其改善質量的方法、模型。
CMMI模型中把度量放在了一個重要的位置,CMMI模型按成熟度分為5個等級,各級別中對度量與分析的要求都有所不同。
2.1.1 在CMMI二級中為度量建立了一個獨立的過程域-度量與分析。明確提出:度量和分析的目的在于開發(fā)和維護用于支持管理信息需要的度量,以便支持對管理信息的需要,在這一過程域上度量的關注點集中在單個的項目上。
2.1.2 CMMI三級中,度量上升到組織級。包括了項目級度量和組織過程級度量。首先,要將度量活動制度化為組織級過程。其次,要建立組織級的度量數據庫,對組織從各項目收集的度量數據進行管理。項目級根據組織級標準度量體系進行裁剪,定義出項目級度量計劃。CMMI3級的度量活動是CMMI四級實施的基礎。
2.1.3 CMMI四級中對度量進行更加細致的規(guī)范。在CMMI四級中,需要使用統計學的相關方法和工具進行定量的分析。組織級利用積累的歷史數據建立組織過程性能基線和過程性能模型。一個軟件組織如果達到了CMMI四級,則表明該組織已經建立了關于產品質量、服務質量以及過程性能的定量目標,運用統計技術和其他定量技術對各過程實施進行控制,并且把這些定量目標作為判斷過程管理成功與否的標準。
2.1.4 CMMI五級中,為了實現商業(yè)目標,組織已經建立了有效地、不斷地、系統地過程改進體系。用度量識別軟件組織的軟件過程改進機會、建立量化的組織軟件過程改進目標和評價過程改進的效果。管理人員有能力估計及定量跟蹤變化的影響和效果。
2.2 CMMI度量與分析過程域
CMMI中,度量與分析過程域有兩個特定目標(Special Goal,簡稱SG)和8個特定實踐(Special Practice,簡稱SP),圖1是度量和分析過程域的語境圖。
3 實現
基于對CMMI中度量與分析過程域的研究,以及CMMI各成熟度級別對度量與分析活動的要求,建立如圖2所示的軟件度量和分析過程:定義度量、實施度量、分析數據、改進過程、控制過程。
3.1 定義度量
度量策劃步驟如圖3所示,主要有:獲取商業(yè)目標、明確組織目標和項目目標、識別關鍵過程、選擇定義度量等活動。
3.1.1 確定目標
首先,要明確實施度量是為了支持組織商業(yè)目標。組織的商業(yè)目標通常會關注:產品具有的功能、產品和服務的質量、盈利能力、產品開發(fā)周期、市場份額、顧客滿意度、組織形象和信譽等。組織的戰(zhàn)略計劃、經營計劃和過程改進計劃都從不同側面反映了組織的商業(yè)目標。
其次,由商業(yè)目標,能夠分解出軟件組織目標。某些商業(yè)目標可以直接傳遞給軟件組織;還有一些目標,可以分解轉化成軟件組織的相關目標;還有些商業(yè)目標與軟件組織沒有任何關系。
最后,組織的目標通常會分解到各個項目上,項目的目標會更加詳細和具體。項目目標反映了相關方對項目的特定要求。不同的項目會有不同的項目目標,常見的項目目標有:進度偏差率、估算偏差率、生產率、滿足相關需求、缺陷密度、達到客戶滿意等。不是所有項目目標都要進行關注。根據組織管理的要求和項目需求,將項目目標排列優(yōu)先級順序,選擇幾個關鍵目標進行監(jiān)控。項目目標應當記錄到項目計劃書中。
3.1.2 識別關鍵過程
識別關鍵過程從識別關鍵因素和識別關鍵過程兩方面展開。
首先,關鍵因素決定了既定目標的達成。因而主要分析影響戰(zhàn)略目標的各種因素和影響這些因素的子因素。識別時通常有效的做法是進行一次專題討論會或頭腦風暴。關鍵因素不是越多越好,經驗證明,大多數組織有4~6個關鍵成功因素。
其次,關鍵過程是對項目或組織目標的實現影響最大的過程。一般,通過一個關鍵成功因素可以直接找到一個或多個關鍵過程。然而也存在一些因素,需要執(zhí)行某些分析才能識別關鍵過程。應當將重點放在識別關鍵的以定義軟件過程上。同時,還要識別那些未定義實施的關鍵過程??煽紤]的過程有:曾出過問題的;跨部門的;首次使用新技術;超工作負荷的。還可以從軟件開發(fā)生命周期中涉及到的4個過程域(項目管理、工程管理、過程管理、支持域)中識別。需要注意:關鍵過程會隨著時間段的不同或在開發(fā)過程進展情況而有所不同。
識別了關鍵過程后,要為每個過程設置執(zhí)行目標,并找出可能阻礙目標實現的關鍵問題。過程執(zhí)行目標通常與成本、質量或進度相關。
3.1.3 選擇和定義度量
3.1.3.1 選擇度量
①GQM方法確定度量
使用GQM(Goal-Question-Measure)[2][3]方法,即通過設立目標、提出問題、回答問題、選定度量三個步驟來確定選擇什么度量。
GQM法舉例:
目標:上線前返工成本降低35%。
問題:識別在需求評審、測試發(fā)現缺陷、并解決的平均成本是多少?
度量:質量成本(需求評審成本+測試成本+返工成本)/缺陷數。
②過程中的度量實體
關鍵過程中:過程所接收事物、過程自身的產出事物、過程的一些活動、過程中消耗的事物,以及作為過程的結果而保留的事物都是度量實體,度量實體有:規(guī)模、工作量、進度、缺陷、需求變更、成本等。表1是實體和屬性示例。
3.1.3.2可操作定義
制定可操作定義時應遵守三個原則:可以傳達、可重復性、可跟蹤性。為每個度量制定的可操作定義應該包括內容如下表所示:
3.1.3.3把度量活動集成到過程
度量是一個成熟軟件過程的重要組成部分。需要將定義的度量融入軟件開發(fā)周期恰當的各個階段和過程中。
①分析現有的度量活動和數據
對組織當前的度量狀況進行分析,建立以后工作的基線(baseline)作為度量的起點。分析內容有:需要哪些數據?哪些數據已被組織標準過程定義的度量所收集?如何采集?哪些過程提供了這些數據?這些數據是如何被保存和報告的?判斷哪些度量和過程可滿足可操作定義的要求?哪些度量要被替換或修改?需要新增哪些過程等。
②策劃實施行動
利用分析結果,判斷實施新的度量需要進行的活動包括對現有實踐的修改和新活動的開發(fā)。定義實施度量的過程應覆蓋以下內容:
a收集、存儲、分析和報告數據的相關責任人;
b應怎樣收集數據;
c數據收集頻度、在過程的哪些點進行度量;
d應怎樣分析和報告數據;
e誰是使用分析數據和結果的人員;
f用于收集、存儲、分析、報告分析數據的工具;
g怎樣存儲數據,包括:數據存儲需求、數據大小和格式、訪問權限。
3.2 實施度量
一旦定義好了度量和度量計劃,并建立了組織度量庫,就可以進行數據收集和檢驗工作了。
3.2.1 收集數據
最好的數據收集過程,就是將數據收集過程與其它日常過程相組合。
向那些提供數據和報告數據的人提供簡明、清晰的指導的數據收集說明書,包括以下內容:負責記錄度量的人和組織、度量時機和方法、數據的類型和格式、可接受的值或值的范圍、記錄數據的機制及工具。
3.2.2 檢驗數據
采集的數據進入度量庫之前必須經過檢驗。在盡可能靠近數據源的位置進行數據的完整性檢查,以盡早識別錯誤、確定遺漏數據的來源。軟件組織需要準備一些度量工作指南,指導提供數據的人能正確理解數據收集活動的目的以及對他們的期望,以改善數據的準確和可靠程度。
3.2.3 管理數據
3.2.3.1 組織度量庫
組織必須建立和維護組織度量庫,用來管理度量數據。數據的硬拷貝收集方式只能滿足簡單度量活動。當數據量日益增多,需求日益復雜時,必須使用關系數據庫建立組織度量庫以滿足需要。
組織度量庫的設計和使用依賴于度量定義。當建立組織度量庫時,必須為輸入、維護和訪問數據制定說明書和界面。為保證數據只被收集一次,則先收集項目數據,在項目里程碑總結或者項目結項總結時,再將組織級需要的項目數據輸入到組織度量庫中。
3.2.3.2 存儲數據
依據度量計劃中已制定的存儲規(guī)程,將收集并經過驗證的數據存儲到組織度量庫中。存儲的內容應該恰當的被組織和個人使用,可以采取的措施有:由指定的數據存儲負責人控制對數據的存儲;只存儲基礎度量;給使用數據的相關人員進行培訓;設置數據使用的權限。
3.2.3.3 分析數據
分析數據包括組織和總結數據以及尋找模式、趨勢,以及關系,分析過程中的各項活動。用于分析和理解數據的方法和技術很多,要為每個度量確定適合且有意義的分析方法或技術。常用度量分析技術包括:
①表現技術,如:散點圖、趨勢圖、因果圖、直方圖、Bar圖、佩爾托排列圖等;
②描述統計,如算術法、中值法和取模方法、AVDOT;
③抽樣統計的取樣標準、假設檢驗;
④分析過程行為,如SPC技術。
3.3 改進過程
根據分析結果進行過程改進是度量過程中顯示效果的關鍵步驟。改進過程的主要工作包括:確定問題的根本原因;驗證解決方法;把解決方案程序化等。在改進階段,需要確定可能的解決方案,通過分析并考慮成本和收益的問題來挑選最優(yōu)的解決方案。
3.3.1 確定過程性能基線
通過統計過程控制,可以判斷過程是否處于受控狀態(tài),當過程處于受控狀態(tài)時,就可以計算過程性能基線(Process Performance Baseline,簡稱PPB)。當前的過程能力離這個基線有一定距離時,就需要不斷改進過程。
3.3.2 根據分析結果,進行過程改進
在過程改進階段,PPB發(fā)揮著重要的作用,它有助于過程分析及改進。通過分析PPB隨時間的變化趨勢可測量過程的改進并尋求過程改進的時機及方向。
3.4 控制過程
控制過程的主要目的是讓過程改進方案成為組織標準過程進行推廣,避免人員和過程回到舊的程序上。在控制階段,組織需要制定過程監(jiān)控程序,通過控制圖來判斷過程是否受控,通過PPB判斷組織過程性能是否提升。當組織識別出新的目標時,就要按照組織的新目標定義新的度量。重新回到定義度量的活動上。
4 小結
本文作者結合多年來在實際軟件過程改進工作中的經驗,基于大量項目實踐后,總結并提出“基于CMMI的軟件度量分析框架”。這套框架解決了組織如何度量的難題,有效指導組織建立度量過程、定義度量活動、收集過程數據和進行數據分析、改進和控制過程。該框架已在公司過程改進中發(fā)揮重要作用,幫助企業(yè)順利通過CMMI4級認證,證明是行之有效的。
參考文獻:
[1]Carnegie Mellon SEI. CMMI?誖for Development,Version 1.2[Z].Carnegie Mellon University. 2006.8:101-514.
[2]John McGarry等著. 吳超英,廖彬山譯. 實用軟件度量. 北京:機械工業(yè)出版社,2003.
[3]Norman E.Fenton,Sharing Lawrence Pfleeger著.楊海燕,趙魏,張力譯.軟件度量(原書第二版).北京:機械工業(yè)出版社,2004.
[4]卡耐基梅隆大學軟件工程研究所編著,劉孟仁等譯.能力成熟度模型(CMM):軟件過程改進指南[M].北京:電子工業(yè)出版社. 2001:15-50.
[5]William A.F A.D Careton著.任愛華劉又誠譯.周伯生審校.度量軟件過程-用于軟件過程改進的統計過程控制[M]. 北京:北京航空航天大學出版社,2002:3-11.
[6]John McGarry等著.吳超英,廖彬山譯.實用軟件度量[M]. 北京:機械工業(yè)出版社,2003:11-23.