軟體專案質量管理(轉)

urinator發表於2007-08-13
軟體專案質量管理
提起如今的IT專案,軟體工程倍受關注。而軟體的質量更是眾人關注的焦點,因為目前還沒有一套完善的評估標準。甚至有人提出,現在的軟體開發根本提不上是“工程”,因為它太稚嫩了,還沒有一套成熟的標準來比照;因而軟體專案極易出現失敗或失誤。大量實踐證明,軟體工程專案的成敗,通常是因為管理問題(協同工作的能力),而不是技術上的問題。要想做一盤“完美”的軟體大餐,質量管理的作用是不言而喻的。
在實際的專案質量管理中,質量管理總是圍繞著質量保證(QualityAssurance)過程和質量控制(QualityControl)過程兩方面。這兩個過程相互作用,在實際應用中還可能會發生交叉。正如引言所述,關於軟體的質量,很難下一個非常明確的定義。本文主要針對軟體工程中的質量管理來進行討論。

做軟體“大餐”的工序

軟體質量保證(SoftwareQualityAssurance,以下簡稱SQA)的目的是驗證在軟體開發過程中是否遵循了合適的過程和標準。軟體質量保證過程一般包含以下幾項活動:
首先是建立SQA組;其次是選擇和確定SQA活動,即選擇SQA組所要進行的質量保證活動,這些SQA活動將作為SQA計劃的輸入;然後是制定和維護SQA計劃,這個計劃明確了SQA活動與整個軟體開發生命週期中各個階段的關係;還有執行SQA計劃、對相關人員進行培訓、選擇與整個軟體工程環境相適應的質量保證工具;最後是不斷完善質量保證過程活動中存在的不足,改進專案的質量保證過程。
獨立的SQA組是衡量軟體開發活動優劣與否的尺度之一。SQA組的這一獨立性,使其享有一項關鍵權利——“越級上報”。當SQA組發現產品質量出現危機時,它有權向專案組的上級機構直接報告這一危機。這無疑對專案組起到相當的“威懾”作用,也可以看成是促使專案組重視軟體開發質量的一種激勵。這一形式使許多問題在組內得以解決,提高了軟體開發的質量和效率。
選擇和確定SQA活動這一過程的目的是策劃在整個專案開發過程中所需要進行的質量保證活動。質量保證活動應與整個專案的開發計劃和配置管理計劃相一致。一般把該活動分為以下五類:

1)評審軟體產品、工具與設施
軟體產品常被稱為“無形”的產品。評審時難度更大。在此要注意的一點是:在評審時不能只對最終的軟體程式碼進行評審,還要對軟體開發計劃、標準、過程、軟體需求、軟體設計、資料庫、手冊以及測試資訊等進行評審。評估軟體工具主要是為了保證專案組採用合適的技術和工具。評估專案設施的目的是保證專案組有充足裝置和資源進行軟體開發工作。這也為規劃今後軟體專案的裝置購置、資源擴充、資源共享等提供依據。

2)SQA活動審查的軟體開發過程
SQA活動審查的軟體開發過程主要有:軟體產品的評審過程、專案的計劃和跟蹤過程、軟體需求分析過程、軟體設計過程、軟體實現和單元測試過程、整合和系統測試過程、專案交付過程、子承包商控制過程、配置管理過程。特別要強調的是,為保證軟體質量,應賦予SQA阻止交付某些不符合專案需求和標準產品的權利。

3)參與技術和管理評審
參與技術和管理評審的目的是為了保證此類評審滿足專案要求,便於監督問題的解決。

4)做SQA報告
SQA活動的一個重要內容就是報告對軟體產品或軟體過程評估的結果,並提出改進建議。SQA應將其評估的結果文件化

5)做SQA度量
SQA度量是記錄花費在SQA活動上時間、人力等資料。通過大量資料的積累、分析,可以使企業領導對質量管理的重要性有定量的認識,利於質量管理活動的進一步開展。
要說明的是,並不是每個專案的質量保證過程都必須包含上述這些活動或僅限於這些活動,要根據專案的具體情況來定。
SQA計劃中必須明確定義在軟體開發的各個階段是如何進行質量保證活動的。它通常包含以下內容:質量目標;定義每個開發階段的開始和結束邊界;詳細策劃要進行的質量保證活動;明確質量活動的職責;SQA組的職責和許可權;SQA組的資源需求,包括人員、工具和設施;定義由SQA組執行的評估;定義由SQA組負責組織的評審;SQA組進行評審和檢查時所參見的專案標準和過程;需由SQA組產生的文件。
選擇合適的SQA工具並不是試圖通過選擇SQA工具來保證軟體產品的質量,而是用以支援SQA的活動。選定SQA工具時,首先需要明確質量保證目標。根據目標制定選擇SQA工具的需求並文件化,包括對平臺、作業系統以及SQA工具與軟體工程平臺介面的要求等。

如何使白壁“無瑕”

按工序去做也不一定能得到一盤完美的“大餐”,因為火侯等因素實在很難掌握。萬一掌握不好怎麼辦?軟體質量控制主要就是發現和消除軟體產品的缺陷。對於高質量的軟體來講,最終產品應該儘可能達到零缺陷。而軟體開發是一個以人為中心的活動,所以出現缺陷是不可避免的。因此,要想交付一個高質量的軟體,消除缺陷的活動就變得很重要。缺陷消除是通過“評審”和“測試”這類質量控制活動來實現的。
缺陷在軟體開發的任何階段都可能會被引入。專案質量管理過程包含了許多可以識別缺陷、消除缺陷的過程。“識別缺陷”和“消除缺陷”本來是兩個不同的過程,但在這裡為了簡便統一用“消除”來代表它們。潛在的缺陷越大,用來消除它所花的費用越高。因此成熟的軟體開發過程在每一個可能會引入潛在缺陷的階段完成之後都會開展質量控制活動。這些為了消除缺陷的活動包括:需求評審、設計評審、程式碼走查、單元測試、整合測試、系統測試以及驗收測試等。
質量控制的任務就是策劃可行的質量管理活動,然後正確地執行和控制這些活動以保證絕大多數的缺陷可以在開發過程中被發現。
正如前面提到的,在進行評審和測試時可檢測到缺陷。評審是面向人的過程,測試是執行軟體(或部分軟體)以便發現缺陷。在一個專案裡,評審和測試活動是預先策劃好的(計劃書中確定執行哪些質量控制活動和何時執行這些活動)。在執行過程中,根據已定義好的過程來執行這些活動。通過執行這些活動來識別缺陷,然後消除這些缺陷。例如,系統測試過程一般包括制定測試計劃,測試計劃中應列出在測試執行過程中所有的測試用例,評審測試計劃,並且最終執行測試計劃。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7942439/viewspace-21099/,如需轉載,請註明出處,否則將追究法律責任。

相關文章