- 审计跟踪
- 报告要求
- 授权级别
- 法律或监管要求
- 业务规则
- 管理功能
- 认证要求
- 报告要求
- 外部接口
- 合规性
- 文档
- 隐私
- 可移植性
- 质量
- 可靠性
- 弹性
- 响应时间
- 可扩展性
- 稳定性
- A < 定义用户类型 > 希望 < 指定具体目标 > 以便
- 需要在网站的顶部栏上放置一个搜索字段
- 一旦用户点击“提交”按钮,就会开始搜索
- 显示语言为英语
- 搜索框中最多可以输入 150 个字符
- 包括系统的简要概述,以及任何相关背景细节和需要预先定义的术语。
- 总体描述。包括对项目、其商业价值和总体项目愿景所做的任何假设。
- 具体要求。定义要包含在系统中的特定属性、功能要求以及任何相关数据库要求。
如果您曾经启动过一个新项目,但后来却在流程后期变成了一个巨大的挑战,那么您就会知道,预先明确定义的需求对于成功至关重要。预先定义需求可以让您有效地管理客户期望,并创建一个顺畅无缝的实施流程。
然而,如果项目缺乏这种预先明确性,则会导致项目范围定义模糊,结果达不到目标。卡内基梅隆软件工程研究所的一项研究发现,软件开发成本的 60% 到 80% 都花在了返工上。此外,成功的需求管理可以消除 50% 到 80% 的项目缺陷。
那么,您如何确保您的需求定义得更准确、更清晰呢?首先要了解功能性需求和非功能性需求之间的主要区别,并了解它们在项目成功中所起的作用。
功能性需求关注项目应该做什么,而非功能性需求关注项目应该如何做。让我们进一步分析一下。
功能性需求和非功能性需求有哪些不同的使用案例?
什么是功能需求?
功能需求关注软件必须如何执行并指定系统所需的行为;例如,当满足特定条件时,系统将向新用户发送电子邮件。另一个例子是,只有管理层的员工才能查看工资数据。更多功能需求的例子包括与以下内容相关的内容:
什么是非功能性需求?
非功能性需求对于软件系统的可用性至关重要,如果您没有仔细定义它们,最终用户的体验可能会受到不利影响。非功能性需求的一个例子是定义网站必须加载的速度,或者指定网站必须处理 1000 万用户而不会遇到任何性能挑战。非功能性需求也可能与安全性有关;例如,用户必须在首次登录时更改其初始登录密码。更多示例包括与以下内容相关的示例:
非功能性需求侧重于系统的操作而不是其行为;例如,在访问期间必须在三秒内为用户更新数据。非功能性需求也可以通过指标来定义,并与系统随时间演变的方面相关,例如可管理性或文档。
功能需求与非功能需求的属性
在比较功能性需求和非功能性需求时,请考虑功能性需求可能确保系统在用户单击按钮时加载特定网页。非功能性需求可能决定网站的加载速度。加载缓慢的网站会对用户体验产生不利影响,这就是非功能性需求至关重要的原因。
什么是用户故事?它们有何帮助?
在考虑需求并定义这些需求时,您会发现考虑整合用户故事很有帮助。用户故事基本上是从用户的角度对软件功能的描述。故事定义了您希望系统执行的操作以及这会如何影响整体体验。基本公式可能如下所示:
用户故事中还应包含验收标准,这是产品需要解决才能被客户接受的条件。为每个用户故事创建至少一个验收标准。一些示例可能包括:
用户故事在非功能性需求的背景下很有用,因为它们可以让您更深入地了解用户体验并了解如何使该过程更顺畅。
为什么非功能性需求比功能性需求使用更多的指标?
非功能性需求帮助公司衡量系统的成功,因此它们必须是可衡量的。指标必须是定性和定量的。例如,你可能要求系统能够处理未来的扩展。这是一个定性目标,但让我们更进一步,也将其量化。你可能要求系统在未来三年内处理至少 30,000 名用户。
关注定量目标的好处是,目标很容易衡量,你和客户可以就成功的模样达成一致。
什么是需求规范?什么是需求规范文档?
软件需求规范文档(也称为 SRS 文档)说明了软件的功能以及对其性能的期望。该文档还强调了产品在用户功能方面的需求。大多数文档都包含总体目的并定义功能性和非功能性需求。您可能希望在 SRS 文档中包含以下几个部分:
如果您想查看 SRS 文档的示例,密歇根州立大学有一个可以为您提供创建自己文档的起点的文档。
跟踪需求:为什么传统文档可能达不到目标
可追溯性对于项目成功至关重要。Gartner 强调了公司难以实现可追溯性优势的主要原因之一:
“由于成本、可用性和熟悉度,最广泛采用的需求工具仍然是通用文档软件,例如 Microsoft Office 或 Google Docs(占市场份额的 40% 至 50%)。然而,这些工具往往导致管理不善的需求,从而消除并超过了工具本身的任何成本效益。需求最终被记录在各种文档和电子表格中,并辅以非托管版本的便签,没有可追溯性或可重复使用性。这会导致更昂贵的用户验收测试周期,无论是执行时间还是在流程后期发现的问题的补救,解决这些问题的成本都要高得多。”——Gartner 研究
软件和硬件团队必须在整个开发过程中共同努力并协作,以定义市场需求、功能性与非功能性需求、测试用例和其他关键信息。然而,当团队使用不同的工具和术语并使用不同的方法时,这就会成为一个挑战。
答案是在产品开发过程中将数据、对话和决策连接到一个系统中。这使您能够就系统内的需求与人们进行协商和协作,捕捉决策和行动,并将这些信息与需求相关联。日后,如果您需要重新审视决策,所有数据都会被存储起来,并且很容易找到。
功能性需求与非功能性需求的比较
每个软件项目都有愿景、目标和想要达到的目的地。功能性需求和非功能性需求通过设定明确的界限帮助您更轻松地实现该目标。这些需求可帮助您回答最关键的问题,并确保产品开发成功。
功能性需求与非功能性需求至关重要,但由于非功能性目标主要关注用户体验,因此可以说它们更为关键。了解每个类别的作用可让您更成功地定义和跟踪每个类别,并创建满足客户期望的路线图。