設計方法,例如,E_R,UML等;
管理方法,例如,ISO9000,CMM等。
通過程序設計,設計方法和管理方法來解決軟件工程的方向都是對的,但是都僅強調了一個側面,因此都不能完全地解決問題。
特別地,CMM方法試圖從管理學的角度來解決問題,這是一個大的進步。因為人們認識到僅僅通過技術手段是解決不了軟件質量問題的。它提出了為了保證軟件的質量不僅僅應當通過技術手段,而且要對軟件的開發過程進行控制,亦不但重視結果,而且重視過程。只有通過過程的可控性,才能得到結果的可控性,這就是CMM核心軟件開發過程可視化。
CMM被看作為軟件企業進化模型,還不如被看作為軟件企業的分類標準,例如對于只控制結果而不控制過程的軟件企業被看作為屬于CMM 1類,對于只控制階段成果而不控制階段過程的企業被看作為屬于CMM 2類,等等。
對于CMM的內容的理解是容易的,雖然大部分的軟件企業并不了解CMM內容,但是也都在自然地進行著從低級向高級的努力,因此大部分軟件企業都已部分地滿足或在正在努力爭取滿足CMM 2條件。
雖然大部分的軟件企業都在進行著管理升級的努力,但從統計數據上看,效果并不理想,如以下數據統計: