从概念架构到详细架构,
先设计概念架构,构思关键问题的解决策略;
再进行详细架构的设计,以保证为开发提供足够的指导和限制。
这符合人类解决问题的规律,因此被广泛采用。
但在实际中,详细架构设计还存在很多差强人意之处,甚至经常被忽视。
详细架构和概念架构之间存在如下典型差异:
接口:在详细架构中接口占据非常核心的地位,而概念架构并不明确接口定义(只有抽象的组件和抽象的交互机制)。
子系统:详细架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口,只有职责,一般是处理组件、数据组件胡哦哦连接组件中的一种。当然,概念架构中也有“大组件分解成小组件”的设计决策,但并非子系统的含义。
交互机制:详细架构中的交互机制应是“实在”的,如基于接口编程、消息机制或远程方法调用等;而概念架构中的交互机制是“概念化”的。例如“A层使用B层的服务”就是典型的例子,这里的“使用”到了详细架构中可能基于接口编程、消息机制或远程方法调用等其中的一种。
当然,概念架构和详细架构都满足软件架构的定义--无论是“架构 = 组件 + 交互”,还是“架构 = 重要决策”。