<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>架构设计 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/</link><description>Recent content in 架构设计 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 30 Oct 2015 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/index.xml" rel="self" type="application/rss+xml"/><item><title>架构设计基础：概要设计与详细设计的区别与实践</title><link>https://liangweidonggood.github.io/p/jiagou-sheji-jichu/</link><pubDate>Fri, 30 Oct 2015 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/jiagou-sheji-jichu/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/jiagou-sheji-jichu/image/cover.jpg" alt="Featured image of post 架构设计基础：概要设计与详细设计的区别与实践" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;这是一份关于&amp;quot;概要设计 vs 详细设计&amp;quot;的对比梳理，源于 2015 年前后的架构师培训资料。&lt;strong&gt;为什么把它单独提一篇&lt;/strong&gt;？因为在多数团队里，&lt;strong&gt;&amp;ldquo;概要设计&amp;quot;和&amp;quot;详细设计&amp;quot;的边界是模糊的&lt;/strong&gt;——有人写到伪代码、有人只画个框图，评审会上吵成一团。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一为什么这篇值得读"&gt;一、为什么这篇值得读
&lt;/h2&gt;&lt;p&gt;很多团队把&amp;quot;设计文档&amp;quot;当成一个文档：写完直接进开发。结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;评审会上&lt;strong&gt;没人能看完&lt;/strong&gt; 50 页的&amp;quot;设计文档&amp;rdquo;&lt;/li&gt;
&lt;li&gt;设计粒度不统一，&lt;strong&gt;有人写到 SQL，有人只画模块图&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;模块之间的接口没定清楚，&lt;strong&gt;联调时互相甩锅&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;是&lt;strong&gt;先概要、后详细&lt;/strong&gt;——&lt;strong&gt;概要设计解决&amp;quot;分模块、定接口、估工作量&amp;quot;&lt;/strong&gt;，&lt;strong&gt;详细设计解决&amp;quot;模块内算法、流程、状态&amp;quot;&lt;/strong&gt;。两个文档&lt;strong&gt;职责分离、粒度分离、受众分离&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When to use&lt;/strong&gt;：当一个系统超过 3 个人、超过 3 个月、超过 3 个子系统时，&lt;strong&gt;概要设计文档就是必需的&lt;/strong&gt;。否则项目进入开发就是&amp;quot;集体蒙眼摸象&amp;quot;。&lt;/p&gt;
&lt;h2 id="二概要设计-vs-详细设计分界"&gt;二、概要设计 vs 详细设计：分界
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;概要设计&lt;/th&gt;
					&lt;th&gt;详细设计&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;回答的问题&lt;/td&gt;
					&lt;td&gt;系统怎么分？模块怎么交互？&lt;/td&gt;
					&lt;td&gt;模块内部怎么实现？&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;粒度&lt;/td&gt;
					&lt;td&gt;模块、子系统、接口&lt;/td&gt;
					&lt;td&gt;类、函数、算法&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;产物&lt;/td&gt;
					&lt;td&gt;分层数据流图、结构图、数据字典&lt;/td&gt;
					&lt;td&gt;流程图、状态图、伪代码、局部变量说明&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;受众&lt;/td&gt;
					&lt;td&gt;架构师、技术总监、项目经理&lt;/td&gt;
					&lt;td&gt;模块开发者本人&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;评审重点&lt;/td&gt;
					&lt;td&gt;模块划分是否合理、接口是否清晰&lt;/td&gt;
					&lt;td&gt;算法是否正确、边界条件是否覆盖&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;改动代价&lt;/td&gt;
					&lt;td&gt;改了概要 → 重新评估工作量&lt;/td&gt;
					&lt;td&gt;改了详细 → 一般不影响工期&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数量级&lt;/td&gt;
					&lt;td&gt;通常 10-50 页&lt;/td&gt;
					&lt;td&gt;一个模块 5-20 页（视复杂度）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;：概要设计是&lt;strong&gt;多人协作的契约&lt;/strong&gt;——3 个开发者按概要分工，每人拿到的接口定义清晰到**&amp;ldquo;传什么、返回什么、什么时候调&amp;rdquo;&lt;strong&gt;。详细设计是&lt;/strong&gt;单人实现的笔记**——算法怎么写、变量怎么命名、异常怎么抛，是开发者自己的事。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="三概要设计的-4-个原则"&gt;三、概要设计的 4 个原则
&lt;/h2&gt;&lt;p&gt;源文档里写得很清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;评价总体设计的可行性&lt;/strong&gt;——概要设计是判断&amp;quot;这个项目能不能做、按什么方案做&amp;quot;的依据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查模块是否完整&lt;/strong&gt;——保证每个功能都有对应模块实现，&lt;strong&gt;不能有&amp;quot;无主功能&amp;quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估开发工作量、指导开发计划&lt;/strong&gt;——尤其在不写详细设计的情况下，&lt;strong&gt;模块数 × 经验系数 = 工期&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免两个误区&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;❌ 过于重视业务流程（应该在需求里画，不该在概要里写）&lt;/li&gt;
&lt;li&gt;❌ 过于重视细节实现（应该在详细里写，不该在概要里写）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四概要设计的内容清单"&gt;四、概要设计的内容清单
&lt;/h2&gt;&lt;h3 id="41-总述"&gt;4.1 总述
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;需求或目标（讲一下事情的起源）、环境、局限&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这是给评审者**30 秒内理解&amp;quot;为什么做这个系统&amp;quot;**的入口。&lt;/p&gt;
&lt;h3 id="42-总体设计"&gt;4.2 总体设计
&lt;/h3&gt;&lt;p&gt;从全局角度说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;组织结构&lt;/li&gt;
&lt;li&gt;功能&lt;/li&gt;
&lt;li&gt;处理流程&lt;/li&gt;
&lt;li&gt;有哪些模块&lt;/li&gt;
&lt;li&gt;模块间的关系&lt;/li&gt;
&lt;li&gt;运行环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;输出图&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统结构图&lt;/li&gt;
&lt;li&gt;系统流程图&lt;/li&gt;
&lt;li&gt;数据流程图&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-外部接口"&gt;4.3 外部接口
&lt;/h3&gt;&lt;p&gt;总体说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外部用户&lt;/li&gt;
&lt;li&gt;软、硬件接口（可用资源）&lt;/li&gt;
&lt;li&gt;第三方系统&lt;/li&gt;
&lt;li&gt;网络协议&lt;/li&gt;
&lt;li&gt;数据格式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="44-模块设计核心"&gt;4.4 模块设计（核心）
&lt;/h3&gt;&lt;p&gt;每个模块&amp;quot;做什么&amp;quot;、简要说明&amp;quot;怎么做&amp;quot;（输入、输出、处理逻辑、与其它模块或系统的接口），处在什么逻辑位置、物理位置。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;模块描述&lt;/strong&gt;——说明哪些模块实现了哪些功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模块层次结构&lt;/strong&gt;——可使用某个视角的软件框架图表达&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模块间的关系&lt;/strong&gt;——模块间依赖关系描述、通信机制描述&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模块的核心接口&lt;/strong&gt;——说明模块传递的信息、信息的结构（&lt;strong&gt;重点！必须写到&amp;quot;参数名+类型+含义&amp;quot;&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;处理方式设计&lt;/strong&gt;——说一些满足功能和性能的算法（&lt;strong&gt;只写算法思想，不写实现&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="45-数据结构"&gt;4.5 数据结构
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;逻辑结构&lt;/li&gt;
&lt;li&gt;物理结构&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="46-容灾设计"&gt;4.6 容灾设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;出错信息&lt;/li&gt;
&lt;li&gt;出错处理&lt;/li&gt;
&lt;li&gt;降级方案&lt;/li&gt;
&lt;li&gt;数据备份与恢复&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="47-监控设计"&gt;4.7 监控设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;运行模块组合&lt;/li&gt;
&lt;li&gt;控制&lt;/li&gt;
&lt;li&gt;时间&lt;/li&gt;
&lt;li&gt;告警阈值&lt;/li&gt;
&lt;li&gt;日志规范&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="48-用户界面设计"&gt;4.8 用户界面设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;界面布局&lt;/li&gt;
&lt;li&gt;交互流程&lt;/li&gt;
&lt;li&gt;UI 规范引用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="49-安全设计"&gt;4.9 安全设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;认证&lt;/li&gt;
&lt;li&gt;授权&lt;/li&gt;
&lt;li&gt;加密&lt;/li&gt;
&lt;li&gt;审计&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="410-其它设计"&gt;4.10 其它设计
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;国际化&lt;/li&gt;
&lt;li&gt;性能&lt;/li&gt;
&lt;li&gt;兼容性&lt;/li&gt;
&lt;li&gt;可扩展性&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="411-制定规范"&gt;4.11 制定规范
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;设计原则&lt;/li&gt;
&lt;li&gt;代码规范&lt;/li&gt;
&lt;li&gt;接口规约&lt;/li&gt;
&lt;li&gt;命名规则&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五概要设计的关键产出物"&gt;五、概要设计的关键产出物
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;产出物&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
					&lt;th&gt;形式&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;分层数据流图&lt;/td&gt;
					&lt;td&gt;描述系统从输入到输出的加工过程&lt;/td&gt;
					&lt;td&gt;图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;结构图&lt;/td&gt;
					&lt;td&gt;描述模块的层次和调用关系&lt;/td&gt;
					&lt;td&gt;图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据字典&lt;/td&gt;
					&lt;td&gt;描述系统中所有数据项的含义、类型、长度、取值范围&lt;/td&gt;
					&lt;td&gt;表&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;模块清单&lt;/td&gt;
					&lt;td&gt;列出所有模块及功能&lt;/td&gt;
					&lt;td&gt;表&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;接口清单&lt;/td&gt;
					&lt;td&gt;列出所有模块间接口&lt;/td&gt;
					&lt;td&gt;表&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;关键流程说明&lt;/td&gt;
					&lt;td&gt;文字描述关键业务如何流转&lt;/td&gt;
					&lt;td&gt;文字 + 流程图&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="六详细设计模块内的实现"&gt;六、详细设计：模块内的实现
&lt;/h2&gt;&lt;p&gt;详细设计阶段，&lt;strong&gt;每个模块可以分给不同人并行设计&lt;/strong&gt;。设计者工作对象是&lt;strong&gt;一个模块&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据概要设计赋予的局部任务和对外接口&lt;/li&gt;
&lt;li&gt;设计并表达出模块的算法、流程、状态转换&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="61-详细设计的关键产出"&gt;6.1 详细设计的关键产出
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;流程图&lt;/strong&gt;——模块内主要处理流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态图&lt;/strong&gt;——模块涉及的状态机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;局部变量&lt;/strong&gt;——模块内使用的临时变量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键函数签名&lt;/strong&gt;——参数、返回值、异常&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="62-详细设计-vs-概要设计的回退规则"&gt;6.2 详细设计 vs 概要设计的回退规则
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;如果发现有结构调整（如分解出子模块等）的必要，&lt;strong&gt;必须返回到概要设计阶段&lt;/strong&gt;，将调整反应到概要设计文档中，而不能就地解决、不打招呼。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why&lt;/strong&gt;：详细设计改了不影响别人，但&lt;strong&gt;概要设计改了影响所有模块的接口&lt;/strong&gt;。默默改概要设计 = 让所有下游模块的接口定义失效。&lt;/p&gt;
&lt;h2 id="七概要设计的-5-个常见坑"&gt;七、概要设计的 5 个常见坑
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;接口定义不细&lt;/strong&gt;——只写&amp;quot;调用模块 A&amp;quot;，不写&amp;quot;传什么、返回什么、什么时机调&amp;quot;。&lt;strong&gt;联调时两套理解&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据字典缺失&lt;/strong&gt;——文档里所有&amp;quot;用户 ID&amp;quot;都是一个意思吗？长度？类型？枚举值？没有数据字典就各写各的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;过度细化&lt;/strong&gt;——把详细设计的内容写到概要设计，&lt;strong&gt;评审会变成代码 review&lt;/strong&gt;，没人能看完&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不画部署图&lt;/strong&gt;——只有逻辑架构，没有物理部署。运维拿不到&amp;quot;这台机器跑什么&amp;quot;的答案&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不写非功能&lt;/strong&gt;——性能、可用性、安全、合规等都不写，&lt;strong&gt;验收时客户发现没满足&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八核心-5-点提炼"&gt;八、核心 5 点提炼
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;概要设计是&amp;quot;分模块、定接口、估工期&amp;quot;的契约&lt;/strong&gt;——它的粒度停在模块和接口，&lt;strong&gt;不写到类和方法&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;详细设计是&amp;quot;单模块的实现笔记&amp;quot;&lt;/strong&gt;——粒度到函数和算法，&lt;strong&gt;单模块可并行设计&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据结构 &amp;gt; 算法&lt;/strong&gt;——概要设计阶段&lt;strong&gt;数据字典比算法重要&lt;/strong&gt;，因为数据结构是模块间共享的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;改了概要必须通知所有相关人&lt;/strong&gt;——默默改概要 = 默默改契约 = 撕毁合作基础&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不写详细设计时，概要要写得更细&lt;/strong&gt;——反之则要&lt;strong&gt;保留详细设计的预算&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="九when-to-use"&gt;九、When to use
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;必备设计&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1 人、1 个月、1 模块&lt;/td&gt;
					&lt;td&gt;不需要正式设计文档&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2-3 人、2-3 个月、单一系统&lt;/td&gt;
					&lt;td&gt;概要设计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3+ 人、3+ 月、多子系统&lt;/td&gt;
					&lt;td&gt;概要设计 + 详细设计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;多团队、外部审计、合规项目&lt;/td&gt;
					&lt;td&gt;概要设计 + 详细设计 + 评审记录 + 变更记录&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="#" &gt;项目全流程模板/2设计/1概要设计.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#" &gt;项目全流程模板/2设计/设计.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#" &gt;项目全流程/2设计/设计.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2024-视角"&gt;2024+ 视角
&lt;/h2&gt;&lt;p&gt;2015 年的&amp;quot;概要 vs 详细&amp;quot;分界到 2024-2026 年依然成立，但&lt;strong&gt;形式与协作方式&lt;/strong&gt;发生了几个关键变化：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;C4 模型取代大段文字&lt;/strong&gt;：Simon Brown 的 C4 模型（Context → Container → Component → Code）成为软件架构图的&lt;strong&gt;事实标准&lt;/strong&gt;。一张 C4 上下文图顶 50 页&amp;quot;总体设计说明&amp;quot;。&lt;strong&gt;Structurizr DSL&lt;/strong&gt; + &lt;strong&gt;Structurizr Lite&lt;/strong&gt; 是写 C4 的工具首选。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADR（Architecture Decision Records）正式成为评审产物&lt;/strong&gt;：每个重要决策一个 ADR（Markdown 文件 + git 管理），模板：
&lt;ul&gt;
&lt;li&gt;状态：提议 / 已接受 / 已废弃 / 已取代&lt;/li&gt;
&lt;li&gt;上下文：要解决什么问题&lt;/li&gt;
&lt;li&gt;决策：选了哪个方案&lt;/li&gt;
&lt;li&gt;后果：trade-off、风险、未来影响&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构评估从 ATAM → ADR + Fitness Functions&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;2015 年前用 &lt;strong&gt;ATAM（架构权衡分析法）&lt;/strong&gt; 做架构评审&lt;/li&gt;
&lt;li&gt;2024 年用 &lt;strong&gt;ADR 累积 + 持续验证&lt;/strong&gt;：每个架构属性（性能 / 可用性 / 安全）有对应的 &lt;strong&gt;Fitness Function&lt;/strong&gt;（自动测试），CI 中持续验证&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云原生架构让&amp;quot;物理部署&amp;quot;和&amp;quot;逻辑架构&amp;quot;分离&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;概要设计要写&amp;quot;逻辑架构&amp;quot; + &amp;ldquo;物理部署（K8s/Serverless）&amp;rdquo; 两层&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt;（Terraform / Pulumi / Crossplane）让部署图也是 git 的一部分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微服务架构的概要设计新要素&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;服务边界（按业务能力 / DDD 子域）&lt;/li&gt;
&lt;li&gt;通信模式（同步 REST/gRPC vs 异步事件）&lt;/li&gt;
&lt;li&gt;数据一致性（Saga / Outbox / CDC）&lt;/li&gt;
&lt;li&gt;可观测性（OTel / RED/USE 指标）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构师角色升级&lt;/strong&gt;：从&amp;quot;画图 + 评审&amp;quot;到&amp;quot;&lt;strong&gt;决策 + 治理 + 演进&lt;/strong&gt;&amp;quot;——C4 + ADR + Fitness Function + ADR 看板 + 架构腐化检测（SonarQube / ArchUnit）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;概要 vs 详细&amp;quot;边界依然不变&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;概要：模块 / 接口 / 部署 / 数据流（C4 Level 1-3）&lt;/li&gt;
&lt;li&gt;详细：类 / 函数 / 算法 / 状态机（C4 Level 4 + 序列图）&lt;/li&gt;
&lt;li&gt;永远不要在概要设计里写伪代码——&lt;strong&gt;让代码本身就是详细设计&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;2015 视角 vs 2024 视角对照&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;2015&lt;/th&gt;
					&lt;th&gt;2024&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;图表&lt;/td&gt;
					&lt;td&gt;Visio / Rational Rose&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;C4 + Structurizr + Mermaid&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;决策记录&lt;/td&gt;
					&lt;td&gt;邮件 / Word 评审&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ADR（git 管理）&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;物理部署&lt;/td&gt;
					&lt;td&gt;表格 + Visio&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Terraform / Helm / Crossplane&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构评估&lt;/td&gt;
					&lt;td&gt;ATAM 评审会&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ADR + Fitness Function + 持续验证&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构腐化&lt;/td&gt;
					&lt;td&gt;人工 review&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ArchUnit + SonarQube&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：2015 年这篇&amp;quot;先概要、后详细&amp;quot;的方法论&lt;strong&gt;至今仍是行业最佳实践&lt;/strong&gt;，但工具从 Visio 转向 C4 + ADR + IaC，治理从一次性评审转向持续验证。&lt;/p&gt;</description></item></channel></rss>