實踐表明:要低投入、高效率、高質量地開發軟件,僅僅依靠運用新的軟件開發方法與技術所達到的效果是十分有限的,必須以改進并加強管理軟件的生產過程
為中心,實施科學的、規范的軟件工程管理,才是解決問題的根本所在。關于軟件過程的改進和管理,目前國際上以卡內基·梅隆大學軟件工程研究所CMU/SEI主持研究開發的軟件能力成熟度模型(CMM,the Capability Maturity Model forSoftware)研究得最為深入,雖然目前還不是軟件過程改進的工業標準,但用得較廣。它為軟件工程管理開辟了一條新的途徑,能幫助軟件企業改進和優化自身
的管理,在提高軟件開發水平和效率的同時提高產品的質量和可靠性,實現軟件生產工程化。
CMM模型是什么
如同一個人在某個特定領域的能力是積累起來的一樣,一個企業的軟件能力也是逐步獲得和增長的。如果在其發展過程中能得到一個很好的指南,那么就能不斷
達到一個個設定的目標,變得越來越成熟;否則可能會盲目發展,離自己的目標越來越遠,甚至南轅北轍。CMM正是這樣一個指南,它以幾十年產品質量概念和軟件工業的經驗及教訓作為基礎,為企業的軟件能力不斷走向成熟提供了有效的步驟和框架。
1、CMM框架
CMM側重于各項管理過程,將質量管理原理應用于軟件成熟度框架的建立,指明了改進的目標,提供了循序漸進的步驟。根據軟件生產的歷史和現狀,CMM框架可用5個不斷進化的層次來表達,每個層次的主要特征為:
(1)初始級是混沌的過程。軟件生產過程的特點是雜亂無章,有時甚至混亂,幾
乎沒有明確定義的步驟,項目軟件的成功完全依賴核心人物,而沒有相關組織、標準、規程的保證。
(2)可重復級是經過訓練的軟件過程。建立了基本的項目管理過程來跟蹤成本、進度和機能,有必要的過程準則來運用以前同類項目的成功經驗。
(3)已定義級是標準一致的軟件過程。管理和工程的軟件過程已文件化、標準化,并綜合成整個軟件開發組織的標準軟件過程。所有的項目都采用根據實際情況
修改后得到的標準軟件過程來發展和維護軟件。
(4)已管理級是可預測的軟件過程。制定了軟件過程和產品質量的詳細的度量標準。軟件過程和產品的質量都被開發組織的成員所理解和控制。
(5)優化級是能持續改善的軟件過程。加強了定量分析,通過來自過程質量反饋和來自新觀念、新科技的反饋使過程能持續不斷地改進。
基于這種級別的劃分,既可以標識軟件企業的過程能力,又可以方便地、有所遵循地實現持續不斷的軟件過程改進。因為,每種級別都提供了一個軟件過程改進
層次,每一個層次是通過實現軟件過程中的一些關鍵過程區域來實現達到軟件成熟度結構的。例如,軟件企業達到CMM的第二級,則它要實現可重復級的全部關鍵過程區域,這包括6個關鍵過程區域:需求管理、軟件項目計劃、軟件項目跟蹤和監督、軟件子合同管理、軟件質量保證和軟件配置管理。這樣便可真正地推動軟件企業的能力提高。
2、基于CMM的軟件過程管理
CMM模型的成熟度理論主要涉及對軟件組織和各類資源的管理,以及對軟件工程過程的定義管理和如何度量、管理、改進這些過程,同時還包含對軟件工程過程中使用的開發工具和技術的管理。因此,CMM模型實質上是一個管理標準,其軟件過程成熟度級別的高低實質上就是管理水平的高低。
在工程實踐中,可視化是實用化的一種形式,是管理人員和不同人員之間進行交流的最重要手段。在CMM模型中,不同層次表現了不同的過程可見度,層次越高,過程的可見度越強,對過程的控制能力也越強。圖1描述了不同成熟度級別下軟件項目的可視狀況以及不同成熟度級別所能采用的不同管理方式。
(1)初始級的可見度最低,整個軟件過程像一個黑箱,處于一種不可控狀態。對管理者或用戶而言,只能看到項目的需求和項目的結果,無法看到項目的軟件過程,無法對軟件開發進行監督。管理者和決策者不可能根據開發過程狀態及時作出合理決策,項目組經常處于“救火”狀態。
(2)可重復級具有階段可見度,可對軟件過程實施階段控制。開發過程好像一系列的黑盒子,可以按階段來進行軟件開發的控制和管理。但黑盒的內部結構仍不可見。這時已經建立了基本的項目管理活動,并在過程的檢查點上對產品進行檢查,以考察過程是否正常進行,或對發生的問題作出反應。用戶也可在檢查點上了解項目的進展。
(3)已定義級具有了企業自己的標準軟件過程。其軟件過程中任意兩個控制點之間的過程內部結構是可見的,每一個管理者和工程師都明確自己的位置和責任以及相互之間的關系,這些內部結構實際上是企業已定義好的標準軟件過程在具體項目中的應用。同時,管理者能預見可能發生的風險,并為此做好準備。用戶也能得到較為準確而快速的狀況報告。
(4)已管理級在已定義的軟件過程基礎上進行過程量化管理。管理者可以根據客觀的度量,預見過程中的經費支出和其他情況,并定量地、有目標地做出決定。用戶也能定量地理解過程的能力及存在的風險。
(5)優化級的過程具有動態優化能力和自適應能力,可以很清楚地看到軟件過程。為了提高生產率和質量,企業不斷嘗試新的軟件開發方法和技術來優化過程。該層的軟件過程不僅具有對存在過程的可見性,而且對過程潛在的改變、影響因素也具有預見性。管理者有能力估計及定量跟蹤變化的影響和效果。用戶和開發組織合作關系良性發展。
3、基于CMM的軟件過程改進
任何軟件過程必然屬于這五個層次中的某一個層次。在不同層次中,需要實現帶有不同層次特征的關鍵過程區域。在致力于軟件過程改進時,只能由所處的層次
向其緊鄰的上一個層次進化,而不能是跳躍式的。并且,改進過程本身也是一個規范的、循環的、永不停止的過程。一個軟件企業首先要通過過程評估、能力評估等手段診斷自己處于哪一個層次、還存在什么問題,然后根據診斷結果列出改進計劃,經過相關的培訓、實施,最后作出總結。一個過程的改善結束緊跟著下一個更高層次過程的開始,從而進入“評估—診斷—計劃—培訓—實施—總結”的又一循環。CMM模型使過程的改進成為有序。
CMM的應用及其局限
CMM可以應用到許多方面,但CMM研究的初衷是實現:
·軟件過程評估:用來評估一個軟件組織在過程方面的優點和弱點。
·軟件能力評估:用來評估軟件開發承包商的開發及管理能力。
在CMM的廣泛應用中,通過CMM認證的軟件企業都不同程度地增強了競爭力,爭取到了以前不能得到的合同。例如,Raytheon公司現有近400名軟件開發人員,公司用了近五年的時間,將其成熟度從 級提升到第三級,已經收到了明顯的效果。在提升到較高級別的過程中,公司所花費的投資與五年來因成本降低所收到的
效益之比為1:8,直接生產效率提高了大約14倍。該公司所開發的產品在成熟度提升前每千條指令出錯率約為0.31條,提升后僅為0.03條。
但CMM也不是萬能的,并不一定對所有的軟件企業都適合,實施CMM的企業有成功也有失敗。這是因為,在運用CMM中還存在著一些局限性。主要包括:
1、CMM提供了一種有步驟且目標一致地改進軟件產品的管理過程和工程過程的方案,但是它并不保證軟件產品將成功地構造出來,或者保證恰當地解決全部軟件
工程中的問題。
2、CMM最初是以承接政府大型軟件合同的企業為對象而制訂出來的。因此,中小型軟件開發企業在采用CMM的時候,必須運用自己的專業知識和判斷力去進行剪裁,按照企業本身的特點和需要去解釋它的條文。
3、CMM的實現依賴于有關人員的積極參加和進行創造性活動。
4、正式推行CMM需要在人力和經費上增加投入,這對中小企業有一定困難。
5、實施CMM,通常要經過較長的一段時間之后(兩年、三年或者更長)才能看到成效。據最新報告,CMU/SEI推薦了從CMM的一個層次提高到另一個層次所要花費
的時間,其中最短也需要14個月,可見是一個漫長的歷程。
正確實施CMM的策略
從去年開始,CMM已受到我國軟件業的廣泛關注,國家有關部門已出臺了相關政策。目前鼎新、東大阿爾派、聯想軟件已通過了CMM2級認證,摩托羅拉中國軟件中心通過了CMM5級認證,還有不少軟件企業正在嘗試實施CMM,如富基旋風公司正在積極準備2003年通過CMM3級認證。然而針對我國軟件企業的現狀和CMM應用的局限性,為了使其得到很好的實施,我們必須注意以下幾個關鍵問題:
1、在引進、消化、吸收的基礎上需要自己創新,讓CMM更實用化:我國的軟件產業引進國外先進管理方法是勢在必行的。但國情不同,文化背景不同,因此在引
進、消化、吸收CMM的基礎上,需要自己創新,有些東西不能照搬照抄。例如,對于成熟度調查表等需要改進。因為管理是與文化有關的,中國文化與歐美文化是不完全相同的,甚至視角都不同,改進是必須的。最近,美國軟件工程研究所對原來的CMM模型也作了改進。外國人自己也在改進,對于國人來講,更應形成自己的管理模式,不斷總結、改進、提高。
2、加強培訓和咨詢服務:目前我國推廣CMM的工作重點應該是舉辦相關的技術培訓、管理培訓和咨詢服務,讓國內軟件企業更深入地了解、掌握CMM,并指導和協助軟件企業參照CMM模型,迅速地建立一個起始的軟件過程,分步驟地改進自己的軟件過程。對于其中有條件的、特別是出口型軟件企業,應全面實施CMM,逐步通過CMM等級評估,以提高在國際市場上的競爭力。另外,我們還應重視培養自己的CMM主任評估師以及相關的高層次人才。
3、高層領導要重視并領導實施CMM:企業上層領導要首先理解建立軟件過程管理和改進的重要性,并親自領導這件工作,要保證過程管理的人員配備。
4、建立過程改進小組,明確責任:在實施CMM的過程中,成立過程改進小組是非常必要的。過程改進小組是過程改進的主要執行者,一方面要賦予成員相應的權
力,另一方面要明確規定成員的責任。
5、借助軟件過程評估,專注于軟件過程改進:對于我國的軟件企業,最好先按照CMM嚴格的軟件工程方法,致力于改進企業的管理,提高軟件開發能力,而先不要搞軟件能力評鑒以及追求認證、評級。等到能力成熟后,再進行認證。這樣可以避免有些企業將追求的目標定為“能力等級評鑒”,取代了實際的產品質量改進,造成華而不實、甚至弄虛作假的現象。
6、明確軟件過程管理與改進的唯一目的是:按時、按預算開發制造出高質量的軟件產品。
7、針對企業自身的特點,對CMM進行適當裁剪:對于CMM和其他的模型與標準,我們不能生搬硬套,而應將其作為參考,必須運用自己的專業判斷力,按照企業自身的特點、要求與現實條件,制訂軟件過程和選擇實行改進的部分。
8、充分認識改進過程本身就是一個規范的過程,需要循序漸進、逐步改進:因為軟件過程成熟度的升級本身就是一個有生命周期的過程,而且全面引進CMM所涉及的范圍非常廣,要求人力、財力與設備資源的投入跟得上。所以在實施CMM時,企業千萬不要一開始就把目標定得過高,不必一下子去滿足某一能力成熟度等級的所有目標,可以試行某些關鍵過程域的一部分關鍵實踐活動。另一方面,企業還應該規劃出軟件過程建立與改進的短、中、長期目標,分清輕重緩急,逐步取得
經驗,不要一下子動大手術,一下子什么都想得到,也不要作賭博式的全盤投入。企業應在對CMM有透徹的理解之后,才去考慮是否全面引進的問題。
9、專業開發人員要全力支持,并參與過程管理和改進:CMM的實現依賴于全體有關人員的積極參加和他們的創造性活動,否則不僅他們本人會失去從軟件過程改
善中獲得提高的機會,甚至還會成為過程改進的阻力。
無論對軟件企業自身,還是對我國軟件業整體,推行CMM是勢在必行的。通過實施CMM,可以促進軟件企業規范化管理、工程化生產,提高軟件企業的能力成熟度,改進軟件的開發、維護過程,按時、按預算為用戶提供高質量的軟件,提高產品和企業的競爭力。在商業信息化建設、電子商務建設以及商用軟件產品與商業應
用系統的開發過程中,軟件企業借鑒并應用CMM管理方法是非常必要的,對提高商
業軟件的水平,將會起到很大的推動作用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/