知识卡片

概念架构不等于细化架构

普通读书笔记卡

内容

概念架构一级的设计更重视”找对路子”,它往往是战略而非战术,比较策略化而未必全面,强调重点机制的确定而不一定完整——这不代表概念架构无关紧要,恰恰相反,一个软件产品与竞争对手在架构上的不同,其实在概念架构设计阶段就已经大局已定了。概念架构≠细化架构这个区分,具体体现在开发人员最关心的三个维度上。接口:细化架构应当给出接口的明确定义,而概念架构中即使识别出了接口,也没有对接口的明确定义。模块:细化架构重视通过模块来分割系统,模块往往有明确接口;概念架构中只有抽象的组件,这些组件没有接口、只有职责,一般是处理组件、数据组件或连接组件中的一种。交互机制:细化架构中的交互机制是”实在”的,比如基于接口编程、消息机制、远程方法调用等具体技术;概念架构中的交互机制是”概念化”的,比如”A层使用B层的服务”这类描述,这里的”使用”到了细化架构阶段可能落实成前述任何一种具体机制。这三个维度的共同结论是:概念架构是不可直接实现的——开发人员拿到一份概念架构设计方案,依然无法直接开始具体开发工作,从概念架构到细化架构,需要运用大量具体的设计技术,才能开发出真正能为开发工作提供指导和限制的细化架构。理解这个区别的实用价值在于:不要用”细化架构应有的完整度”去苛求概念架构阶段的产出,也不要拿概念架构的产物直接当作开发依据去动工——两者服务于设计流程中不同的目的,混淆两者会导致概念架构阶段被过度拖慢,或者细化架构阶段被过早跳过。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第9章《概念架构设计》"9.2.3 概念架构≠细化架构"节(源文件:_epub-src/OEBPS/text00012.html) - 结论依据:原文从接口、模块、交互机制三个维度逐一对比概念架构和细化架构的区别("在细化架构中,应当给出接口的明确定义;而概念架构中即使识别出了接口,也没有接口的明确定义"),并总结"因此,概念架构是不可直接实现的",直接支撑本卡片结论。 - 原始内容:概念架构是对系统设计的最初构想,但绝对不是无关紧要的。相反,一个软件产品与竞争对手在架构上的不同,其实在概念架构设计时就大局已定了……因此,概念架构是不可直接实现的。