摘 要:針對我國中小軟件企業目前的發展狀況及特點,以提高軟件質量、降低成本、加強產品開發的可延續性、增加客戶滿意度為目標,在深入研究和探討軟件成熟度模型(CMM)的基礎上結合成功案例,論述了一個基于CMM的ERP信息平臺實施框架。框架對KPA做了適當的裁減,定義了7個關鍵過程域并設置了4個工作組,以加強軟件過程的可控性和透明度并進行效率分析。最后指出,在CMM實踐中應該注重創新。
關鍵詞:CMM;KPA;軟件過程:框架
0 引言
CMM(Capability Maturity Mode for Software)即軟件過程能力成熟度模型,是指一個軟件過程被明確定義、管理、度量和控制的有效程度。它是由美國卡耐基梅隆大學軟件工程研究院(SEI,Software Engineering Institute)制定的軟件過程改良、評估模型和評估承包商能力的辦法,也稱為SEI SW-CMM,(SEI SoftWare-CMM)。CMM的核心是把軟件開發視為一個過程,并根據這一原則對軟件開發和維護進行過程監控和研究,確定軟件組織現有的過程能力,查找軟件質量及軟件過程改進中的關鍵問題,以使其更加科學化、標準化,從而加大企業的競爭力。近年來,許多國內軟件企業把實施CMM作為一項戰略決策,最終目的是改善軟件質量,控制成本,提高自身競爭力。但CMM只是一個評估軟件組織過程能力和成熟度的一個依據,大多數軟件企業不可能很快通過CMML3以上的評估,未通過CMML3以上的評估不等于軟件企業就不能進行軟件開發,通過評估也是企業在積累了一定經驗的基礎上才實現的,是一個量變到質變的過程。針對這種情況,結合我國中小軟件企業的特點并運用實例,提出了一個基于CMM的ERP信息平臺實施框架。
1 CMM分析
軟件過程包括軟件開發過程和軟件管理過程,指人們從軟件開發到維護軟件相關產品所采取的一系列步驟。軟件過程的不斷改進基于許多小的不斷進化的步驟,是一個漫長的過程。CMM提供了一個框架,將過程進化的步驟分成五個成熟度等級,每個成熟度等級被分解為幾個KPA(關鍵過程域)。KPA是指在某個成熟度等級應重點關注的區域,也是達到此成熟度等級必須解決的關鍵點。這五個成熟度等級定義了一個有序的尺度,用以衡量軟件組織過程的成熟度和評價其軟件過程的能力。五個等級分別是:①Initial級。軟件過程沒有任何標準和規章,軟件產品的質量具有不可預測性。②Repeatable級。已建立基本的項目管理過程,整個項目過程已經制度化,項目過程處于項目管理系統的有效控制和監督之下,通過不斷積累軟件過程數據來建立完備的軟件開發文檔,以前成功的經驗經規范化后歸納為標準的軟件過程并在以后的項目實施過程中加以提煉,是一個持續的質量改進。KPA分別是:需求管理、軟件項目計劃、軟件跟蹤與監督、軟件子合同管理、軟件質量保證、軟件配置管理,CMML2級上KPA的經驗已經文檔化。③Defined級。組織級法律框架健全,軟件產品的基本過程被記錄下來成為文檔,軟件工程管理和過程管理緊密結合起來并形成了一定的標準集成到組織的標準軟件過程,SPEG(軟件過程工程組)來負責整個軟件過程的活動,項目可以通過裁減組織的標準軟件過程來建立適合自己的軟件過程,并始終得到控制和管理。KPA分別是:組織過程焦點、組織過程定義、培訓大綱、集成軟件管理、軟件產品工程、組間協調、同行評審。④Managed級。對軟件過程的每一個階段進行監控、取樣和定量分析,對形成的關于軟件制作和維護流程的數據庫不斷更新,保證軟件過程保持較高的質量。KPA分別是:定量過程管理、軟件質量管理。⑤Optimizing級。整個軟件開發機構的重心轉移到優化軟件過程,軟件組織對新技術的采用、產品預防缺陷、過程管理改進已達到循環優化的階段。KPA分別是:缺陷預防、技術更新預防、過程更改管理。
由此可見,每一個成熟度等級都有若干個KPA構成,每個KPA過程包含了一系列相關的活動,當這些活動完成時,就能夠達到一組評價過程能力的成熟度目標。要達到一個成熟度等級,必須實現該等級上的全部KPA。成熟度代表軟件過程能力改善的潛力,成熟度等級只是用來描述某一成熟度等級上的組織特征,每一級都為下一等級奠定基礎,滿足了低級別就可以向高級別邁進,過程的改善不能跳躍式地進行。CMM描述的五個等級的軟件過程反映了軟件從雜亂無章、依賴于個人的生產到可管理、可監督、有質量保證、標準化、不斷完善的階梯式生產過程,是一個企業軟件過程改良的參照框架,可以協助軟件組織建立嚴格、可視、標準、優化的軟件開發過程。
2 一種基于CMM的ERP信息平臺實施框架

CMM強調持續不斷地進行軟件過程活動的改進與控制,是一個評估的依據,是一個過程改進的框架,是一套非常有價值的過程模型。但它只告訴我們在哪些方面要改進,并沒有指出具體的辦法,再加上CMM自身的復雜性和我國軟件企業的特點,需要在引進CMM的同時必須對其進行適當的修改,對于當前不是很重要的環節可以合并或刪減,以項目定期總結的方式整理出一個適合于自身發展的標準。在具體的實踐應用中,我們通過對CMM原理的研究和改進,針對中小軟件企業的現狀和特有的文化,以提高軟件質量、降低成本、加強產品開發的可延續性、增加客戶滿意度為目標,構建了一個基于CMM的ERP信息平臺實施框架。在這個框架中對目前CMM中的KPA作適當的裁減,定義了CMM中的7個關鍵過程域:需求管理、軟件項目策劃、軟件項目跟蹤和監督、軟件質量保證、軟件配置管理、同行評審和集成軟件管理;并設置了4個工作組:軟件工程過程組(SEPG)、軟件工程組(SWEG)、軟件質量保證組(SQAG)、軟件配置組(SCM)。基于CMM的ERP信息平臺是高層管理人員和項目組全體成員一起討論并制定的,在具體實施過程中對改進過程所采取的措施大家都非常支持。整個ERP系統平臺按照項目定義的軟件開發過程進行,嚴格按照自己制定的CMM框架來管理監督,以保證開發活動符合定義的標準。開發過程采用瀑布模型作為軟件生命周期模型。圖1是一種基于CMM的ERP信息平臺開發結構。
2.1 構建KPA
(1)需求管理(RM)
需求管理是整個軟件工程的第一步,也是非常關鍵的一個步驟,需求分析不全面直接影響到過程的改進,可能降低軟件質量、加大軟件開發的成本,與用戶的關系也會帶來負面影響。一般簽定合同的用戶是主管信息技術的負責人,他對本企業的業務流程不是非常熟悉(事實上很少有人全面了解自己企業內部所有業務流程,諸如生產、銷售、采購、質量、財務、人事等)。具體實施過程中應將ERP信息平臺的用戶需求納入基線管理,在同用戶有一個良好溝通的基礎上對需求分析做度量管理、跟蹤,將作出的需求分析經過雙方的反復論證形成標準的文檔資料。許多項目在完成后,用戶會不斷提出新增需求或變更,使維護工作處于一種沒完沒了的地步,這就說明需求工作沒做好,沒有做嚴格的評審,導致軟件產品的質量不高。
(2)軟件項目策劃(SPP)
軟件項目策劃是根據項目目標對軟件過程實施活動的安排,是實施CMML2的核心并需納入基線管理,其關鍵內容有軟件生存周期模型、工作產品、工作分解結構、項目估算、風險分析、項目計劃。ERP平臺軟件項目策劃控制包括進度控制、成本控制、質量控制、風險控制等。控制采取里程碑+跟蹤測試的方式進行,控制活動中注意對工作量、成本、關鍵計算機資源、進度、技術活動、風險的操作。在項目具體實施過程中我們定期開展技術論壇和企業文化交流,對近期碰到的問題進行集體研究。結果發現這些活動非常有助于技術人員業務水平的提高,從一定程度上降低了技術風險;通過企業文化交流加強了人員之間的溝通,避免人員流失。
(3)軟件項目跟蹤和監督(SPTO)
軟件項目的跟蹤和監督是根據項目的計劃,在指定的時間對項目目標進行檢測,它始終貫穿于整個過程中,是實施CMML2的核心,目的是規范軟件過程的流程,增加軟件過程中進度、成本、質量的可視性。在ERP平臺實施中按照軟件項目策劃對需求、工作量、成本、進度、風險等內容進行跟蹤并形成文檔。跟蹤過程中注意數據的收集、數據的分析并確定是否采取糾偏措施。需求和進度直接影響整個軟件產品的功能和成本,而對風險的監督則降低一些突發性的事件。跟蹤和監督過程一定要受到項目負責人的監督。
(4)軟件質量保證(SQA)
軟件質量是軟件產品滿足用戶需求的能力特征總和,軟件質量保證對軟件組織本身來講體現了軟件開發的高進度、低成本和可控性,是有計劃、系統的質量管理活動,其目的是使軟件生產過程和軟件產品可視化、文檔化,即監控軟件過程保證合格的產品。在ERP平臺的實施過程中軟件質量保證在SCM、PR、SPTO的相互配合下完成,SQA作為一個第三方的獨立活動而存在。在目前軟硬環境大致相同的情況下,對ERP平臺通過加強過程的定量管理和測試來提高軟件質量,做到軟件質量保證以事先預防和跟蹤為主,事后采取糾偏措施為副。
(5)軟件配置管理(SCM)
軟件配置管理是一種通過標識和文檔來記錄配置項的功能和物理特性,控制這些特性的變更、記錄和報告變更的過程狀態的活動,目的是建立和維護在整個生命周期內軟件產品的完整性。在ERP平臺中主要做了三個子項:①配置項的標識。標識做到惟一陸,便于跟蹤和管理。②安全的配置控制。對開發人員、公用軟件工作產品、軟件產品都實行標準數據庫管理,各自的變更分別存入軟件開發庫、軟件基線庫、軟件產品庫。這三個庫很關鍵,對不同角色的人員通過不同的權限來管理。③配置審計。在軟件產品交付使用之前對軟件基線庫執行一次完整的審計過程,保證最終軟件的運行。軟件配置貫穿于整個軟件生存周期中,以保證軟件產品的一致性、完整性。
(6)同行評審(PR)
同行評審作為軟件質量保證的依據而存在,它根據預定的規范和標準對軟件產品進行評審。本框架將ERP平臺的同行評審作為一個KPA保留下來是因為可以通過軟件行業中的同行來幫助發現問題。SPTO只能將需求分析、設計文檔等各個基線作為標準資料去尋找在實際過程中的缺陷或錯誤,而同行評審是從行業規范的角度去看問題這兩個KPA的執行角色完全不同。同行評審當中的人員全部來自本企業之外,同時,同行評審將軟件工程中的詳細設計和軟件測試作為兩個關鍵評審點,因為這兩個點在實際評審中最能發現問題,而發現的問題直接影響軟件的成本與質量。
(7)集成軟件管理(ISM)
集成軟件管理的目的是針對ERP信息平臺的實施建立合適的軟件過程管理,此過程具備就緒判據、輸入、輸出、標準、工作規程、驗證機制、完成判斷等特征。通過平臺的實施可以看出在整個軟件過程得到定制的情況下,管理者能觀察到所有過程的進展情況,對進度、成本、質量真正做到可控和可預測,降低風險。ISM提高了ERP軟件過程的工作效率。
2.2 組的定義
軟件工程過程組(SPEG)統一領導ERP平臺的CMM實施活動,協調整個軟件過程的開發和改進活動,制定、完成、維護軟件工程規范。集成軟件管理的內容也由SPEG完成。
軟件工程組(SWEG)負責ERP平臺的需求分析、詳細設計、概要設計、編碼、測試工作、RM和SPP。
軟件質量保證組(SQAG)負責完成ERP平臺的測試,對軟件過程進行跟蹤和監督,保證軟件過程的步驟按標準執行,評審軟件工程活動,檢驗軟件的一致性。SQAG集成了STG(系統測試組)、SPTOG、PRG的活動過程,并完成相關任務。項目負責人直接監督SQAG的工作計劃。
軟件配置組(SCMG)負責ERP平臺中軟件配置的策劃、協調和實施,維護配置數據庫、進行版本管理,同時完成ISM的任務。
在整個ERP平臺的CMM實施過程中,對組的設置做了壓縮,但這四個組仍然完成了大部分必需的工作,降低了人員成本,沒有影響過程改進和軟件質量。
3 軟件效率評估
采用CMM就是改進過程管理、監控軟件過程、降低軟件成本、提高軟件的質量。因此,在具體實施過程中對可行性研究、需求分析、詳細設計、編碼實現、軟件測試、軟件維護及發布進行了效率分析。
3.1 時間分析

從表1可以看出,在需求分析階段和設計階段采取CMM框架后所花費的時間要多于沒有采用CMM框架花費的時間。采用CMM的開發過程中,首先對項目做大量的成本、效益分析,論證項目的可行性;然后由SWEG去做RP,在SPEG的協調下SWEG和用戶做良好的溝通,不斷論證、推敲建立模型,并且SQAG始終在做SPTO,形成大量的文檔資料并建立過程數據庫。經過評估,花費在RP上的時間大約占項目總開發時間的40%,事實證明,正是這40%的時間直接左右了整個項目的進度,不但在編寫代碼、軟件維護、測試工作中省略了大量的時間,而且用戶對軟件的功能非常滿意,軟件的開發周期大大縮短,實施CMM框架后的開發周期比沒有實施CMM框架的開發周期縮短20%。
3.2 軟件質量
采用CMM框架后,由于有了個KPA和4個工作組的過程監督,需求分析考慮周全、測試嚴格、評審及時,代碼錯誤率小、功能齊全、軟件產品完整性好、集成度高,軟件質量大大提高,維護量明顯下降。
3.3 其它
對于一個集體項目而言,可以將人員變動造成的風險降低到最低程度,公司不再受制于人,人走了,事照做,更加體現了一個企業的成熟。
4 結束語
CMM是一個框架,不能簡單地去模仿和教條化執行,要有改進甚至是超越,改進目標要明確。未來的CMM更應強調從整體出發和團隊精神,針對現狀,把系統工作分成幾個關鍵的環節去執行,確定最需要改進的環節,整合出適合公司的具體方法、組件、樣例和經驗教訓,形成過程改進的整體規劃。通過對系統中最具有價值的環節的改造,可以進一步降低成本、提高軟件質量、加強產品開發的可延續性和客戶的滿意度。