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