原文:How to Write Meaningful Quality Attributes for Software Development
本文翻译对应原文最后更新时间:Dec 27, 2017
质量属性 (Quality Attributes,后文简写为 QA) 是系统中的可测量或可测试的一类属性,用于表明系统对涉众 (stakeholder) 的需求能够满足到何种程度。
换言之,质量属性 (又称非功能性要求,Non functional requirements) 是使系统对特定涉众在使用时表现良好的原因。我们常见的QA例如:程序执行速度有多快,对错误输入的容忍度,部署产品的时间或运营成本的限制等等。
下述的列表为一些常见的质量属性:
- 性能 (Performance)
- 安全性 (Security)
- 可修改性 (Modifiability)
- 可靠性 (Reliability)
- 易用性 (Usability)
- 可校正性 (Calibrateability)
- 可用性 (Availability)
- 万维网化程度 (Webifyability)
- 吞吐率 (Throughput)
- 可配置性 (Configurability)
- 可分解性 (Subsetability)
- 可复用性 (Reusability)
大多数情况下,QA 不会被白纸黑字写在需求上。它们往往只是在谈功能要求时被顺带一提,并不会被明确提出,亦或者经过人们的深思熟虑。
一个真实的例子是,如果您负责开发某些功能,并且您向老板询问系统完成任务所需的时间时,他可能会说:“用最短时间把它完成!”
安全性也是如此。每个人都会说他们要的产品必须是安全的 - 无论那意味着什么。
但通过一些工作和准备可以避免这些情况。首先,所有质量属性必须以某种方式可衡量。根据一些涉众的说法,这使得负责执行某些任务的团队能够知道他们何时做得很好,以完成该要求。
要定义明确的质量属性,编写质量属性场景会是一个不错的出发点。质量属性场景是指定可测试质量属性的明确方式。质量属性场景由六个元素组成(如下图所示):

- 触发源 (Source of Stimulus):能够创造触发事件的实体(内部或外部人员,计算机系统等)
- 触发事件 (Stimulus):触发事件是指在到达系统时需要响应的条件。
- 环境 (Environment):触发事件发生的环境。例如,在交通繁忙的情况下,系统可能正常运行,或具有高延迟或任何相关状态。
- 制品 (Artifact):接收触发事件的制品。有些制品是可以积累的,可以是系统,整个系统或多个系统的组件。
- 响应 (Response):制品根据接收的触发事件进行的响应。
- 响应度量 (Response measure):该度量应该能够反映响应是否需求得到很好的实施。
质量属性场景的一个例子
触发源 (Source of Stimulus): 系统外部 (external to the system)
触发事件 (Stimulus): 未预料的消息 (unanticipated message)
制品 (Artifact): 进程 (process)
环境 (Environment): 正常运行环境 (normal operation)
响应 (Response): 告知操作员并继续运行
响应度量 (Response measure): 不会发生故障停机 (no downtime)
上述例子可以理解为:
在正常操作期间,进程接收到未预料的外部消息。该过程通知操作员消息的接收,并且系统继续运行而没有停机。
开始编写质量属性场景
编写一个质量属性场景可能听起来会很困难,因为您可能不了解与质量属性相关的一些度量和特征。但好消息是,对于面对最常用的质量属性(可用性,互操作性,可修改性,性能,安全性,可测试性,可用性),您可以使用质量属性通用场景,并将最常见的情况纳入考虑。
通用场景是与系统无关的情景,具有针对某些质量属性的典型触发事件,响应和响应度量。这里可以找到一些高质量的通用场景。?此外,此信息的参考资料在本文的脚注中。此技术还可以扩展到特定于其业务环境的特定领域系统。