關昕 賈祺
(中國電子科技集團公司第十五研究所 北京市 100083)
軟件質量保證的目的是使軟件組織中的管理者和各個角色對軟件過程和相關的工作產品能有客觀深入的了解,它是質量管理的重要活動之一,如圖1所示。軟件質量保證的評價對象包括兩類:過程活動和工作產品或服務。軟件質量保證過程的主要活動包括:質量保證策劃;客觀地評價所實施的過程、工作產品和服務對適用的過程說明、標準和規程的遵循性;記錄并通報不符合項,跟蹤不符合項直至解決[1]。

圖1:軟件質量保證過程
(1)質量保證策劃:軟件質量保證人員根據項目的軟件開發計劃、顧客的質量相關要求、項目執行的標準、組織提供的相關準則規范編制本項目的軟件質量保證計劃、選取適宜的過程活動和工作產品評價的準則規范。
(2)客觀地評價所實施的過程、工作產品和服務對適用的過程說明、標準和規程的遵循性:伴隨著軟件開發活動的進行,軟件質量保證人員按照軟件質量保證計劃、之前選取的本項目的過程活動和相關工作產品的準則規范對軟件開發的過程活動、工作產品進行客觀評價,判斷所實施的過程、完成的產品和服務與之前的過程說明、標準、規程是否符合。
(3)記錄并通報不符合項,跟蹤不符合項直至解決:軟件質量保證人員在評價過程中,及時記錄評價中發現的不符合項,通報給相關人員,令其修正改進,并持續跟蹤至不符合項被解決關閉。
在軟件工程活動中,軟件質量保證應具備獨立性和客觀性,因此軟件質量保證人員需要獨立于軟件項目組,對于不符合項應該具有獨立的上報渠道和處理規程。同時,軟件質量保證人員必須依據軟件項目的準則規范對過程活動和產品進行客觀地評價。
軟件質量保證的評價需要覆蓋到軟件項目的全部過程活動、產品和服務。但是與測試、評審等質量控制活動不同,軟件質量保證評價的檢查并不需要覆蓋產品的所有內容和每個從事軟件過程的人員。軟件質量保證的評價可以是有針對性的抽查。因此,軟件質量保證人員在軟件過程和產品評價中選取使用的準則規范;被抽查產品的范圍、內容;被抽查的人員能力等與軟件質量保證的有效性有直接緊密的相關性。
在實際軟件工程活動中,為了滿足顧客的要求持續交付,越來越多的軟件項目采用了快速迭代的開發模式,存在項目進度緊張、軟件需求不斷變更、軟件工作產品版本眾多等現狀。基于這樣的情形,使用有限的時間和人手快速完成軟件質量保證的檢查,就很難實現覆蓋產品全部的內容和全部人員。抽查內容的判斷和選擇成為軟件質量管理人員面臨的一道難題。為了使軟件質量保證的有效性和效率得到保障,本文主要研究了需要基于分析風險開展軟件質量保證活動。基于風險分析的軟件質量保證過程如圖2所示。基于風險分析的質量保證過程與傳統軟件質量保證過程的最大區別在于質量保證策劃和客觀地評價所實施的過程、工作產品和服務對適用的過程說明、標準和規程的遵循性兩個活動,這兩個活動都需要使用歷史項目數據結合項目特征進行相關風險分析后開展。

圖2:基于風險分析的軟件質量保證過程
基于風險分析的質量保證策劃依然需要完成軟件質量保證計劃的制定和準則規范的選取。但軟件質量保證人員需要根據項目特征(如:軟件產品的可靠性、安全性等方面的質量要求)、歷史數據庫中與當前項目特征匹配的項目測試、評審、質量保證人員進行評價時發現的過程與產品的不符合項、不符合項的嚴重程度(如:對最終軟件質量的影響、對顧客滿意度的影響),以及這些不符合對應的準則規范,識別軟件產品質量特性要求和對質量特性影響相關的風險,識別項目軟件過程活動對產品質量的相關風險,進行風險分析,找到對產品質量影響最大、最廣泛的準則規范,將這些準則規范作為該項目軟件質量保證的準則規范。如圖3所示。

圖3:基于風險分析的質量保證策劃活動流程
基于風險分析客觀地評價所實施的過程、工作產品和服務對適用的過程說明、標準和規程的遵循性需要根據開展過程活動、開發軟件工作產品人員的特征(如:人員的技術能力、對業務的了解程度等),以及工作產品內容對軟件質量影響的重要程度進行風險分析,確定需要重點檢查的人和工作產品的具體內容,然后軟件質量保證人員依據軟件質量保證計劃、選取的準則規范、確定的重點檢查的人和工作產品具體內容,開展對過程活動、工作產品和服務進行評價,記錄評價的結果。如圖4所示。

圖4:基于風險分析進行客觀評價活動流程
為了有利于今后的項目使用歷史數據基于風險分析開展更精細的質量保證工作,軟件質量保證人員在記錄評價結果的同時,需要記錄發現的不符合項。不符合項記錄的內容不僅包括發現的不符合項、造成不符合的人員,還必須記錄不符合項與準則規范的對應關系、不符合項與工作產品內容類型的對應關系。同時,軟件質量保證軟件應將發現的不符合向相關人員通報,并跟蹤問題直至關閉。
本文從對歷史數據的依賴、質量保證過程的能力水平、質量保證過程的有效性、質量保證評價記錄的要求、不符合項的記錄要求、質量保證資源投入情況等幾個方面分析了基于風險的軟件質量保證過程與傳統軟件質量保證過程的差異,如表1所示。基于風險分析的軟件質量保證過程與傳統的軟件質量保證過程相比,更加依賴于組織的歷史數據,能夠做到定性與定量的方法相結合,可以提高軟件質量保證過程的有效性和精細化水平。因此,基于風險的軟件質量保證過程更加適應目前普遍使用的快速迭代開發模式。

表1:基于風險分析的軟件質量保證過程與傳統軟件質量保證過程的差異
某項目進度非常緊張,顧客對軟件可靠性、安全性等非功能性需求的要求較高,在不額外增加軟件質量保證人員的基礎上同時要求保障軟件質量保證的有效性,項目采用了基于風險分析的軟件質量保證過程。本文以對“軟件需求規格說明”(SRS)的產品質量保證評價策劃為例,對基于風險分析的軟件質量保證過程進行說明。
首先,軟件質量保證人員在該組織歷史數據庫中整理歸納了同類項目軟件需求規格說明不符合項發生頻率的歷史數據,分析了對產品質量產生的影響,如表2所示。

表2:軟件需求規格說明不符合項發生頻率
在同類型項目的歷史數據中,該組織對于軟件需求規格說明(SRS)的完整性的檢查中不符合項發生頻率最高。
其次,基于以上的分析,軟件質量保證人員分析歸納對完整性進行評價的準則規范對應評價對象不符合項的發生頻率。如表3所示。在該組織同類型項目的歷史數據中,功能需求、接口需求和非功能性需求發生不符合項的頻率最高。

表3:完整性不符合項發生頻率
再次,軟件質量保證人員參照該項目的風險管理計劃,對與軟件需求規格說明相關的風險進行分析整理,如表4所示。軟件質量保證人員分析了風險的發生概率、影響程度、處理方式,提出對軟件需求規格說明產品進行質量保證評價中具體的實施措施。

表4:某項目與軟件需求規格說明的風險列表
最后,軟件質量保證人員結合同類項目的歷史數據和本項目的風險分析,進行軟件需求規格說明的評價策劃。按照慣例,對軟件需求規格說明(SRS)的評價是在其完成后進行的。基于對本項目的風險分析,軟件質量保證人員對本項目的軟件需求規格說明(SRS)評價計劃分成兩次進行。第一次為功能需求、接口需求和非功能性需求部分完成后。第二次為軟件需求規格說明(SRS)完成后。基于項目風險和歷史數據的分析,軟件需求規格說明(SRS)兩次評價的重點不同。軟件質量人員對每次評價的準則規范進行了選擇和調整,如表5所示。

表5:某項目軟件需求規格說明(SRS)的風險列表
隨著信息技術飛速發展,軟件以用戶為中心,為了實現快速、高質量地交付軟件,多種開發模式應運而生,給傳統的軟件質量管理帶來了挑戰。軟件質量保證是質量管理的重要活動之一。本文利用風險分析的思想,基于定性和定量相結合的方法,構建了基于風險分析的軟件質量保證過程,分析了基于風險分析的軟件質量保證過程與傳統軟件質量保證過程的差異,給出了基于歷史數據和項目風險如何進行質量保證策劃的一個示例。希望能夠為周期緊、人員有限、質量要求高的軟件項目,提供一種精準地投入軟件質量保證資源、快速有效開展軟件質量保證的解決思路。