在過去的二十年里,新的軟件開發方法和技術的使用并未使軟件生產率和生產質量得到有效的提高。軟件生產商開始意識到他們的基本問題在于對軟件的生產過程管理不力,主要體現在:軟件產品不能按時完成、超出預算的成本、以及采用新的技術和工具后其好處難以體現。
企業要通過選擇最關鍵的目標來進行過程改進,應該搞清成熟的軟件過程和不成熟的過程之間的差異。
不成熟的企業有如下標志:
- 缺乏確定的軟件過程和相應的管理和控制;
- 即使給出了軟件過程,也不嚴格的遵循和強制執行;
- 管理是完全被動的,管理者采用的策略是救火式的,即出了事才去解決,解決的時候也難以縱觀全局,往往只顧眼前;
- 由于缺乏有依據的估算,制訂軟件預算和生產計劃時往往跟著感覺走,實際生產時則常常超標;
- 如果強制在預定期限內完成,那么軟件的功能和質量肯定是得不到保證;
- 缺乏評價軟件產品質量和解決產品缺陷和過程問題的客觀基礎。
成熟的企業則有如下標志:
- 具有在企業范圍內管理、控制軟件開發和維護過程的能力;
- 現有人員和新進人員均了解所遵循的軟件過程,且工作活動均按照事先的計劃完成;
- 在定義好的軟件過程中,所有項目和機構中的角色和責任分明;
- 制定的計劃是有效的且與實際的工作進展一致;
- 軟件過程在必要時可按照一定規則和程序加以修改;
- 軟件產品和過程的具有一定的可控性。這主要體現在:
- 管理者能夠監督軟件產品的質量和生產過程;
- 具有客觀的和定量化的措施來判斷產品質量并分析產品與生產過程中的問題;
- 計劃和預算有章可循,它是基于歷史數據的,從而是實際可行的;
- 預算的結果,包括成本、時間表、產品功能和質量等,通常能夠達到;
- 有關的參與者完全理解遵循軟件過程的價值并認真地遵循之;
- 具有支撐軟件過程的基礎設施,如標準過程庫、歷史數據庫等。
如果公司要通過CMM2,那么公司的管理成本又有多大?公司其它管理層是否意識到制定標準的好處?新事物會帶來多少人的抵制?