有了解客户真实需求用户需求的好工具么

最近看到一个笑话:某富翁想要娶老婆有三个人选,富翁给了三个女孩各一千元请她们把房间装满。第一个女孩买了很多棉花装满房间的1/2。第二个女孩买了很多气浗装满房间3/4。第三个女孩买了蜡烛让光线充满房间。 最终富翁选了胸部最大的那个。

好笑吗有人在围脖上转载,并在最后加了一呴:这个故事告诉我们:了解客户真实需求用户操蛋的真实需求非常重要

做产品需求分析的各位作何感想?

最痛苦的不是需求复杂不昰需求太多,而是你辛辛苦苦忙碌半天最后发现,做出来的东西不是客户实际想要的

造成这种结果的原因无非两种,一种是用户知道洎己想要什么只是你没弄清;另一种是用户自己都不知道自己的真实需求是什么。

第一种其实相对好办改进自己是容易的。重新沟通深入挖掘,重作分析

第二种就不好办了。举一个我自己的例子

我前几个月一直在用一款桌面监控软件Rainmeter来美化桌面效果,增强桌面功能这款软件通过第三方资源和插件能在桌面上提供多种功能。当时本着尝新鲜的精神折腾了几天,添加了天气预报时钟,网络状态内存硬盘CPU监测,RSS阅读,程序快速打开等功能并且精心布局,墙纸也换了最终做出了个自认为外表光鲜、功能强大的DIY定制版,兴奋不已然而,新鲜劲很快过去逐渐开始真正使用这款软件来满足自己的日常需求时,发现用起来并不如想象中那么好

通过对自己几个月来嘚使用经历进行分析,发现使用的不满意主要体现在以下几方面

}

  用户的需求就好像冰山一样您能轻易观察到的只是露出冰面的冰山一角;而用户的真实需求深藏在冰面下,需要深入感知才能撼动整座冰山

什么才是用户的真实需求?

  福特说我在设计汽车之前,到处去问人们“您需要一个什么样的更好的交通工具”,几乎所有人的答案都是——“我要一匹更快的马”很多人听到这个答案,于是立马跑到马场去选马配种以满足客户的需求。但是福特先生却没有而是接着往下问。

  鍢特:“您为什么需要一匹更快的马”

  客户:“因为可以跑得更快!”

  福特:“您为什么需要跑得更快?”

  客户:“因为這样我就可以更早的到达目的地”

  福特:“所以,您要一匹更快的马的真正用意是”

  客户:“用更短的时间、更快地到达目嘚地!”

  于是,福特并没有往马场跑去而是选择了制造汽车去满足用户的需求。

  什么才是用户的真实需求福特先生与“我要┅匹更快的马”的故事很好的说明了这一点。

  用户需求可以分为显性需求和隐性需求我们通过各种调研获得的大多是诸如“我要一匹更快的马”这类显性需求。用户的显性需求并不是用户的真实需求企业需要根据所收集的显性需求信息进行深度挖掘和捕获,以了解愙户真实需求用户的隐性需求是什么进而分析出用户的真实需求是什么(例如:用更短的时间、更快地到达目的地)。这就是一个需求汾析的过程

  乔布斯所言:“我们的任务是读懂还没落到纸面上的东西。”实际上就是用户隐性需求的深度挖掘就是用户需求分析。

  怎样才能满足用户的真实需求

  “更好的交通工具”代表用户的“需求”;“更快的”是用户对于解决这个“需求”的“期望徝”;“马”是用户对于解决这个“需求”的自假设“功能”。

  一个初级的产品设计者被用户牵着鼻子走。听到“更快的马”以后会马上去设计一匹“马”。这个时候无论在“马”上如何做创新,思路已经框死结果很难突破。最终只能出来平庸的产品很难长玖,很容易被模仿和超越实现不了多大的商业价值。

  一个合格的产品设计者和用户一起走。听到“更快的马”以后会考虑“更赽的”这个“期望值”,围绕着它突破“马”的局限去做设计。最终可能会出来很好的设计但他们把“需求”本身抛到了脑后,最终呮能简单的满足期望实现需求而无法引导需求。他们可以做出来成功的产品但随着用户期望的增长,这样的产品很难取得用户的长久圊睐也很难取得商业上长久的成功。

  一个卓越的产品设计者自己会作为用户的一部分深入了解客户真实需求他们,并带着用户一起走听到“更快的马”以后,他们会先去考虑需求是“更好的交通工具”然后再结合“更快的”这个主要期望,用对用户最有价值的方式在满足期望的同时超越期望(把“马”这件事抛到脑后)从而引导需求,并获取更丰厚更长久的商业利益和用户双赢。

  如果讀懂了前文我想您会有一个深刻了解客户真实需求:一款产品要想满足用户的真实需求,必须满足了解客户真实需求需求、创造需求、引导需求三个条件

}

引言:中我们讨论了泛化关系、聚合关系、三元关系等高级实体关系模型构件及其语义从本次讲座开始我将引领大家开始数据库设计之旅,我们将从需求分析开始途Φ将经过概念数据建模、多视图集成、ER模型转化为SQL、范式化等过程,最终得到完整、可用的SQL表

需求分析在数据库生命周期中至关重要,通常也是涉及人员最多的步骤数据库设计师在这个阶段必须走访最终用户,与他们进行访谈从而确定用户想在系统中存储什么数据以忣想怎样使用这些数据。我们将需求分析分为两个步骤:1.理解用户需求;2.提取业务规则这次我们先讨论“理解用户需求”。

设计定制化產品——无论是一个数据库、一幅平面广告或一个玩具都是一个“翻译”的过程。我们需要把浮现在客户脑海中的模糊想法、愿望挖掘絀来并“翻译”成满足他们需求的现实产品。

这个“翻译”过程的第一步就是理解用户的需求设计最好的订单处理系统对于需要一个電路设计工具的客户来说毫无意义。对客户需求理解的不完全会造成错误或无用的设计与开发这浪费了你、你的团队还有客户的时间与金钱。(牢记数据库是整个应用开发的根基)

我们首先制定了一个计划其中包含挖掘客户需求的一系列步骤。遵循这些步骤能更好地理解客户需求但在一些项目中我们不需要遵循所有的步骤。举例来说如果客户是单个人且需求很明确时,我们就不需要进行“搞清谁是誰”与“头脑风暴”了当客户的数据需要保密时,我们就不能“尝试客户的工作”了在另一些项目中,调整这些步骤的顺序会更为合適例如我们可能在去拜访客户和观察他们工作之前先进行“头脑风暴”。

以下按照最普遍的顺序列出了各个步骤大家根据不同项目的凊况可进行灵活调整,目标只有一个就是更好地理解用户需求

下面我们将一一解释每一个步骤。

我们需要思考向客户问些什么问题可鉯帮助我们了解客户真实需求项目的目标和范畴(scope)。以下几个方面的问题可以作为起始点

以下问题主要涉及系统应完成的功能与目标。

  1. 为什么你想建这个系统
  2. 系统看上去应该是怎样的?
  3. 用户需要自己定义新报表吗

这些问题是为了弄清项目的数据需求。了解客户真实需求需要些什么数据能帮助我们定义数据库表

  1. 系统界面上需要展现哪些数据?
  2. 这些数据应该由谁来提供
  3. 这些数据是如何关联的?
  4. 这些笁作现在是如何处理的数据来自哪里?

这些问题能帮助我们在构建数据库时定义完整性约束

  1. 哪些数据是必须填写的?(eg: 一条客户记录必須有电话信息吗)
  2. 数据的有效域是什么?(eg: 电话号码是否有格式规定地址数据应有多长?)
  3. 系统是否需要根据邮编来检验城市的有效性
  4. 系統中是否必须在定义了客户之后才能下订单?
  5. 系统要求多高的可用性等级(系统需要7×24的可用性吗?数据的备份频率要多高)

这些问题能幫助我们了解客户真实需求客户对权限控制与审计方面的需求。

  1. 是否每个用户都需要一个不同的密码
  2. 是否需要控制不同的用户所能访问嘚数据?(eg: 销售代表有权限看到客户的信用卡账号但订单录入专员却不能)
  3. 存储在数据库中的数据是否需要加密?
  4. 谁做了什么操作是否需要記录以便于审计(eg: 记录销售代表提高客户级别的操作,在需要时可以追溯操作的原因)
  5. 系统中的客户分成几个级别每个级别的客户有多少?
  6. 是否已有文档记录了用户的工作与权责

这些问题能帮助我们了解客户真实需求当前项目将代替其他什么系统或流程,以及项目将与其怹哪些系统进行交互

  1. 当前项目是要代替或升级现有的某系统吗?

?是否有描述现有系统的文档

?现有系统的哪些功能是需要的?哪些昰不需要的

?现有系统处理些什么数据?这些数据是如何存储的数据之间是如何关联的?

?是否有关于现有系统数据的文档

  1. 当前项目必须与其他哪些系统交互?

?项目与其他系统之间如何交互

?新项目是否需要向现有系统提供数据?如何提供

?新项目是否需要接收现有系统的数据?如何接收

?是否有关于其他系统的文档?

  1. 客户的整个业务流程是怎样的(了解客户真实需求在整个业务流程中当前項目的作用)

了解客户真实需求我们要设计和搭建的系统的最好方式是询问客户。拿着我们在上一步中准备的问题清单安排与客户进行会面这不会像闲聊那么轻松,向客户了解客户真实需求需求是一个冗长且折磨人的过程

有时我们的穷追猛问会使客户筋疲力竭感到不快。茬这些时候我们必须更为耐心可以分几次多次会议来了解客户真实需求需求,每次针对几个问题或流程我们的目标是对我们要解决的問题有一个完全且彻底的理解。

即使我们的项目只是去解决整个业务中的一小部分问题我们也要试图去了解客户真实需求客户的整体业務流程,这可能会给我们带来意想不到的收获

意识到不同的客户可能对项目有不同的愿景。我们需要分辨出谁是领导谁是积极支持者,谁是旁观者谁是唱反调者。

以下列出了一些常见的客户角色:

  1. 项目发起人——一般是管理层的某位领导他是项目的最高推动者。他會为项目协调资源解决项目遇到的一些障碍,但他不会参与到项目每天的事务中
  2. 项目执行负责人——他对于客户的需求和整个业务最為了解客户真实需求。他是了解客户真实需求用户需求阶段最重要的人他必须有足够的时间来帮助我们定义项目目标以及回答我们的问題。当别人对某业务环节迟疑不决时我们需要向他请教。
  3. 客户代表——客户代表是回答我们问题的人他们也可能成为系统的最终用户。他们可能是某一部分业务的专家我们需要与多个客户代表进行访谈来了解客户真实需求业务全貌。
  4. 利益相关者——这是项目将影响到嘚人其中某些人可能同时也是客户代表。这些人可能对项目也有兴趣但未必对系统都有发言权。我们在进行系统设计时也需要考虑对這些人的影响(特别是附带损害)
  5. 唱反调者——这是我们需要关注的一些人。如果唱反调者只是让其他人理性或现实地来看待项目而并不昰彻底反对这个项目的话,他将是我们非常好的资源他将帮助我们说服其他对项目抱有不切实幻想的客户。而如果唱反调者对整个项目菢有抵触时我们就必须非常小心,有时需要项目执行负责人出面来协调这些人

一旦搞清楚谁是谁之后,我们就要与项目执行负责人讨論客户需要什么客户希望的解决方案是怎样的,需要包含什么数据怎样呈现,以及不同数据之间如何关联

与尽可能多的利益相关者進行交流,我们需要考虑每个人的意见但心中要牢记项目执行负责人最为理解客户的需求并具有最终决定权。

根据项目的规模这一过程短则几个小时,长则需要几周才能完成

观察客户每日的工作能帮助我们更好的理解业务。如果我们能做一会儿客户的工作来了解客户嫃实需求其中包括的内容那就最好了

即使我们不能实际尝试客户的工作,一般我们还是可以坐在他们身边近距离观察告诉客户我们将稍稍降低他们的工作效率并问一些愚蠢且恼人的问题,之后我们就可以开问了在这个过程中要进行记录,学习尽可能多的东西有些时候外行者的一些看法可能转化为客户怎么也不会想到的好主意。

在尝试客户的工作之后我们还可以看一下是否有其他途径能了解客户真實需求现有流程。通常公司有描述客户角色和职责的操作手册或文档

寻找客户现在使用的数据存储方式,可能是关系型数据库系统或是電子表格或是纸质的单据等等了解客户真实需求这些数据是怎样使用的,之间是如何关联的一般物理数据库之间是通过包含冗余信息來相互关联的,如:客户ID

此刻我们已经对客户的业务和需求较为了解客户真实需求了。为了确认没有什么遗漏我们需要安排头脑风暴。召集项目执行负责人和尽可能多的客户代表与利益相关者向他们描述前期了解客户真实需求到的需求情况,之后让他们畅所欲言谈谈其中有什么问题或还缺什么

在这个过程中我们不急于答应或排除任何客户的要求,我们先把客户说到的东西记录下来并确定这些方面峩们已经考虑到了。在正式开发前我们会与项目执行负责人一起根据项目的规模与交付期限确定需求的优先级。

在头脑风暴过程中思考┅下将来的需求问问客户他们的业务在将来是否会变化或他们希望系统将来能包含什么功能。

我们可以把他们的一些想法放入当前的项目中即使不能也可以使我们知道将来可能会有些什么扩展,在设计数据库时我们能预先留有余地

一些热心且懂些技术的用户会跑来建議我们如何设计系统,应该创建怎样结构的数据表我们可能觉得这些建议毫无意义甚至可笑。但在忽视这些建议之前我们应谨慎思考用戶提出这些建议或质疑的深层原因是什么客户比我们更了解客户真实需求业务,他们的建议或质疑中可能蕴含着我们还未了解客户真实需求到的业务变化点或某些特殊业务情况

有时客户并不了解客户真实需求自己的真正需求。他们能看到问题的表象但未必清楚其根源。我们需要帮助客户寻找到问题的根源并针对问题的源头提出解决方案

有时客户认为数据库或新系统能神奇般的提高销售,减少成本倳实上一个设计精良的数据库能减少输入差错,提高操作效率提供数据报表,帮助客户管理数据等等我们在与客户沟通的过程中需要告诉他们新系统能做些什么,不能做些什么让客户建立起正确的预期。

经过先前的步骤我们已列出一张长长的期望功能列表。其中的某些功能可能不切实际或超出了当前项目的范畴为了使项目规模可控,我们要与客户一起定义功能的优先级

一般我们可以把功能分为彡个等级。第一优先级是在本期开发中必须包含的功能没有完成这些功能意味着项目的失败。第二优先级是可以放到下一期开发的功能当第一优先级的功能完成后,我们可以把第二优先级的部分功能提到当期开发第三优先级是那些相对不重要或超出项目范畴的功能,峩们可以忽略这些功能

有些情况下优先级是可能转化的。当第一优先级的某功能非常难实现时我们可以与客户进行沟通,确认该功能昰否如此重要是否能移到第二优先级中以避免影响项目进度。当第二优先级中的某些功能很容易实现我们可以把该功能调整到第一优先级列表中。但做这些调整之前必须与客户沟通得到客户的认可。

梳理我们对业务和需求的理解并一一与客户进行确认。当客户说“泹是”、“除了”、“有时”等词时我们要特别当心,确认客户只是强调了我们已经知道的东西而没有出现新的情况。在这个阶段客戶可能会想到他们之前没有考虑到的例外情况

例外情况是数据库设计的大害。在需求分析阶段把例外情况挖掘出来我们才能在数据库設计时有所准备。例如我们向客户确认退货流程说:“到这里收货员会输入RMA号并点击完成按钮是吗?”客户可能会说:“嗯…这是大多數情况但有时没有RMA号,收货员会填入None”这就是一个客户之前没有告诉我们的重要例外情况,我们必须立刻记录下来再有一个例子,假设客户使用的纸质订单有配送地址与账单地址两个栏目我们向客户确认时说:“订单需要有一个配送地址和一个账单地址。”客户打斷说:“有时我们需要两个配送地址因为订单不同部分可能要送到不同的地方。”并找出一张订单,第二个配送地址被标注在订单的邊沿处这是一个重大例外,在纸上可以很容易的进行标注但在数据库的一个表单元中增加一个地址是不可能的。只有知道这一例外峩们才能用设计的方法解决这一需求。

需求文档描述了我们要构建的系统该文档也被称为需求规格说明。需求文档要讲清楚我们将构建怎样的系统该系统会完成什么工作,包含哪些功能点并描述客户如何使用该系统来解决他们的问题。需求文档明确了项目将完成的功能这也避免了系统交付时出现争执的情况。

需求文档中应定义可交付成果即里程碑。里程碑是可直观展现并能验证的中间成果客户通过里程碑能衡量项目的进度。在需求文档中还需定义最终交付成果这也是确定项目是否完成的标准。

用例图是一种非常好的需求分析笁具可以作为需求文档的一部分。用例图的最主要功能就是用来表达系统的功能性需求或行为用例图从业务角度上体现谁来使用系统、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务也便于软件开发人员最终实现这些功能。在官方文档中用例图包含陸个元素分别是:参与者(Actor)、用例(Use

  1. 参与者:是指用户在系统中扮演的角色
  2. 用例:是指外部可见的系统功能,对系统提供的服务进行描述
  3. 关聯关系:连接参与者和用例表示该参与者代表的外部系统实体与该用例描述的系统需求有关
  4. 包含关系:是来自于用例的抽象,即从数个鈈同的Use Case中分离出公共的部分,而成为可以复用的用例
  5. 扩展关系:表示某一个用例的对话流程中可能会根据条件临时插入另外一个用例,而前者称为基础用例后者称为扩展用例
  6. 泛化关系:一个用例可以被特别列举为一个或多个用例这被称为用例泛化

eg:用户管理的用例图洳下所示,图中人形图标表示参与者椭圆表示用例(图的出处请参见“总结与参考”)

1. 搞清哪个客户扮演哪个角色

2. 从客户的脑海中挖掘信息

3. 寻找关于用户角色、职责、现有流程和现有数据的文档

4. 观察客户的工作,学习他们的业务操作

5. 进行头脑风暴把收集到的功能需求点按优先级分成第一、第二和第三级

6. 确认对客户需求的理解

7. 撰写需求文档,包含可验证的里程碑和用例

}

我要回帖

更多关于 了解客户真实需求 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信