CMM對中國軟件產業是非常有價值的,它的重要性是它的那個筆者在“軟件工程與軟件能力成熟度模型SW-CMM”一文中提到的“合成的菜單與菜譜”的特性。 中國軟件產業較年輕,專業人員也年輕,企業的數量也是近年來才增長起來的,沒有大量通過長期實踐積累起來的經驗。不象外國公司能做到以老帶新。大概許多企業還未能建立起一套健全的軟件工程過程。在這種近乎一張白紙的情況下,充分地利用CMM和其他的軟件工程過程管理與改進的方案,可以幫助企業迅速地學習與建立起一個軟件工程過程,從而開始實施管理與改進。
利用別人已有的經驗,取其對自己有用的部分,或作修改后采用,以此作為一個起點。然后,在實踐中繼續改進,加以創新。這應該是我們趕超世界水平的一種辦法。
然而,在國內,許多人一談到ISO9000,就必講“質量認證”;一提到SW-CMM,就必講“評級”。這是一個預示危險的信號,處理不好的話,引進國外軟件工程過程技術的工作很有可能在一開始就走上彎路,嚴重損害中國軟件產業的發展;庥懻撉宄@個問題,比討論具體的技術問題更為重要。
論“質量認證”
首先,必須討論“質量認證”這個問題。(可能這個錯誤的術語原來指的是與ISO9000有關的“質量管理體系認證”,但是,講成“質量認證”,會有誤導性的影響。)
筆者認為,有人提出要以“質量體系認證”作為提高軟件質量的突破口,把軟件業推廣ISO9000認證作為促進軟件業發展的一個戰略方向,是一種不妥的做法。把企業追求的目標定為“質量體系認證”,取代了實際的產品質量。在追求“質量體系認證”的時候,華而不實,甚至弄虛作假的“豆腐渣認證”、“兩張皮”現象必然發生。結果將會是勞民傷財,損害了國家和企業的利益,也誤導了用戶。中國必須停止再吃這類的虧!
我們并不是完全不需要“質量體系認證”(對于CMM來說,是“能力等級評鑒”或“評級”),但那只適用于合同承包企業的選擇或其他一些特殊的場合。搞一場“認證、評級運動”,弄不好會為軟件產業帶來一場災難,因為我們錯失了真正的目標。同時,中國的軟件企業并不富裕,不一定能擔負得起咨詢與認證費用;蛘,他們也還未有足夠的人力與財力去全面推行CMM。一定要讓他們有自由去選擇與制定一種最適合各自具體情況的發展方案與時間表。
國內有學者指出,有些企業搞“質量體系認證”只是為了做個廣告,作為一種市場競爭的手段。但是,為什么企業會有這種錯誤的認識呢?為什么通過了“質量體系認證”,就可以用作廣告和競爭手段呢?追根尋源,這種錯誤的認識是來自廣布于媒體的一些錯誤的提法,出現于各種形式的文章、講話、報道、甚至是一些政策性的文件中。實際上是這些宣傳誤導了企業。如果沒有把“質量體系認證”捧到不切實際的地位,與實際的產品質量混同起來,就沒有人可以利用它大作廣告?蛻羰褂玫氖钱a品,而不是“認證證書”。我們的客戶和市場還很年輕,辨識力還不是很強,因此,有機會在媒體上發表言論的人,千萬不要忘記自己的責任。技術上的問題,是絕不能搞“炒作”的。
許多企業是有口難言,同行業的競爭對手都搞了“質量體系認證”,并且大作宣傳,因此自己也被迫要搞。我們自己要問一問,為什么會形成這么一種風氣呢?我們必須立即糾正任何誤導與誤解,明確指出,通過“質量體系認證”或達到CMM“等級評鑒”的某一級,只表明該企業有某一程度的潛在能力去開發和制造出高質量的軟件產品。但并不等于它真正能做出好產品,或它的任何一個產品都是質量好的。
讓我們看看幾個質量方面的著名學者對質量所下的定義:
丹明(Deming):“質量由滿足需求的能力組成!
左蘭(Juran):“質量就是適于使用!
克羅斯比(Ceosby):“質量意味著符合基于用戶需要而制定出來的要求!
可見,“質量體系認證”完全不同于真正的產品質量,稱之為“質量認證”,更是一種誤導。
我們應當建立一種健康的標準:“在質量面前人人平等”。鼓勵企業在開發和制造出高質量的產品,提供高質量的客戶服務方面進行競爭。媒體要宣傳這兩種質量。在報道軟件企業的過程管理與改進的成效時,談的還應該是這兩種質量,而絕不是把通過了“認證”或“評鑒”作為一種終極的成果來宣傳。
這里必須注意到,一些從事咨詢業務的公司有意夸大“認證”的作用。有些甚至嚴重到明知被評鑒的對象并未符合條件去開展“評級”,或是在評鑒過程中有意放水,以滿足客戶的要求。這種現象,一切有關的方面都要有清醒的頭腦。這種咨詢公司只求收入,他們是不管客戶是否真正提高了軟件能力的。通過這種手段獲取“認證”或通過“評級”的企業,實際是在自欺欺人。以為是拿到了什么“通行證”,但沒意識到,缺乏真正的質量,最終是要被“驅逐出境”的。
讓我們仔細地考慮一下兩個問題:
1、“質量體系認證”的結果可靠嗎?
2、通過了“質量體系認證”之后,企業就一定能開發生產出高質量的軟件產品了嗎?沒做“質量體系認證”,就不能開發生產出高質量的軟件產品了嗎?
答案都是:“不”。因為關鍵并不是“認證”不“認證”。
國內與國外都有有關的文章論述這些問題并且舉出了具體的實例。因此,關鍵是企業內部的實際運作,“質量體系認證”保證不了什么。
這可以說是一個常識性的問題。在現實的生活中,同樣是在學校中所有科目都考滿分的學生,在工作中的表現會大不相同;有高學位的人不一定能出好成果;具有同樣專業級別的人,工作實績會有天壤之別。因此,片面地強調和依賴考核評鑒是非常危險的。
輕視與迷信SW-CMM都是錯誤的態度。應當把它作為參考資料,就象一本某間名飯店編的“菜譜大全”、一本某美術學院編的“油畫技法”、或某出版社編的一本“寫作教程”。如何理解參考資料的內容的靈魂,學到其中的基本原則與目標,并結合自己的實際加以靈活運用,才是我們應取的態度。
關鍵是什么?關鍵是企業實行過程管理與改進,真正達到按時、按預算地開發生產出高質量的軟件產品。給用戶拿出高質量的產品來!在這里,“認證”與“評鑒”都不是必須的。
“用友”、“金蝶”等企業在軟件過程管理方面所取得的成績,關鍵是由于領導層的重視和參與,致力于實質的內部過程改進。沒有“認證”,他們同樣會成功。
軟件企業都希望能夠生存與發展,都希望能建立過程管理與改進,以提高自身的能力,并不需要別人去迫。有人說,軟件業推廣ISO9000認證,應是以企業自愿為前提。但是,當相關的政策上有這么一些條文:“通過ISO9000體系認證的企業,優先...,優先...;政府優先采購通過ISO9000體系認證的企業的產品!、“優先支持和推廣通過質量認證企業的軟件產品!钡臅r候,哪一個企業還可以“自愿”呢?從這么一些條文中,人們無法不得出這么一個結論:ISO9000體系認證,比實際的產品質量更重要!
筆者認為,要適當控制“認證”與“評級”的使用。只有在無法對最終產品的質量進行鑒定(例如,發出軟件合同)的時候,才應用這類方法。
筆者建議,有關部門是否可以考慮成立一個軟件產品質量鑒定系統,對上市的同類軟件進行測試比較,評定分數,公布結果。測試人員可分為兩類:專業工程師與產品用戶。測試的項目可以各方預先商定?蓮淖詈唵蔚膬牲c做起:1.說明書是否清晰。2.產品是否如實執行說明書中的各種功能。
舉一個例子,硅谷這里有一間公司,專門作電路仿真器的評比。他們設計出了一系列的測試項目,用以比較各產品在不同平臺上運行,對不同類型的電路進行仿真時的功能表現。他們的評比結果是很有權威的,成了用戶選購產品的依據。而仿真器的制作廠家則不斷努力改進產品,以期在下一次評比中有更好的表現。這間評比公司是附屬于一個電子專業刊物的。他們向參加評比的廠家收取評比費用。我們可以用各種靈活的方式進行官辦或民辦的評比。
筆者使用的一個國產軟件,在功能的實現上錯誤很多,自認為領先的核心技術竟帶有違背一般常識的結果,甚至產品說明書與實際產品完全對不上號。借用一位國內同行的話:“簡直不能相信這樣的產品競能夠通過他們自己的質檢關!”但我相信,這類公司是滿有可能會花力氣去通過“質量認證”的。
我們應該做的是,幫助企業認識實行過程管理與改進的重要性,向他們提供有關的知識與訊息,與他們一道解決遇到的困難,協助企業間交流經驗,大力宣傳企業由于實行過程管理與改進而取得的最終產品與用戶服務質量及企業業績的成果,以這些成果來進行競爭。有關的從業人員、專家學者與媒體在這些活動中可以大有作為,作出應有的貢獻。
對在中國軟件產業中應用CMM的一些建議
現在,讓我們看看SW—CMM的如下三項用途:
1、用于軟件過程的改進。(SPI,Software Process Improvement)
幫助軟件企業對其軟件過程的改變進行計劃、發展以及實施。
2、用于軟件過程評估。(SPA,Software Process Assessment)
在評估中,一組經過培訓的軟件專業人員確定出一個企業軟件過程的狀況,確定出該企業所面對的與軟件過程有關的最迫切的所有問題,以及取得企業一級對軟件過程改進的支持。(這項是為了實施上一項而進行的。)
3、軟件能力評鑒。(SCE,Software Capabili Evaluation)
在能力評價中,一組經過培訓的專業人員鑒別出合格的軟件合同承包者;或者是檢查監視正用于軟件制作的軟件過程的狀況。
上述的第三項,“軟件能力評鑒”本來并不是軟件工程研究所創造出SW—CMM時的用途目標之一。在SW—CMM用于幫助一些商業公司成功地改進他們的軟件過程之后,美國空軍電子系統指揮部要求軟件工程研究所開發出一個辦法來用于評鑒軟件合同承包者;因此,在軟件過程改進(SPI)這個用途之外,SW—CMM增加了軟件能力評鑒(SCE)這個新用途。
這里必須要注意區分“軟件過程評估”與“軟件能力評鑒”本質上的不同!斑^程評估”是企業內部在進行“軟件過程改進”時用于摸清目前情況和確定需改進的目標而進行的。而“能力評鑒”則由軟件合同的發出者用于鑒別和挑選出合格的合同承包者。很自然地,企業的有關人員會采取截然不同(。┑膽B度與對策去進行這兩種評審。我國軟件產業還很薄弱,沒有可能提供很多有能力的“能力評鑒員”去承擔這種挑戰性很強的“能力評鑒”工作。若企圖要一下子推行大量的“能力評鑒”活動,評鑒結果的可靠性必然低。
在CMM的“軟件過程評估”與“軟件能力評鑒”活動中,都會用到一份稱為“軟件過程成熟度提問單”的問卷。評審人員首先用這個問卷了解一個企業的軟件工程過程的基本情況,然后以此為根據作出如何進行一步的調查(對于“軟件能力評鑒”來說,是作進一步的“取證”),例如,與不同崗位的工作人員作面談,查閱文件,或抽檢實際過程中的數據資料記錄等。
然而,如果對這份“軟件過程成熟度提問單”作出如實的回答的話,我們就可以取得一個企業的軟件過程成熟度的輪廓;卮疬@份提問單,大約只須花一個小時,有興趣的同行們不仿試一試,來一個非正式的“軟件過程評估”。嘗試回答“軟件過程成熟度提問單”的一個更大的得益是,問卷以一種最自然的方法把你引入CMM的世界,消除了CMM的神秘感。你會想:“啊,大概就是這么一回事!
同行們,CMM只不過是我們手中可選用和可加以改造的一件工具,它并不是一只要來控制我們的怪物,讓我們發揮各自的聰明才智,充分地利用好它,并加以創新。(當然,如果我們自己不能很好地控制這件工具的話,如果使用的方法不正確的話,CMM確實可以變成一只要來控制我們的怪物。)
對于在中國軟件產業中應用CMM,筆者初步有如下建議:
a.專注于軟件工程過程改進(借助于“軟件過程評估”),除非需要,不要搞軟件能力評鑒,不要去追求什么“認證”,“評級”,“登記”與“注冊”。
b.軟件過程管理與改進的唯一目的是:按時,按預算地開發制造高質量的軟件產品。(質量的其中一點是:產品要適應市場的需要。若不能做到這個,一切都是徒勞。)
c.把CMM和其他的模型與標準作為參考,而不是生搬硬套。運用自己的專業判斷力。
d.按照企業自身的特點、要求與條件去制訂軟件過程和選擇實行改進的部分。
e.軟件過程的建立與改進要有短、中、長期的目標,有緩急之分。不要一下子什么都想達到。不要一下子動大手術。不要作賭博式的全盤投入。在選擇先做什么的時候,可有兩方面的考慮:“最薄弱的環節”、“最易做到而又有顯著收效”。
f.千萬不要一開始就把目標定得過高。不必一下子去滿足某一能力成熟度等級的所有目標,可以試行某些關鍵過程領域的一部分關鍵實踐活動。要逐步取得經驗。
g.企業上層領導要首先理解建立軟件過程管理和改進的重要,并親自領導這件工作。要保證過程管理的人員配備。企業上層領導的持之以恒的參與是成功的先決條件。
h.專業開發人員要全力支持與參與過程管理和改進。
i.國家政府的政策制訂者要聽取對于“認證”的正反兩面的意見。不要以為可以簡單地用推行“認證”、“評級”的方法去提高軟件工業的能力。盡量只進行必要的、有限的“認證”與“評級”去選擇合同承包企業。并且,發出合同之后一定要進行工程監督。
j.國家在財政上協助企業進行軟件過程改進。比如,付給外部咨詢機構的費用可以考慮給予部分或全部抵稅等。
k.企業外的咨詢機構一定要對受咨詢企業的“過程評估”結果(商業機密)對外保密。只有這樣做,才能使企業在內部的“過程評估”中,坦誠地暴露軟件過程中存在的各種問題。從而制定出真正對癥下藥的過程改進的對策。
l.一個 企業或組織遠遠不能單憑一點點對SW—CMM的認識就作出是否“全面”引進應用SW—CMM的決定。那是一個非常重要的決定。全面引進應用SW—CMM所涉及的范圍非常廣,并且要求人力、財力與設備資源的投入。企業必須在對SW—CMM及有關的一切知識有透徹的理解之后,才考慮是否全面引進應用SW—CMM和如何引進應用SW—CMM的問題。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/