姜曉輝 胡 勇 郭久武
(北京特種機電技術研究所 北京 100012)
遵從《ISO/IEC 17025:2017實驗室管理體系檢測和校準實驗室能力一般要求》/《GJB 2725A-2001測試實驗室和校準實驗室通用要求》標準建立的軟件測評機構,其軟件測評工作與軟件開發是相對獨立的軟件工程過程。軟件測評項目管理包括項目策劃、測量與監控、配置管理和質量保證等過程。在軟件測評項目管理中,通常重點考察質量、進度、成本三個維度,最終目標是以過程質量換取交付產品的質量保證[1~2]。
我國獲取國家和軍方認證的軟件測評實驗室已達300多家,測評工作的管理與測試項目的評價尚沒有統一的度量模型與評價方法。如何有效地管理測評項目,是目前國內外學者研究的重要課題?;诖耍瑓⒖糃MMI(能力成熟度模型集成)技術中系統與軟件工程技術、軟件質量要求和評價技術、軟件開發項目的產品度量和過程度量方法[3],提出一種軍用軟件測評實驗室測評管理度量模型,構建了面向管理的度量指標體系和評價方法[4],并依此完善標準化的測評項目量化管理機制。該模型可應用于軟件測評實驗室管理機構對實驗室的監控[5],實驗室間的能力比對,需方選擇合格測試業務供方,以及實驗室的內部管理。經數十個測評項目的工程實踐表明,該模型可有效提高我國軍用軟件測評項目量化管理的精準性與效率。
軟件研制能力成熟度模型技術將軟件度量分為產品度量和過程度量。它們從不同維度反映軟件工程的特性,通過定量監控軟件開發的實施過程和過程產品質量,達到質量管理的目標。
軟件產品度量是對軟件固有質量屬性的度量。從工程實踐角度講,可以簡化理解為對軟件產品質量和軟件使用質量的度量[6],見圖1和圖2。

圖1 產品質量模型

圖2 使用質量模型
針對軟件的質量特性與子特性進行度量集構建,典型度量一般包括功能的充分性、計算的精確性、數據的可交換性、數據加密、缺陷密度、對診斷功能的支持、環境的適應性、任務有效性和滿意度標度等[7~8]。
軟件過程度量是對軟件過程進行度量的定義、方法、活動和結果的集合[9]。通過度量,給出對軟件過程客觀的評價[10],用于指出軟件屬性的趨勢,能有針對性地進行改善。從過程依從性、穩定性、生產率、時間和進度、資源和費用、技術能力6個過程性能類型進行度量集構建[11],典型度量一般包括過程偏離度、需求變更、軟件過程變更、開發效率、環境資源和技術適應性等。
現有軟件質量度量技術著重分析軟件質量屬性的影響因素,研究對象是軟件產品,即在軟件質量屬性和軟件設計、編程的特性之間建立關聯映射。這些度量可以幫助認識軟件產品的質量特性,盡管其對質量特征和產品特性的度量本身是有用的,但在軟件過程質量度量中無法使用;且模型中的質量要素和準則(子特性)之間的關系是通過非形式化建立,不能確定該模型是不是質量的一個完備的或者一致的定義,為評價帶入主觀性因素。
現有軟件過程度量技術對軟件過程的度量存在片面性,不能充分體現度量的過程性;CMMI技術雖然為軟件過程改善和軟件過程評估提供了一個有效的指導框架,在這個過程中,軟件的質量、進度等都是可以預測的;但沒有提出實現每個關鍵過程域的具體知識和方法,缺乏實際操作性。
為解決上述問題,業界提出使用“目標-提問-測量GQM(Goal-Question-Measurement)”方法的統一過程度量模型,抽取各個過程域所需的過程和產品的基本度量和導出度量,形成軟件項目的典型度量,包括規模、工作量、人員、進度、生產率、缺陷密度等,將這些度量按照過程度量和產品度量進行分類和分層,建立過程和產品統一性度量與評價模型,形成統一性的層次結構。
基于軟件開發項目度量中統一過程度量思想設計模型,從測試項目過程和測試產品質量的角度提出基本度量和導出度量,明確度量層次關系和度量信息模型[12]。提出由10個導出度量組成的度量體系用于測試項目質量管理[13],如表1所示。

表1 度量體系設計
采用信息需要測量目標、度量指標、基本度量元和計算公式,由信息需求到測量項關系表的形式,明確基本度量元與最終管理需求的映射關系。
基于提出的度量體系,設計了歸一化模型和評估方法。將項目管理參數整合成一項反映項目整體進展狀態的集成化指標,歸一化模型和評估方法滿足標準如下。
指標是絕對數值,無量綱。各個參數情況不同,側重于不同的軟件度量維度,可比性差。有的參數無量綱(如工作量使用偏差率),有的參數有量綱(如缺陷密度的量綱為個缺陷/KLOC),沒有可比性。為了將其整合為一項指標,必須將所有納入指標的參數去量綱化。各參數的歸一化數值才具有可比性,才能運用于計算。
各個參數的無量綱數值的數量級相同,最多相差1個數量級。如果各個參數數值相差懸殊,會發生大數據“淹沒”小數據的情況(即小數據被忽略不計),指標就無法反映被“淹沒”的參數的貢獻。
各個參數的無量綱數值的物理意義明顯,符合人們的認知規律和直觀感覺。
基于GJB 2434A-2004《軍用軟件產品評價》、GB/T 18905-2002《軟件工程產品評價》等標準中的評價方法。按照業界常規的指標評價方法,指標取值范圍為[0,1]。
二元度量(算法中權值參數取值0或1)和分段度量(如:五級計分制)均是主觀度量,且取值粒度較粗。采用更精細、更客觀的度量算法。
使用正面評價法(數值越大越好),符合國人的思維習慣,使得指標的趨勢表現更明確。
依據參數的關注度和重要性,對不同的參數賦予不同的權值。
建立指標評價準則,用以評判項目的整體進展狀態。允許用戶自主、靈活地設定評價標準,以符合評價項目的實際情況。
基于以上準則,建立的通用的歸一化指標模型的形式化表述如下:

其中,V為集成化指標值,取值范圍[0,1];αi為各個參數的權值,取值范圍[0,1];βi為各個參數的取值,取值范圍[0,1];N是納入集成的參數項數,N ≥ 1。
式(1)中的βi可以進一步分為以下四種情形:
Ⅰ類:參數數值本身就是正比率,以百分比表示;參數度量是一種正向度量(即度量值越大越好)。如測試需求覆蓋率,取值范圍[0,1]。此種情形最簡單,直接取參數數值本身即可。
Ⅱ類:參數數值本身就是偏差率,以百分比表示。不論是正偏差還是負偏差,都是超出項目的預期,都會對項目帶來影響,因此都要考慮。解決辦法是取偏差率的絕對值。為了保證取值范圍[0,1],還需要取絕對值與1的最小值。鑒于偏差率度量是一種反向度量(即度量值的絕對值越小越好),對項目帶來的是負面影響,因此需要將其影響扣除,解決方法是從1中減去最小值。值得一提的是,用戶需求變更率也可歸入Ⅱ類。
Ⅲ類:參數數值帶量綱,以具體數值表示;參數度量是一種反向度量(即度量值越小越好)。如項目的缺陷密度是10個缺陷/KLOC,缺陷密度越小質量越好,對這些參數必須去量綱化。解決辦法是設定其目標值作為基準(Benchmark)值,取參數數值與基準值的比值。為了保證取值范圍[0,1],還需要取比值與1的最小值。鑒于參數度量是一種反向度量,因此需要將其負面影響扣除,解決方法是從1中減去最小值。
Ⅳ類:參數數值帶量綱,以具體數值表示;參數度量是一種正向度量(即度量值越大越好)。如項目的生產率為10 LOC/人時,生產率越大效率越高,對這些參數必須去量綱化。解決辦法是設定其目標值作為基準值,取參數數值與基準值的比值。為了保證正向效應,需要從比值中減去1。為了保證取值為正值,需要取其與0的最大值。為了保證最終結果的取值范圍[0,1],還需要取最大值與1的最小值。
考慮四種情形后,建立的歸一化指標模型的形式化表述如下:

其中,V為集成化指標值,取值范圍[0,1];α1i為Ⅰ類參數的權值,取值范圍[0,1];α2i為Ⅱ類參數的權值,取值范圍[0,1];α3i為Ⅲ類參數的權值,取值范圍[0,1];α4i為Ⅳ類參數的權值,取值范圍[0,1];β1i為Ⅰ類參數的取值,取值范圍[0,1];β2i為Ⅱ類參數的取值,取值范圍[0,1];β3i為Ⅲ類參數的取值,取值范圍[0,1];β4i為Ⅳ類參數的取值,取值范圍[0,1];N1是Ⅰ類參數項數,N1≥1(N1為0時,不納入公式,以下同);N2是Ⅱ類參數項數,N2≥1;N3是Ⅲ類參數項數,N3≥1;N4是Ⅳ類參數項數,N4≥1;Ri是Ⅰ類參數的正比率;DRi是Ⅱ類參數的偏差率;NQi是Ⅲ類參數的反向度量取值;是Ⅲ類參數的反向度量基準值(目標值);PQi是Ⅳ類參數的正向度量取值;是Ⅳ類參數的正向度量基準值(目標值)。
式(2)建立的歸一化指標模型比任何單維度指標更全面、更完整地反映項目進展狀態;優于二元度量和分段度量,度量結果更精細、更客觀;可用作統一指標來評估項目績效(只要事先設置評估標準和準則);具有開放性和擴展性,可隨時追加所需的參數度量。
在β3i和β4i中,當參數數值與基準值相同時,出現一個奇點:β3i和β4i取值為0,即參數對指標零貢獻。在任務書中,指標通常是以“ ≥”或“ ≤”形式下達指標,當參數數值正好等于基準值時,也已經實現目標,在評估時注意此類情況。
針對質量、進度和成本設計綜合評價方法。以綜合度量指標為基礎,提出了一種綜合度量指標評價方法[15]。
根據上文V定義,V取值越大,項目狀態越好。評價項目狀態,用戶需要事先設置評價標準,其結果是測量值被映射到某一標度上。通常設置優秀、良好、合格、不合格4級標準。
評定等級標準一般劃分如圖3所示。

圖3 測量和評定等級
將評定等級的四個區域分別標識為A(優秀)級、B(良好)級、C(合格)級、D(不合格)級,并賦以數值,賦值說明如表2所示。
除了定義評定等級外,用戶必須定義評估準則,規定綜合度量指標V應該達到的水平。例如,設置的評定等級是B,即在“當前水平”線之上,則評價準則可定義為當V的測量值 ≥“當前水平”,項目達標;否則項目不達標,即使V的測量值 ≥“最差情形水平”,此時項目狀態還是合格的。

表2 評定等級賦值
軍用軟件測評項目均依據《[2005]裝電字第324號軍用軟件測評實驗室測評過程和技術能力要求》,結合各軍兵種軟件工程工作的管理規定開展工作。一般包括任務下達、測評啟動、測試需求分析、測試策劃、測試設計、測試實現、測試執行、回歸測試、測試總結、測試結項活動[16]。通常軍用軟件測評實驗室會將其中可控的測試活動歸納為五個工作過程,即測試需求分析與策劃過程、測試設計與實現過程、測試執行過程、回歸測試過程、測試總結過程。
軍用軟件測評項目綜合度量活動包括信息需要,建立度量目標,選擇度量,引用或定義度量規范,制定度量計劃,將測量與分析活動集成到項目開發過程中[17]。測量與分析的執行活動包括度量計劃采集度量數據,檢查度量數據的質量,存儲度量數據,計算指示器的值,分析度量數據,解釋當前項目的進展狀態,標識項目出現的異常情況,并分析問題的原因。數據分析的結果及時向項目管理者和相關方通報,提供項目管理者決策和糾正措施的依據。軍用軟件測評項目進展綜合度量流程是附加在軍用軟件測評流程中進行的。

表3 四類參數舉例
針對軍用軟件測評項目,通過一個使用式(2)建立綜合度量指標的示例進行驗證。假設一個軍用軟件測評項目已經處于測試總結過程末期,需要對階段整體進展狀態進行評估。對四類情形各舉一例,如表3所示。
計算β值和各個參數的貢獻值αβ的結果如表4所示。

表4 四類參數導出的β值和貢獻值
集成化指標值V=0.68,對照表2的標準,項目可評判為C(合格)水平狀態。
針對軍用軟件測試過程要求和特點,提出一種基于統一過程度量的軟件測評項目管理模型,使用過程和質量度量模型控制項目質量、進度,通過歸一化方法獲取有效度量元,從多個維度對軟件測試過程進行度量。通過軍用軟件測評實驗室實際項目實驗證明,本模型能夠客觀標識測試項目進展狀態,提高軟件測評項目量化項目管理的有效性和效率。在今后的研究中,應深入展開多級綜合評價方法等相關算法研究,進一步完善度量與評價體系;特別是對不同類型、不同領域軟件測評項目度量元的權重分配采用具體技術、方法、步驟,其有效性、合理性以及適用性有待進一步結合數據積累分析研究。