摘 要:通過對廣東省韶關地區小型軟件企業的調查和筆者參與的一個小型企業軟件過程改進項目,提出了一個適合于小型軟件企業和小型軟件項目的CMM可重復級裁減模型,并給出了實施方案框架,對CMM在我國小型軟件企業和小型軟件項目的應用具有借鑒意義。
關鍵詞:能力成熟度模型; 小型軟件企業; 小型軟件項目
中圖法分類號:TP311.5文獻標識碼:A
文章編號:1001—3695(2007)02—0073—02
軟件能力成熟度模型(Capability Maturity Model,CMM)自被推出以來,已被越來越多的軟件組織所采用,在各國的軟件行業中產生了巨大的影響,成為了國際主流的行業標準。CMM由高到低分成五個等級,CMM 由18個關鍵過程域(Key Process Area,KPA)、52個目標(Goa1)和316個關鍵實踐(Key Practice,KP)組成[1]。除了初始級外,每個成熟度級別均包含CMM 若干個關鍵過程域。
CMM 主要是針對大型軟件機構和大型軟件項目而制定的。目前,中國97%的軟件公司員工不超過200人,他們是中國軟件業的基礎。因此需要根據組織實際情況裁減CMM,即去掉那些對于本企業不適用的內容,以適應小型軟件企業的改進需求。
本文根據筆者參與的一個只有12名員工的小型企業軟件過程改進項目,提出了一個適合于小軟件企業的CMM可重復
級(2級)裁減模型和實施方案的框架。
1 小型軟件企業和小型軟件項目存在的問題
在1998年的關于CMM 和小項目的軟件工程過程小組會議上,Rita Hadden[2]將“小”定義為周期為3—4個月且員工不超過5個的項目;Johnson和Brodman等人[3]把小型組織定義為軟件開發人員不超過50人的組織,把小項目定義為開發人員不超過20人的項目。本文采用第二種定義。
筆者根據對廣東省韶關地區小軟件企業的調查,發現這類企業規模小,但具備創造力與靈活性,溝通比較容易;以技術開發人員為主,兼顧管理,缺乏有經驗的專門管理人員;質量意識不濃;管理水平低下,開發不規范;短期行為多,產品及過程可重用性差,缺乏可持續發展的潛力。如果參照CMM的標準,這些小軟件企業還處于CMM 的初級階段。通過分析,認為CMM不完全適合這些小企業和小項目的原因主要有:①編制各種文檔的負擔太重,使有效的人力資源分配比例失調;②負責管理責任的角色和頭銜太多,在小企業和小項目中操作困難;③需要評審(Review)的地方太多,使小企業無法承擔;④小企業有限的資源(人員、資金)無法滿足CMM 的要求;⑤太高的培訓費用,使小企業無法承擔;⑥不相關的實踐(Practice)無助于企業的改進。
由于這些小企業絕大多數還是CMM的初始級,所以應以CMM的2級或3級作為小企業的切入點。
2 裁減模型
本文研究的對象是一家小型軟件組織,有員工12人,其中8人從事軟件開發,1人從事管理,2人從事市場和銷售等其他事務。這個組織屬于典型的CMM初始級組織,即沒有明顯的過程支持,靠的是精英,沒有質量控制和度量數據。我們從2004年3月開展對這家企業的過程改進,按照CMM模型提出了一套簡單可行的模型和實施方案,大大減輕了企業的過程改進壓力。
模型以CMM的2級為標準,定義了各種角色(Role)及它們的職責、行為以及相互間的依賴關系。由于CMM 2級為不同責任提供了25種角色和命名晦澀的組,這對于人員少的小企業和小小組織是難以實現的,于是我們根據實際情況作了適當的裁減。對于小企業和小項目的角色安排我們從三個方面來確定:①必須設立的角色,如高級經理是對于每個組織都需要的角色;②在活動和責任方面都很重要的角色,但活動和責任可以由擁有其他角色的人來完成的,則可以省略該角色,只要將活動和責任分給那個替代該角色的人即可;③刪去不相關的角色,由于我們研究的這家企業不開發硬件,屬于一種純軟件企業,所以在模型中我們省略了硬件工程組。經過以上方法的處理,在很大程度上減少了小企業和小組織的機構設置,充分體現了小企業、小組織小而靈活的特點。
裁減模型如圖1所示。其中不同的框架表示不同的項目,框架中的角色對于每一個項目都是必須明確的;而框架外的角色對整個組織負責。
其中各種角色的主要職責簡要描述如下:
(1)每一個組織都必須有高級經理(Senior Manager,SM)這一重要角色,負責對多個項目的領導;
(2)每個項目均要有一個項目經理(Project Manager,PM)負責對整個項目的管理;
(3)軟件工程組(Software Engineering Group,SEG)負責軟件的開發與維護;
(4)系統測試組(Software Test Group,STG)可由軟件工程組交叉組成,但一定要保證開發人員不能承擔其開發項目的系統測試工作;
(5)文檔支持組(Document Support Group,DSG)可以與培訓組及軟件評估組合并,由企業中層領導和有經驗的工程師兼職負責,主要提供文檔的支持工作;
(6)軟件配置組(Software Configuration Management Group,SCM)承擔軟件配置工具的維護和技術支持,并負責軟件產品的內部控制;
(7)軟件質量保證組(Software Quality Assurance Group,SQA)負責軟件產品的審核,它必須是一個獨立的組織機構,不能涉及軟件的開發和管理人員;
(8)一個組織如果有特殊的客戶,則客戶SQA(Customer SQA,CSQA)負責引導軟件質量保證的活動,僅當一個組織需要開發客戶特殊的解決方案時,這個角色才有存在的必要;
(9)如果有軟件轉包的需求,必須成立有法律顧問參加的軟件合同管理組(Software Subcontract Manager,SSM),負責選擇與管理有資質的轉包商;
(10)市場與銷售組(Marketing and Sales,MS)負責提供并管理市場及客戶的信息。
3 實施方案
我們根據CMM可重復級(2級)包含的六個KPA來說明具體的實施方案。
(1)需求管理KPA。需求管理的目的是在客戶與項目團隊之間在系統需求的理解上達成一致,并進行有效的組織和記錄。因此企業要定義:①需求說明書的內容;②需求說明書的標準格式;③需求的修改控制流程;④需求說明書的評審流程。
在此過程中,原型模型對快速、準確地理解客戶的需求是有很大幫助的。
(2)軟件項目計劃KPA。軟件項目計劃的目的是為軟件工程的運作和項目各階段活動的管理提供一個合理、可行的工作計劃。因此企業要實施的工作有:①制定軟件項目計劃的標準格式;②明確項目所需的資源、條件約束、所用的開發方法和面臨的風險;③明確與項目相關的組織和個人,將工作細化至規模適度的單元并進行分配;④撰寫軟件項目計劃文檔。
(3)軟件項目跟蹤和監控KPA。軟件項目跟蹤和監控的目的是對項目實施的實際進度提供足夠的可見度,以便當軟件項目的執行與軟件的計劃有較大偏離時,管理部門能采取有效的措施。因此項目經理要做到:①跟蹤項目的執行情況,每周提取一次項目的進展情況并形成文檔;②對項目的執行情況進行評審,并按照進展情況采取必要的措施,如增加資源或與用戶交流修改工期等。
在此過程中,甘特圖等工具與方法可以有助于項目的跟蹤與監控。
(4)軟件轉包合同管理KPA。軟件轉包合同管理的目的是選擇有資質的開發商進行項目的轉包,并對轉包商承接項目的執行情況進行有效的跟蹤與評審,如有必要,應有專人負責跟蹤并監控合同的進展情況。
(5)軟件質量保證KPA。軟件質量保證的目的是為保證產品和服務的質量,充分滿足客戶的要求而進行的有計劃、有組織的活動。為此,企業要設立一個獨立的機構和人員從事此項活動,不能涉及項目的開發和管理人員。此過程的主要工作包括:①搜集、分析和使用質量信息,以確定各階段軟件質量評審的標準;②組織項目執行各階段的質量評審;③根據評審的結果總結和修正各軟件流程;④檢查并審計最終軟件產品的質量。
(6)軟件配置管理KPA。軟件配置管理的主要目的是建立并維持軟件產品在整個軟件生存期內的完整性,是各個階段管理軟件演進過程的方法和規程。其活動可歸結為四個主要功能,即配置識別、變更控制、配置狀態統計、配置審計。雖然在一些小軟件企業中不一定需要獨立的軟件配置組(SCM),但軟件配置管理的工作卻是必需的。在此過程可以利用相關的軟件工具進行管理,如Rational的ClearCase和ClearQuest。
4 總結
通過對廣東省韶關地區小軟件企業的調查和筆者參與的一個小型企業軟件過程改進項目,本文提出了一個適合于小軟件企業和小項目的CMM可重復級裁減模型和實施方案的框架,大大減輕了企業的過程改進壓力。它在一定程度上對我國小軟件企業和小項目具有普遍的指導意義。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。