引言:近找工作,把几年来做需求的想法感受总结一下,一是提高自己,二也是请您斧正。
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. 其他