参考书《术以载道——软件过程改进实践指南》
在需求工程中,需求获取阶段是与用户交互最多的一个阶段,但绝大部分用户不懂需求分析方法,他们不知道怎样全面而又准确无误地表达自己的需求。因而需求分析人员要掌握很好的方法和技巧。通过恰当地启发、引导用户表达自己的需求,为项目的成功打下一个良好的基础。
一、需求获取原则
1)深入浅出原则
a,用户需求调研要尽可能地全面、细致、调研的需求是全集,系统真正实现是其中的一个子集。
b,调研得细致全面可能一时看不到有什么作用,但是这样做可以对应用领域的业务了解得很透彻,灵活得应对需求的调整。
c,调研得细致,并不等于在分析时面面俱到地将调研内容都纳入新系统中,实际可能实现得很少,但在架构设计时可以考虑对本次未实现的需求如何处理。
d,对需求理解越透彻,系统就会开发得越简单。
案例:
某公司销售财务系统软件产品,客户对产品提出20多个需求变更;但开发部门认为我们做的是产品,不是定制开发,不想进行变更。对需求理解更深的财务总监,亲自与客户沟通,对每个需求变更进行沟通,逐个提出了解决方案,客户的业务如何做更合理,按照这种合理的做法,软件中已有的功能是什么,而客户的需求满足了对方。最终软件没有做任何修改,就销售出去了。
2)以流程为主线的原则
1,在与用户交流的过程中,应该用流程将所有的内容内容串联起来,如单据、信息、组织结构、处理规则等,这样便于沟通交流,符合用户的思维习惯。
2,流程的描述既要有整体、又要有局部;既要强调总体的、全生命周期的业务流程,又要有细化的、分支的业务流程。
3,在分析业务流程并进行优化时,要把握以下几个方面
4,流程中是否存在不必要的环节
5,是否可以将决策的权利放到业务部门
6,流程是否可以简化
7,流程中的每个处理环节是否起到了增值作用
8,哪些流程可以并行处理
二、需求调研步骤
1)需求调研的方法:
与用户个别交流、需求讨论会、查阅相关的文档、分发调查问卷、现场访问客户、业务流程分析、同类产品分析、回顾以往项目、观察用户对原有系统的使用。
不同的方法适用不同的场景,需求访谈是最常用的一种方法。
2)需求调研步骤
第一步:收集资料、了解概况、初步划定系统的范畴
第二步:识别所有的需求提供者,可以通过询问以下问题来识别所有可能的需求提供者
谁使用该系统?
谁维护该系统?
谁需要从系统中获取数据?
系统的运行会影响到谁?
谁推广该系统?
谁测试该系统?
谁生产该系统?
谁购买该系统?(项目发起人?)
案例:某公司需求提供者识别准则
第三步:准备调研问题清单
针对不同管理层次的用户询问不同的问题。在实际访谈中先按照准备的问题进行提问,然后再根据用户讲解内容追加问题。如下是一通用问题清单,供参考。
现有的系统是如何运行的?
现有的系统存在什么问题?
希望新系统解决什么问题?
希望交付哪些工作产品?
最终用户的背景如何?
对系统的速度、可靠性、安全性、数据容量等非功能性的需求?
系统的运行环境是什么?
业务流程的启动条件、终止条件、正常事件流、异常事件流、输入数据、处理规则、输出数据
数据的名称、来源、计算方法、类型、计量单位、精度、取值范围、去向、生成时间、产生的频度、高峰期的频度、存储方式、保密要求
最重要的3项需求是什么?
将来有何变化
项目发起人(一般是老大级别的人)最关注的需求
第四步:需求访谈
需求访谈前要事先和被访谈的人沟通计划,可以事先把问题单发给对方,让对方提前准备。
建议访谈时至少有2位需求分析人员参与,一般三人为宜,一人负责询问,一人负责记录,一人负责补充问题。
在询问时,应包括但不限于问题单中的内容,可以根据被访谈人的答复,随时调整,新增问题。
第五步:总结归纳,多次迭代调研。
在访谈结束后,及时整理沟通的内容,识别新的疑问点,再次和客户确认这些问题。直到没有新的疑问点。
整理沟通内容时,需要对客户的需求进行穷举、分类、分层、归纳和抽象。
第六步,编写需求规格说明书,与客户确认需求文档
三、需求获取的重点
1)平均频度
业务发生的频繁程度,即在单位时间(分钟、天、月、旬、年等)内发生的次数,这个数字可以是一个平均值或统计值。
]频度越高,数据量越大,对响应的时间、易操作性等要求就越高,在数据存储时对大频度的业务或单据也要进行充分考虑。
2)高峰期的频度
必须保证系统在高峰期的响应时间,多系统进行测试时要模拟高峰期的业务频度。
有哪些数据,每项数据的精度,计算生成方法,取值范围
业务数据是后续进行数据结构设计的最基本依据
数据的精度是定义数据库中字段长度的依据
计算生成方法是设计计算法的依据
取值范围与计算生成方法是数据完整性检查的依据
数据的来源与用途
对数据的来源与用途追踪可以调查出各个业务、各个单据、各个报表、各个部门之间的联系
有哪些特殊情况,在某个作业环节出错时通过何种用途进行弥补
用户领域中有很多,合理但不合法,不合理也不合法的特殊情况,他们出现的机会比较少,用户往往遗漏这些问题,需要调研人员挖掘出来,这些特殊情况有时是系统必须处理的
当用户在某个作业环节出现失误时,手工系统有时候采用正规的手续进行纠错,有的则相当随便,这些情况出现的概率很小。需求分析人员可以采用穷举的方法,假定在每一个环节都出现失误,逐个环节询问用户的处理方法,防止遗漏。这些细节如果不调研清楚,往往会对系统产生深远的影响。
4)将来有和变化
需求在未来有变化是必然的,如果只满足现在,不考虑将需求的扩展,系统的寿命就不会长久,对用户的投资是一种浪费,同时也会给开发商增加升级工作量。因此为了防患于未然,要充分考虑系统的可扩展性,在系统设计时将以后可能的变化考虑在内。
四、需求获取的注意事项
在调研前和用户讲清楚调研的意义、过程以及需要注意的问题。
用户的配合是需求调研成功的基础。调研的过程往往反复多次,用户不一定理解这个过程,调查时要和用户讲清楚。
做好调查前的准备工作。
在调查前要准备好问题单,对问题合理分类,安排好问题的次序,并事先提供给用户便于其准备,以提高工作效率。
提问时以一人为主,其他人注意记录和查找问题。
在用户讲解时,不要打断用户,要使对方有充分的表达机会。
对询问的问题要及时、准确的记录,以便整理需求文档。
调研是要以流程为主线,以输入、处理、输出的思想作为总体的主线。
在我们进行需求调研时,和用户沟通业务最能激发他们的热情讲解需求,即每天他们在干什么。
收到其他环节或岗位传递来的哪些信息?如单据报表等,做了哪些加工处理?再传递给哪个环节或岗位。
尽可能多的记住用户的姓名、职务、爱好等。
在调研开始、结束、中间休息时,可以多了解用户的爱好等各种信息,拉近和用户的距离,和用户成为朋友,让客户有参与感。
同样的需求要从不同的渠道进行验证。
在开发软件需求时,需要从多个用户那里得到相同的需求,彼此进行验证才能确定是否采纳那个需求。