保证软件开发质量的一种管理学

软件开发和其他制造业的区别在于,软件的成本在于研发,而不是制造,制造业可以有既有的模式来进行流水线的工作方式,大大的提高产品的质量。

虽然,软件有这种固有的特点,但是我认为还是可以借助制造业的管理经验来管理软件开发。尤其是,软件不会受许多物质条件的限制,也就有了很多更大的发挥空间。

一个产品,如何才能称之为质量高的产品?我认为应该满足一下条件:

1.符合消费者的需要(功能性)

2.健壮

3.高效(竞争力的体现)

其实传统制造业要弄个新产品出来,并不比软件开发容易。先要构思,然后一步一步修改,市场宣传,诸如此类,不管哪个环节,如果是软件开发来说,都比较节省成本,因为软件要部署比硬件部署技术手段要容易多了。正因为如此,我们应该对提高软件开发质量保持信心的。

提高软件开发的质量,首先要贯彻一个恰当的开发流程。

以前有什么瀑布型,现在有什么敏捷型,他们固然是有其优点,但是往往实际工作中没有得到普及,为什么?因为没有建立具体化的实施机制和管理层没有理解和在团队中推动这些,这和制造业的老板有很大的不同。中国的软件业是新生的,英雄主义的,而不是工业化的。

管理层对开发没有概念,完全依赖某些高端的开发者,是问题的根源。要改变,首先就要对抗英雄主义,要建立机制,而不是依赖个人经验(虽然机制是基于经验的)。

机制,是将一些含糊不清的过程,用文字表述出来,并量化实施的方法。麦当劳和肯德基的成功,不是因为它有很多牛B的厨师,而是因为他能将某个牛B的厨师的经验给总结出来,并能制定一个可以重现的过程。这是有难度的,国内那些山寨麦当劳就做不出统一的口味。

要做一个好产品容易,要做很多很多一样水准的产品就难,而这正是工业化的精髓。

所谓保证产品的质量的含义,其实质就是建立一个科学的生产流程。并且要用制造业的态度去提高软件产品的质量。

首先要明白生产者和消费者的关系:

生产是为了满足消费者。

不能满足消费者的不是产品,是垃圾。

因此从生产关系来看,首先就有如下关系:

<p$1$2$3$4$5$6> 

生产者消费者的关系

生产者是要服务消费者的。但是如何才能服务消费者?靠自己的开发知识等等,这些虽然没错,但是生产的关键除了内在的因素,外在的因素更值得重视。这就是生产的条件和前提。生产的前提是什么?是你需要知道消费者需要什么。

消费者的要求

如果把生产者和消费者看做生产线的两个环节,出来的是最终产品,你会发现所谓的现实中的消费者其实是在生产线的第一环节的:

生产线

没有“消费者”的输出,就没有“生产者”的输入,就不会有最终的产品出来。任何企业,他的生产关系都不会那么简单,实际上需要许许多多的生产人员组成一条长长的生产线。但是,每两个生产单元的关系,都离不开上图所示。因此这里先把他们一般化:

环节

B单元依赖A的输出,对于任何一个B来说,他应该保证A的输出是符合自己的要求的,也就是他才是消费者,才是老大。我用红线分隔了AB,分别代表了输入,和输出。一个生产环节要成功,首先要重视输入,输入不严格,劣质,注定输出也是劣质的。而B自身的输出,由后继的C来保证其质量。上面已经提到了,所谓的质量,就是要满足三个条件:功能,品质,性能。如果每一个B都能履行自己监督的义务,那么一个成功的生产过程就出来了。

如何提高B的监督水准?

B之所以会积极的监督A,是因为B需要依赖A的产品输出,这是天然的约束关系。但是B同时也要提高自己评判产品质量的能力。如何提高产品的质量?在其他生产线不容易,但是在软件开发生产线,我认为答案可以很直接,那就是测试代码。每个B都为A编写测试代码,A通不过,自然要退回去重写。

企业中生产线不会只有一条。

一个软件企业应该有三条生产线:

1.设计生产线

2.编码生产线

3.管理生产线

设计生产线连接外部消费者,由消费者做开端,到最终编码人员组成。

设计生产线的难度在于是散开的。而且,越是后端越是多生产环节,涉及的人员越多,对管理的压力也就越大。消费者-〉框架设计师-〉中层设计师-〉编码主管-〉编码者,会越来越复杂。

编码生产线位于设计生产线的末端成员组成,这本身就是庞杂的。

管理生产线的任务,在于跟踪生产环节出现的质量问题,收集生产数据,以真正改善生产结构。

总结:

提高软件开发质量,首先是关注开发流程,而开发流程,要关注开发的一般环节,所谓环环相扣,做好一般的环节,自然就会水到渠成。

posted @ 2010-03-26 22:34  诺贝尔  阅读(1890)  评论(3编辑  收藏  举报