SQA(軟件質(zhì)量保證)是CMM2級中的一個重要關(guān)鍵過程區(qū)域,它是貫穿于整個軟件過程的第三方獨立審查活動,在CMM的過程中充當重要角色。
SQA的目的是向管理者提供對軟件過程進行全面監(jiān)控的手段,包括評審和審計軟件產(chǎn)品和活動,驗證它們是否符合相應的規(guī)程和標準,同時給項目管理者提供這些評審和審計的結(jié)果。因此,滿足SQA是達到CMM2級要求的重要步驟之一。
背景
對任何制造業(yè)企業(yè)來說,質(zhì)量保證活動都是必不可少的。第一個正式的質(zhì)量保證和控制職能部門于1916年在貝爾實驗室出現(xiàn),此后迅速風靡整個制造業(yè)。軟件的質(zhì)量標準首先出現(xiàn)在20世紀70年代軍方的軟件開發(fā)合同中,此后得到了廣泛的應用。在軟件越來越普及的今天,"軟件質(zhì)量保證"更成為軟件開發(fā)企業(yè)和最終用戶所關(guān)心的問題。
實踐證明,軟件質(zhì)量保證活動在提高軟件質(zhì)量方面卓有成效。IBM360/370系統(tǒng)軟件的開發(fā)經(jīng)驗證明了這一點,IBM的有關(guān)報告指出,在8年的時間里,軟件質(zhì)量提高了3~5倍,而SQA是其質(zhì)量體系中的一個重要組成部分。
目標
SQA組織并不負責生產(chǎn)高質(zhì)量的軟件產(chǎn)品和制定質(zhì)量計劃,這些都是軟件開發(fā)人員的工作。SQA組織的責任是審計軟件經(jīng)理和軟件工程組的質(zhì)量活動并鑒別活動中出現(xiàn)的偏差。
軟件質(zhì)量保證的目標是以獨立審查的方式監(jiān)控軟件生產(chǎn)任務的執(zhí)行,給開發(fā)人員和管理層提供反映產(chǎn)品質(zhì)量的信息和數(shù)據(jù),輔助軟件工程組得到高質(zhì)量的軟件產(chǎn)品,其主要工作包括以下三個方面:
● 通過監(jiān)控軟件的開發(fā)過程來保證產(chǎn)品的質(zhì)量;
● 保證生產(chǎn)出的軟件和軟件開發(fā)過程符合相應的標準與規(guī)程;
● 保證軟件產(chǎn)品、軟件過程中存在的不符合問題得到處理,必要時將問題反映給高級管理者。
從軟件質(zhì)量保證的目標中可以看出,SQA人員的工作與軟件開發(fā)工作是緊密結(jié)合的,需要與項目人員溝通。因此SQA人員與項目人員的合作態(tài)度是完成軟件質(zhì)量保證目標的關(guān)鍵,如果合作態(tài)度是敵意的或者是挑剔的,則軟件質(zhì)量保證的目標就難以順利實現(xiàn)。
任務
軟件質(zhì)量保證的主要作用是給管理者提供實現(xiàn)軟件過程的保證,因此SQA組織要保證如下內(nèi)容的實現(xiàn):
● 選定的開發(fā)方法被采用;
● 選定的標準和規(guī)程得到采用和遵循;
● 進行獨立的審查;
● 偏離標準和規(guī)程的問題得到及時的反映和處理;
● 項目定義的每個軟件任務得到實際的執(zhí)行。
相應地,軟件質(zhì)量保證的主要任務有以下方面:
● SQA審計與評審
其中,SQA審計包括對軟件工作產(chǎn)品、軟件工具和設備的審計,評價這幾項內(nèi)容是否符合組織規(guī)定的標準。SQA評審的主要任務是保證軟件工程組的活動與預定義的軟件過程一致,確保軟件過程在軟件產(chǎn)品的生產(chǎn)中得到遵循。
● SQA報告
SQA人員應記錄工作的結(jié)果,并寫入到報告之中,發(fā)布給相關(guān)的人員。SQA報告的發(fā)布應遵循3條基本原則:SQA和高級管理者之間應有直接溝通的渠道、SQA報告必須發(fā)布給軟件工程組但不必發(fā)布給項目管理人員、在可能的情況下向關(guān)心軟件質(zhì)量的人發(fā)布SQA報告。
● 處理不符合問題
這是SQA的一個重要的任務,SQA人員要對工作過程中發(fā)現(xiàn)的不符合問題進行處理,及時向有關(guān)人員及高級管理者反映。在處理問題的過程中要遵循兩個原則:其一,對符合標準過程的活動,SQA人員應該積極地報告活動的進展情況以及這些活動在符合標準方面的效果;其二,對不符合標準過程的活動,SQA要報告其不符合性以及它對產(chǎn)品的影響,同時提出改進建議。
實施
軟件質(zhì)量保證任務的實現(xiàn)需要考慮幾方面的問題。首先,要考慮SQA人員的素質(zhì)。SQA人員的責任是審查軟件設計、開發(fā)人員的活動,驗證他們是否將選定的標準、方法和規(guī)程應用到活動中去,因此,SQA工作的有效執(zhí)行需要SQA人員掌握專業(yè)的技術(shù),例如質(zhì)量控制知識、統(tǒng)計學知識等。其次,SQA人員的經(jīng)驗對任務的實現(xiàn)同樣重要。應該選擇那些經(jīng)驗豐富的人來做SQA,同時為SQA人員進行專門的培訓,以使他們能夠勝任這項工作。第三,組織應當建立文檔化的開發(fā)標準和規(guī)程,使SQA人員在工作時有一個依據(jù)、判斷的標準,如果沒有這些標準,SQA人員就無法準確地判斷開發(fā)活動中的問題,容易引發(fā)不必要的爭論。第四,高級管理者必須重視軟件質(zhì)量保證活動。在一些組織的軟件生產(chǎn)過程中,高級管理者不重視軟件質(zhì)量保證活動,對SQA人員發(fā)現(xiàn)的問題不及時處理。如此一來,軟件質(zhì)量保證就流于形式,很難發(fā)揮它應有的作用。第五,SQA人員在工作過程中一定要抓住問題的重點與本質(zhì),不要陷入對細節(jié)的爭論之中。SQA人員應集中審查定義的軟件過程是否得到了實現(xiàn),及時糾正那些疏漏或執(zhí)行得不完全的步驟,以此來保證軟件產(chǎn)品的質(zhì)量。
此外,做好軟件質(zhì)量保證工作還應該有一個計劃,用以規(guī)定軟件質(zhì)量保證活動的目標,執(zhí)行審查所參照的標準和處理的方式。對于一般性項目,可采用通用的軟件質(zhì)量保證計劃,而對于那些有著特殊質(zhì)量要求的項目,則必須根據(jù)項目自身的特點制定專門的計劃。
總之,軟件質(zhì)量保證是軟件過程中的獨立審查活動,它從一個側(cè)面反映了現(xiàn)行軟件過程能力的成熟度水平。軟件質(zhì)量保證活動是貫穿整個軟件過程的,那種到編碼之后才開始關(guān)心質(zhì)量的做法是極其錯誤的。