功能性需求 vs 非功能性需求
功能性需求与非功能性需求之间的主要区别
- 功能性需求定义了一个系统或其组件,而非功能性需求定义了软件系统的性能属性。
- 功能性需求与需求分析一起有助于识别缺失的需求,而非功能性需求的优势在于它有助于确保良好的用户体验和软件操作的便捷性。
- 功能性需求是动词,而非功能性需求是属性
- 非功能性需求包括可伸缩性、容量、可用性、可靠性、可恢复性、数据完整性等,而交易更正、调整和取消、业务规则、认证要求、报告要求、管理功能、授权级别、审计跟踪、外部接口、历史数据管理、法律或监管要求是各种功能性需求的类型。

什么是功能性需求?
在软件工程中,功能性需求定义了一个系统或其组件。它描述了软件必须执行的功能。功能就是输入、行为和输出。它可以是计算、数据处理、业务流程、用户交互或任何其他具体功能,这些功能定义了系统可能执行的操作。
软件工程中的功能性需求有助于捕获系统的预期行为。这种行为可以表示为系统需要执行的功能、服务或任务。
什么是而非功能性需求?
非功能性需求定义了软件系统的质量属性。它们代表了一组用于评判系统特定操作的标准。例如,网站加载速度有多快?
非功能性需求对于确保整个软件系统的可用性和有效性至关重要。未能满足非功能性需求可能导致系统无法满足用户需求。
非功能性需求允许您在各种敏捷待办事项中对系统设计施加约束或限制。例如,当并发用户数超过 10,000 时,网站应在 3 秒内加载。非功能性需求的描述与功能性需求同等重要。
功能性需求示例
以下是软件工程中功能性需求的一些示例
- 该软件会自动通过 ABC 联系人管理系统验证客户
- 销售系统应允许用户记录客户销售
- 应用程序中所有窗口的背景颜色将为蓝色,并且其十六进制 RGB 颜色值为 0x0000FF。
- 只有管理层员工有权查看收入数据。
- 该软件系统应与银行 API 集成
- 该软件系统应通过 Section 508 可访问性要求。
非功能性需求示例
以下是软件工程中非功能性需求的一些示例
- 用户在首次成功登录后必须立即更改初始分配的登录密码。此外,初始密码绝不能被重复使用。
- 严禁员工更新其工资信息。此类尝试应报告给安全管理员。
- 用户每次不成功地访问数据项的尝试都应记录在审计跟踪中。
- 网站应能处理 2000 万用户而不影响其性能
- 软件应具有可移植性。因此,从一个操作系统迁移到另一个操作系统不会造成任何问题。
- 应审计信息的隐私、受限技术的出口、知识产权等。
功能性需求与非功能性需求之间的区别
以下是软件工程中功能性需求与非功能性需求的主要区别
| 参数 | 功能性需求 | 非功能性需求 |
|---|---|---|
| 是什么 | 动词 | 属性 |
| 需求 | 强制性 | 非强制性 |
| 捕获类型 | 在用例中捕获。 | 作为质量属性捕获。 |
| 最终结果 | 产品功能 | 产品属性 |
| 捕获 | 易于捕获 | 难以捕获 |
| 目标 | 有助于验证软件的功能。 | 有助于验证软件的性能。 |
| 关注领域 | 关注用户需求 | 关注用户期望。 |
| 文档 | 描述产品做什么 | 描述产品如何工作 |
| 测试类型 | 功能测试,如系统测试、集成测试、端到端测试、API 测试等。 | 非功能性测试,如性能测试、压力测试、可用性测试、安全测试等。 |
| 测试执行 | 测试执行在非功能性测试之前完成。 | 在功能性测试之后 |
| 产品信息 | 产品功能 | 产品属性 |
功能性需求的优点
以下是创建典型功能性需求文档的优点/好处:
- 有助于检查应用程序是否提供了该应用程序功能性需求中提到的所有功能
- 功能性需求文档有助于定义系统或其子系统的功能。
- 功能性需求与需求分析一起有助于识别缺失的需求。它们有助于清晰地定义预期的系统服务和行为。
- 在功能性需求收集阶段捕获的错误是最便宜的修复。
- 支持用户目标、任务或活动,方便项目管理
- 功能性需求可以用用例形式或用户故事表示,因为它们表现出外部可见的功能行为。
非功能性需求的优点
软件工程中非功能性测试的好处/优点是:
- 非功能性需求确保软件系统遵守法律和合规性规则。
- 它们确保软件系统的可靠性、可用性和性能
- 它们确保良好的用户体验和软件操作的便捷性。
- 它们有助于制定软件系统的安全策略。
