什么是非功能性需求?
非功能性需求(NON-FUNCTIONALREQUIREMENT, NFR)关注的是软件系统的质量属性。需要根据响应性、可用性、安全性、可移植性等非功能性指标来评估软件系统,而且这些指标对整个系统而言是至关重要的。例如,”网站加载速度有多快?” 非功能性需求的不满足会导致严重影响客户满意度。
非功能性需求需要在系统设计阶段施加各种约束或限制。例如,同时使用的用户数超过10000 时,站点应在 3秒内完成加载。
非功能性需求的描述是同功能性需求同等重要的。
在本教程中,您将了解到
非功能性需求的类型
非功能性需求示例
功能要求与非功能性需求
非功能性需求的优点
非功能性需求的缺点
非功能性需求的类型
可用性需求
可维修性需求
可管理性需求
可恢复性需求
安全性需求
数据完整性需求
容量需求
可用性需求
可扩展性需求
互操作性需求
可靠性需求
可维护性需求
监管性需求
环境需求
非功能性需求示例
1. 用户必须在首次成功登录后立即更改最初密码。此外,不能重复使用初始密码。
2. 员工绝不允许更新其工资信息。此类尝试应报告给安全管理员。
3. 用户每次访问数据,都应记录在审核跟踪中。
4. 网站应该能够承载2000 万用户
5. 软件应该是便携式的,从一个操作系统移动到其他操作系统不会产生任何问题。
6. 应对信息隐私、受限技术出口、知识产权等方面的审核。
功能性需求 VS 非功能性需求
功能性需求 | 非功能性需求 | |
是什么? | 一个动作 | 一种属性 |
必须? | 必须的 | 非必须的 |
获取类型 | 可以从UseCase中获取 | 作为质量属性获取 |
结果 | 产品功能 | 产品属性 |
获取难易度 | 简单 | 困难 |
目标 | 帮助验证软件的功能 | 帮助验证软件的性能 |
重点领域 | 关注用户需求 | 关注用户期望 |
文档 | 描述产品做什么 | 描述产品怎么做 |
测试类型 | 功能测试的类型,如系统、集成、端到端、API 测试等 | 非功能性测试,如性能、压力、可用性、安全测试等 |
测试执行 | 测试执行在非功能性测试之前完成 | 功能测试后进行 |
产品信息 | 产品功能 | 产品属性 |
非功能性需求的优势
· 确保软件系统遵守法律和合规性规则。
· 确保软件系统的可靠性、可用性和性能
· 确保良好的用户体验和易用性。
· 有助于软件系统的安全策略。
非功能性需求的缺点
· 可能会影响各种高阶软件子系统
· 需要在软件架构设计和高级设计阶段进行特别设计,但是会增加成本。
· 它们的实现通常不会反应到特定的软件子系统,
· 一旦通过了架构设计阶段,非功能性需求的修改比较困难。
关键点
· 非功能性需求定义软件系统的性能属性。
· 非功能性需求的类型包括可扩展性、容量、可用性、可靠性、可恢复性、数据完整性等。
· 一个非功能性需求的示例是:不允许员工更新其工资信息,此类操作应报告给安全管理员。
· 功能性需求是一个动作,而非功能性需求是一个属性。
· 非功能性需求的优点是,它可以确保良好的用户体验和软件的易用性
· 非功能性需求的最大缺点是可能会影响各种高阶软件子系统。