想弄明白问题
- 软件架构是什么,为什么要有;
- 如何定义好的架构,有哪些指标;
- 如何实现好的软件架构。
读后感
软件架构是什么,为什么要有
参照第15章的描述,
软件架构这项工作的实质就是规划如何将系统切分成组件,并安排组件之间的排列关系,以及组件之间互相通信的方式。
为什么要这么做,
设计软件架构的目的,就是为了在工作中更好地对这些组件进行研发、部署、运行以及维护。
具体来说,根据单一职责原则,切分系统成多个组件,利用依赖反转原则调整组件的依赖关系,根据同步还是异步设计组件之前的通信接口。这么做的目的很简单:降低开发、部署、运行以及维护的成本,用最少的人力和物力来完成系统的构建和维护。
如何定义好的架构,有哪些指标
书里面给了三个指标:不稳定性(A)、抽象性(I)、距离主序列线的距离(D)。
- A: 假设表示该组件依赖的组件数量,表示该组件被依赖的组件数量,那么,当前组件依赖的其它组件越多,则越不稳定;
- I: 假设表示组件内抽象类的数量,表示具体实现类的数量,则,当前组件内的抽象类占比越高,则越抽象;
- D: 先定义主序列线,以A为纵轴,I为横轴,只取第一象限,则主序列线为
A+I-1=0
的线段,D表示当前组件距离主序列线的距离,值越小,说明设计越好。
如何实现好的软件架构
这里引入了一个概念:层次,一个组件的层次越高,它距离输入/输出的距离也就越远。
在项目初期,需要保持架构的可选项,延迟策略无关的决策,比如选用什么数据库、web框架、展示界面等。将修改原因、修改时间、相同层次的代码定义到一个组件,并通过定义抽象类的方式,让低层次的组件依赖高层次的组件。