羊的门(2)-无非要偷窃、杀害、毁坏

类别:软件工程 点击:0 评论:0 推荐:

2 无非要偷窃、杀害、毁坏

作者:章柏幸

[email protected]

10盗贼来,无非要偷窃、杀害、毁坏;我来了,是要叫羊得生命,并且得的更丰盛。

无论什么时候,如果人们仅仅使用那些忽略了人性因素的自动化工具,就绝不可能完美地描述需求。而且,含混性随之而来,看起来整整齐齐的需求规格说明书可能会带来各种各样的解释。 

【节外生枝】

王二注意到世界上的眼疾患者越来越多,于是他跟我们的设计组织说:设计一种保护眼睛的产品。

三个月过去了,王二来要他的产品,但是他发现几乎什么都没有得到。设计人员们还在为产品的各种可能争论不休。典型的产品方向有:各种眼镜、眼罩、眼药水、富含维生素的药丸、眼保健操、挂在显示器前的某种玻璃、视力表、科普小品文、皮尺、催眠曲……

可惜的是,王二真正的想法是要让他那位种植专业户的王五同志拥有一种新的素菜品种,这种素菜包含和丰富的铁元素和磷元素,多吃的话有利于眼部健康。

----citizen2yy

 

如果王二仅仅把他的需求陈述局限在“设计一种保护眼睛的产品”,估计是会错过素菜的种植季节的。

另一个例子,有人说“设计一种方案,用于保护一小群居民不受环境侵扰”。 《探索需求》中给出了三种不同的方案:

方案1:小土房

方案2:城堡

方案3:太空站

 

很显然,这三种方案确实提供了对需求陈述的有效的解决方案,但是这种天马行空的发挥也让我们大吃了一惊。不用说,这种差异都根源于需求陈述的含混性。

含混性的意思前面已经解释过,这里我们做一点稍深入的分析。我们认为,含混性有多种形式,就刚才的例子来看,我们至少找到了3个不得要领的地方。

(1)表意不全。也就是说,这种需求陈述缺少很多必要的产品性质描述。例如,对于这种方案的使用方法、耐用性、成本等都没有提到;对这种产品的大小、形状、重量、寿命等也没有提到;对于这种东西可能应该包含的功能、所处的物理环境、文化氛围等等等等都没有提到;我们甚至连里面的“一小群居民”到底是一小群人还是几只狗,或者是一大窝小白鼠都不清楚。

(2)表意不清。用词含糊是含混性的重要来源。比如说,“小”是一个含糊的词语,对姚明来说,2米高的家伙都是小个子;而对日本人来说,1米70的男子都已经是他们中的大个子了。还有,“群”也是含糊的词语,它暗示这些居民之间有某种关系,但是我们还是搞不灵清到底是什么关系。甚至“建筑物”一词也含糊不清,因此有了前面的几种方案。

(3)理解者自以为是。几乎世界上所有的人都拥有他们对某些认识上的成见,而视那些不同看法为偏激或是钻牛角尖。人性的弱点让他们自以为是地代表了大部分人的意见,从而把自己的偏见当成了共识,最终陷入真正的误解。例如在陈述中我们根本没有看到 “建筑物”一词,但是在不经意之中进入了我们的讨论,甚至还成为设计的基本条件了。于是,我们天马行空的想象力被局促在一个小盒子里面,再也想不出什么创新的、无需建筑而又能保护他们的方案了。你看,我们可以用屏蔽罩来防止辐射侵扰,可以用画着骷髅头的警告来防止外人误入,甚至可以用锻炼来保持身体不受病菌侵扰,用迁徙来躲避气候变迁。

需求中的含混性,在“有过去的开发人员”(参见周华健《有过去的人》)眼里,无疑就是开发过程中需求不断扩展、进度不断延期、质量不断下降、可控性不断落空的罪魁祸首。它是魔鬼,来自地狱,欲知更多分析,参见第3章《地狱》。

【殃及池鱼】

前面我们总是在稀里糊涂地向你介绍一些我们认为的真理,这里给出一点经验数据,也好证明我们不是空口白话。

《软件工程经济学》的作者Barry W. Beohm同志通过对63个软件开发项目的研究,得出了下面的表格,不妨一读,右边的是表格对应的柱状图,不妨一看。

 

发现错误的阶段

成本倍数

需求阶段

1

设计阶段

3-6

编码阶段

10

开发测试阶段

15-40

应用测试阶段

30-70

实际运行阶段

40-1000

为了修正一个错误,所要付出的成本

本文地址:http://com.8s8s.com/it/it37065.htm