设计方法,例如,E_R,UML等;
管理方法,例如,ISO9000,CMM等。
通过程序设计,设计方法和管理方法来解决软件工程的方向都是对的,但是都仅强调了一个侧面,因此都不能完全地解决问题。
特别地,CMM方法试图从管理学的角度来解决问题,这是一个大的进步。因为人们认识到仅仅通过技术手段是解决不了软件质量问题的。它提出了为了保证软件的质量不仅仅应当通过技术手段,而且要对软件的开发过程进行控制,亦不但重视结果,而且重视过程。只有通过过程的可控性,才能得到结果的可控性,这就是CMM核心软件开发过程可视化。
CMM被看作为软件企业进化模型,还不如被看作为软件企业的分类标准,例如对于只控制结果而不控制过程的软件企业被看作为属于CMM 1类,对于只控制阶段成果而不控制阶段过程的企业被看作为属于CMM 2类,等等。
对于CMM的内容的理解是容易的,虽然大部分的软件企业并不了解CMM内容,但是也都在自然地进行着从低级向高级的努力,因此大部分软件企业都已部分地满足或在正在努力争取满足CMM 2条件。
虽然大部分的软件企业都在进行着管理升级的努力,但从统计数据上看,效果并不理想,如以下数据统计: