|
世间万事万物各不相同;三百六十五行,隔行如隔山。可是,透过事务的表现层来看事务的核心本质,我们可以发现很多类似。正如我们看武侠小说中,各门各派的武功
招式各不相同,甚至迥异,但是到了武功要诀,内功心法,确有大相径庭之味,所以很多武功高手可以融会贯通......。正是原于这种原因,笔者把机械制造业和软件工程扯倒一起来谈谈自己的一些看法和观点。
机械制造业经过上百年的发展,已经是一个非常成熟的产业了,她的每一个步骤、每一道工序都有非常明细和严格的标准,软件业相比机械制造业还是一个处于发展行业,尤其是在中国。软件工程的出现就是为了将软件开发工程化,并确保软件过程正确执行。规范软件过程的目的就是提高产品的质量,降低个体的不确定因素对软件质量的影响,将软件开发至于受控状态下。
很多人认为“软件开发是一项智力密集、创造性成分较高的劳动”,因此会产生许多非受控的因素,造成软件开发标准规范的贯彻执行在实际中都会碰到困难。我认为软件开发和其他行业一样,对质量的保证都是一个管理问题,从这一角度讲,需要遵循的基本原则和面向的对象没有什么不同,过分强调软件开发的特殊性其实是软件行业尚不成熟的表现。
我们可以借鉴制造行业的质量管理体系,反思一下软件开发过程的问题。制造业拥有长久的历史,形成了一套行之有效的管理模式、规范以及质量管理体系,更重要的是这种观念和意识深植于制造业从业人员心中----不论是大型的企业还是只有一二百人的小厂,都会有自己详细的流程、制度,并良好运转且大家习以为常----正是因为这种现象的存在,才使我有了剥析一下软件开发过程的想法。
当一个机械制造企业需要开发一个新产品时-这个产品可能是一种新型步枪,也可能是新一代的运载火箭,大致可以分为这样几个步骤: 1、首先,是对新产品的功能、技术性能(指标)等的定义; 2、其次进行产品的总体设计、分系统或模块的划分,设计各接口之间的关系或依赖条件等等,还包括部分的尺寸、重量等等具体的技术指标,完成总体蓝图以及设计计算说明书; 3、然后进行的是分系统的设计-产生分系统的蓝图、设计计算说明书,为简短起见,我把具体的零件图完成也加在这部分; 4、组织加工。这个阶段完成零件工艺线路、工卡量夹具的设计,零件的加工,产品的装配; 5、系统的联调。 6、产品的定型或提交;
整个的阶段过程大致如此,我们可以看一下,与软件开发的步骤非常相似,完全可以将1、2、3、4、5、6分别对应到需求分析、概要设计、详细设计、编码与实现、测试、发布。在一个机械产品开发过程中,同样有与软件开发过程相对应的职责与角色,如果有必要,可以进一步讨论。我个人认为,两者最大的区别可能在于机械产品开发过程中“工艺线路、工卡量夹具的设计”可能没有相应的步骤可以对应,这也是造成机械产品开发过程中4步骤所占周期远大于编码与实现阶段的原因,不过我想这不是一个问题的主要层面,不会对问题的讨论产生影响(其实“工艺线路、工卡量夹具的设计”也是一个小的产品开发过程)。
制造业不是一个“智力密集、创造性成分较高的劳动”吗?如果我们了解了一个产品的开发过程,恐怕会说"Yes",只不过我们经常在流水线的轰鸣声中忘记了一个背后的事实----任何产品,包括生产线本身,都是人类创造性的结果。其实不止是制造业,电子行业、建筑行业等等,都属于这种情况。 这里说了这么多,只是想说明对于质量的管理、控制,不是哪一个行业或哪一些人面临的孤立问题,而且万变不离其中,任何成功的模式同样适用于我们自己。还是让我们来看一看制造业如何进行过程的控制吧。
上面的6个步骤,只是一个开发的流程,对于质量的保证是随处可见的,我也仅仅举几个例子而已。
|