NO IMAGE

如何實施SQA?

何曉源 王慧文(轉載自計算機世界報)
 
   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人員應集中審查定義的軟體過程是否得到了實現,及時糾正那些疏漏或執行得不完全的步驟,以此來保證軟體產品的質量。

  此外,做好軟體質量保證工作還應該有一個計劃,用以規定軟體質量保證活動的目標,執行審查所參照的標準和處理的方式。對於一般性專案,可採用通用的軟體質量保證計劃,而對於那些有著特殊質量要求的專案,則必須根據專案自身的特點制定專門的計劃。

  總之,軟體質量保證是軟體過程中的獨立審查活動,它從一個側面反映了現行軟體過程能力的成熟度水平。軟體質量保證活動是貫穿整個軟體過程的,那種到編碼之後才開始關心質量的做法是極其錯誤的。