软件需求包括三个不同的层次,即业务需求、用户需求和功能需求,另外还有非功能需求。软件需求各组成部分之间的关系如下图所示。

* 业务需求(business requirement)反映了组织机构或客户对系统或产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
* 用户需求(user requirement)描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。
* 功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
* 非功能需求(non-functional requirement)是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。非功能需求包括过程需求、产品需求和外部需求三类,其中过程需求有交付、实现方法和标准等需求,产品需求包含性能、可用性、实用性、可靠性、可移植性、安全保密性、容错性等方面的需求,外部需求有法规、成本、操作性等需求。
软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中起着重要的作用。其中,功能需求充分描述了软件系统所应具有的外部行为;非功能需求描述了系统展现给用户的行为和执行的操作等,包括产品必须遵从的标准和规范、外部界面的具体细节、性能要求、设计或实现的约束条件及质量属性。
从不同的角度来看,需求具有不同的层次,即业务需求、用户需求、功能需求和非功能需求等。以一个字处理程序为例,业务需求可能是:"用户能有效地纠正文档中的拼写错误",而对应的用户需求可能是"找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词"。同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换。在这里,所有的用户需求必须与业务需求一致,而开发人员则根据功能需求来设计软件以实现必须的功能。从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息。需求与这些没有关系,它关注的是充分说明你究竟想开发什么。
|