细化架构与概念架构之间的典型差异:
-
接口。在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义(只有抽象的组件和抽象的交互机制)。
- 子系统。细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口,只有职责,一般是处理组件、数据组件或连接组件中的一种。当然,概念架构中也有“大组件分解成小组件”的设计决策,但并非子系统的含义。
-
交互机制。细化架构中的交互机制应是“实在”的,如基于接口编程、消息机制或远程方法调用等;而概念架构中的交互机制是“概念化”的,例如“A层使用B层的服务”就是典型的例子,这里的“使用”到了细化架构中可能基于接口编程、消息机制或远程方法调用等其中的一种。
多视图方法:
不同涉众看待软件架构的视角是不同的,贴近实践的多视图方法,应将一线架构师的各项具体工作涵盖其中。
架构设计是一门解决复杂问题的实践艺术,多视图方法的思想核心是分而治之。
多视图方法有两个方面的实际意义:
-
利于思考(因为分而治之的思维方式)
- 便于交流(因为在一定程度上分离了涉众关注点)
逻辑架构:
划分子系统、定义接口等,这些典型工作都属于逻辑架构设计的范畴。
划分子系统的3种必用策略:
- 分层的细化
- 分区的引入
- 机制的提取
划分子系统的4个重要原则:
-
职责不同的单元划归不同子系统
-
通用性不同的单元划归不同子系统
- 需要不同开发技能额单元划归不同子系统
-
兼顾工作量的相对均衡,进一步划分太大的子系统
接口设计:
“分”是手段,“合”是目的,不能“合”在一起支持更高层次功能的模块,又有何用?
协作决定接口。
逻辑架构设计的10条经验要点:
逻辑架构设计中设计模式应用:
- 明确子系统内的结构
- 明确包间的协作关系
参考文献:
《一线架构师实践指南》 温昱