软件需求工程包括了需求开发和需求管理两个部分,需求开发的目的是通过调查与分析,获取用户需求并定义软件需求。需求开发的主要活动包括:需求获取,需求分析和需求定义。
需求管理的目的是在客户与项目组之间建立对需求的共同理解,维护需求与其它工作成果的一致性,并控制需求的变更。 需求管理的主要活动包括:需求确认,需求变更和需求跟踪控制。
1. 需求获取
需求获取的目的是通过各种途径获取用户的需求信息,由于在实际工作中,大部分客户是无法完整地讲述其需求,因此需求获取是一件看似简单,做起来很难的一件事情,需求获取的质量,对后续的需求分析和需求定义工作将会产生重大影响。
1.1. 明确需要获取的信息(What)
需求分析师应在需求获取前明确需要获取的需求信息,以确保在实施需求获取时有的放矢。
通常需求获取要获取的信息包括三大类:
l 与问题域相关的背景信息(如业务资料,组织结构图,业务处理流程等);
l 与要求解决的问题直接相关的信息;
l 用户对系统的特别期望与施加的任何约束信息。
1.2. 明确所需获取信息的来源与渠道(Where)
需求分析师在明确了所需要获取的信息之后,应确定获取需求信息的来源与渠道,以提高需求分析师在需求获取阶段的工作效率,使得所收集的信息更加有价值、更加全面。
需求信息的来源通常包括:
l 来自客户的需求
a) 旧系统的用户或客户对系统安装、使用、维护、管理等方面的需求
b) 系统的潜在用户或客户对系统的需求
l 竞争对手的产品优势与不足
l 国家政策、业务规则以及相关行业标准
l 实施产品设计所需满足的需求
l 执行测试验证工作所需满足的需求
l 实施系统安装、维护所需满足的需求
获取需求信息的渠道包括:
l 用户或客户
l 研发部
l 市场部
l 旧有系统的研发项目组
l 来自项目组内
1.3. 获取需求(How)
在明确须获取什么需求、需求的来源与获取渠道后,项目经理应选择至少一种需求获取技术获取相关的需求,作为需求分析的依据。需求获取技术包括但不限于:
1) 用户访谈
用户访谈的形式包括结构化和非结构化两种。结构化是指事先准备好一系列问题,有针对性地进行;非结构化是只列出一个粗略的想法,根据访谈的具体情况进行发挥。有效的访谈需要灵活的结合这两种方法。
用户访谈具有很好的灵活性,有较广的应用范围,但实际操作时存在许多困难,例如客户经常很忙,难以获得充足的访谈时间;客户访谈需要需求分析师有很强的沟通能力,同时也要求需求分析师有足够的相关业务领域知识。
2) 用户调查
用户调查是通过精心设计提问问题形成调查问卷,然后下发到相关人员手中,让他们填写答案,来获取用户需求。
用户调查的方法最大的缺点是缺乏灵活性,由于缺乏面多面的交流,所获取的信息量也比较有限。因此在实际工作中,我们建议可以先采用用户调查的方式获取一定量的信息,然后有针对性地开展用户访谈。
3) 现场观摩用户的工作流程,观察用户的实际操作
俗话说,“百闻不如一见”,对于一些较为复杂的流程和操作而言,是比较难以用语言和文字进行表达的,对于这种情况,可以采用到客户的工作现场,一边观察,一边听客户讲解,从而更直观的了解客户需求。
4) 从行业标准、规则中提取需求
如果用户要求所开发的软件产品必须满足一定的行业标准和业务规则,需求分析师可以通过阅读政策法规、业务规则以及行业标准等各类相关的文档,并与相关领域的业务专家进行业务交流来了解客户的需求。
这种方法要求需求分析师有一定的行业从业经验,能够了解行业的发展动向,这对从技术出身的需求分析师来说是一个巨大的考验。
5