一星期8天

Eight Days a Week - by The Beatles & 小陆

需求从哪里来

IT系统是根据需求建设的,而需求是从哪里来的呢?

为什么这个世界需要一个这样的系统,为什么系统需要做成这样,不多做一些事情,也不少做一些事情,恰好就要做这么多事情?

这些问题难道不是问题吗,难道需求是理所应当的吗,需求是从哪里来的呢,用户为什么有需求,需求为什么是这样?

下面我做了这么一件事,把一个家庭的活动整理了一下,有下面一些内容:



一个家庭的活动有这几个内容:工作、娱乐、购物、文化教育、医疗保健、人际交往。

这个东西是不是可以看作中国城市家庭的一个生活模型。

还需要加上一个活动:财务管理。这个活动不应该是与前面几个活动并列的,他应该是一种横向的交叉活动,就像下面这样:



假如我们现在要规划一个家庭的IT系统,就可以先根据这个模型,规划这个IT系统需要划分成哪几个子系统,各个子系统需要具有哪些功能。然后就是确定如何结合现有的条件分步骤的实现这个IT系统。

如果从一开始就没有一个整体的规划,每个系统都是分别规划,根据自己的需要去独立建设。当最后这些系统结合在一起的时候,肯定会发生这样的现象:各个系统的边界有所重叠,也存在空隙,有的事情没有人做,有的人没有事做。当一个人需要了解这个家庭的整体情况的时候,他观察每个系统,会发现每个系统的标准都有差别,对同一个概念的理解不一样。要得到一个整体的情况,必须在各个系统之间搞很多人工的翻译工作。

这个模型的存在不是为了开发某个系统,而是为了搞清楚人的活动。分析这个模型可以知道,在这样的活动中有什么样的需求,需要开发哪些系统来满足这些需求,这些系统需要有什么样的功能。

一个家庭还要有这样一个活动:信息的管理。比如:家用电器的使用手册,上次给汽车加机油是什么时间,家人朋友的生日……现在的家庭正在越来越多的做这样的管理活动。加上信息管理,形成了下面这样的家庭模型:



设计一个系统的时候,不能把眼睛放到一个个的功能点上,不去研究系统的业务需求。要避免被功能点洗脑,功能点是可能被代替掉的。同样,一个独立的系统,也只有放到人的活动中才有价值。在这个范围上,任何一个独立的系统也是可能被代替掉的。

这个家庭模型可能有问题,比如:人际交往这个活动可能不应该是和其他活动并列的,他应该也是一种横向的交叉活动,人际关系在其他活动中是可以发挥作用的。应该是这样:



从人的活动,到一个系统的开发部署,假设这其间的路程是100公里。很多情况下我们关注的是最后的10公里,前面的90公里,因为已经有人把结论告诉我们,所以经常被我们忽视,我们都认为那是理所应当的。

如果开发者和客户之间签开发合同,客户提出需求,开发者只管照做,然后客户就要买单。需求是什么——这个问题是客户的事情。但是如果是开发一个产品呢,把一个造好的东西拿给客户,希望客户买单,开发者就必须自己研究这个问题。

或者,读这篇文章的人自己就是那个客户,他怎样知道自己需要什么呢?

posted on 2006-07-20 13:36 小陆 阅读(11838) 评论(12) 编辑 收藏

评论

#1楼 2006-07-20 14:41 风满袖      

大概需求就是客户想要的东西。  回复 引用 查看   

#2楼[楼主] 2006-07-20 15:41 小陆      

TO风满袖:
这个我明白,我写这个东西是想问:需求为什么是这样,客户为什么想要这个东西?客户为什么要开发者把系统造成这个样子?
客户有没有更好的选择?
 回复 引用 查看   

#3楼 2006-07-20 21:16 邵利超      

需求一直以来都是多变的  回复 引用 查看   

#4楼 2006-07-20 21:44 omnislash      

需求来自愿景,愿景是用户想要达到的目标或是要解决的问题  回复 引用 查看   

#5楼 2006-07-21 08:51 风满袖      

任何选择都需要付出一定的代价。更好的选择也不是一下子就浮现出来的或者条件允许的。  回复 引用 查看   

#6楼 2006-07-22 10:48 奔跑者      

需求来自客户,但总是被我们优化之后再造出来.  回复 引用 查看   

#7楼 2006-07-24 20:43 ystruggle[未注册用户]

需求是从市场来的,有了市场才会有所谓的系统!  回复 引用   

#8楼 2006-08-08 16:44 Ring      

需求就是客户想要的东西, 但有时客户又不能完全把握他自己想要的所有东西。 这时就需要我们专业人员根据自己项目以往实施的经验,为客户提供一些思想,这些客户认为有价值的思想最终也可能变成了需求。 “需求从哪里来”, 需求应该根据客户的实际需要抽象出来。  回复 引用 查看   

#9楼 2008-06-09 10:51 金色海洋(jyk)      

要想做好软件的话,那就必须让自己深入了解客户的业务流程,然后用自己的思路和想法来影响客户的需求。

最后定下来软件要怎么做的是自己(程序员、设计师),而绝对不能是客户。

 回复 引用 查看   

#10楼 2009-01-03 09:02 Kim Jueng Suk[未注册用户]

to: 金色海洋;

不太同意你的观点,我想做为一个开发者,如果像你所说,认为了解了客户的业务流程,就可以按自己的想法和思路设计和开发软件,还要影响客户的需求,那么这个工程存在很大的风险,甚至有可能导致失败!也真的有某些开发者,在技术上一流,很自信,或者说自大,擅自改变功能,他觉得这样的功能更漂亮,简直就是完美极了,而沾沾自喜,呵呵。结果呢?在验收的时候,客户不需要!
不错,确实,在需求分析阶段,分析人员可以引导客户回忆和确定需求,但这不叫影响客户的需求。当然需求也和全部的利益相关者有关系,包括了客户,实际使用者和开发者等等,但开发者所关心和负责的技术需求、所实现的功能也都是为了能运行客户的实际业务,这终归也是为了客户的业务需求而服务。所以,软件要怎么做,不能以开发者实现功能为主,还是要以客户的需求为主。希望所有开发者不要犯这种错误!!
 回复 引用   

#11楼 2010-04-23 17:29 -远航-      

@Kim Jueng Suk
的确很经常出现这类事情,开发人员做了一个东西出来,拿给客户看的时候,客户却说“为什么要这样做的?我想要的不是这样的”。我想这不仅仅是再与客户沟通方面的问题,也与开发人员的自作主张有很大的关系。
 回复 引用 查看