1、明确整体思路
软件项目一般会包含客户的很多种需求,涉及客户的多方面业务和多个部门,因此需求调研一定要有一个明确的思路,从大处着眼,然后逐渐细化,直到详细的需求细节。比如,首 先是客户的整体要求和目标,然后是各个部门的各种业务项目及主要的业务流程,再到业务过程的每一个单据,每一条记录,以及表现形式等等。需求纷繁芜杂,在 需求调用的过程中要经常查看项目规格说明书,明确项目最初提出的目标和范围,主要是为用户解决什么样的问题,这样才能从众多的需求中分清主次,提取用户核心的、主要的业务。
2、进行充分准备
无论是面对面的需求会议,还是电话沟通,都应该注意在交流之前尽量取得更 多的信息以准备。每次需求会议前先根据当前掌握的信息和需求列出问题提纲,这样在调研的时候才能问到点上,既提高效率,又增加用户对我们专业素养的信任。 不仅我们要充分准备,也可以先让用户提供一份用户自己写的书面需求,事先做一个较明晰的阐述。另外,还要提醒用户必要的材料和数据准备,这些准备将有助于会议的进行,以免用户在会议开始后再找材料查资料,中断会议的进行,影响调研的效果。
3、区分调研对象
对不同的调研对象,询问和讨论的主题和内容应注意区分:一般对于用户的高层领导,不要讨论细节问题,要讨论高层的业务需求,讨论目标、方向等问题,另外要把握好时间,不宜过长;对于用户的业务层领导,要多询问一些业务流程方面的问题,他们在这方面最熟悉并有见解,一般来说,软件的大部分需求都是这个层次的人员提出的,和这个层次的人员要注意关系上的协调;对于具体操作人员,可以多询问一些对方的操作习惯、业务处理的细节等问题;对于系统管理员,则可以讨论一些技术上的问题,比如,通过其了解客户公司的软硬件及网络环境,用户的操作水平等。
4、详细明确的记录
记录包括会议记录和需求记录。每次沟通都应有详细的书面记录。这是形成需求分析结果的基础和下次需求调研的前提。如果不这样做,结束调研的时候只有一个模糊的印象,需求分析的结果仍然遥不可及,应力争每次需求会议都使需求分析向前推进一个阶段。讨论结束前将记录的文档向客户确认一下,让客户进行评论和更正,以保证没有错误和歧义。记录使用的语言须是用户熟悉的词汇,要使用明确肯定性语句,不要使用模糊的说法。比如,不能描述为一天产生的POS业务流水很多,应该明确到10的3次方的数量级,不能仅记录为要求日结账要快,应该明确到在200秒内完成等。
5、多思考多提问
软件需求是分层次的,用户对我们描述的往往只是用户需求层次的表面问题,只了解这些是不够的,还要理解用户为什么要提出这样的需求,做到知其然又知其所以然。作为需求分析员,必须要深入地理解客户的业务逻辑和需求目的。在大多数的软件系统中,最终用户可能都不清楚他的需求是什么。如果只知道用户提出的要求,而不知道其为什么有这个要求,那么很可能会误入歧途,获取不了用户的真正需求。比如针对上述会员多倍积分需求,用户要求在POS断网的时候也能实时执行。事实上如果不采用无线通讯这根本不可能,采用无线成本又太高。询问原因后,才知道实际上用户是担心数据丢失,我们只要保证数据不丢失,在网络连接正常后再执行就可以了。
(二)容易忽视的事项
1、确定权利与义务
只有当双方参与者都明白促成当前信息管理系统建设的成功,自己需要做什么,合作方需要做什么时,才能建立起一种好的合作关系。为了需求调研的有效进行,可以在开始之前向客户明确其需求权利和应尽义务。可以通过需求权利书规定客户在项目需求调研过程中的合理要求,这些权利同时对应着分析人员和开发人员的义务;而通过需求义务书规定客户在需求过程中应承担的义务,当然这些也可以认为是分析人员和开发人员的权利。
2、搜集用户资料
很多时候用户对自己需求的语言描述带有随意性和模糊性,又加上思维角度的不同,往往会造成我们理解上的偏差,而企业中的文档资料则真实地反应了用户的业务。它们包括,打印出来的各种单据、报表,企业的业务管理规则、制度,内外部考核办法等。这些资料将有助于直观、具体、高效的获取需求。比如,可以询问用户是否已经制定出多倍积分的书面草案,有没有相关的会员积分政策文档作为参考等。
3、到工作现场考察
对于难于理解的用户业务或性能方面的需求,一定要进行操作现场的实地考察,观察正在工作的用户,亲身感受实际业务流程、了解操作情况。现场考察是理解用户需求的最好的方式。主观推断往往和实际的业务操作有很大的出入。比如,有些开发人员不重视快捷键的设置,如果观察超市POS终端操作员的工作,将会明白这非常重要。再如,离岸BPO用来提交业务数据的软件系统对网路传输的速度、操作响应的速度等有非常高的要求,否则操作员难以忍受,并且大大影响工作效率。如果只实现了功能,而不能达到性能要求则远远没有满足客户的需求。
4、非功能性需求
非功能性需求包括,客户现有的服务器资源、网络资源及环境、硬件条件、操作系统、操作人员水平、由用户的工作特点决定的对性能的特殊要求等。如果不事先了解这些情况,或事先告知客户进行必要的资源环境准备,可能会导致最终软件无法部署,操作人员无法使用等情况。比如,用户服务器用的是免费的Linux操作系统,而我们开发的软件只能在收费的Windows操作系统上运行,将直接宣告项目的阶段性失败。
5、旧版本,相关软件系统和接口
如果项目是对原有的软件重新开发或升级,那么一定要仔细研究旧的软件系统的功能,并询问客户旧系统不能满足当前需求的原因,以期在新的系统中得以改善和提高,同时旧系统中优秀的功能特点要予以保留。如果用户当前已经使用了其他系统,一定要了解这些系统,看有没有重复开发,或功能不 足的补充。还应注意相关系统中的数据编码规范、操作规范,用户操作界面,以便于用户对新系统的适应、培训和维护。如果用户要求软件和现有的系统进行数据交 互或经过调研发现需要数据交互,那么一定要弄清数据接口的规范、接口双方的通信方式、数据存储方式、采用的数据库系统、数据结构等。比如,增加会员多倍积分模块,就要考虑数据接口,通信方式,界面一致性,尤其是POS端快捷键不能冲突等多个方面。