软件工程中的非功能性需求是什么?
什么是软件的非功能性需求?
非功能性需求 (NFR) 规定了软件系统的质量属性。它们根据响应性、可用性、安全性、可移植性和其他对软件系统成功至关重要的非功能性标准来评估软件系统。非功能性需求的例子,*“网站加载速度有多快?”* 未能满足非功能性需求可能导致系统无法满足用户需求。
软件工程中的非功能性需求允许你在各种敏捷积压工作中对系统设计施加约束或限制。例如,当同时用户数量超过 10000 时,网站应该在 3 秒内加载。非功能性需求的描述与功能性需求同样关键。
非功能性需求类型
以下是非功能性需求的主要类型
- 可用性需求
- 可服务性需求
- 可管理性需求
- 可恢复性需求
- 安全性需求
- 数据完整性需求
- 容量需求
- 可用性需求
- 可扩展性需求
- 互操作性需求
- 可靠性需求
- 可维护性需求
- 合规性需求
- 环境需求
非功能性需求的例子
以下是一些非功能性需求的例子
- 用户必须在首次成功登录后立即更改初始分配的登录密码。此外,初始密码不得重复使用。
- 不允许员工更新其薪资信息。此类尝试应报告给安全管理员。
- 用户每次尝试访问数据项失败的尝试都应记录在审计跟踪中。
- 网站应有能力处理 2000 万用户而不影响其性能
- 软件应该是可移植的。因此,从一个操作系统迁移到另一个操作系统不会造成任何问题。
- 应审计信息的隐私、受限技术的出口、知识产权等。
功能性需求 vs 非功能性需求
以下是功能性需求与非功能性需求的主要区别
参数 | 功能性需求 | 非功能性需求 |
---|---|---|
它是什么? | 动词 | 属性 |
需求 | 强制性 | 非强制性 |
捕获类型 | 在用例中捕获。 | 作为质量属性捕获。 |
最终结果 | 产品功能 | 产品属性 |
捕获 | 易于捕获 | 难以捕获 |
目标 | 有助于验证软件的功能。 | 有助于验证软件的性能。 |
关注领域 | 关注用户需求 | 关注用户期望。 |
文档 | 描述产品做什么 | 描述产品如何工作 |
测试类型 | 功能测试,如系统测试、集成测试、端到端测试、API 测试等。 | 非功能测试,如性能测试、压力测试、可用性测试、安全测试等。 |
测试执行 | 测试执行在非功能性测试之前完成。 | 在功能性测试之后 |
产品信息 | 产品功能 | 产品属性 |
非功能性需求的优点
非功能性测试的优点/好处是
- 非功能性需求确保软件系统遵守法律和合规规则。
- 它们确保软件系统的可靠性、可用性和性能
- 它们确保良好的用户体验和软件操作的便捷性。
- 它们有助于制定软件系统的安全策略。
非功能性需求的缺点
非功能性需求的网络/缺点是
- 非功能性需求可能会影响各种高级软件子系统
- 它们在软件架构/高级设计阶段需要特殊考虑,这会增加成本。
- 它们的实现通常不映射到特定的软件子系统,
- 一旦通过架构阶段,就很难修改非功能性需求。
主要学习点
- NFR 含义:非功能性需求定义了软件系统的性能属性。
- 什么是类型的非功能行为:可扩展性、容量、可用性、可靠性、可恢复性、数据完整性等。
- NFR 的一个例子是:不允许员工更新其薪资信息。此类尝试应报告给安全管理员。
- 功能性需求是一个动词,而非功能性需求是一个属性
- 非功能性需求的好处在于,它有助于确保良好的用户体验和软件操作的便捷性
- 非功能性需求最大的缺点是它可能会影响各种高级软件子系统。