如果你赞成客户的参与是发布一个优秀软件的关键因素,在项目的开始阶段就会努力致力于为你的项目征求各个客户的意见。软件需求的成功,和软件开发的成功都取决于开发者是否尽可能地采纳客户的意见。为了征求客户的意见,必须采取以下几步:
明确项目用户需求的来源。
明确使用该产品的不同类型的用户。
与产品不同用户类的代表进行沟通。
遵从项目的最终决策者的意见。
客户参与是避免期望差异(expectation gap)的唯一途径,这一期望差异表现在客户期望得到的产品与开发者所设计的产品之间不相符。然而,在项目的开始阶段仅仅简单地问一两个客户的需求,然后就开始编码,这样做是不够的。如果开发者仅仅为了客户的最初需求去开发软件,那么,他们可能要重新进行开发,因为,客户常常不知道他们的真正需要,而开发者也不知道。
用户提出“需要”的特性并不总是与用户利用新产品来处理他们的任务( t a s k )时所需的功能相等价。因此,当你收集到用户的意见后,必须分析、整理这些需求意见,直到你理解它为止,并把你的理解写成文档,然后与用户一起探讨,这是一个反复的过程, 并且需要花费时间。如果你不在这一方面花时间,对预期产品一致的看法未达成共识—最终的后果可能是返工,并且产品不尽人意。
需求的来源
软件需求可以来自方方面面,这取决于所开发产品的性质和开发环境。需从不同用户代表和来源收集需求,这说明了需求工程是以相互交流为核心的性质。下面是几个软件需求的典型来源。
1.访问并与有潜力的用户探讨
为找出新软件产品的用户需求,最直截了当的方法是询问他们。本章讨论如何寻找合适的用户代表,而在第8章讲述从这些代表中获取需求的技巧。
2.把对目前的或竞争产品的描述写成文档
文档可以描述一种所必须遵循的标准或产品所必须遵循的政府或工业规则。
3.系统需求规格说明
一个包含软、硬件的产品需要一个高档次的系统需求规格说明以介绍整个产品。系统需求的子集被分配到每个软件子系统中( Nelsen 1990)。附加的详细软件功能需求将从有关软件的系统需求里获得。
4.对当前系统的问题报告和增强要求指导用户和提供技术支持的工作人员是最有价值的需求来源。他们收集了用户在使用现有系统过程中所遇到问题的信息,还接受了用户关于系统改进的想法。
5.市场调查和用户问卷调查
调查有助于从广大有潜力的用户那里获得大量定量的数据,务必调查相关的用户并询问一些能产生反响的好问题。
6.观察正在工作的用户
对当前系统的用户和将来系统的有潜力的用户,分析员观察“日常工作”以获得经验,这些经验能提供很有价值的信息。分析员可通过观察用户与所关联的任务环境的工作流程来预见用户在使用当前系统时所遇到的问题,并能分析新的系统可有效支持工作流程的方面(McGraw and Harbison 1997; Beyer and Holtzblatt 1998)。比起仅仅简单地询问用户,并记下用户在处理任务时的步骤来说,直接观察用户的工作流程可以对他们的活动有更正确的理解。分析员必须抽象和总结用户的直接活动,以确保所获得的需求具有普遍性,而不仅仅代表单个用户。一个富有技巧的分析员还可以为改进用户的当前事务处理过程提出一些见解。
7.用户任务的内容分析
通常通过开发具体的情节( s c e n a r i o)或活动顺序(有时称作“情节”),可以确定用户利用系统需要完成的任务,分析员由此可以获得用户用于处理任务的必要的功能需求。这是使用实例方法的精髓。