仓库源文

.. Kenneth Lee 版权所有 2016-2020

:Authors: Kenneth Lee :Version: 1.0

需求分析的中心思路


2000年的时候我们和印度的OSC(外包公司)合作,他们比较自豪的方法是CMM方法,他们 的需求分析做得非常严谨,从数据流的输入输出,到具体的API定义,详细的分析报告,然 后请你签字,签字通过了才会继续下去。

我们不少工程师接触了这种“国际化”的,“专业”的工作方法后,都叹为观止,对比自己的 山寨玩法纷纷表示自惭形秽,努力要学习一样的需求分析方法。

结果如何呢?我认为结果是:大家口头上比过去专业多了,但原来有多少问题,现在还是 有多少问题。去年我又接触过一些印度的OSC,人家现在也基本不谈这个了,我主动问起, 他们的答复是:那个我们也可以执行,不过那不是关键问题,我们现在如果和你合作,我 们一定是战略合作,是两个团队的融合,不是简单的代编码合同。

为什么貌似挺有道理的需求分析方法会变得不合时宜呢?

因为真正左右需求分析的并非你写下了什么,而是你的行为具体满足了什么人的利益。是 逻辑在左右需求是否正确,而不是签字左右需求是否正确。合同上我挑不出你的毛病,不 表示我喜欢你或者会用你的产品,领导挑不出你的毛病也不表示产品在市场上被客户接受 。

所以,如果我去做需求分析,我的工作首先不是记录对方的要求,而是去理解对方的工作 模型。我经历过太多的情形是,对方给我说完他要的东西后,我给他的解决方案完全不是 原来的方案了。

比如有人要求过我做“填写单据并打印”,最后我给他做的是“自动从数据库生成单据并打印 ”;有人要求我做“压缩目标文件系统提升加载速度”,最后我给他做的是“让目标文件系统 可写”。有人要求我做内存压缩,最后他接受我的意见,直接加内存去了。

需求实际上是一种设计,不存在不进行设计的需求分析。我要去北京,你决定给我做一辆 单车,我的需求就是在路上如何露宿的问题, 你决定给我做一架飞机,我们要讨论的是停 机坪和市内接驳的问题。没有设计,你惟一能做的是背景调查。背景调查是不足以形成可 实现的需求的。

所以需求分析不是需求记录,需求分析是背景调查,然后基于背景调查进行建模设计,然 后才确认功能需求,性能需求,签字不能保护你,领导认可也不能保护你,正确的需求分 析是对业务模型和利益模型的正确认识的过程。

需求分析过程大概要考虑如下要素:

  1. 客户的业务模型是怎么样的,这个工作的中心是Use Case Diagram为中心一系列调查

  2. 谁付钱,这个付钱的人要达成什么才会Pleased。由此延伸,就是所有的Stakeholder对 这笔投资的想法。这部分内容很多不能文档化,但你脑子中必须平衡它们,然后作为项 目约束表达出来

  3. 可选解决方案分析,这个工作的中心是Class Diagram为中心的一系列组成设计和验证 。这个部分才是你个人(实施团队)实力的表现。我们经常谈,解决一个问题,是“到 老方知非力取,三分人事七分天”,这里是你的三分人事,那七分,有偶然要素,还有 你自己对它的认识,保证自己“不立危墙之下”。所以,这三分,是你的骄傲,没有它了 ,你什么都没有,但只有它,毫无意义。

  4. 竞争分析。一个事情要得到解决,可以用你的方案,也可以选别的方案,竞争分析的中 心,不是如何打败别人的问题,而是如何认识自己的价值的问题。时时站在没有我的时 候,客户会如何解决问题来想这个问题,而且是Mean to地去想这个问题(也就是说, 你就认为你死了,你就是客户,这样来想就对了),你才会认识你自己的价值,知道自 己应该干什么。竞争分析是必不可少的一个分析角度,比4+1视图的5个角度都重要得多 。竞争分析能让看到,你原来觉得重要的东西可能根本不重要,你原来认为不重要的事 情其实非常主要。不要因为自己拿着一张斧子,所有东西都是木柴。

架构师要完整这些分析,架构级别的需求分析就做完了,实施级别的需求分析才是需求列 表。