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