导致软件系统变得复杂的成因是规模、结构与变化三要素
控制复杂度的原则:就需要对 规模、结构与变化 逐个击破
规模
保证系统的小规模,分而治之,小即是美
在应对新需求时,不会直接去修改一个复杂的旧系统,而是通过添加新特性,然后对这些特性进行组合。
要满足小程序之间的自由组合,就需要满足第二条原则,即每个程序的输入和输出都是统一的,因而形成一个统一接口(Uniform Interface),以支持程序之间的自由组合(Composability)。
结构
清晰直观且易于理解的结构
整洁架构的思想: 遵循了“关注点分离”架构原则
整洁架构的目的: 识别整个架构不同视角以及不同抽象层次的关注点,并为这些关注点划分不同层次的边界,从而使得整个架构变得更为清晰,以减少不必要的耦合。
如何实现整洁架构: 需要合理地进行职责分配,良好的封装与抽象,并在约束的指导下为架构建立一致的风格
变化
哪些架构质量属性与变化有关:
-
可进化性(Evolvability)
-
可扩展性(Extensibility)
-
可定制性(Customizability)
可进化性:
实现:划分设计单元的边界
目的:确定每个设计单元应该履行的职责以及需要与其他设计单元协作的接口。
原因: 每个设计单元都有自己的边界,边界内的实现细节不会影响到外部的其他设计单元,我们就可以非常容易地替换单元内部的实现细节,保证了它们的可进化性。
可扩展性:
要点:识别软件系统中的变化点
变化点: 业务规则 算法策略 外部服务 硬件支持 命令请求 协议标准 数据格式 业务流程 系统配置 界面表现
核心: 封装 隐藏细节 引入间接等 隔离变化 降低耦合
可定制性:
提供特别的功能与服务
1 引入元数据支持系统的可定制 2 插件模式
插件模式:提供统一的插件接口,使得用户可以在系统之外按照指定接口编写插件来扩展定制化的功能