而我國目前尚處在軟件結構化生產階段,剛剛開始向以過程為中心的第二階段過渡。盡管國內的一些大型軟件企業已經開始轟轟烈烈地搞起了基于CMM模型的過程改進工作,并取得了一定的成效,但更多的企業對過程改進的認識還不是很清楚。
不可忽視的誤區
企業的軟件開發能力取決于該企業的軟件過程能力。如果一個企業軟件過程能力越成熟,那么該企業的軟件開發能力就越有保證。大量的實踐經驗表明,在體現企業軟件開發能力的因素中,技術或工具并不是第一位的。其實,許多問題不是出在不懂怎么做,而是沒有安排做,做的次序不對,或不知道怎樣做得更好。
目前,比照軟件過程管理模型(如圖一),中國的軟件企業中還存在各種影響過程改進的因素和誤區,主要表現在個體和組織兩個方面。
在組織方面,首先,中國軟件企業實施CMM往往缺乏高級管理者的支持。其次,沒有足夠的SEPG資源。從很多情況考慮,SEPG成員要比其他CMM相關組綜合素質高一個層次,CMM相關組的管理素質需要比技術類組高一個層次,才能順利開展工作。第三,沒有合適的先行者或者沒有適當全局觀的項目經理配合。被組織選為先行者的人員經常說自己沒有時間,由于這些人都是從各個項目中抽出來的,一般人很難有足夠的權力讓他們為配合CMM做工作。最后,軟件組織缺乏足夠詳細的項目計劃和監督調整機制。
在個體方面,首先,手工作坊式的個人英雄主義情結成為實施CMM的制約。其次,某些軟件開發人員錯誤地認為過程管理會影響或壓抑專業人員的創造性,其實這是不清楚過程的定義造成的。第三,由于軟件項目的成功更多地依賴于少數人員的杰出技術能力和項目管理能力,成功項目的經驗不能得到最大限度的繼承,軟件生產的可重復性相對比較差。最后,軟件企業人員變更相對頻繁也增加了實施CMM的難度。
“三七”法則
在過程改進總體建議方面,應該從三個方面做準備,分七步走。
首先,在組織方面的準備上,除了要求高層經理出資支持CMM改善軟件過程,委托具有管理職責的人員負責CMM實施之外,須成立軟件工程過程組(SEPG),研究CMM、編寫/修改必要的文檔并推廣文檔;成立軟件質量保證組(SQAG),研究軟件質量保證技術及過程,編寫/修改必要的SQA文檔并推廣已編寫的文檔,測量和分析項目進展情況,反饋項目過程狀態,準備和評審過程、計劃和標準,審計指定的軟件工作產品以檢驗其遵從性,審計軟件工作過程的符合性;成立軟件配置管理組(SCMG),研究軟件配置管理技術及過程,編寫/修改必要的SCM文檔并推廣已編寫的文檔,建立必要的工具支持。
在知識準備方面,要加強培訓工作,建立內部過程評估隊伍和龐大的過程改善隊伍。對各角色人員進行專項培訓,普遍開展軟件工程基礎及CMM的培訓,使每個崗位的人員都具備過程改進的意識,并掌握所必需的過程改進知識和技能。此外,要重視對軟件工程的研究,包括方法、工具和過程,加速培養過程改進的骨干隊伍。
在能力準備方面,建立有效的軟件項目管理,文檔化且遵循軟件項目管理過程,在建立管理過程中,使用組織的方針來指導項目,建立基本軟件工作產品完成準則和檢查單,并迅速實施,然后根據反饋意見及時修改。堅持適當的監控機制,例如對項目進度進行跟蹤而建立的例會制度,制度化的日報和周報活動。做好實際數據收集、測量與分析工作等。重復成功的以前項目的開發經驗。
改進過程總體可以分為以下七個步驟。
確定目標: 確定在一段時間內達到的改進等級。
狀態診斷: 把過程改進要達到的狀態與目前的狀態作比較,找出存在的差距。
制定計劃:“凡事有計劃,按計劃辦”不僅是CMM強調的,也是軟件開發過程中應該注意的。
規程制定:過程改進的一個重要的地方就是“事事有規程,時時有記錄”,這樣,即使關鍵人走了,原來的事也能繼續而不致產生過多的停頓。
過程試點:制定了規程后,要對行動計劃按執行過程的情況進行適當調整。其中,尤其要注重評審和驗證,實現定期監控,注意采集度量數據。
反饋修正:總結過程試點的經驗,修訂規程。
過程推廣:擴大應用范圍。
軟件過程改進實施步驟
公司的過程改進活動也是一個項目,并且是很大的項目,涉及的人員、技術和資源都很多,還要平衡現有產品或項目的進度等。同時,它也是一個不斷往復,螺旋上升的一個過程。
第一個步驟為高級經理下定決心,提供足夠的資源來主持并完成前期的準備工作,這個階段核心是評價SEPG組長的資格和資質,還包括評估培訓、購買工具的預算及相應資金能否及時到位。
無論是軟件商業化的過程或CMM實施的過程之中,建立規范化的易于操作的軟件開發行為規范都是首先要做的工作。但是,切記,編制規范的時間一定不能長,以10到12個工作日為宜,文檔不宜過多,以5~6個規程為好(對應5個或6個關鍵過程域),這是第二個關鍵階段。評價標準可以是SEPG組長能夠順利、流暢地講解其制定的規程。在規程編制階段必須有老板或常務副總直接領導CMM工作。但是一定要記住,制定的過程要遵從“從實踐中來,到實踐中去”,同項目經理、有經驗的開發人員研究、討論,從而使SEPG組長能夠及時反映工作中的問題,并且問題能夠得到及時解決。
第三個步驟是制定并發布公司的評估方針和方案,包括開發體系重組過程中的激勵措施,中層在此階段必須介入,這關系著過程改進的結果。SEPG和CMM實施的周例會,必須有高級經理參加,要有記錄或錄音作為證據,是考核的一個指標。
除此之外,對于還沒有進行基于CMM改進的企業,還要重視設計復查、代碼復查以及測試工作 。很多程序員習慣于“只做不想”這樣一種工作方式,他們更關心每天可以寫多少行代碼,完成幾個模塊,在這種態度下,他們都很不愿意復查自己的工作,而習慣于在軟件測試階段把隱藏的錯誤改正過來。CMM實施過程,就是要通過各種復查,溝通信息,及早發現并更改問題。
在實施了初始的過程或技術部署后,培訓成了主要問題。但人員變動時,附加培訓的必要可能沒被認識到,管理技能的培訓尤為重要。而對于那些由于過硬的技術而被提升到管理職位的人員,需要接受一整套新技能的培訓,包括人際關系技能。
項目經理在整個過程改進中(尤其是CMM二級)的工作量大約要占到整個總量的一半到四分之三,在評估訪談時也占有了舉足輕重的地位。有些項目經理認為自己心里有一套計劃,只要按計劃進行就可以按時保質完成項目,但事實并非如此,在項目組之間的協調問題上,高層經理的作用是非常明顯的。
試點或模擬項目可以很小,哪怕只有兩個人,或者聯合SEPG進行指導全部公司的模擬項目,這是縮短試驗的最好途徑。先組織配置管理活動的培訓或學習,配置管理活動和質量保證活動在此期間可以得到很好的練習。
CMM為軟件企業的過程能力提供了一個階梯式的改進框架,它基于過去所有軟件工程過程改進的成果,吸取了以往軟件工程的經驗教訓,提供了一個基于過程改進的框架; 它指明了一個軟件組織在軟件開發方面需要管理哪些主要工作、這些工作之間的關系、以及以怎樣的先后次序,一步一步地做好這些工作而使軟件組織走向成熟。
但是由于CMM中不研究所有軟件過程和質量改進問題,也未提供有關實現子過程域所需要的具體知識和技能,因此要進行個體軟件過程PSP的實踐活動,以填補這一空白,并優化過程改進途徑。
文章來源于領測軟件測試網 http://www.kjueaiud.com/