引言:近找工作,把几年来做需求的想法感受总结一下,一是提高自己,二也是请您斧正。

  CMMI将需求管理过程域(PA)分为5个:

  SP1.1理解需求:与需求的提供者对需求的含义达成一致

  SP1.2获得对需求的承诺:获得项目组成员对需求的承诺

  SP1.3管理需求的变更:在项目进行中,管理需求的变更

  SP1.4维护需求的双向可跟踪性:维护需求和工作产品之间的双向可跟踪性

  SP1.5确定项目工作与需求间的差异:识别项目计划、工作产品和需求之间的不一致

  这5个特殊实践(SP)为项目中的需求工作明确了方向和具体工作内容。然而需求的收集和分析并非易事。

  需求的分析有如下的困难:

  1. 需求经常变动

  有些变得快的客户可能话刚出口翻了。我去客户那里听需求,往往要到签字画押的时候,客户又反水了。网上有些朋友引用:“妖要是有了仁慈之心,不再是妖,是人妖。”(??唐僧《大话西游之大圣娶亲》)来说明需求的变化。我觉得很贴切,哈哈……

  2. 客户说不清楚

  不要以为客户对熟悉的事情能说清楚,事实上包括我们,对熟悉的东西都不能说清楚。比如说去买个橡皮手套,手指头的粗细,手掌的宽厚,恐怕要佩戴一下才知道,不能仅凭橡皮手套的外包装上的大、中、小三个字去选择。橡皮手套的厂家也了解了这点,于是把手掌的小拇指根部外缘到虎口的位置在外包装上做了个尺子,拿自己的手对比一下这个尺子,即可知道这个橡皮手套适合不适合自己。

  3. 分析人员或客户理解有误

  分析人员和客户所占的角度不同,造成理解不同,记得当年有人质疑电视剧里插播广告太多的时候,一个电视台的专业人士回应说:“你弄错了,我们是在广告里插播电视连续剧!”往往因为立场不同,造成理解上差别非常大。

  4. 用户与开发人员沟通障碍

  这个是在需求工作中遇到得比棘手的问题,我在一家工控企业工作,主要是自动化领域。而我们的客户是做电池的,属于电化学领域。当然有一定的交叉,但还是差别很大,沟通起来非常费力。遇到比较强势的客户,甚至会要求你的怎么做怎么做,但实际上他一点都不了解,沟通的过程异常艰辛。同时,我们有时从专业角度去分析为什么不能这样实现,但客户听了以后,说谁谁实现了(理论上根本实现不了,忽悠人的),你们也必须实现!如果是同一个领域的,有相关的知识作为沟通基础的话,难度会大幅度下降。

  5. 隐含需求

  一个需求其实往往包含着很多方面,由此衍生出很多的需求。比如说一个功能需求,客户要界面尽可能显示出所有的信息。这个问题很复杂,因为电脑屏幕的分辨率有大有小,全屏的时候和是一个不是全屏的窗口,所拥有的绘图面积是不一样的。所以隐含着,不同界面大小下,应该怎么组织界面元素的问题。

  6. 很多其他的原因

  ……

  马克思说过一句话,一切的节约归结为时间的节约。并且,哲学上有一个原理,即存在即合理。通常,客户看似提出得不合理的需求,背后都有一个非常合理的原因所支撑着。所以我认为,一个产品的需求:

  需求一定是成体系的,彼此呼应,相互支撑;

  需求是层次化的,高层次的需求支配着低层次的需求,低层次的需求支撑着高层次的需求;

  需求一定是合理的,所谓不合理的需求,一定是背后的原因不合理,而不是需求本身。

  促使功能需求产生的根源终都是基于对时间的节约。当然,这个对时间的节约对实践的指导意义不大,可以从以下几个方面考虑需求产生的根源:

  1. 技术

  2. 易用性

  3. 安全性

  4. 成本

  5. 利益

  6. 其他