今天阅读了《Telling Stories - A Short Path to Writing Better Software Requirements》一书,和大家分享下书中一个关于如何表达需求的故事。
 
为了执行一个重塑地球的伟大项目。上帝就召集诺亚,一个他信任的可以执行他的计划的人。他开始清楚地说明面临的问题:

上帝和诺亚说,我要面临所有生灵的灭绝,因为地球充斥着暴力。此外,我会毁灭他们以及地球。
 
作为一个强力和简洁的交流者,上帝说出了在该项目的一期他想要实现的细节:

用歌斐木造一只方舟,分一间一间的造,里外抹上松香。这只方舟要长300肘、宽50肘、高30肘。
方舟上边要留有透光的窗户,旁边要开一道门。方舟要分上中下三层。

在解释完方舟的基本需求后,上帝开始介绍项目二期的主要过程,首先列出了他自己的行动列表:

我要使洪水在地上泛滥,毁灭天下,凡地上有血肉、有气息的活物无一不死。
 
然后他继续说明对诺亚的要求:

我却要与你立约,你同你的妻子、儿子、儿媳都要进入方舟。所有的生物你都要带一公一母。空中的飞鸟、地上的牛以及爬行动物也要带一公一母。这些都可以留种,将来在地上生殖。

同时考虑到一些细节,上帝要诺亚确保带足了保证所有生物都可以度过这三个阶段的食物:

你要上所有吃的食物并收集到你那,这是你们和他们的共同食物。
 
上帝没有说“去建一个方舟”,而是说明了要诺亚去做的事情的细节。他同时介绍了要发生的一些事情,以及为什么需要每样东西,同时按逻辑顺序将对诺亚的需求和特定的事件联系在一起。从总体项目目标开始,然后讨论方舟,他同时提示了食品、指定了乘客列表以及登船过程,最后还涉及到对食品的要求。
由于上帝的详尽介绍,诺亚得以清晰地知道自己要做什么以及为什么要做。最后项目很成功,“他按照上帝的命令做了所有的事情”。我们也还能知道上帝对诺亚需求的细节,因为这是一个伟大故事的一部分。
 
当然,在需求阶段上帝有些我们不具备的优势。所以我们需要更努力,而且要介绍地更详尽。