客户需求分析,很多程序员认为这是做需求的人的事情,程序员只要去理解做好的需求文档就可以了。其实这是一个很严重的错误。因为你不会分析,就很难很好地去理解。更何况有时候客户对需求的描述只是一句话。客户需求是一个很系统化的东西,好比一个中心思想、一个功能实现目的。就像我们要去北京看奥运,在这个实现广州到北京的交通方式有很多种,但只有知道了我们的真正目的,我们才能更好的选择去北京的交通工具。但如何去知道这个这个目的,这个过程就叫需求分析。
下面我以“关于易包网增加手机短信通知服务功能”需求为例子,讲一讲关于技术人员如何从一句话中去分析实现客户的需求的思路.
我们先来看看客户提出的需求:
“我们要做一个手机短信服务功能.就是网站上一些数据发生变动的时候,网站以短信的方式通知会员”---------客户说.
我们首先必须要做的第一件事是,读懂客户讲的内容.对方到底是需要什么?不难看出,客户说的内容是要一个“短信提示功能”,其实现理论就是:当网站上某些数据发生变动的时候,网站会自动给会员发送一条提示短信.
当我们知道了客户要实现的共能之后,紧接着需要了解的东西是:“这个功能怎么实现?实现需要包括那些内容?”
从以上我们得出的需求中可以了解到,这个功能的实现步骤大概是这样的:
网站某些数据发生变化-----监控器收到了信息---将信息以短信的形式发送给会员.基本实现理论大概是这样.那么接下来我们需要知道的是实现这个过程需要包括的内容有那些.
“短信提示功能”不难想到应该看包括以下一些内容:
1) 手机号码
2) 发送变化的数据有哪些?
3) 发出通知的内容
4) 使用该功能的人员有那些?
5) 出现的位置在那里
得知了这些东西之后,接下来需要分析的是影响这些内容的因素是什么,以及一些实现细节.
手机号码
a. 是否有收集手机号码的功能?
b. 谁的手机号码?网站上有那些角色?
c. 如果手机号码填写错误怎么办?是否需要手机号码确定功能?
d. 异地手机跟本地手机短信发送上是否有区别?
e. 定了功能,跟不定功能我怎么知道?是否有通知短信?
f. 我想要取消这个功能怎么办?
g. 我修改了手机号码了怎么办?
变动的数据
a. 变动的数据有那些?
b. 是否针对不一样的角色,发送不一样的数据内容?各个角色包括那些信息?
c. 有那些信息是必须发送的?有那些是可以选择发送的?还是系统默认?
d. 这数据是在什么时候发送出去?当天,还是当时?还是?
发出通知的内容
a. 是不是根据不同的角色对同一信息发送同样的内容?
b. 是不是发送信息上有先后关系?
使用的人员
a. 网站有那些角色需要用要这个功能?
b. 他们在操作上有那些不一样?
c. 不同的人员需要发送的数据是那些?
出现的位置
a. 整个实现的流程
b. 这个功能涉及到的页面有那些?
c. 那些页面已有?那些需要新增加?
分析这些完这些因素之后,就可以提交我们需要客户配合的内容有哪些.让客户给我们提供更详细的内容.
当客户提交完这些必备的数据之后,基本上我们需要知道的东西都了解了.那么下一步就是整体架构草图的实现了.
到这里算是完成了一半了,但是我们最好将实现的草图跟客户讲解一下,以确定是否符合客户要求的需求.当客户确定之后,(这是核心内容实现)基本上就算出错也错不到那里去了.
很多程序员做到这里以为就完成了,其实不然,到了这一步其实才是决定程序员层次的时候.
这里应该增加一个”实现逻辑调整,美化包装功能”
有些人会说,这是美工要做的东西,我认为不然.做了那么多年的程序,看了那么多的网页,修改了那么多的用户体验,如果没能把这些因素考虑进来,那么你再怎么样,一辈子也不能做出什么惊人的程序.
这个项目的需求基本就做完了,现在我们来做个总结:
1) 分析客户谈话,抓住核心需求
2) 分析实现需求包括的内容
3) 绘制实现架构草图
4) 美化包装功能.(能被注意,易懂,易操作,不难看)注:版权所有,如转载请注明文章作者以及出处!