在軟件工程發展的歷史進程中,人們為了解決軟件危機,嘗試了采用諸如形式化描述語言、結構化開發方法、CASE工具、構件化開發方法等等各種解決方案,但是效果并不那么顯著,CMU SEI提出了軟件過程能力成熟度模型(CMM)基于過程的角度來解決軟件危機。那么是否實施了CMM,軟件企業的開發能力就一定能提高,一定能帶來經濟效益呢?答案是否定的。如果企業里要帶來經濟效益必須要結合軟件過程、工具、開發方法、人員等多種因素一起提高,才能保證帶來經濟效益,因為人員、技術和過程是支撐軟件開發平臺的三條腿,少了那一條都不行。大家也都知道木桶原理,一個木桶可存櫧水的最大容量是由最短的那根木頭決定的。在企業的開發能力中過程、技術(含工具、方法)、人員都是主要的因子,都需要全面提高,只關注一個方面,而忽略了其他方面,都是有害的。
在開始實施CMM時,最容易犯的一個錯誤就是"唯管理論"或孤立地只抓過程改善,忽略了開發技術與人員的提高,過分強調管理的作用,實施了半年或一年后,發現企業的生產能力并沒有得到明顯的改善,這時反對的聲音就會成為主流,過程改善就難以繼續進行了。有的企業采用面向對象的開發方法進行軟件開發,但是企業內并沒有對面向對象技術真正了解的專家,雖然也采用RUP過程、也采用ROSE等開發工具,但是僅僅是形似,沒有做到真正的OO方法,沒有得到OO方法的精髓,這種問題僅僅依靠過程改善是無法解決的。還有的企業開發人員的積極性很差,工作熱情很低,企業的激勵機制沒有起到很好的作用,這種問題也是依靠CMM無法解決的。