安全防护体系架构和结构层次
两本书帮助我对作为建筑师的艺术有了某种理解。 我很久以前就读过它们,但我仍会不时阅读它们:理查德·蒙森·海费尔(Richard Monson-Haefel)着的《 每个软件架构师应该知道的97件事》 ; 美丽的建筑 :领先的思想家揭示了 Diomidis Spinellis和Georgios Gousios撰写的软件设计中的隐藏之美 。
关于它们的有趣之处在于它们都表达了多种观点:有些矛盾,甚至在每本书中也是如此。 这恰恰反映了一个事实,即我相信成为系统架构师是一门艺术或一门学科。 不同的从业者对此会有不同的看法。 您可以说计算机科学是一门硬科学,它包含了其中的一部分,但是软件工程(有意使用小写)的功能远不止于此。
我认为,对于系统架构而言,情况更是如此:一旦知道就可以理解它的含义,但是要指出某些东西(甚至是一组原则)也很难,并且说:“就是系统建筑。” 有时,定义某事物的最简单方法是定义它不是什么:例如,搜索“当我看到它时就知道它,而在这种情况下涉及的电影不是那样”。
但是,让我尝试给出一些示例,说明某人(或一群人)在执行良好的系统体系结构时应该看到的事情:
- 图片:如果您无法在图片中显示系统的不同组件,那么我认为您无法完全描述每个组件的功能或它们如何相互作用。 如果您无法将它们分开,则说明您没有适当描述的系统,因此就没有体系结构。 我知道我非常注重视觉,但是对我来说这感觉像是必要的。
- 数据描述:如果您不知道系统中有什么数据,则不知道它有什么作用。
- 实体描述:组件,用户,打印机等等,您需要知道正在做什么,以便可以描述正在做什么以及做什么。
- 时间意识:这听起来很奇怪,但是所有系统(任何用途)都会随着时间处理数据。 如果您不考虑将要发生的变化,那么您将不了解将要发生的变化,并且如果事情以您不期望的方式或通过组件的变化而发生变化,您将无法考虑可能出了什么问题。首先不应该进行更改。
- 关于失败模式的一些思考:我之前已经说过,然后我再说一遍:“事情会出错。” 您不能想象所有可能出错的事情,但是如果有以下情况,您有责任考虑不同组件和数据以及整个系统的运行可能发生的情况 他们跌倒了。
当然,有一些有用的工具和方法(使用UML视图是一个很好的例子)可以为您提供所有这些帮助。 但是,您不必成为所有这些专家(甚至其中任何一个专家)的专家,就可以成为一名优秀的系统架构师。
不过,我要补充的最后一件事是,我将其称为“公共汽车和失忆症”。
在六个月的时间里,您会忘记细节或被公共汽车撞到。 所以记录下来。 所有的。
您知道这很有道理。
本文最初出现在安全博客Alice,Eve和Bob上 ,经许可重新发布。
安全防护体系架构和结构层次