### 關于軟件過程改進論述
- - - - - -
公司管理軟件過程的能力比較弱,常常導致項目處于混亂狀態。過程混亂,即便是使用最新的技術和工具,其優勢難以體現。“阻礙企業發展的瓶頸問題通常不是技術問題,而是雜亂無章的管理。”林銳老師的理論體系中,看到這句話和有關于在企業中進行過程改進的論述,頗有啟發。在此也根據林銳老師的論述對軟件過程改進的問題加以突出強調。
#### 1、提高軟件過程能力的實踐
> 軟件過程改進是軟件工程學的一個主要研究方向,其中CMM/CMMI是該領域舉世矚目的重大成果。
CMM/CMMI是世界范圍內用于衡量軟件過程能力的標準。但是人們往往搞不清楚“軟件過程改進”和“CMMI等級評估”之間的關系。軟件過程改進其真正的目的是提高公司的軟件過程能力,而不是為了達到CMMI某個等級標準。
把“軟件過程改進”比喻為“學英語,提高英語的能力”,那“CMM/CMMI等級評估”就好比是“英語等級考試”。等級考試的成績并不等價于英語能力。大多數情況下,考試成績很好的人不見得英語能力就很好,可能是“啞巴英語”。這種“特性”傳染到軟件領域:不少企業雖然通過了高級別的CMM/CMMI等級評估,但是其實際的軟件過程能力卻未必很高。
> CMM/CMMI到底是什么?
CMM/CMMI是世界范圍內用于衡量軟件過程能力的標準,但是CMM/CMMI不是軟件過程改進的執行標準,不可能存在適合所有企業的執行標準。就像“英語等級考試”是所有中國大學都認同的評估大學生英語能力的標準,但是“英語等級考試大綱”絕對不是“學好英語的通用標準”。
所以,我們不能把CMM/CMMI直接作為公司的軟件過程規范,主要原因是: CMM/CMMI內容之廣,之深。其論述了數十個過程域和數百條關鍵實踐,但是這些“過程域和實踐”不能與“某個具體企業的具體業務和組織結構”很好的銜接起來。有些企業死搬硬套CMM/CMMI標準,甚至按照CMM/CMMI逐個執行其中的過程域和實踐,如同“邯鄲學步”,看起來可笑,并不能夠包治百病。
> 應該如何應用CMM\\CMMI?
根據公司的實際情況,我們既要裁剪CMM/CMMI中的一些過程域和實踐,又要補充CMM/CMMI中沒有涉及的過程域和實踐。公司領導和軟件過程改進人員必須要明白:公司需要的是一個既符合商業目標,又容易執行的軟件過程規范。
裁剪:要分析企業的業務特征,根據自身的人力和財力,選取CMMI中一些精華的部分和重要的東西,舍棄一些不重要的東西。至于什么是“重要的東西”,就要通過它對公司的促進作用有多大來衡量了。
補充:比如,CMM/CMMI對于軟件開發和管理過程的論述很深,但卻沒有涉及“商務過程”,例如沒有談及立項管理、售前服務、售后服務等。這是CMM/CMMI的不足之處。因為企業開發產品的最終目的是把產品給賣出去,賺取利潤。如果軟件過程規范中不考慮這些因素的話,就會導致開發團隊閉門造車,進而開發出“在技術上是很好的,但商業上卻是失敗的產品”。
#### 2、對軟件過程改進的建議
##### A)各級專家必須“親自參與”,不能“口頭支持”
過程改進不是“辦家家”,需要投入很大的人力和物力去做的。軟件研發管理過程中所涉及的人員都應該熟悉過程規范,并掌握其技能。各級領導的主要職責是“帶領團隊完成預定目標”,他們要“親自參與”過程改進,才能深刻體會過程中的要點,掌握研發管理的方法技能。具體體現在:參與分析問題,商議改進對策;參與制定和自己工作相關的過程規范;參與評審;參加培訓學習等。
##### B)制定的過程規范不求“全面”,只求“實際實用”
凡從事過程改進的人員,他們都希望制定出一套“大而全”的過程規范,能夠覆蓋所有事務。之后大家可能就會發現,缺乏經驗是一個原因,而貪大求全是個錯誤。站在使用者角度看,過厚的過程規范,看都看暈了,更不用說要去很好地執行了!
##### C)不過度的迷信標準
對于CMM/CMMI、PMBOK、ISO9000等標準只能夠用來參考,而不能過度的迷信于它。從而使公司的目標導向發生了軌道偏移。不能夠為了評CMM\\CMMI的更高等級,把CMM\\CMMI看成是“佛經”,來照搬操作,根本不考慮在執行過程是否合理。
##### D)推行新過程的方式應該是引導,而非強制
自古就有“上有政策,下有對策”的說法。所以,在推廣過程規范時不僅要預防成員對此應付了事,還要引導大家正確地做事情。制定過程規范的本意是為了幫助大家把工作做得更好,而不是存難大家。以下是幾點對“引導推行”新過程規范的建議:
(一)解釋規范
過程改進人員不要只是天天埋頭拼命寫過程規范文檔,寫完了上繳就了事。應該充分的把公司的內部網站利用起來,在其中設立一個專門解釋過程規范的專欄,加大對新過程規范的宣傳。關鍵在于合理的理解與運用。如果不對過程規范加以解釋,大家就不能夠懂“為什么要學習和執行新過程規范?”,如果不懂“為什么”又怎么能夠很好地執行呢?公司上下,如果沒有幾個人能很好的把公司的項目研發管理體系說得清楚,那就更不用說去很好的執行了。
公司有一部分條款也可能用了“必須”的語氣。有些內容可能會損害一些人的利益,但為了統一大局,又不得不做。如果過程改進人員不對此加以清楚的解釋,很可能會導致一些本來可以避免的埋怨或爭議。對新的過程規范作進一步的解釋會帶來一些間接性的好處:不合理之處會很快被發現并提出(因為解釋不通嘛)。
(二)培訓和考核
要對公司全員進行新過程規范的培訓與考核,使公司中的每個人都熟悉與自己工作相關的過程規范。只有全員參與,才能夠使團隊發揮最大的力量。上面說到,公司里的各級經理親自參與培訓和考核要比口頭支持作用來的大。
(三)QA人員應監督新過程規范的實施
人都難免存在惰性,如果沒有人來監督員工們按照新過程規范來做事,那么自覺性較差的人就可能會回到以前做事的老習慣上。
CMMI中把質量保證稱為“過程與產品質量保證”。而其QA人員的職責就是要定期地檢查項目成員的“工作過程以及工作成果”是否符合既定的過程規范,來提高和改進“過程質量和產品質量”。
就比如:幾乎所有的人都明白基本的交通法規,但是明知故犯的人也有不少,所以還需要很多交通警察來進行監管。而在IT研發中,質量保證人員就是充當交通警察的角色。
##### E)定義好過程規范中所需的文檔
在CMM\\CMMI等級評定中,有這樣的規定:
> 如果公司實現了過程文檔化,就可以達到CMM2級水平。
> 如果公司實現了對過程的文檔有文檔記錄和管理的,就可以達到CMM3級水平。
在公司里推行CMM\\CMMI標準后,一般就會要求開發團隊寫不少文檔。因此,在推廣新的軟件過程規范時,員工們就會抱怨 “要寫的文檔太多了,都沒有時間”!甚至還有人把進度延誤歸罪于寫文檔上。大家抱怨“文檔太多了”,估計是因為:
(一)過程規范可能太臃腫,規定了太多不必要的文檔,如果是這樣,那就應該對過程規范做進一步的精簡,刪除一些不必要的文檔。
(二)過程規范所要求的文檔本身是適量的,可能是由于以前寫的文檔太少,一下子還很難適應寫文檔的習慣。
在新的過程規范中,應盡量想辦法將寫文檔的難度降低,以提高寫文檔的效率。一要下功夫制定出好而精的文檔模板,并給出充足的提示和示例。讓使用者 “依葫蘆畫瓢”,總比他自己在那兒瞎想“該怎樣寫”要方便得多吧。二要鼓勵開發人員經常寫文檔,才會熟能生巧,以提高其寫作能力。
#### 3、軟件過程改進的實施方案
第一、調查收集問題,并進行分析。過程改進人員調查企業中與開發、管理、銷售、維護/服務等相關的工作人員,分析其反饋重要的問題及其共性問題,收集提出者和各級領導的意見,并共同分析、協商解決其問題的對策。
第二、優化組織結構以及崗位職責。過程改進人員根據調查結果,優化公司組織結構和崗位職責,甚至涉及到重要崗位的人員調整和職權調整。
第三、優化,并制定新的過程規范。過程改進人員幫助公司優化和制定軟件研發管理的新過程規范,一般涉及到商務、項目管理、項目開發和相關支持等過程域。(這一步主要參照于IBM公司制定的集成化研發過程——IDP)
第四、整理和部署配套的管理軟件。公司應盡量整理和部署與過程規范配套的管理軟件,比如:配置管理工具(SVN)、缺陷跟蹤工具(Jira)、任務管理工具(My Project)等等。
第五、對全員進行培訓和指導。過程改進人員為企業員工提供充分且必要的培訓和指導,讓員工充分地理解新的過程規范,并掌握其技能。
第六、引導對新過程規范的執行。全體人員根據新的過程規范開展工作,過程改進負責人和QA監督執行情況,并記錄問題。然后再周期性地改進過程。