摘要:隨著軟件產業的升溫,一些軟件企業開始尋求出口的道路,它們更加重視管理和質量水平的提高,國內的軟件企業爭先恐后加入到CMM的認證隊伍中去。闡明了什么是軟件過程,進行軟件過程方法研究的背景和意義,軟件能力成熟度模型CMM的主要內容,探討了如何在中小型軟件企業中正確地實施CMM,提出中國的軟件企業利用CMM進行過程管理的一點建議。
關鍵詞:軟件質量;軟件過程;軟件能力成熟度級別;CMM評估
中圖分類號:G642文獻標志碼:A文章編號:1673-291X(2010)01-0251-02
一、基本概念
軟件過程(Software Process):是指軟件人員開發和維護軟件及相關產品的一套行動、方法、實踐和轉化過程。
軟件過程能力(Software Proces Capability):描述了在遵循一個軟件過程后能夠得到的預期結果的界限范圍。該指標是對能力的一種衡量,用它可以預測一個企業在承接下一個軟件項目時,所能期望得到的最可能的結果。
軟件過程成熟度(Software Process Maturity):是軟件過程改進的一個重要概念,它指一個特定軟件過程得到清晰的定義、管理、測量、控制的有效程度。所謂成熟度包含著能力的一種增長潛力,同時也表明了企業實施軟件過程的實際水平。隨著組織軟件過程成熟度能力的不斷提高,組織內部通過對過程的規范化和對成員的技術培訓,軟件過程也將會被他的使用者關注和不斷修改完善,從而使軟件的質量、生產率和生產周期得到改善。
二、中小型企業中實施CMM的意義
美國卡內基·梅隆大學軟件工程研究所SEI(Software Engineer Institute)的Watts Humphrey等人提出了軟件過程、軟件能力成熟度等級等概念,并形成了SW-CMM,即軟件能力成熟度模型(Software Capability Maturity Model),簡稱為CMM[1],它是一種評價軟件承包商的軟件開發管理能力并幫助其提高質量的方法,為軟件機構描述了從混亂的、不成熟的軟件過程向成熟、有紀律的軟件過程改進的一條有效途徑。
CMM過程本身就是對軟件企業發展歷程的一個完整而準確的描述,企業通過實施CMM,可以幫助企業組織識別自身情況,對軟件工程過程進行管理和改進,提高軟件開發的質量,能夠指導軟件組織提高軟件開發與改進能力;降低軟件承包商和采購者的風險;評估軟件承包商的軟件開發管理能力;幫助軟件企業共享業界有效過程實踐;增加軟件企業的國際競爭能力。
三、CMM模型
SEI給CMM下的定義是:對于軟件組織在定義、實現、度量、控制和改善其軟件過程的進程中各個發展階段的描述。CMM將軟件組織的能力成熟度分為了初始級(Initial)、可重復(Repeatable)、已定義(Defined)、已管理(Managed)和優化級(Optimizing)五個等級[2],這五個等級有著如下圖所示的螺旋式上升的階梯型層次結構,其主要特征為:
■
圖CMM模型級別
初始級(Initial):軟件過程的特點是無秩序的,偶爾甚至是混亂的。幾乎沒有什么過程是經過定義的,成功依賴于個人的努力。此時工作方式處于救火狀態,需要不斷的應對突如其來的危機。
可重復級(Repeatable):已建立基本的項目管理過程去跟蹤成本、進度和功能性。必要的過程紀律已經就位,使具有類似應用的項目。能重復以前的成功。
定義級(Defined):已將用于管理和工程的軟件過程文檔化、標準化,并形成組織的標準軟件過程。所有項目均使用與實際情況相吻合、適當裁剪的標準軟件過程來開發和維護軟件產品。
管理級(Managed):已采集詳細的有關軟件過程和產品質量的度量。無論軟件過程還是產品均得到了定量了解和控制,量化控制將使軟件開發真正成為一種工業生產活動。
優化級(Optimizing):利用來自過程和來自新思想、新技術的先導性試驗的定量反饋信息,使持續過程改進成為可能。如果企業達到了第五級,就表明該企業能夠根據實際的項目性質、技術等因素,不斷調整軟件生產過程以求達到最佳。
基于這種級別的劃分,可以標識軟件組織的過程能力,還可以方便地實現持續不斷改進。因為每種級別都提供了一個軟件過程改進層次,使成熟結構的每一個層次都能通過實現軟件過程中的一些標準實現。這種方法同樣使軟件企業的軟件能力得到提高。
四、在軟件企業中實施CMM的幾點建議
實施CMM對軟件企業的發展起著至關重要的作用,CMM過程本身就是對軟件企業發展歷程的一個完整而準確的描述[3],企業通過實施CMM,可以更好地規范軟件生產和管理流程,使企業組織規范化,從而使企業更好地發展,為企業進一步擴大規模打下堅實的基礎。對于軟件企業實施CMM,提出以下幾點建議以供參考[4]。
1.提高思想認識。CMM在中國的實施,從整體上看處于起步階段,很多軟件公司對ISO9000了解較多,也有較多企業通過了ISO9000認證。相對而言,了解CMM的就不多了。正式推行CMM需要在人力和經費上增加投入,一般的軟件中小企業有一定困難,這就需要公司領導及全體員工提高認識,認識到CMM在企業生存發展過程中的重要作用。
2.進行CMM培訓和咨詢工作。根據CMM模型的要求,一個項目的開發一定要有章可循,而且要做到有章必循,這兩點都離不開培訓。培訓的內容主要有兩個方面,第一,對所有員工包括經理在內的最基本的軟件工程和CMM培訓知識;第二,對各個工作組的有關人員提供專業領域知識等方面的培訓;此外,在每次開發過程中,還要對普通人員進行軟件過程方面的培訓。
3.確定合理的目標。要實施CMM,首先應該對本企業的現狀有一個準確的評估。企業目前處于什么水平,企業發展的問題是什么,借助CMM要達到的目的是什么。然后再結合企業的實際情況選擇CMM的切入點,確定總體目標。這個目標包括在多長時間之內,需要投入多少人力、物力和財力,要達到哪一級。在總體目標已經確定的前提下,還要制定近期目標和長期目標。
4.成立工作組。企業針對CMM的實施,應成立專門的CMM實施領導小組或專門的機構。領導層必須真正學習理解軟件過程管理和改進的重要性,親自領導和參與,要保證過程管理的人員配備,抽調企業中有管理能力、組織能力和軟件開發能力的骨干人員。 在CMM的實施過程中,有幾個重要的組織是必不可少的,這些組織包括軟件工程過程組、軟件工程組、系統工程組、系統測試組、需求管理組、軟件項目計劃組、軟件項目跟蹤與監督組、軟件配置管理組、軟件質量保證組、培訓組。
5.制定和完善軟件過程。CMM模型強調軟件過程的改進,如果企業還沒有一個文檔形式的軟件過程,則首要任務是對當前的工作流程進行分析、整理及文檔化,從而制定出一個具有本企業風格的軟件過程,并用該文檔化的過程指導軟件項目的開發。如果已經具備了軟件過程,則要對這個過程做內部評估,對照CMM的要求,找出問題,然后對這個過程進行補充修改。
6.內部評審。由于中國在CMM評估中要聘請外籍主任評估師,費用較高。據估計,要通過一個級別的CMM評估,費用是通過ISO9000認證的十多倍。因此,建議軟件企業在進行正式評估之前,先進行內部評審或評估。
7.正式評估。目前主要有兩種基于CMM的評估方法 [5],一種是CBA-SCE(CMM-Based Appraisal for Software Capability Estimation)它是基于CMM對組織的軟件能力進行評估,是由組織外部的評估小組對該組織的軟件能力進行的評估。另一種是CBA-IPI(CMM-Based Appraisal for Internal Process Improvement),它是基于CMM對內部的過程改進進行的評估,是由組織內部的小組對軟件組織本身進行評估以改進質量,結果歸組織所有,目的是引導組織不斷改進質量。SCE與IPI兩評估結果應該一致,評估結果的所有資料都將呈報CMU/SEI。
8.根據評估結果改進軟件過程。一般來說,應該在評估之后很快地作出軟件過程改進的計劃,因為這時大家對評估結果和存在的問題仍有一個深刻的認識。計劃在軟件過程改進中是一個非常必要的階段,只有有效的計劃,才能確保軟件過程得到有效的改進。
五、結束語
中國自1998年首次引進CMM實施以來,國內已有兩百多家軟件企業通過CMM 二到五級評估。雖然國內目前出現了軟件企業進行CMM等級評估的熱潮,但是通過分析不難發現,國內通過CMM評估的企業所占的比重還是很低的,且都是比較大型的IT企業或部門,而針對中小型軟件企業和軟件工程項目的研究卻顯得不足。這與中國中小型軟件企業占有很大比例的現實明顯不相稱。因此,為了加快提升中小軟件企業的管理水平,推行CMM過程質量管理是必不可少的。通過本文的論述期望越來越多的軟件企業能用CMM來規范軟件項目的開發以提高在國際市場的競爭力。
參考文獻:
[1]卡耐基梅隆大學軟件工程研究所能力成熟度模型(CMM).軟件過程改進指南[M].北京:電子工業出版社,2003.
[2]鄭人杰,王緯,王方德,蔡愉祖,等.基于軟件能力成熟度模型(CMM)的軟件過程改進——方法與實施[M].北京:清華大學出版社,2003:3.
[3]Joseph Raynus.CMM軟件過程改進指南[M].邱仲潘,譯.北京:電子工業出版社,2002.
[4]楊一平,等.軟件工程技術與CMM的融合[M].北京:人民郵電出版社,2002:11.
[5]劉孟仁.能力成熟度模型(CMM):軟件過程改進指南[M].北京:電子工業出版社,2001.[責任編輯 陳鶴]