需求详解
2016-08-20 00:00
127 查看
1. 引言
很多人像老黄牛一样辛辛苦苦做了很多年软件开发,但却连“需求”到底是什么都不清楚。当然,没有人自己会承认这点!2. 什么是需求?
凡事都有一个开头,软件项目也不例外,对于软件项目来说,需求就是项目最开始的一个输入。参考维基百科,需求定义如下:
In systems engineering, a requirement can be a description of what a system must do, referred to as a Functional Requirement.
简单翻译一下就是:需求即系统需要做什么。
但正是这个简单的定义,让很多人陷入了陷阱:需求即功能。
单纯从字面意思来理解这样也是没有问题的:系统需要做什么,当然就是系统要提供什么功能了!
3. 需求样例
我们来看一个简单的例子:ATM自动取款机。有的人说,ATM的功能是取款、存款、查询余额,所以针对ATM的需求应该是:取款、存款、查询余额;
有的人说,ATM的功能有很多:识别卡、密码认证、点钞、验钞、查询余额、跨行取款等,所以针对ATM的需求应该是:识别卡、密码认证、点钞、验钞、查询余额、跨行取款。
如果你是ATM购买商,你认为哪种才是你的需求?
如果你是ATM制造者,你认为哪种才是你的需求?
如果你是ATM使用者,你认为哪种才是你的需求?
可能大部分人都会支持第二种,原因很简单:取款也要密码认证、存款也要密码认证,所以密码认证是一个需求,而不是分到两个需求里面。
而且第二种方式划分需求有一个好处:系统最后提供的功能和需求基本上是一一对应的。
看起来很美妙,但其实我们忽略了一个问题:采用第二种方式的主要原因是我们对ATM机很熟悉了!
但如果换一个身份,比如说你是一个只识字的农民工,你对ATM机的要求会是“识别卡、密码认证。。。。。。”这样专业的需求么?
肯定不会,你的需求应该是“取款”、“存款”、“查询余额”。
我们继续打破砂锅问到底:为什么农民工兄弟的需求肯定是“取款”、“存款”、“查询余额”,而不是“识别卡”、“密码认证”、“点钞”。。。。。。?
我们假设一下,假如农民工兄弟对ATM的需求是“点钞”,那么就会出现这样滑稽的场景:他经常拿着卡去ATM机,让ATM机点一下钞;又或者他的需求是“密码认证”,那么他经常拿着卡去ATM机验证一下密码。
你当然不会看到这样的场景,农民工兄弟也不会有这样的需求,他只管能取到钱即可,因为取到钱他就可以拿钱去花了,至于取钱的过程中管你是密码认证、点钞还是验钞,说的搞笑一点:他更希望把卡插进去,钱就自动吐出来而且不受限额。
4. 小结
相信到这里,你已经能够明白需求和功能的差别了,我们总结一下:需求:对客户来说有价值的事情;
功能:系统为了实现客户价值而提供的能力;
因此,区别是需求还是功能的方法很简单了:只要判断是否对客户有价值。
我们可以举更多例子来证明这个方法:
POS机:“买单”是需求,“商品扫描”、“金额汇总”、“收银”等是功能,因为买完单后顾客就能将产品拿走;
汽车:“驾驶”是需求,“发动机”、“刹车”、“加速”等是功能;
打印机:“打印”是需求,“进纸”、“设定”、“与电脑连接”等是功能;
。。。。。。
(有兴趣的朋友可以自己多想想)
相关文章推荐
- 响应式网站的产品需求和设计流程详解
- Windows Server 2008硬件需求详解
- 响应式网站的产品需求和设计流程详解
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- EditText实现搜索框常见需求详解(配合软键盘的应用和模拟搜索List结果集)
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- 连载:面向对象葵花宝典:思想、技巧与实践(15) - 需求详解
- android多用户下应用安装详解三(特殊需求实现)
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- 微软Windows Server 2008硬件需求详解
- 软件需求提取,分析,升华详解
- UML从需求到实现----用例、UML用例图中包含、扩展和泛化三种关系详解
- C#时间格式化(Datetime)用法详解,方便生成所需求的时间格式
- 详解软件工程之第一要务需求分析
- DNN系统需求及安装指南详解
- DNN5系统需求及安装指南详解
- 软件需求提取,分析,升华详解
- 连载:面向对象葵花宝典:思想、技巧与实践(15) - 需求详解
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- shell脚本wc命令详解!!需求输出结果