張海翔 魯辛凱
【摘要】軟件能力成熟度模型是一個有明確定義、管理測量和控制程度的特定軟件過程。它建立在過往成功軟件開發經驗教訓的分析總結之上,使得整個軟件開發過程從無序到有序、從不可控到可控,它的出現極大提高了軟件開發效率、縮短了開發周期,同時又保證了交付軟件的質量和可靠性。軟件能力成熟度模型是一個關系軟件開發全周期的系統工作,它涉及到了整個開發過程的方方面面,本文只對軟件能力成熟度的產生、作用、簡單概念以及其大致的分級情況作一個拋磚引玉式的簡單闡述,使大家對它能有一個比較清楚的了解。
【關鍵詞】軟件能力成熟度度模型;軟件過程;軟件過程能力;軟件過程成熟度;軟件過程行為
1.引言
隨著軟件業的發展,軟件規模的不斷擴大,軟件開發方法和技術的不斷更新,而相應的軟件生產率和軟件開發質量卻未得到有效提高,軟件產品時常不能按時完成,軟件生產預算超支,而交付客戶使用的軟件產品也由于各種原因產生的錯誤無法克服。軟件能力成熟度模型(以下簡稱CMM模型)就是為了應對這一軟件業危機而提出的。
2.CMM簡介
美國的Walter Shewart于上世紀30年代發表了軟件開發質量控制統計成果,隨后卡萊基.梅隆大學軟件工程研究所將這套質量控制方法改造整理成為一套能力成熟度框架,并于1990年由SEI公布了CMM模型的第一個版本。CMM的核心是把軟件開發視為一個過程,依據這一原則對軟件開發和維護進行過程監控和研究并建立起一套框架,使得軟件開發組織可以依據框架對項目管理和項目工程進行定量控制和能力評估,從而最終達到使軟件的研發過程更加科學化、標準化的目標。隨著CMM模型在軟件開發中應用,項目開發中的風險得到減低,開發時間大大縮短,開發成本得以減少并大大降低軟件產品中的錯誤發生率。
3.CMM框架
軟件生產過程理論告訴我們,軟件質量往往取決于軟件過程的能力水平,以及在軟件過程中所采用的技術適應該過程的成熟度水平。軟件過程是一個可度量的、可控制的、可以不斷改進的過程。
CMM強調應對軟件過程進行連續的改進,在這一改進過程中形成的分級結構——CMM框架,將提供不同等級中的目標和核心領域來規范軟件開發過程并為過程的評論和改進提供客觀標準。CMM框架共分為5個級別,分別是初始級、可重復級、定義級、管理級和優化級,它們由低到高的代表了不同等級的軟件開發過程成熟度能力。
1)CMM初始級
個人英雄主義的天下,絕無可重復性,也無甚積累,項目的執行是隨意和混亂,軟件開發過程未經定義,開發組織不具備穩定的軟件開發與維護環境,面對開發中所遇的各類具體實施問題往往由編程人員憑個人經驗與主觀感覺應對。在這一級別軟件開發過程是不可重復、不可預見、不成體系以及不可積累及不穩定的。
2)CMM可重復級
確定基本的軟件生產管理和控制,能針對特定軟件項目制定開發過程及管理措施,能將以往項目開發經驗用于類似的新項目,有一套不同的軟件生產過程提供不同項目選擇。軟件生產成本和工期能得以客觀預測并被有效追蹤,過程標準在項目實施中能保證被遵循。項目的開發是有計劃的,有控制的,并可重復的行為。在此級別下的軟件開發過程是初步實現基本的可管理和可復現。
3)CMM定義級
軟件開發過程在整個開發組織范圍內得以確立。有一套軟件過程規則對所有軟件工程和管理行為給與指導。組織內部設置了軟件工程小組負責過程的制定,修改,調整和監督。有關軟件工程及管理工程的過程文件被編制并成為企業標準,所有項目都必須按照這些標準過程或經調整后的項目過程來實施。軟件過程在此得到的穩定的,重復的和持續性的應用,使開發風險大為下降。總而言之,第三級的主要特點在于軟件過程已被編制為各個標準化過程,并在企業范圍內執行,從而使軟件生產和管理在“可重復級”的基礎上更具可重復性、可控制性、穩定性和持續性。
4)CMM管理級
第四級的過程是量化的過程,所有項目和產品的質量都有明確的定量化衡量標準,軟件也被置于這樣一個度量體系中進行分析、比較和監控,所有定量指標都被盡可能地詳細采集并描述,使之可具體用于軟件產品的控制之中,軟件開發過程成為一種真正的工業化生產行為,由專門的軟件過程數據庫收集和分析軟件過程中的各類數據并以此為對軟件活動的質量評估的基準。
在此級中,所有的軟件過程和產品都樹立了定量的目標并被“定量”的管理,使軟件組織的能力可以很好地預測。項目組成員對整個過程及其管理體系有高度一致的理解并已學會運用數據庫等方法定量地看待和理解軟件工程。本級主要在上一級“定義級”基礎上實現開發過程的定量化和可預測化。
5)CMM優化級
第五級的軟件過程應是持續改進的過程,有一整套有效機制確保軟件工程誤差接近最小或零。每一個過程在具體項目的運用中,可根據周邊和反饋信息來判斷下一步實施所需的最佳過程,以持續改善過程使之最優化。因此不斷調整軟件生產過程,按優化方案改進并執行所需過程。
總之,優化級就是可以根據過程中反饋信息來及時完善下一步的執行過程,通過不斷調整使軟件開發過程以求達到最佳。
從上面可以看到,五個CMM級別描述了軟件開發過程管理從無序到基本有序、到過程定性管理、再到過程定量管理、最后到持續反饋改進的漸進過程,它是一個循序漸進的累進,從第二級到第五級,每一級都需要在滿足前一級的基礎上實施才可能達到。
4.結論
實施CMM對提升軟件過程能力起著至關重要的作用,CMM過程本身就是對軟件開發過程發展的一個完整而準確的描述,通過實施CMM可以更好的規范化軟件生產和管理的流程,使軟件開發組織更加規范化。企業通過CMM認證不是為了滿足客戶的要求,而是為了自身更好的發展,為進一步擴大規模打下良好基礎。近年來國內許多著名的公司,諸如:華為、聯想、鼎新等涉及軟件開發的企業已經通過了CMM的相關認證,預計未來兩三年,軟件業會出現一個CMM認證的高潮,這是大勢所趨,也標志著我國軟件業開始走上標準化、規范化的國際發展道路。
參考文獻
[1]楊一平等著.軟件能力成熟度模型CMM方法及其應用[M].人民郵電出版社,2009,4:35-60.
[2]Joesph Raynus著.邱仲潘等譯.CMM軟件過程改進指南[M].電子工業出版社 2007,3:85-110.
[3]GJB5000-2003 軍用軟件能力成熟度模型.