知识卡片

概念架构设计的"1个决定、4个选择"

结构图卡

内容

从设计任务和设计成果的角度看,概念架构设计要明确回答的是”1个决定、4个选择”:决定——如何划分顶级子系统;四个选择——架构风格选型、开发技术选型、二次开发技术选型、集成技术选型。这五项设计任务不是可以随意排列的清单,实践中有明确的推荐顺序:首先,选择架构风格、划分顶级子系统这两项任务要一起做,因为它们相互影响、相辅相成(选定了某种架构风格,往往就暗示了顶级子系统该怎么划分;反过来子系统的划分需要也会反过来制约架构风格的选择空间);然后,开发技术选型、集成技术选型、二次开发技术选型这三项任务紧密相关、可以同时进行——需要说明的是,这三项选型并非每次都需要全部完成,比如系统可能不需要集成支持,也可以决定不支持二次开发,这本身也是一种合法的设计决策。这个顺序背后的逻辑是”先定骨架、再填技术”:架构风格和顶级子系统划分决定了系统的宏观结构骨架,一旦骨架确定,具体用什么开发技术、要不要支持集成、要不要支持二次开发这些相对独立的技术选型问题才有了明确的约束条件可以依据,如果颠倒这个顺序(比如先定死开发技术再谈架构风格),很容易被具体技术的局限性反过来束缚住本该更宏观的架构决策空间。

结构图

flowchart TD
    A["1个决定:如何划分顶级子系统"] <-->|"相互影响、相辅相成\n同时进行"| B["选择1:架构风格选型"]
    B --> C["选择2:开发技术选型"]
    B --> D["选择3:集成技术选型\n(可决定不支持)"]
    B --> E["选择4:二次开发技术选型\n(可决定不支持)"]
    C -.->|"紧密相关,同时进行"| D
    C -.-> E
    D -.-> E

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第9章《概念架构设计》"9.5.2 要领2:概念架构设计的1个决定、4个选择"节(源文件:_epub-src/OEBPS/text00012.html) - 结论依据:原文说明"首先,选择架构风格、划分顶级子系统。这2项设计任务是相互影响、相辅相成的。然后,开发技术选型、集成技术选型、二次开发技术选型。这3项设计任务紧密相关、同时进行。另外可能不需要集成支持,也可以决定不支持二次开发",直接支撑本卡片结论与结构图。 - 原始内容:从设计任务、设计成果上,概念架构设计要明确的是"1个决定、4个选择"……首先,选择架构风格、划分顶级子系统。这2项设计任务是相互影响、相辅相成的。