在這個概念**的時代,cmm/cmmi在中國軟體這片特殊的土壤上,曾經創造了並不完美的輝煌,也面對著諸多質疑和否定,一路走來,它會最終將被證明是乙個偉大的經典還是乙個因水土不服而徹底失敗的理論呢?後cmm時代的軟體過程改進又將如何演繹呢?以下,筆者嘗試從cmm/cmmi以外的三個方面來**這個問題.....
有效的行為模式
據說中國第乙個太空飛行員楊利偉是穿戴著一片**尿不濕(俗稱尿片)飛上太空的。誠然,這片尿片必將隨著楊利偉的一飛沖天而永垂不朽,但這畢竟是中國航天人初試啼聲時的權宜之計, 據說神六上天的時候已經沒有這種令人多少有點尷尬的玩意了——這說明乙個問題,有時為了一時的需要採取一些臨時性的措施是無可厚非的,但這些臨時性的措施應該盡可能的被及時的拋棄,但在我們日常的軟體開發實踐中,這片臨時的尿片卻往往遠比我們航天員身上的來的頑固:
當已經定義的過程告訴你需要做某些記錄或編寫某些文件時,因為某些原因(比如永遠落後的專案進度),將這些規範「暫時」擱置一邊,「留待下一次再來遵循」——當然,下一次依然還有下一次......
那些因為一時的方便而被程式設計師「臨時」設定的全域性變數,在發布時卻被發現依舊赫然存在......
當一段**被拷貝貼上了數次後,因為種種原因(例如今天心情不爽,懶得....),依然被「臨時性」的繼續被拷貝貼上,而不是去設計乙個可重用的類或者方法。最終,這段**被n次的拷貝到程式的各個角落......
當發現乙個有待改進但尚未構成即時的致命影響的缺陷時,不是立刻修復或者記錄下來,而是「暫時」放在一邊:「回頭再說」——而這一回頭,往往已是萬水千山了
將「臨時性」的行為永久化只是我們開發過程中諸多不良行為模式中較有代表性的一種,無論我們採用什麼樣的軟體過程,首先必須從根本上杜絕這些不良的行為模式而建立有效的行為模式。建立有效行為模式的途徑,首先是要讓行為受到約束,行為的約束需要靠有效的方法和手段以及有效的機制來實現的,例如:靜態**檢查和走讀等等。其次,量化的管理也能為我們的行為約束提供有效的幫助,我們未必都要將我們的量化管理達到cmmi4級那樣的標準,但幾個不多但有效的度量指標往往會給企業的管理帶來意想不到的效果,如可以進行各種分類統計的缺陷率指標等....。最後,非技術層面上的管理,如有效的懲罰和激勵機制等都可以幫助團隊最終將良好的行為習慣固化為一種良好的行為模式 。
有效的技術支撐平台
cmm/cmmi在為我們帶來了先進理念的同時也為我們提供了實現這些理念所需的各種方法,諸如被告知我們需要根據專案的進展更新專案計畫;又如我們被告知需要從需求到設計、實現及測試建立雙向的可追溯性等等。然而這些方法在純手工的情況下往往不具有可操作性,有時既便是在借助於部分工具的前提下仍然難以操作,本人曾經多少次看到軟體企業的qa或pm們埋頭於project編制的計畫和團隊成員提交的工作日誌間,辛勤而痛苦的根據工作日誌所提交的任務完成情況更新專案的進展,然而不幸的是,這樣做的結果往往並不理想——理由非常簡單,因為ms project(大多採用的是pro而非server版)並不足以提供專案跟蹤所需的完整技術支撐。
因此,所謂「工欲善其事,必先利其器」,要想有效的完成已定義的軟體過程,必須首先建立有效的技術支撐平台,同時,技術平台的選擇應該遵循以下原則:
針對性——沒有最好的工具,只有最合適的工具,不同的企業有不同的需求,應該根據自己特定的需求選擇最具有針對性的技術支撐平台。
整合性——軟體過程是乙個整體,因此在選擇工具的時候應注重這些工具的整合性,若干游離的資料孤島所帶來的後果往往是嚴重的。
成本——成本是每乙個企業都會考慮的因素,然而這裡所說的成本並不完全是指採購成本,而是全生命週期的成本,這裡面除了採購成本還包括了部署和使用成本
依賴自我而不是外力構建的持續改進機制
cmm/cmmi的匯入很大程度上都是依賴於外部力量——諮詢 公司,當功德圓滿,諮詢方和公司成員喜氣洋洋的拍完全家福照後,一切回歸平靜,軟體企業中的軟體過程在大多數情況下並不是持續改進而是漸漸衰退,甚至有些企業的cmmi軟體過程最終只是成為某個檔案櫃中一堆塵封的故紙......。
當然cmmi評審功利性的出發點(拿證)是造成上述這種現象的乙個重要原因,然而另乙個重要的原因則是cmm/cmmi的匯入大多數情況下其驅動力來自外部而不是來自企業本身,當這個外力消失以後,其軟體過程改進往往就裹足不前甚至不進反退,因此構建基於內力而不是外力的持續改進機制是保證企業軟體過程持續改進的關鍵。要想做到這一點,建議從以下幾個方面入手:
人力資源的培養——毋庸置疑,首先應該強調的當然是企業內部人力資源的培養,實際上乙個踏踏實實的cmmi匯入過程可以培養出乙個合格的過程改進團隊,這也許是cmmi評審 除了拿證以外另乙個最為重要的意義所在了,不過,日常的團隊建設也是不可或缺的,當今軟體行業處於知識**的時代,身處其中猶如逆水行舟,不進則退。
完善內部培訓機制——內部培訓是一種非常有效且經濟的提公升團隊整體能力的手段,曾經接觸過乙個堅持「每日培訓」的企業,著實讓人佩服。但一般建議 至少做到「每週培訓」,通常可以作為周例會的乙個組成部分。
介入式的諮詢服務——外部的力量也可以作為一種必要的補充,但從長遠來說,突擊式的拿證並不能為企業帶來多少收益,因此,對於企業來說,介入式的諮詢服務(而不是君子動口不動手 ,隔岸觀火式的諮詢服務)——如qa外包則可以為企業帶來一些真正的獲益。
過程改進方法重於CMMI模型
過程改進方法重於cmmi模型 在實施cmmi的過程,理解cmmi模型的難點之一是理解模型,模型理解不深不透,就無法正確地判斷是否達到了模型的要求,可能做了很多投入產出不成比例的活動,造成資源的浪費。在理解了模型之後,更大的困難在於如何在企業裡推廣cmmi模型。舉個很簡單的例子,按cmmi模型的要求,...
CMMI過程改進之路 質量保證誤區
如何提公升產品質量在業界是乙個永恆的話題,零缺陷是理想化的,永遠只能作為目標而不能到達,客戶基於市場壓力和競爭等方面的考慮,優先考慮的往往是進度,如何定位質量保證 qa 角色 如何平衡進度 質量 成本的關係,是質量保證的核心關鍵,關於質量保證常存在下列誤區 1 組織架構中qa團隊誤區 在不少公司,基...
怎樣進行軟體過程改進
原帖裡面其他的文章也非常好 有人認為,如果乙個軟體機構在五個開發人員以下,以及開發周期短於六個月,進行基於sw cmm的軟體過程改進是不划算的。寫這篇文章的乙個目的,就是幫助人力財力不那麼雄厚的中小型企業進行軟體過程改進,讓他們能少花錢,少花時間,並且顯著得益。無論人數多少,開發周期多短,改進必得益...