7.2 非功能性需求的分类
非功能性需求的分类方法较多,并没有业界通用和一致的标准,但是大多数殊途同归,名称、叫法以及分类方法上可能略有差异,但是其含义和指向一般是一致的,下面简单介绍一下常用的分类:
1.性能/容量
性能和容量比较好理解,包括需要支持的用户的数量(尤其是峰值的并发用户数量)、用户能够接受的响应时间、数据规模等等。
2.可靠性/可用性/可复原性
可靠性是指在规定的一段时间和条件下维持其功能服务以及性能水平有关的一组属性。例如要求系统7x24小时运行,全年持续运行故障停运时间累计不能超过10小时等等,都属于这方面的要求。可复原性是指在系统发生错误和故障后,系统可以重建其性能水平,并恢复受影响数据的能力。
3.可维护性/可管理性
系统在无人干预条件下的稳定性、自排错能力、可测试性都属于这个范畴。故障的可排查能力,系统的修正、升级、备份、恢复机制以及方便与否,都属于这个范畴。这通常会极大决定系统的运行维护成本及维护难度。
4.安全性(https://www.daowen.com)
传输加密、存储加密、可破解性以及各种未被授权的用户行为如何防范和控制,都是安全范畴,这里的安全不单针对外部普通用户,也针对内部不同级别用户的权限控制。小到如何防范和处理用户在输入框里输入特殊字符导致设计者未曾预料的结果,大到防范外部黑客。安全很多时候不单依赖技术实现,同时非常依赖相应的制度和审计。
5.易用性
这可能是非功能性需求中现在唯一被高亮出来,被广泛关注的一个领域了。易用性设计现在已经上升到了一个新的高度,叫作人机体验或UE设计。虽然现在UE到底是划分在功能性需求还是非功能性需求上,尚有一些争议,但是主流观点(包括笔者自己)都认为,这是非功能性需求的一个典型部分。
6.数据一致性
包括数据的编码、语言和冗余数据的一致性要求等等。例如为了性能的考虑,数据库整体设计未采用巴斯克范式,而采用了第二或者第三范式的要求来设计;一些信息(例如用户注册信息),可能同时存在于系统的多个地方(例如多个表中),当发生注册信息变更时,如何保证多处记录的信息都被修改,以及全部修改的时限要求是多少等等都是这个范畴的内容。
7.系统/环境条件及限制
现有的软硬件条件、平台的条件、网络的条件都属于这个范畴。典型的例如很多移动互联网产品,必须要考虑移动网络的带宽条件、终端运算性能和能力以及其移动网络稳定性等等。