2 无非要偷窃、杀害、毁坏
作者:章柏幸
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
为了修正一个错误,所要付出的成本
尽管上面的表格已经能够生动地说明:对于任何一个错误,如果能够在需求阶段发现它,那将是多么地节约成本啊!但是,专家说了,这些数字还是很保守的,因为Beohm同志研究的项目都已经完成了,也就是说这些数据中还没有包括至少1/3的没有完成的项目,而这些夭折的项目很大程度上都应该“归功于”需求分析。
20世纪70年代生产的Ford Pinto车,没有考虑任何追尾事件(需求表意不全),把燃油槽座架螺栓放在屁股上,这一设计非常“科学”。结果呢?现实中频频发生的追尾事件,这给Pinto带来巨大的威胁,于是,Ford汽车公司花了1亿美金来打官司和召回已售出的汽车。别看1亿元还不会让Ford汽车倒闭,可是又有多少家庭因为这该死的Pinto而倒闭呢?
Johns-Manville公司本来是Johns和Manville合伙的公司,他们在新产品开发中发现石棉非常适合做建材。当该公司把所有资源都投入到石棉建材,准备大发横财的时候,却引发了大量的客户起诉,据一家流行病研究公司统计,这样的起诉大约有5万多起,大多数是因为石棉会对人类裸露的皮肤带来流行病(需求表意不全、理解者自以为是)。最后,公司为此背上了20亿美元的债务,破产了。Johns也逃跑了,现在公司改名为Manville公司。
这2个故事告诉我们,如果需求工作没做好,有可能损失1亿美金,也有可能损失20亿美金,而且破产。
【混沌初开】
几十年来的经验表明,那些错误的、失败的或灾难性的项目让投资者付出了巨大的代价,而这些项目中的大部分都起源于含混的需求。本书的目的就是为了向读者介绍一些成功应用于抑制含混性的探索需求的工具。多数持有某种信仰的人或理想主义者会认为,这个世界上存在着完全确定的东西;当他们筹建一个项目的时候,就把项目要求看成了确实存在的标准。现在,我们接下来他们提出的项目,那么,这一项目要求就成为了我们获得的需求陈述;不幸的是,这一需求陈述在绝大多数情况下是含混的。
世界上最伟大的两个物理学家,牛顿和爱因斯坦,在他们人生的最后阶段不约而同地转向了对第一推动的研究。第一推动对于深究“科学”意义的思想家尤为重要。科学本身,是一种无法自圆其说的学说;这不同于信仰,根本就无需自圆其说。于是与信仰相关的传说,比如盘古开天辟地、比如上帝造人,都将创世之初解释为一种确定的过程。而科学不然,他们需要有逐步论证的依据、可以证伪的预测、以及看起来有些道理的假设。
――citizen2yy
虽然我们在很多时候祈祷上苍的保佑,但在具体实践和委托别人做事的时候,我们总会希望所用的方法是科学的。于是,对于那个存在于理想主义者心中(或者是天堂)的需求陈述,也最好遵守一些科学的准则。
这里我们就要说明,需求探索过程是一个渐进的、可以逐步测量的过程。而我们的假设就是,我们的所有相关人员当中,的确相信存在着某种明确的需求,并且大家愿意一起来找到它们。
古人观察到宇宙起源于一个巨大的蛋,所谓太初之时,混沌未开;古今中外的人们都叫这个初始状态为“混沌”。我们不妨来看一下盘古先生是怎么来找到开天辟地的这道分界线的。天地有别,我们要把天从地分离出去。如果我们确实找到了地平线,就表示我们拥有了完美的需求描述。
天和地之间的这条线就是我们所需要的需求描述。
左边的图说明了对需求的探索过程,这其实是很简单的迭代和逐步逼近,却往往被我们的需求分析员所忽视。盘古开辟天地是一板斧一板斧来的,需求探索也是从含糊不清的描述逐步走向详尽明确的表达的。
左边图中黑色区域代表那些我们想要的内容却没有要求,或我们要求了并不想要的。通过再三使用需求工具,我们缩小了这部分区域,并越来越接近于我们不多不少想要的内容。
每一个新蛋都代表需求过程中的一个阶段,每一次中间的切分都是对真实需求线的一次更好的近似,可惜的是,这种过程永远都是近似。我们的探索,就是努力使的这种近似误差尽可能地小。
前面说了好几次“探索”了,这种探索就象是“历险”,这里给出探索的步骤,以清楚我们今后的过程:
1. 向某个方向移动。
2. 看看在那里发现了什么。
3. 记录所发现的东西。
4. 有目的地分析所发现的东西。
5. 通过对所发现的东西的分析和记录来选择下一个方向。
6. 跳回到第1步,继续探索。
【诫条】
1、 我们不喜欢含混性的原因是含混性需要成本;我们认为含混性发现得越早越好,是因为越早发现成本越低。
2、 时刻反省自己,反省自己在需求过程中的含混性,反省自己被这种含混性所带来的困扰。如果你发现产品并不完全如你所想,你可以问问自己:“是什么需求让我们制造了这样垃圾的产品?”