1,软件工业与制造业和服务业相比远远没有成熟,需要持续进行过程改进通过改善过程的品质,来改善过程的产物的品质,是二战之后的戴明主义理论和实践的基本经验,得到了工业和服务业实践的作证。
戴明主义首先在日本生根开花,使得日本的工业品质在战后30年一跃成为世界第一。1990年,美国的NBC访问了戴明,并发出了“If Japan Can, Why Can’t we?”的感叹。
从汽车工业和麦当劳的经验看,传统行业和服务业的过程和品质已经非常成熟,并且形成了工业工程的方法论体系。无论是麦当劳还是汽车制造,都可以达到“一致的和可预测的”品质。
1914年,福特公司引入了工业流水线,初步建立了“一致的和可预测的”生产过程,使得著名的T型车的成本大大降低,不仅有钱人能够买的起车,装配线上的工人也能够买的起车了。这标志着汽车工业走向成熟。
相对而言,软件工业是非常年轻的行业,还远远没有成熟。
1968年到1969的NATO(北大西洋公约组织)的会议上,学者提出软件危机和软件工程的概念标志着软件进入了工业化时代,这也意味着软件工业到现在只有不到50年的历史。
在短短50年的历史中,硬件平台从早期的主机(Main Frame)过渡到UNIX平台,到今天的PC平台;开发语言从早期的Fortran过渡到COBOL,ALGOL,到今天的C++,JAVA,并且出现了很多script语言;开发方法从早期的结构化方法,到面向对象方法,到面向框架的方法;开发过程从早期的自顶向下结构化的瀑布式过程,到原型过程,增量式过程,敏捷过程;软件的应用范围从早期的军事工业,到商业计算,到今天渗透入社会生活的各个角落的泛用计算(Ubiquitous Computing ).
可以说,软件自身技术和方法的发展是爆炸式的,软件的应用范围的扩张也是爆炸性的,社会大众对软件的期待也是爆炸性的。正因为如此, 对于如何开发软件的方法论到今天都还没有稳定:best practice不断出现,还无法达成广泛的共识;state of art不断更新,不断充实进来新的内容. IEEE和ACM联合制定的软件工程的知识体系(SWEBOK,Software Engineering Body of Knowledge)还无法获得一致的认可。
软件行业还远远没有进入稳定和成熟的阶段。正如同CMM模型是TQM模型在软件行业上的映射,软将行业必须通过过程的改善来建立“一致的和可预测的”软件生产过程,提高软件品质,尽快使得软件行业进入稳定和成熟的阶段。
但是,软件工业与制造业和服务业又存在明显的区别,使得软件行业的过程改善具有显著不同的特征。
软件工业与传统工业相比,最大的差异是:传统工业是围绕机器,人处于辅助位置;软件工业是围绕人,机器处于辅助位置。
在制造业中,只要建立起来机器系统,那么在必备的能源,润滑,温度控制的维护下,机器就可以24小时连续运转,甚至可以达到无人值守的状态。简单的说,机器是可靠的,不受时间,空间和外界环境的影响。
而在软件工业中,不同人的差别是很大的;即使同样的人在不同的时间,空间和外在环境的影响下,会表现出完全不同的能力。同时,人不能长时间连续工作,需要休息和恢复,否则工作效率会降低;简单的说,人是不可靠的。因为人是不可靠的,必须通过团队的力量,借助流程的控制,来及时发现和弥补个人工作中的失误和错误。
在制造业中,制造流程的改进依靠机器,只需要修改一下生产线的流程,机器就自动按照新的流程执行了,是“知难行易”。而在软件行业中,过程的改进要靠人,每个具体的措施的执行也是靠人,不同人的差别是很大的,人是有独立的判断和行为方式的,期待SEPG制定一些新制度的流程,然后制度就可以顺利被执行,这样的事情没有,是“知易行难”。