羊的门
作者:章柏幸
citizen2yy@hotmail.com 7我实实在在地告诉你们,我就是羊的门。
8凡在我以先来的,都是贼,是强盗,羊却不听他们。
9我就是门,凡从我进来的,必然得救,并且出入得草吃。
10盗贼来,无非要偷窃、杀害、毁坏;我来了,是要叫羊得生命,并且得的更丰盛。
12若是雇工,不是牧人,羊也不是他自己的,他看见狼来,就撇下羊逃走。狼抓住羊,赶散了羊群。
13雇工逃走,因他是雇工,并不顾念羊。
——圣经·新约·约翰福音·第10章
“我从很小就开始对‘人们如何思考’产生了浓厚的兴趣;那时我还是一个小男孩,世界上仅有的计算机被人们称为‘巨型大脑’;我当时就想,如果我搞清楚了这些巨型大脑的‘思想’,我或许就可以更深入地了解人们是如何思考的。”——杰拉尔德·温伯格。
在看到这个题目的时候,读者朋友可能会想起几年前李佩甫的一部同名小说。这里说的和那本小说看起来没什么关联,但是又仿佛有着莫大的联系。在我改写这部分文稿的时候,脑海中总会时不时浮现出盗贼、羊、雇工、狼、牧羊人的图景,我发现,我们在这里讨论的内容所遇到的问题和耶稣所遇到的责难一样难以处理;而我们所做的事业,正是在帮助那些心地善良而又不知天堂之路的迷羊找到正确的回家之路;这就是羊的门。
下面2个小节,介绍一下本文的主要目的和关注点。
《探索需求》是Donald C. Gause和Gerald M. Weinberg合作的一本探索软件开发项目需求部分的书。本文的目的是为了用一种更为适合中国人的方式来表述书中第一部分的观点。在项目管理者的眼里,世界上的一切问题都可以归结为项目。项目从开始到结束一般会有很多阶段,而“需求分析”阶段就是用来搞清楚“我们在这个项目中需要解决什么问题”的。
这本书的关注点就在“需求分析”阶段。虽然这个阶段的书籍和论文已经很多了,但是经验表明,我们还是有必要阅读这本书,因为这本书中还有很多别的书中没有提出过的有用的观点。《探索需求》的第一部分就是要讲清楚为什么需要这本书或这本书中的一些技巧和观点。这也是本文的重点。
简而言之,需求分析阶段需要经历两个步骤:
1、提出问题的人说一些话,以告诉帮助他解决问题的人他要干什么。
2、解决问题的人和提出问题的人进行沟通,以确证这个问题的细节。
第一步就是“问题陈述”,这和法庭上指控方、被指控方的案情陈述有点类似。
第二步就是“探索需求”,这和法庭上的双方律师不断地分析对方以及询问证人有点类似。这里律师就是需求分析员。
只有律师把事情来龙去脉用合乎法律的方法表述清楚之后,法官才能够正确断案。也就是说,只有需求分析员把问题的关键分析清楚之后,开发者才能够做出正确的产品。
下面举出的这个例子说明了一个观点,即:如果你说清楚了你的需要,那么你就很可能得到它;如果你没有说清楚你的需要,那你就很可能得不到它。当然这个观点很简单易懂,也就是说这个例子可以略过不读。
我们要求五个小组甲、乙、丙、丁、戊在几乎相同的“问题陈述”下进行程序开发,说“几乎相同”的意思就是其中有且只有一个句子各不相同,分别如下:
小组 要求
甲 开发时间尽可能少
乙 源代码行数尽可能少
丙 占用内存尽可能少
丁 程序的可读性尽可能高
戊 程序输出尽可能清楚
最后的结果就是,每个小组开发出来的程序都满足了这句特殊的要求,而没有满足那些没有被要求去做的。我们常常听到一些购买软件的人抱怨软件开发商没能开发出他们真正想要的东西,那么这里反过来可以这么认为,并不是开发商不能开发出来,而是他们不知道要开发出什么,这里面的问题就是:开发商没有好好地调查好需求,或者是购买者没有好好地讲清楚需求。这里我们不追究谁的责任,关键是我们确证了“你要你就说,你不说我怎么知道你要呢(参见《大话西游》,唐僧语)”的真理。
经验表明,上述例子在全世界的软件开发商中都有发生。尤其需要指出的是,“问题陈述”和“人们真正想要的东西”之间的差距不仅仅在软件业频频发生;而是,只要有人需要解决别人的问题,只要有人需要别人为他设计和生产产品,只要存在某种供需关系;这种差距就存在,就需要有人来解决这个差距问题。
高斯和温伯格,软件界的两个泰斗级的人物,为了解决这个差距问题,已经花费了60多年的时间了。而这本书中的内容,正是对这些问题的心得。