郭棟 劉文紅 陳聰 彭普 周東紅
【摘要】 本文在結(jié)合現(xiàn)有軟件質(zhì)量評價研究成果基礎(chǔ)上,將軟件研制過程中的質(zhì)量評審問題和軟件測試過程中的問題進行綜合分析,提出了一種基于開發(fā)過程和測試結(jié)果的軟件質(zhì)量評價方法。此方法通過將軟件研制過程中的質(zhì)量評審問題和軟件測試過程中的問題進行綜合分析,能夠為快速判斷軟件質(zhì)量提供支持。
【關(guān)鍵詞】 軟件過程評估;測試結(jié)果;軟件;質(zhì)量評價;度量
【DOI編碼】 10.3969/j.issn.1674-4977.2021.05.018
Research on Software Quality Evaluation Method Based on Development Process and Test Results
GUO Dong1,LIU Wen-hong2,CHEN Cong1,PENG Pu1,ZHOU Dong-hong1
(1.China Aerospace Academy of Systems Science and Engineering,Beijing 100048,China
2.Beijing Institute of Tracking and Communication Technology,Beijing 100095,China)
Abstract: Based on the existing research results of software quality evaluation,this paper comprehensively analyzes the quality review problems in the software development process and the problems in the software testing process,and proposes a software quality evaluation method based on the development process and test results. This method can provide support for quickly judging software quality by comprehensively analyzing the quality review problems in the software development process and the problems in the software testing process.
Key words: software process evaluation;test results;software;quality evaluation;measurement
隨著軟件規(guī)模和復(fù)雜度的不斷增長,如何抓住有限的信息來快速度量軟件系統(tǒng)中各軟件配置項的質(zhì)量,從而能迅速抓住質(zhì)量薄弱環(huán)節(jié),提高整系統(tǒng)的軟件質(zhì)量,是人們亟待解決的難題。
軟件產(chǎn)品質(zhì)量是軟件質(zhì)量的重要組成部分,因此軟件產(chǎn)品質(zhì)量度量是軟件度量的重要組成部分。同時,由于軟件經(jīng)設(shè)計與開發(fā)之后,在具備滿足用戶需求功能的同時,軟件質(zhì)量的優(yōu)劣也就形成在軟件設(shè)計與開發(fā)過程之中。軟件產(chǎn)品生產(chǎn)設(shè)計的過程是影響所開發(fā)軟件質(zhì)量的關(guān)鍵,軟件質(zhì)量的提高是軟件生產(chǎn)過程中各項質(zhì)量活動共同作用的結(jié)果。因此,評估軟件質(zhì)量有必要從軟件的研制過程著手,將對軟件研制過程的評估加入到軟件的質(zhì)量評價中去[1]。
1 軟件質(zhì)量評價方法概述
國內(nèi)外軟件質(zhì)量評價研究中,基于測試結(jié)果對軟件質(zhì)量進行評價的模型很多。以目前定義和測量軟件質(zhì)量的現(xiàn)行國際標準ISO/IEC 25010:2011為例[2],采用了“特性—子特性—度量元”的結(jié)構(gòu)模型來定義軟件質(zhì)量的度量。通過軟件測試的方式,根據(jù)選定的測試方法得出對應(yīng)各度量元的度量值,然后根據(jù)各度量元的權(quán)重,加權(quán)平均得出對應(yīng)子特性的值,最后根據(jù)各子特性的權(quán)重加權(quán)平均得出軟件獨立值。GB/T 25000系列標準也借鑒了該模型。參考該模型重新修訂GJB 5236的工作正在立項。
以上各種軟件質(zhì)量度量評估都是依據(jù)軟件測試的結(jié)果來進行,這種度量方式需要針對軟件的特定度量元進行大量指定方法的測試工作,計算也非常煩瑣。度量出的結(jié)果與軟件實際效能缺乏聯(lián)系,并不能實際反映軟件的質(zhì)量。軟件研制開發(fā)和測試過程中所積累的大量原始數(shù)據(jù)也沒有被考慮進去,對軟件開發(fā)過程影響軟件質(zhì)量的因素和機制尚缺乏有效研究。
2 基于開發(fā)過程和測試結(jié)果的軟件質(zhì)量評價方法
軟件的質(zhì)量是在軟件研制過程中逐步得到實現(xiàn)的,不能只依靠軟件測試環(huán)節(jié)控制質(zhì)量。因此,本文提出通過對軟件研制過程的監(jiān)控來評價軟件質(zhì)量,即軟件研制過程的監(jiān)控與評價作為軟件質(zhì)量評價的一部分參數(shù),利用各階段測試結(jié)果實現(xiàn)對軟件全生命周期的質(zhì)量進行度量和評價。
如圖1所示,軟件質(zhì)量的評估模型可以由兩個觀察側(cè)面的評估值來構(gòu)成,分別是產(chǎn)品側(cè)面(軟件測試結(jié)果)和過程側(cè)面(軟件研制過程評估)。每個觀察側(cè)面各選取多個度量要素來計算其取值,最后將它們歸一化到統(tǒng)一的衡量尺度上,加權(quán)匯總成為最終的軟件質(zhì)量評價數(shù)據(jù)。
2.1 軟件開發(fā)過程分析
軟件產(chǎn)品的研制過程評估,一方面需要將軟件開發(fā)組織的過程能力成熟度考慮在內(nèi);另一方面,對于當前軟件研制項目的相關(guān)參數(shù)的度量,也要作為重要的指標予以考慮,這些指標主要包括:軟件規(guī)模度量、軟件安全關(guān)鍵級別度量以及針對項目各條基線的質(zhì)量有效性度量等。其中軟件規(guī)模和軟件安全關(guān)鍵級別不直接影響軟件的質(zhì)量,而是作為軟件質(zhì)量參數(shù)的基準調(diào)整參數(shù)來使用。
2.1.1 軟件項目基線評審結(jié)果評估
在軟件研制過程中,對應(yīng)基線產(chǎn)品的歷次質(zhì)量評審中的意見個數(shù)與更改比例,是軟件研制過程質(zhì)量的一項重要體現(xiàn)。能有效地評審出問題,并根據(jù)評審意見進行了修改,對促進軟件研制能力的提升有正面幫助。以同類軟件平均基準值作為參考,記第n個階段基線評審中提出了m10,m20,m30…mn0條意見,當前項目的實測值為a1,a2,a3…條意見。如表1所示。
那么,針對軟件研制項目基線評審結(jié)果的計算公式如下。PJX的范圍在(0,1)之間。
[PJX=1÷1ni=1i=n(mi-mi0)2=ni=1i=n(mi-mi0)2]
該計算公式還可以進一步精細化處理??紤]到根據(jù)質(zhì)量評審中所提出意見的嚴重程度,以及與其對應(yīng)階段之間的關(guān)系,還應(yīng)有不同權(quán)重予以計算。例如,在設(shè)計評審階段發(fā)現(xiàn)了需求中的問題(本應(yīng)在需求評審中提出并修改),其嚴重性應(yīng)大于在需求評審中所發(fā)現(xiàn)的同類問題,其折合扣分權(quán)重也應(yīng)更高。
2.1.2 軟件研制能力成熟度評估
一般一個具有較高等級軟件研制能力成熟度評價的組織,能開發(fā)出更高質(zhì)量的軟件。因此,我們讀入評價機構(gòu)對該組織的軟件研制能力成熟度評分的成績,并根據(jù)其成熟度等級,通過權(quán)值對分數(shù)進行調(diào)整。當讀入的分數(shù)成績相同時,成熟度三級的單位比成熟度二級的單位得分更高。
評價機構(gòu)對軟件研制能力成熟度的評分方式使用SCAMPI方法[3]進行,由被評單位自行提供自己的四個項目來進行度量,根據(jù)這些項目的相關(guān)質(zhì)量數(shù)據(jù),對每個實踐域進行評價,給出每個實踐以S/L/P/NY的分值。最終的統(tǒng)計評分采用木桶原理式,以短板作為能力的記錄點。一個目標未實現(xiàn),則整體過程域評價為不通過;一個過程域不通過,則本級別評價不通過[4]。那么,通過對應(yīng)級別軟件研制能力成熟度的單位,統(tǒng)計其所有實踐,最終得到的得分成績記為A。A必然是大于6分,最大能得到8分。我們讀入某單位的軟件研制能力成熟度成績?yōu)锳,該單位的成熟度等級為[N0]。
考慮到軟件研制能力成熟度共分為5個等級,我們設(shè)置成熟度等級5級的權(quán)重為1.0,成熟度成績保持為讀入的原始值。當成熟度等級降低,權(quán)重也隨之降低,記每降低一級所減少的權(quán)重為[p0],[p0]的初始值可以采用專家打分法來確定,后期積累大量歷史數(shù)據(jù)后,也可采用客觀賦權(quán)法來確定其權(quán)重值。該軟件的研制單位的軟件研制能力成熟度評分值對軟件質(zhì)量的影響度量初始計算公式即為:
[PSCM=A×[1-p0×(5-N0)]]
[A]的取值范圍在(6,8)之間,則[PSCM]的取值范圍也在(6,8)之間。對[PSCM]進行歸一化處理,該項度量的歸一化計算公式為:
[PSCM_1=A-6(8-6)×[1-p0×(5-N0)]]
歸一化處理之后,[PSCM_1]的范圍在(0,1)之間。評價機構(gòu)對研制單位的軟件研制能力成熟度評審并打分完后,每年還要組織對該軟件研制單位進行年度監(jiān)督[5-6]。一般的,年度監(jiān)督時評價機構(gòu)會對軟件研制單位提出若干條年檢意見。年檢問題的嚴重等級是評估該軟件研制單位的研制過程質(zhì)量非常重要的參數(shù),能直接的反應(yīng)研制單位當前(而不是過往)的軟件研制項目過程管理水平。
當年檢結(jié)果問題中存在嚴重不符合項時,認為該單位的軟件研制能力與其初始評分極不相稱,考慮對初始評分做清零處理,即:
[PSCM_final=0]
當年檢結(jié)果問題中沒有嚴重不符合,但存在一般不符合項時,則認為該單位的軟件研制能力與其初始評分有較大出入,考慮對初始評分做減半處理,即:
[PSCM_final=12PSCM_1]
當年檢問題均為改進項,認為該單位的軟件研制能力與初始評分基本相符,但仍有待改進處,需要對初始評分做一定減分處理,但保證其最終的得分比年檢問題存在一般不符合的得分高。
具體的減分處理,需要參考當前軟件研制單位年審改進項的個數(shù)多少,以及是否存在重復(fù)性問題來進行調(diào)整。提出的改進建議越多得分越低,改進建議中重復(fù)問題越多得分越低。當無改進建議,則得分依舊為[PSCM_1]。
記最近一次軟件研制單位的年審改進項的個數(shù)為m條,一年內(nèi)各軟件研制單位年審改進項個數(shù)的均值為n條,當每比均值多一條改進項,則權(quán)重減少的比例為[p1];這m條改進項中,有[l]條改進項在本單位以往年審中曾經(jīng)出現(xiàn)過,記每多一個重復(fù)問題的扣除權(quán)重比例為[p2]。
[PSCM_ final=12PSCM_1+12PSCM_1(1-p1)m-nn(1-p2)l]
同樣,[p1]和[p2]初始值可以根據(jù)專家經(jīng)驗確定,后期有歷史數(shù)據(jù)可根據(jù)實際數(shù)據(jù)和評價結(jié)果進行調(diào)整。
2.2 軟件測試結(jié)果分析
對于每個軟件測試問題,從軟件的問題嚴重等級、該問題的引入階段和發(fā)現(xiàn)該問題所需技術(shù)難度三個方面進行考察。
2.2.1 軟件問題嚴重等級
軟件問題的嚴重等級分為五個等級,分別為:
1)致命問題,導(dǎo)致系統(tǒng)/設(shè)備任務(wù)完全失敗,系統(tǒng)/設(shè)備安全性和安全保密性喪失,甚至危及人身安全;2)嚴重問題,會影響/潛在影響設(shè)計/需求文檔中所規(guī)定的主要功能的完成或沒有實現(xiàn)設(shè)計/需求文檔中規(guī)定的功能;3)一般問題,會對設(shè)計文檔中規(guī)定的主要功能的完成產(chǎn)生不利/潛在不利的影響,從而導(dǎo)致功能障礙的代碼問題;4)輕微問題,不會影響設(shè)計/需求文檔共規(guī)定的主要功能的完成,但對運行或操作會產(chǎn)生輕微影響/潛在影響;5)改進建議,對主要功能的完成,以及運行或操作均無影響,但從代碼可讀性和結(jié)構(gòu)化程度等方面可以進一步改進優(yōu)化。
記發(fā)現(xiàn)的問題嚴重等級為[N1]。當發(fā)現(xiàn)的問題嚴重等級每降低一個等級(對應(yīng)的值增加),則權(quán)重增加[p3]。軟件問題的嚴重等級對當前問題的參考值為:
[Pdj=[1-p3×(5-N1+1)]]
2.2.2 軟件問題引入階段
在發(fā)現(xiàn)軟件問題的時候,同時也能定位到該軟件問題是從生命周期的哪個階段引入的。如果軟件研制過程受控,軟件測試及交付時應(yīng)只發(fā)現(xiàn)編碼階段引入的問題。如果在測試時發(fā)現(xiàn)存在設(shè)計階段的問題,例如設(shè)計存在漏項,未覆蓋需求,則這類問題的權(quán)重值需要增加。
設(shè)發(fā)現(xiàn)問題發(fā)生階段包括方案、需求、設(shè)計、編碼、使用等一共S個階段,按階段先后順序?qū)?yīng)的標注值為1、2、3、…、[Ns],當軟件問題引入階段越早(而一直未發(fā)現(xiàn)),則該問題的權(quán)重值越高。記軟件編碼階段引入的問題權(quán)重值為1.0,問題引入階段每向前一個階段,則對應(yīng)權(quán)重增加[p4]。軟件問題的引入階段對當前問題的參考值為:
[Pjd=[1-p4×(S-Ns+1)]]
2.2.3 軟件問題發(fā)現(xiàn)難易程度
發(fā)現(xiàn)軟件問題是需要一定的技術(shù)手段的。設(shè)發(fā)現(xiàn)問題難度包括1、2、3、4、5五個等級,表示問題的發(fā)現(xiàn)難度逐漸增加。發(fā)現(xiàn)問題難度為增加一個等級,則權(quán)重增加[p5],發(fā)現(xiàn)的問題難度等級為[N2],則發(fā)現(xiàn)問題難度對當前問題的參考值為:
[Pnd=[1-p5×(5-N2+1)]]
2.2.4 測試結(jié)果總評分
設(shè)該軟件在提交第三方測試和交付后共計發(fā)現(xiàn)k個問題。第k個問題所對應(yīng)的三個方向參考值分別為[Pdj_k×Pjd_k×Pnd_k][Pdj_k×Pjd_k×Pnd_k]。
當前軟件的測試結(jié)果分析得分值為:
[PJF=(Pdj_k×Pjd_k×Pnd_k)? ? ? =i=1i=k[1-p3*(5-Ni1+1)][1-p4*(5-Nis+1)][1-p5*(S-Ni2+1)]]
其中,[p3],[p4],[p5]初始值可以根據(jù)專家經(jīng)驗確定,后期有歷史數(shù)據(jù)可根據(jù)實際數(shù)據(jù)和評價結(jié)果進行調(diào)整。
3 綜合結(jié)果分析
綜合評價方法采用加權(quán)平均,假設(shè)綜合評價滿分為100,項目基線評審結(jié)果、研制能力成熟度評估和軟件測試結(jié)果的權(quán)重分別為[η1],[η2],[η3],且有[i=13ηi=1],則該軟件的質(zhì)量評價分數(shù)為:
[Qfinal=100×(η1PJX+η2PSCM_final+η3PJF)]
4 總結(jié)
本文在現(xiàn)有軟件質(zhì)量評價研究成果的基礎(chǔ)上,提出了一種基于過程評估和測試結(jié)果的軟件質(zhì)量評價方法,立足于總體單位所能方便獲得的質(zhì)量數(shù)據(jù),快速便捷評估各軟件的質(zhì)量。
目前,使用該方法還主要采用主觀權(quán)重,即專家打分的方式來確定其中各個權(quán)重的選擇。在積累更多項目歷史數(shù)據(jù)之后,可以不斷修正該算法,將主觀權(quán)重調(diào)整為客觀賦權(quán),利用各指標間的相互關(guān)系或提供的信息量來確定,實際通過對原始數(shù)據(jù)經(jīng)過數(shù)學處理獲取權(quán)重。在計算測試結(jié)果分析等數(shù)據(jù)時,本方法使用的是與同類軟件基準值進行比較??紤]到軟件按其規(guī)模分為巨、大、中、小、微五個等級,按其安全關(guān)鍵等級分為I、II、III、IV四個等級,按照嵌入式/非嵌入式以及不同語言、不同行業(yè)特點,給予不同的權(quán)值后,可以考慮與不同類的軟件進行映射對比計算。
【參考文獻】
[1] 梅磊,劉鴻飛,董文通.基于測試過程管理的航天軟件質(zhì)量評價[J].西華大學學報(自然科學版),2019(6):67-72.
[2] Systems and software engineering-Systems and software Quality Requirements and Evaluation(SQuaRE)-System and software quality models:IEC 25010:2011[S].
[3] 徐俊.CMMI軟件成熟度模型SCAMPI評估需求分析[J].信息技術(shù)與標準化,2008(12):35-37.
[4] 何新貴.GJB 5000《軍用軟件能力成熟度模型》實施指南[M].北京:國防工業(yè)出版社,2004.
[5] 張昱.GJB 5000A過程和產(chǎn)品質(zhì)量保證實施要點[J].電子技術(shù)與軟件工程,2021(7):72-74.
[6] 孟磊,陳松,陳心華,等.基于GJB 5000A三級的軍用軟件過程改進探討與實踐[J].電子質(zhì)量,2020(12):117-121.
【作者簡介】
郭棟,男,1984年出生,高級工程師,碩士,研究方向為軟件測評。
劉文紅,女,1968年出生,研究員,碩士,研究方向為軟件工程、軟件測試。
陳聰,男,1987年出生,工程師,碩士,研究方向為嵌入式軟件測試。
彭普,男,1984年出生,工程師,學士,研究方向為軟件工程。
周東紅,男,1981年出生,工程師,碩士,研究方向為嵌入式軟件測試、軟件工程。