知识卡片
架构知识模型的推导:信息交换+架构编排+架构演进
内容
面对”架构知识点繁多、缺乏一条清晰学习主线”这个问题,作者从”软件是一个系统”这个最基本的定义出发去推导架构知识应该如何分类:任何系统都由元素、关系、功能/目标三个要素组成,元素代表”是什么”、功能/目标代表”干什么”、关系代表”怎么干”。软件系统研发通常先从客户侧拿到需求(目标系统的”干什么”),再通过架构设计反推出系统的组成元素(”是什么”)以及元素之间的关系(”怎么干”)——所以架构设计本质上是一个由果到因的过程。由此得到两个静态的知识领域:需求获取对应”干什么”,架构编排对应”是什么”和”怎么干”。但架构设计中还存在另一类动态的知识——像敏捷、DevOps、持续集成、重构这些需要跨越一段时间周期才能发挥作用的知识,需要单独加入”架构演进”这一维度。同时,”需求获取”这个名字本身有误导性:它听起来是单向过程,但实际上架构设计各阶段之间需要多方充分沟通,需求还会不断映射成业务模型、应用模型、数据模型等不同形态并传递给下一阶段——所以用”信息交换”(涵盖信息获取、沟通、传递)取代”需求获取”更贴切。最终推导出:架构知识模型=信息交换+架构编排+架构演进。这个模型还能从客户对系统的期望反向验证:客户期望”功能符合预期”对应信息交换、”低成本/交付速度快”对应架构编排(本质是降本增效)、”需求可修改”对应架构演进——三个维度分别对应客户诉求的三个方面,说明这个分类不是凭空归纳,而是能同时被”系统的构成”和”客户的期望”两条独立路径推导验证。
结构图:
flowchart TB
S["系统三要素:元素(是什么)/功能目标(干什么)/关系(怎么干)"]
S --> N["静态知识:需求获取(干什么)→改名为'信息交换'<br/>架构编排(是什么+怎么干)"]
S --> D["动态知识(需跨时间周期):架构演进<br/>如敏捷/DevOps/重构"]
N --> M["架构知识模型=信息交换+架构编排+架构演进"]
D --> M
M -.客户期望反向验证.-> C1["功能符合预期→信息交换"]
M -.-> C2["低成本/交付快→架构编排(降本增效)"]
M -.-> C3["需求可修改→架构演进"]
参考来源
- 位置:《架构师启示录:知识模型、落地方法与思维模式》第1章《架构认知框架概述》之"1.1 简单的架构知识模型"(源文件:_epub-src/EPUB/xhtml/chapter3.xhtml)
- 结论依据:原文说明"架构设计是由软件系统的'干什么'来推理出'是什么'和'怎么干'的过程……在建立架构知识模型时,使用'信息交换'来替代'需求获取'更加合适……架构知识模型=信息交换+架构编排+架构演进……功能符合预期主要是指信息交换方面。低成本/交付速度快对应的主要是架构编排……需求可修改对应的则主要是架构演进", 直接支撑本卡关于架构知识模型推导过程及双重验证的结构图。
- 原始内容:将架构知识模型化主要带来两个好处:一是将架构知识分类后便于厘清知识边界;二是相同分类下的架构知识往往蕴含着相似或相同的规则,方便关联记忆。