天天看點

關于CMM在項目中的實施

       随着CMM理念的引入,國内軟體公司激起了實施CMM的熱潮。雖然CMM的主要思想很清楚,标準的條例也很明确,但如何達到這種标準的可操作性比較差。在缺乏基礎和經驗的情況下,許多企業在實施CMM的過程中,往往感到迷茫,不知從何處下手。而CMM實施的難點在項目的具體實施。本文将結合我公司CMM3實施經驗,簡單論述如何在項目中實施CMM。   

       首先看看CMM标準中相關的定義:

★ 機構

  公司或其他實體中的一個機關,它從整體上管理許多項目。機構内的所有項目由一個共同的頂層負責人管理,并采用共同的政策。

★ 機構标準軟體過程

  可在機構内使用的基本過程定義,用它來引導建立項目的一般軟體過程。它描述每個軟體項目打算并入自己的項目定義的軟體過程中的基本軟體過程要素,還描述這些軟體過程要素之間的關系(如排序和接口)。

★ 項目定義的軟體過程

  由某項目使用的軟體過程的操作定義。利用軟體标準、規程、工具和方法對項目定義的軟體過程進行恰當的表征和描述,使其易于了解。項目定義的軟體過程是根據項目特點通過剪裁機構标準軟體過程而獲得的。

★ 剪裁

  修改一個過程、标準或規程,以更好地比對過程或産品需求。

★ SEPG(Software Engineering Process Group)

  協組對機構使用的軟體過程進行定義、維護和改進的一個專家組。在關鍵實踐中,這個小組通常稱為“負責機構的軟體過程活動的小組”。

  項目實施CMM一般包括三個部分:定義項目軟體過程、制定軟體開發計劃、軟體開發及管理。

1. 定義項目軟體過程

  項目經理在SQA人員(軟體品質保證人員)、SEPG成員的幫助下,針對項目的實際情況,選擇或剪裁機構标準軟體過程,形成項目定義的軟體過程。

  CMM實施初期,機構标準軟體過程不完善的情況下,需要對機構标準軟體過程進行剪裁,以适應項目的實際需要。機構标準軟體過程較完善時,一般隻需要從機構标準軟體過程中選擇模闆、方法等形成項目軟體過程,建議不再采用剪裁的方式。

  項目軟體過程的内容為:項目采用的軟體生命周期模型(如:瀑布模型、V模型等);項目軟體開發及管理(如:軟體開發計劃、需求分析、概要設計、詳細設計、編碼、測試、釋出、項目跟蹤等)應遵循的方法與模闆。

項目軟體過程由一到多個文檔構成。至少應有一個文檔較長的描述項目的軟體生命周期模型、軟體開發及管理應遵循的标準、項目軟體過程與機構标準軟體過程的偏差(即進行了剪裁的内容)。如果進行了剪裁,還将存在項目定義的方法和模闆文檔。

  項目軟體過程定義完成後,需要經過SQA人員、SEPG成員的評審,并得到上級主管上司的準許認可。主要是評審項目軟體過程與機構标準軟體過程的偏差,看看發生的偏差是否符合機構的标準,并滿足CMM标準的要求。

2. 制定軟體開發計劃

  項目經理參照項目軟體過程中的生命周期模型、方法與模闆,結合客戶需求制定軟體開發計劃。軟體開發計劃是軟體開發活動的依據,也是軟體開發管理的基礎。

  軟體開發計劃的内容有:軟體規模估計、工作量估計、成本估計、制定工作進度、識别風險、風險管理計劃、跟蹤管理、配置管理等。其中軟體估計、風險識别與管理、制定工作進度是軟體開發計劃的重點與難點。

  軟體估計主要為規模估計、工作量估計、成本估計。軟體規模估計是工作量估計的基礎,而工作量估計的結果是成本估計的基礎。軟體規模估計的方法有很多,最常用的功能點估計、代碼行估計、界面數估計。各種估計方法有其優缺點,需要根據公司或項目的實際情況來選擇估計方法。軟體規模估計標明估計方法後,還必須結合以往項目的開發經驗或收集的曆史資料。開發經驗或曆史資料的豐富程度,決定了規模估計結果與實際情況的接近程度。軟體工作量除了依賴軟體規模的估計,同時與公司的軟體開發生産率密切相關(什麼是軟體開發生産率?以界面數估計方法為例。3個界面,需要花費的工作量為1人月。那麼軟體開發生産率為3界面/人月)。是以規模相同的軟體,不同公司開發軟體所花費的工作量不同。估計了工作量以後,軟體成本的估計就相對比較容易。我們一般将軟體成本簡單分為:軟體開發成本、其他成本。軟體開發成本等于工作量與人員平均花費之積。其他成本包括管理成本、差旅費等各種費用。這些需要根據公司的實際情況來确定。

  軟體風險是指軟體開發過程中及軟體産品本身可能造成的傷害或損失。我們需要關注以下的問題:什麼樣的風險會導緻軟體項目的徹底失敗?使用者需求、開發技術、目标計算機、以及所有其它與項目有關的因素的改變将會對按時傳遞和總體成功産生什麼影響?對于采用什麼方法和工具,需要多少人員參與工作的問題,我們如何選擇和決策?對軟體品質要達到什麼程度才是“足夠的”?

  風險識别與管理的目的,就是識别出軟體開發過程中可能産生的問題,制定預防問題的措施,及問題發生時的解決方法。公司内不同項目的風險不同,不同公司開發相同軟體的風險不同。識别風險需要采用科學的風險識别方法,同時也需要經驗與曆史資料的積累。根據風險發生的可能性與發生時産生的影響,可以對風險進行分級。在風險識别的基礎上,制定詳細的預防措施和解決方法。用以避免風險的發生,當風險發生時将損失減小到最低程度。随着軟體開發活動的進行,風險在不斷的變化。計劃時預測的部分風險可能消失,同時可能産生一些新的風險。是以在制定預防和解決的方法同時,還需要制定風險監控計劃。在風險監控點上,監控風險的變化情況,并制定新的措施和方法。

工作進度的制定主要基于工作量估計的結果、采用的軟體生命周期模型。制定工作進度主要需要較長的描述,“什麼人?什麼時候?做什麼事情?産生什麼軟體工作産品?”。制定工作進度使用的工具可以根據個人習慣來選擇,比較好的有MS Project。制定工作進度的過程中需要綜合考慮軟體開發過程中可能遇到的困難,必須将時間安排得比較合理。時間太緊,将造成計劃不能按時完成,不能起到指導軟體開發的作用。而太松,又将降低工作效率。工作進度的時間把握存在很大的難度,和軟體規模估計一樣,需要經驗和曆史資料的積累。

  軟體開發計劃制定完成後,需要得到項目組成員的認可,并獲得承諾。最後需要項目上級主管上司的簽字準許。

3. 軟體開發及管理

  軟體開發将按軟體開發計劃進行,所有開發活動必須遵從項目定義的軟體過程。軟體開發過程中,SQA人員将按照SQA計劃(軟體品質保證計劃)對軟體開發活動和産生的軟體工作産品進行稽核。以保證軟體開發活動和産生的軟體工作産品符合項目軟體過程定義的标準。

  軟體開發是一個複雜的過程,其間存在着各種不确定因素。軟體計劃無法做到與實際情況完全吻合,好的計劃也隻能盡量接近實際情況。是以,軟體開發過程需要進行管理,以保證軟體開發能按客戶的要求按時按質完成。軟體開發的管理主要包括:跟蹤軟體開發活動、測量花費的工作量、實時調整計劃。

  跟蹤軟體開發活動,主要是跟蹤軟體規模、工作量、成本、進度、風險等。跟蹤的方式很多,主要分為定期與非定期。定期方式常見的有:周例會、裡程碑會議。項目組每周或裡程碑處召開會議,以便項目經理、項目上級主管上司能夠實時地掌握項目的進展與存在的問題。非定期一般為,項目出現問題時,項目經理、項目上級主管上司對産生的問題進行了解分析,并幫助解決問題。

  測量花費的工作量,是測量前一階段軟體開發活動實際所花費的工作量。并将實際的工作量與計劃估計的工作量進行對比分析,為後一階段計劃的改進提供依據。

  在跟蹤、測量的基礎上,看看是否有必要調整計劃。對計劃的調整表現為:重新估計規模、工作量、成本,重新識别風險并管理風險,調整工作進度的時間人員安排等。 CMM在項目中的實施還有很多工作要做,以上隻是描述了其中的一部分。從印度軟體成功的經驗,讓我們認識到實施CMM将提高我們的軟體産品品質,幫助我們打開國際市場,振興我國的軟體産業。但CMM的實施也存在很大的難度,特别在CMM實施初期,我們将遇到很多困難。例如:增加了軟體開發的工作量,降低了軟體開發效率等。克服這些困難,通過實施CMM持續地改進軟體開發過程,我們一定能從中受益。

繼續閱讀