1
面向对象软件工程实践指南
1.2.5.1 5.1 需求定义阶段的主要内容
5.1 需求定义阶段的主要内容

IEEE软件工程标准中将需求定义为:

(1)用户为了解决问题或达到某些目标所需的条件或权能(capability)。

(2)系统或部件为了满足合同、标准、规范或其他正式规定文档所规定的要求而需要具备的条件或权能。

(3)反映上面(1)或(2)所描述的条件或权能的文档化表述。

从另一方面看,软件的需求又可以分为三个层次:

(1)业务需求:反映组织或客户对业务的高层次的目标要求。业务需求通常来自项目投资者、实际用户的管理者或产品策划部门。开发软件都是为了达成某种业务目标。业务需求一般在项目立项前就已给予定义。

(2)用户需求:描述用户使用软件产品必须要完成的任务或者满足的条件。用户需求派生自业务需求,用户希望通过软件来达到业务上的目标或者满足业务上的要求。

(3)功能需求:定义设计开发人员必须实现的软件功能,使得用户能够通过软件来完成他们的任务,从而也满足了用户需求和业务需求。

软件需求获取有不同的渠道和形式,以下是经常采用的形式。

(1)面谈和问卷调查:通过和用户面对面的沟通进行需求获取是最经常采用的方式,为了达到效果,必须具有一定的谈话技巧,否则可能引起用户的反感或者效率不高。有时,也会结合问卷调查来获取更加明确的需求。

(2)小组讨论:将用户和开发团队组织在一起通过会议的形式进行小组讨论也是需求获取经常采用的方式。小组讨论的组织也要有一定的技巧,避免在会议中经常出现的效率低下,少数人占有发言权的问题。

(3)情景串联:将若干界面通过讲解串联起来,以描述针对特定的功能用户如何与各个界面进行交互,使得用户可以有直接的感受,从而可以提供意见和建议。

(4)观察业务流程:对实际的业务流程进行观察,从中了解业务中需要解决的问题,确定将来利用计算机和软件可以如何重新组织业务流程,以及软件如何适应用户的实际工作习惯。

(5)现有产品和竞争产品的描述文档:如果一个产品的目标是取代现有产品或者竞争产品,那么现有产品和竞争产品的功能和性能就是目前待开发软件所要比照的,并且通常待开发产品应该具有比现有产品和竞争产品更好的功能和性能。

(6)市场资料:通过各种渠道获取市场上对产品的期望。

需求定义阶段的任务就是获取正确的需求,并通过规范的方式进行需求的表达。这个阶段的结果将主要体现在软件需求规格说明文档中。

有时也会把软件需求描述中的一些内容列成单独的文档,如:

(1)补充规格说明:用以描述非功能需求、对软件产品的约束等。

(2)词汇表:用以对需求中涉及的关键术语进行明确定义。词汇表可以作为需求分析时识别类的依据之一。