
面向易理解性的设计
|
65
得对这些断言的相当强的信心。在
Google
,我们发现这种方法对于大型软件开发项目是实
用的,并且对减少常见类型的漏洞非常有效。有关测试和验证的更多讨论,参见第
13
章。
6.1.3
心智模型
高度复杂的系统让人类难以全盘推理。在实践中,工程师和各个领域的专家经常构造心智
模型,用以解释系统的相关行为,而忽略掉不相关的细节。对于一个复杂的系统,你可以
构建多个互为基础的心智模型。通过这种方式,考虑给定系统或者子系统的行为或不变量
时,可以抽象出其周围组件和底层组件的细节,并将其替换为心智模型。
心智模型很有用,因为它简化了复杂系统的推理。出于同样的原因,心智模型也是有局限
性的。如果你根据系统在通常的运营条件下运行的经验构造出一个心智模型,那么这个模
型可能无法预测系统在异常情况下的行为。在很大程度上,安全性和可靠性工程关注的是
在那些异常的情况下分析系统,比如系统受到攻击、过载或者组件故障的场景下。
考虑这样一个系统,它的吞吐量会随着传入请求的速率而可预测地逐渐增加。然而,超过
某个负载的阈值之后,系统可能会以截然不同的方式响应。例如,内存压力可能会导致虚
拟内存、堆或者垃圾回收器级别的崩溃
6
,使得系统无法跟上额外的负载。过多的超额负载
甚至可能导致吞吐量
下降
。对处于该状态的系统进行故障排除时,除非你明确地认识到该
模型不再适用,否则你可能会被过度简化的系统心智模型严重误导。
在设计系统时,软件、安全性和可靠性的工程师会不可避免地为自己构造心智模型,考虑
这些是很有价值的。在设计添加到更大的系统中的新组件时,理想情况下 ...