这是大三上学期写的,具体时间是软件工程课程的“需求分析”阶段结束之后。写这篇文章的目的是将自己在这个过程的收获记录下来,并分享给其他三个团队成员。刚才重看课程总结,想起还有这篇,就发到博客上了。
欢迎大家点评,以下是正文:
- 与客户交流非常重要。没有明确需求,就会做很多无用功: 你以为用户是这样想的,写出代码。交给用户时,用户说他想要的不是这样的功能。那你就得改代码了。如果这个功能牵扯到其他很多功能呢?牵一发而动全身。到时候将会苦不堪言。
- 一定要主动与客户联系。你要知道,你做的是真实的项目,跟你的收入有关系。不要害怕与用户交流,多交流可以减少很多麻烦。
1、交流前
仔细研究客户已给出的需求描述。并记录在研究时所有的疑问,无论大小。
记住,从多个角度进行分析。尤其要从用户的角度进行分析。比如教师报课系统,从教务处的角度看,是整合多张表格;而从程序员的角度,是对数据库添加的操作。要体会他们是如何看待这个问题的。
- 将客户的需求进行分类,哪些是核心功能,哪些是不太重要的功能。
- 把所提供的功能,用思维导图画出来。这样客户就能从宏观上看到所有功能。
做出原型,尽可能把所有功能体现出来。这里就深入较为细节的部分,能在很大程度上解决需求不明确的情况。你理解的用户需求,和用户真实的需求,这之间相差有多大,通过原型就能体现出来。
如果可以,做出可以操作的原型,而不是静静地躺在纸上。网上有在线的原型制作工具,提供了制作可运行的原型的功能。
2、交流过程
带上思维导图和原型(纸质原型,能交互的原型也带上)。
客户可能无法在一开始就完全理解你跟他都说了什么,没有一个总体的概念。这些东西他可以在你进行讲解的时候查看对应的部分,也可以带回去,好好了解你会做成什么样。
带上笔和纸。
仅有思维导图和原型是不够的,客户可能提出新的疑问,而这些疑问并不能通过思维导图和原型进行解答。如果只是用语言描述,客户可能会理解错你想要表达的意思。因为你在讲解的时候,在头脑中是有成像的,但是用户在脑中并不能及时生成图像,也就很难理解。这时候就可以用笔在纸上将你的想法画出来,这样更利于用户理解你的想法。
如果项目不涉及机密,一定要提出录音请求!
这有多重要呢?如果你没有多少经验,客户传达的很多重要的信息,一开始你可能没发现他们的重要性,或者认为你能记住它们,但过后却忘了。客户描述需求时,很可能自相矛盾;或者描述不清楚,很难理解;或者你刚好在思考他的上几句话,漏掉了他正在说的重要信息。而一旦录音,你可以不用害怕忘记什么重要信息,可以更专注于如何引导出用户需求。
详细描述原型的每一个功能该如何操作。
使用“用户场景”进行描述:
- 给出一个目的
- 从软件打开开始,一步一步展示,直至达到这个目的。 用这样的方式给客户展示一遍,能让客户较为全面了解你的软件将做成什么样子。
要判断是否能够完成客户的每一项需求,要大胆的说“不”。
不能老是让客户来决定该怎么做,有些客户的要求会让你在实现功能的时候变得很复杂。你可能认为,客户说怎么做就怎么做,这样就是完美的了解用户需求。尽管用户需求很重要,但是砍掉不合理的需求也很重要,这样才能实现共赢。
描述完你的原型之后,对这次交流进行一个总结。
让客户知道你是否都了解了刚才你们交流的内容。这样客户会更放心一些,因为他有了一个总体的概念。
交流结束,一定要留好联系方式。让客户可以方便联系到你,而你也可以方便联系到他。
最好再找客户要一下邮箱,这样可以在必要的时候发项目进展给他,让他可以对项目进行反馈。
要让客户记住你的名字。
不然客户怎么称呼你?
3、交流之后
- 整理在交流时的笔记。
听录音,补充笔记。
这时候你应该能从录音中听到很多你原本没注意到的地方。
整理完之后,修改思维导图和原型,再配上功能说明文档,发给用户。