西安外事學院工學院 雷家駿
計算機軟件需求的多樣化、規模化,使得軟件質量愈顯重要。盡管軟件工程的研究和實踐取得了巨大的成果,但軟件危機依然存在。軟件企業面臨的最大的問題是顧客對產品不滿意,究其原因,軟件質量保證技術的不完善是主要原因之一。軟件的質量管理和質量保證工作應該不斷創新,以適應形勢發展的需要,因此應主動將全面質量管理和質量改進思想納入質量管理和質量保證計劃,以促使軟件質量不斷提高。就整體而言,我國的軟件質量管理和質量保證工作仍處于創建階段,國外的軟件質量管理和質量保證工作也不盡完善,因此在此只介紹和分析一些業已成熟的軟件質量管理與保證理論。
現有的軟件質量保證是在軟件開發過程中的每一步都進行“保護性活動”。主要內容包括對方法和工具應用的規程、技術復審、測試策略、保證與標準符合的規程,以及度量和報告機制。在技術上的主要手段是測試和復審,它們的作用是作為軟件開發過程的過濾器,在發現及改正錯誤的成本相對較小時就排除錯誤,但軟件技術不能從根本上防止錯誤和缺陷的出現。軟件開發項目超期、超預算、最終的軟件產品質量滿足用戶需求等仍是困擾軟件開發機構的重大問題。
CMM和ISO9001都涉及質量管理和過程管理,并且都受到類似的利害關系驅動,兩者之間的相似之處總結為以下四點:
(1)它們的精神一致,都有一個基本思想:“言所行,行所言”;
(2)二者都強調管理、過程、規范化和文檔化;
(3)ISO9001與CMM的出發點都是通過對生產過程進行管理來確保產品的質量;
(4)都源自以戴明為首的管理專家的制度管理思想。
首先,不管是CMM還是ISO9001都強調對產生應用軟件之過程的管理,提高軟件產品的生產效率和軟件的質量,同時,軟件工程理論的廣泛運用也推動了軟件產業由小規模生產到集成自動化生產邁進。這也充分說明,軟件產品的質量不僅表現在最終產品的質量,還應該包含軟件產生過程的質量,只有這樣,才能使軟件組織連續不斷地生產出高質量的軟件產品。
a.保證質量的方式不同
ISO9001作為質量保證標準,只論述了質量體系的最小需求,即合格質量體系的最低可接受水平。
它是一種“靜態”標準,企業只要符合它要求的條件并通過權威機構的審核,就可以通過認證,證明企業的內部管理已經達到一定水平,符合該標準規范的要求。而CMM則強調過程控制、過程管理、持續的過程改進。CMM不僅僅是對產品質量的認證,更是一種改善軟件過程的模型,它以一種結構化的成熟度框架描述了軟件管理和工程實踐,指出了軟件過程不斷改進的科學途徑。它所定義的5個級別就像5個臺階,企業必須一步一步地“攀登”。每一個成熟度級別,既是企業發展的階段性目標,又是評價企業能力水平的一個標準。當通過某一級CMM評估后,企業還必須持續不斷地改進過程,其目標是要達到可持續發展、可優化的程度,以此來實現高質量、高效率、低成本的生產軟件。因此,可以認為CMM是一個“動態”模型。
需要強調的是,ISO9001著重于考核產品的質量和產品過程的受控狀態,給企業提供一種PASS/FAIL的檢查體系,即企業的過程能力只有兩種狀態,雖然在缺陷預防和內審管理中涉及到了過程改進,但是并沒有對改進的目標和方法進行指導和控制。CMM則重點考核軟件組織的工程能力,而且突出不斷改進、升級的要求。顯然過程不斷的改進、能力不斷的增強,新技術的應用就會收到更好與更快的成效,產品的質量就會不斷的得到提高和保障。
b.認證審核過程不同
ISO的認證過程分為兩個情況——機構或者通過了ISO認證,或者沒有。如果機構通過了ISO認證,其過程已滿足ISO9000的標準要求。與此不同的是,CMM給出的是過程改進的體系。CMM將軟件過程劃分成5個成熟度級別——從原始級(第一級)到優化級(第五級)。軟件機構可處在其中的任何一個級別,它的每一級對所要實現的關鍵過程域都有詳細的要求,并且強制企業能自我更新和持續改進,以實現缺陷預防。這對于提高軟件企業自身質量管理素質是非常有利的。
但CMM畢竟是一個在學術報告基礎上建立起來的一套評估體系,它的認證結果是由SEI授權的首席評估員寄一封帶有本人簽名的信給被評估者,并在SEI備案,沒有任何證書,終生受用,中間不再審查。而通過ISO9000認證的企業,要在中國技術監督局備案,并且發證給企業,并要求每年審查,所有參加多邊認可協議的國家必須認可,適用性強。
c.適用范圍不同
ISO9001標準是一個適用于提供各種產品/服務企業的通用型的企業標準,而且主要是針對制造業制定的。正是由于ISO9001的通用性,使得它無法滿足軟件企業更深層次的專業化管理需求。而CMM是專門針對軟件開發企業設計的,可以幫助軟件企業有效地管理軟件過程。
ISO是通用的,并且是從客戶和外部審計者的角度來寫的,它提出的是最基本的要求,所以不是十分具體。而CMM是面向軟件的,即面向軟件開發人員的,它提供了機構內部過程改進的指南,而且CMM對每個級別的關鍵過程域都有很詳細的說明,光CMM的關鍵實現的說明就有500頁之多。
在軟件組織中,可以將ISO和CMM結合起來應用,即:把ISO作為軟件質量管理的指導性框架,把CMM作為具體實施層的應用,這樣就可以充分利用二者的優勢來共同完成對軟件開發過程的質量控制,從而達到既提高軟件開發效率又保證所開發的軟件具有較高的質量。
目前,雖然ISO和CMM在國外的應用已經有了十幾年的歷史,是一套比較實用的質量控制和保證方法,但其在國內應用也只有5、6年的光景,并且應用水平不高,原因是多方面的,其中一個主要原因就是沒有形成一套適合我國軟件組織的軟件質量控制方法,這也是阻礙我國軟件企業發展的瓶頸之一。
本文對基于CMM的軟件質量管理保證模型體系方法和基于ISO9000的軟件質量保證模型的基本概念、原理、應用現狀及發展狀況等進行了比較分析,并提出了更適合我國中小軟件企業的質量保證模型所應具備的特點。基于以上基礎,我國中小軟件企業在建立軟件質量保證模型時,應該考慮以下幾個方面的因素:
(1)某種程度上市場目標決定質量目標,只有能滿足客戶需求的軟件才可以稱為好的軟件。
(2)在考慮最終軟件成品的同時,要考慮軟件過程的質量保證。
(3)全面質量管理及CMM思想的集成,要關注軟件過程控制能力以及過程持續改進能力。
[1]朱三元等.軟件工程技術概論[M].北京:科學出版社,2002:25-36.
[2]秦現生,梁工謙.質量管理學[M].北京:科學出版社,2002:190-223.
[3]馮玉琳,趙保華.軟件工程—方法、工具和實踐[M].合肥:中國科學技術大學出版社,1992:78-88.