俞冬梅 梁成才
(1.中國科學院上海天文臺 上海市 200030 2.中國電子科技集團公司第三十二研究所 上海市 201808)
隨著信息技術產業的蓬勃發展,軟件在國家軍事領域的應用越來越廣泛,已經成為增強軍隊武器裝備系統自動化、標準化、系列化的重要組成部分,進入軟件定義裝備的時代。然而,當代武器裝備系統體系結構龐大,功能復雜,集成度高,如何降低軟件研制成本,縮短軟件研制周期,增加軍用軟件的可靠性、安全性和可維護性,避免軟件失效,已然成為軍用軟件研制面臨的巨大挑戰。因此,總裝備部參照軟件能力成熟度模型CMMI(Capability Maturity Model Integration),頒布了GJB5000A-2008《軍用軟件研制能力成熟度模型》標準,要求對武器裝備軟件的論證、研制、測評、定型、使用和維護過程實施工程化管理,提高軟件研制能力,保證軟件產品質量。在GJB5000A 推進實施的過程中,軟件研制單位以過程管理為主線,以監督評估為手段,通過測量與分析,將傳統的定性管理上升到對軟件質量的定量監控,實現軟件質量的數字化。測量與分析過程,可以客觀、精準地了解軟件過程和產品的實施情況,識別軟件研制生存周期中的薄弱環節,克服軟件研發的隨意性,進而為組織管理層決策提供可靠根據。
GJB5000A 軍用軟件研制能力成熟度模型采用分級表示法,將軟件研制能力分為五個等級:1 級為初始級,2 級為已管理級,3級為已定義級,4 級為已定量管理級,5 級為優化級。每個成熟度等級均由若干個過程域組成,模型把它分為過程管理類、項目管理類、工程類和支持類四種。每個過程域包含若干專用目標和專用實踐,用以表示該成熟度所要達到的目標和所需要實施的實踐。其中GJB5000A 二級已管理級,包含了7 個過程域,15 個專用目標和56 個專用實踐(表1)。若要達到二級成熟度等級,則組織的實踐要實現目標。為了適應軍用軟件研制資質要求,穩步提升軟件工程化能力和質量管理水平,積極貫徹實施GJB5000A 至關重要。
GJB5000A 二級標準明確了測量與分析的目的是開發和保持測量能力,以支持管理信息的需要[1]。換言之,通過在軍用軟件研制過程中采集、存儲、分析、交流項目實施的一系列數據,及時發現項目是否按計劃執行,查驗偏差和缺陷,為管理者預測項目的發展趨勢,調整研發計劃或采取糾偏措施,確定潛在的改進機會提供客觀而可靠的依據。測量本身不會改進項目管理的過程,但是它能幫助跟蹤項目的實際績效,標識和解決與過程有關的問題,為我們提供對計劃、控制、管理和改進的可視性。GJB5000A 二級標準規定測量與分析過程域主要包含四方面的內容[1]:
(1)根據軟件項目的目標及組織關注的目標,確定測量與分析的目標;
(2)規定測量項和分析技術,以及數據收集、數據存儲、報告和反饋的機制;

表1:GJB5000A 二級的過程域和專用實踐

表2:測量與分析過程域專用目標和專用實踐
(3)執行數據的采集、存儲、分析和報告;
(4)提供客觀的結果給項目組和利益相關方,以做出有根據的決策,并采取適當的糾正措施。
這些測量與分析的內容,結合GJB5000A 標準中測量與分析的2個專用目標和8個專用實踐(表2),指明了為什么要做測量與分析,測什么,何時測,怎么測,如何分析等具體實踐活動。
一般軟件及其開發過程的測量經常采用面向目標的測量方法,即GQM(Goal-Question-Metric)模型或者GQ(I)M(Goal-Question-Indicator-Metric)模型[2],自頂向下的將測量目標拆分成多個問題,每一個問題再分解提煉成測量指示器。在軟件研發的生存周期里,開發過程往往被分解成若干個階段,并設置里程碑節點,以監控軟件開發進展是否達到預期。以常見的瀑布型軟件生存周期模型為例,通過把邏輯實現和物理實現分開,軟件生存周期分為問題識別、需求分析、軟件設計、程序編碼、軟件測試、驗收交付和后期維護等階段。每個階段內,又對活動按照周、雙周進行跟蹤。當重要階段完成時,設置里程碑節點,如需求分析階段里程碑、軟件測試階段里程碑、產品驗收交付里程碑等,來檢查和控制項目成本、進度和質量。GJB5000A 二級標準,采用GQ(I)M 模型,將測量與分析活動貫穿到軍用軟件研制生存周期的全過程,伴隨著各項活動的進行而開展。一方面根據目標對已經產生的開發和管理活動進行數據采集和分析,另一方面根據采集量化的結果判斷軟件研制進展完成情況,并尋求改進機會,確保后續開發過程可控。總之,軟件項目目標能否達成,往往依賴于過程管理中數據的測量和分析。結合標準的要求,測量與分析的流程一般如圖1 所示。在組織級層面,要制定組織的測量目標和測量項,根據組織級數據采集和分析規程,形成測量項規格說明,確定數據測量時機、采集方式、分析方法等。在項目級層面,首先要制定測量與分析計劃,確定項目的測量項,然后實施數據采集、存儲、分析等活動,生成測量分析報告并與利益相關方交流結果。

圖1:測量與分析的流程
軍用軟件測量目標,應根據組織的質量方針和目標,圍繞組織關心的焦點來確定。其來源可以是業務規劃、用戶需求、軟件產品需求、開發文檔要求、過程管理要求等。常見的測量目標可以是保證軟件研發項目按期交付、提升軟件研發產品質量、提高項目策劃和監控能力、提升軟件研發過程的規范性、提高項目管理效率等。這些目標,反映了組織對進度、工作量、規模、質量、效率、過程符合性和項目穩定性等質量目標的追求。在確定測量目標的同時,也要建立測量目標的優先級,用來確保測量解決那些可能對既定項目目標產生最大潛在影響的信息需要,指導數據分析及組織決策。例如,唐聰等[4]根據軟件項目的實際關注點,按照優先級別從高到低,將項目測量目標設定為質量、進度、范圍、成本和效率。
測量項是對測量目標的量化表征,科學合理的測量項有利于過程改進目標的實現。一般,按照數據獲取方式,測量項可以分為基本測量項和派生測量項。基本測量項指能直接測量而獲得的單個屬性的值,獨立于其他測量項。派生測量項則一般通過兩個或多個基本測量項,計算獲得的一個函數。派生測量項往往獲取多于一個屬性的數據。按照應用目的,測量項又可以分為組織級和項目級兩個類別。組織級測量項一般立足于組織的戰略方針、對重大決策的影響,測量項全面而廣泛。常見的組織級測量項覆蓋工作量、規模、進度、成本、生產率、缺陷、BUG、需求、過程符合性、返工、項目穩定性等方面,確定時要充分考慮有效性和合理性。項目級測量項則著眼于具體項目的目標和要求,對組織級測量項進行適當剪裁,一般更關注項目的完成進度、成本、質量等。測量目標和測量項的確定中,要聯系實際以需求為導向,反映組織或項目關注的焦點。如孟領朋[3]等在軟件項目重點關注進度和質量的前提下,確定階段和項目進度偏差、任務完成率3 個測量項來評估進度,確定評審缺陷、Bug 和不符合項(NCI)相關的7 個測量項來評估質量,從而精準的為項目組和利益相關方評估、決策提供參考。
為了保證采集數據的及時性、全面性、準確性和可用性,軍用軟件研發機構應建立組織級數據采集和分析規程,用以指導具體軟件項目測量與分析的實施。
在數據采集規程,應明確數據采集的來源、內容、時機、頻率、采集人、存儲位置、采集工具等。具體來講,數據采集的來源可為任務WBS分解甘特圖、進度表、開發計劃、項目進展報告、測試報告、評審報告、QA 報告、配置狀態報告、缺陷/問題列表、源代碼等。數據采集的內容則根據測量項的計算方式,采集對應的測量屬性。如項目平均生產率,是由項目的實際規模除以項目的實際總工作量,則在數據采集時要收集這兩個基本測量項的數據。采集時機的確定,如果是基于階段或里程碑的測量項,一般在階段或里程碑結束采集,而其他的測量項則可根據開發計劃開展。同時,在數據采集規程應明確數據采集人、采集工具和存儲位置。簡單而傳統的方式,是利用表格填寫、匯總和保存,但這種方式費時費力而且效率低,很難保證數據的準確性和一致性。通過測量與分析管理工具,可以建立數據采集和存儲的條件,設定數據的訪問機制,使數據采集和存儲更為規范、安全和便捷,也利于數據的持久化保存。
在數據分析規程,要明確數據正常和異常的范圍,并分析可能發生的原因,可采取的相關措施,以及數據匯報方式。直觀的采集信息很難確定數據是否發生異常,通常采用實際數據與歷史數據,或者期望數據比較來判斷。對超出閾值或臨界范圍的數據,需要檢驗誤差來源,并判斷成因及可能的糾偏措施,進而幫助組織重新分配資源或者調整軟件研制策略。數據匯報一般通過測量分析報告來展開,呈現形式可采用數據、表格或圖表等直觀的方法。
軟件項目的測量與分析人員根據組織級測量目標,從組織制定的測量項集合中選擇項目需要的測量項,擬定測量與分析計劃。具體來講,測量和分析計劃可納入軟件的開發計劃中,明確該軟件項目數據收集和分析的具體控制措施,包括執行測量的目的和選擇的測量項,各角色在測量與分析中的職責,參與測量與分析活動的動機,測量與分析活動的內容、進度安排、結果形式等。同時,測量與分析計劃也要經項目組評審,項目負責人、軟件開發人員等確認其符合項目要求和開發實際情況,并與測量目標一致。
軟件項目測量與分析活動的實施,要依照組織級數據采集和分析規程,項目測量與分析計劃,利用采集和分析工具開展實施。如,郭皓蓉等[5]利用VBA 實現測量分析過程域中數據采集、數據處理、數據分析,圖表繪制和報告生成,使得周期性重復而繁瑣的測量分析實現了自動化。本文以Qone 軟件過程管理平臺為例,具體介紹在該平臺上測量與分析活動實施的過程。

圖2:測量與分析活動甘特圖任務分解

圖3:各階段工作量絕對偏差和相對偏差
4.5.1 Qone 軟件過程管理平臺簡介
Qone 平臺是一個按照GJB5000A-2008 標準而開發的軟件過程管理平臺,它支持各成熟度模型的實踐運用。功能上,Qone 支持多維度的自定義,有豐富的組織內部溝通方式,多層權限控制機制,靈活的報告和匯總機制,可以實現全方位的項目監控,能滿足軟件組織過程改進的要求。技術上,Qone 基于J2EE 技術規范的SSH框架(即Struts+Spring+Hibernate),采用B/S 結構和MVC 設計模式,實現了跨操作系統、跨應用服務器、跨數據庫系統的高級應用。安全性上,Qone 支持https 安全協議,通過在HTTP 與TCP 之間添加加密/身份驗證層來建立安全的Inernet 訪問通道。軍用軟件研制單位通過Qone 平臺,可以對軟件開發過程進行全生存周期管理,從軟件項目的策劃、資源的分配、進度的實施和監督等方面,進行客觀而量化的控制,及早發現問題,有效規避風險,提高軟件研發的可靠性。
4.5.2 實施測量與分析關鍵步驟
以某軍用軟件項目為例,在Qone 軟件過程管理平臺實施測量與分析,主要包括以下幾個步驟:
步驟一:利用甘特圖建立測量與分析計劃。在甘特圖(圖2)中,按照測量與分析計劃拆分和細化測量任務,并為各任務指定責任人、審批人,計劃開始和結束的時間,估計的工作量,工作產品等屬性。計劃的制定和分解,是整個測量與分析活動的基礎,也是影響數據采集、存儲、分析和交流準確性的重要因素。

圖4:成本/進度性能指標
步驟二:建立測量目標和測量項。Qone 平臺提供了豐富而靈活的測量庫,包括13 個類別的測量指標,還支持對測量項的自定義,功能十分強大。軟件項目在平臺上實施測量與分析活動時,可以借助平臺提供的測量庫,建立組織級測量目標和測量項,并規定測量必選項和可選項。在此基礎上結合項目研制要求提煉出項目的測量目標和測量項,作為測量活動開展的基準。
步驟三:添加測量活動。一般測量與分析的活動包括每雙周對進度性能指標(SPI)和成本性能指標(CPI)的測量,每階段末、每里程碑末或者項目結題時對SPI、CPI、工作量、進度、生產率、產品規模、不符合項NCI 發生趨勢、評審缺陷、測試BUG、需求等的測量。在建立測量活動的同時,要為測量指標設置篩選條件,如引入階段、起止日期等;設定量化目標,如規范上限UCL、均值CL、規范下限LCL 等;定義可視化圖表,如折線圖、柱狀圖、餅圖、排列圖等。
步驟四:創建項目數據基線。由于Qone 平臺圍繞項目生存周期開展各項過程管理,實現了數據自動化采集和存儲。測量活動確定后,通過創建該活動對應的數據基線,來確定測量活動具體的數據來源和范圍。建立數據基線時,應檢查數據的當前性以確保數據為最新,檢查數據聚集結構和屬性以確保數據的一致性,檢查數據內容以確保數據有效性,檢查數據完整性以確保數據無遺漏或異常,以及檢查現有數據的變更等。值得注意的是,有時候測量無效或收效甚微,很大原因在于數據本身的準確性和完整性缺失,所以在實施測量分析的時候,數據基線的檢查和建立顯得尤為重要。
步驟五:生成測量分析報告。Qone 管理平臺的測量分析報告支持用直觀的形式呈現各類性能和量化指標。例如,圖3 分別使用了表格和柱狀圖對各階段計劃工作量和實際工作量的情況進行比較。從圖中可以看出,軟件研制各階段的絕對工作量偏差和相對工作量偏差,都在項目規定的閾值范圍-30%—30%之內,工作量的分配是適宜、可控的。圖4 中使用了表格和曲線圖來展示項目SPI和CPI 的情況。當SPI 大于1,表明進度超前;當SPI 等于1,表明進度與計劃相符;當SPI 小于1,表明進度落后。當CPI 大于1,表明成本節約,資金使用效率高;當CPI 等于1,資金使用效率一般;當CPI 小于1,表明成本超支,資金使用效率低。圖4 中折線圖可以及時反映項目進度和成本方面的執行情況,通過定量的分析,保證項目控制在計劃或基準范圍之內。
測量與分析活動由始至終貫穿在軟件研制過程中,測量人員應在周/雙周例會、階段或里程碑評審會上向利益相關方通報測量分析結果,并幫助其正確理解結果,確定偏差及糾正措施,并記錄在測量分析報告和會議紀要中。利益相關方一般包括項目負責人、數據測量分析員、軟件開發/測試人員、質量保證人員、用戶代表、相關管理者等。
組織在參照GJB 5000A 標準建立軟件工程化體系文件時,一般制定《測量與分析過程》、《數據采集與分析規程》、《測量項規格說明》等規范來指導測量與分析計劃的編寫和測量活動的實施。在實踐過程中,部分單位由于對標準理解不足,往往在組織層面上生搬硬套,或者直接借鑒其他單位體系文件中測量與分析的規定,較難實現結合自身軟件研發的情況進行本地化應用。這樣在項目層面很難得到軟件研發一線人員的認可,測量與分析的開展僅僅流于形式,難以達到其支持管理信息的目的。對標準的理解不足或有偏差,容易導致以下問題:
(1)測量目標描述不準確;
(2)測量項描述不準確;
(3)測量體系不完備;
(4)測量項采集時機不合理、采集方法和頻率不正確;
(5)選擇的測量項無法支撐測量目標;
(6)未定義測量項優先級或優先級定義錯誤。
另一方面,測量人員在實施測量與分析的過程中,由于責任心不強,或對測量與分析不熟悉,或對管理工具使用不熟練,容易產生如下問題:
(1)未采集數據或采集的數據有遺漏;
(2)數據采集時機、頻度與計劃不一致;
(3)測量項數據未分析或分析有誤;
(4)對超出閾值范圍的測量項未采取措施;
(5)交流測量分析結果不充分。
針對上述測量與分析過程中常見的問題,可以從以下兩方面加以改進:
(1)充分理解標準,加強頂層設計。具體而言,在組織層面上要結合軍用軟件研制單位特點,完善測量與分析過程文件、規程、指南和表格等,進一步明確測量與分析的目的和范圍,數據采集、存儲和分析要求,做到因地制宜、有的放矢。項目層面上,要依照軟件項目研制背景和要求,制定切實可行的測量與分析計劃,重點關注項目本身需要的測量項,避免盲目建立大而全的測量集合,采集一些無指導價值的數據。總之,要從項目需求出發,源頭上制定本地化的測量與分析計劃,才能使得測量與分析在過程改進中發揮更大的作用。
(2)明確人員職責,重視數據積累。測量與分析是以數據為基礎的過程域,原始數據的數量和質量很大程度上決定了測量與分析活動的有效性。考慮到數據來源貫穿在整個軟件研發的始終,就要求每一位參與軟件管理和研發的人員都要明確職責,增強軟件工程化管理的能力,為積累可采集的原始數據貢獻力量。軟件開發人員、配置管理人員、質量保證人員等要將各自活動中產生的有效數據及時上報到軟件管理平臺中,以供測量與分析人員及時采集和檢查,否則可能導致測量與分析活動無法開展,或者生成的報告數據不準確或有缺失。另一方面,要注重歷史數據的積累,助力軟件的持續改進和評估。在軟件過程改進初期,由于沒有歷史數據作參照,項目組人員在軟件的規模和工作量估計,評審缺陷、BUG 的分析等方面往往存在較大難度。隨著同類項目軟件工程化工作的推進,組織逐漸收集和積累了較多的數據,就可以為新項目的策劃和實施提供測量基準。因此,重視軟件過程數據的積累,是實現軍用軟件從抽象開發到量化控制,持續改進的重要保證。
在軍用軟件的研發和過程改進中,測量與分析利用測量數據來反映軟件研發的狀態,幫助項目設立有效的改進目標和策略,優化項目資源,為組織更好地進行決策指明了方向。本文詳細介紹了GJB5000A 二級模型中測量與分析過程域的目的、內容和研究方法,討論了利用Qone 過程管理平臺來實施測量與分析的關鍵步驟,對常見問題進行分析,使得抽象的測量與分析過程更加直觀可操作。基于GJB 5000A 的軍用軟件的過程改進,需要測量與分析改進后的效果在后續軟件項目中再次實施和評價,從而形成軍用軟件持續改進的良性循環。