
第 1 章后半段我读了两遍才理清。它把架构与软件生命周期和41 视图模型两件事塞在一节里中间还穿插了构件、连接件这些到第 7 章才展开的概念。第一遍读的感受是每句话都对但不知道要拿来干什么。后来发现这节其实只回答一个问题一份架构怎么描述才算说清楚了。生命周期解决的是什么时候做架构41 视图解决的是做完往哪写。想明白这两句第 1 章剩下的内容就不散了。一、架构设计卡在生命周期的哪一环教材把软件生命周期切成六段架构在每个阶段干的活是不一样的阶段架构相关的活动这阶段做错了会怎样需求分析从需求模型用例提炼出架构的约束与质量目标架构做得再漂亮做的是别的东西设计架构设计在这产出构件划分、连接件、约束后面所有返工的源头都在这实现按架构模型把构件一个个写出来或复用已有构件构件接口跟架构对不上集成时才发现构件组装用连接件把构件接起来形成系统连接件选型错了比如该用消息队列却直连部署把构件装到物理节点上物理视图在这落地部署拓扑撑不住性能目标后开发架构的演化与维护对应第 10 章架构腐化改一处坏三处这张表最值得记住的是两句话架构设计在设计阶段但输入来自需求分析、约束到部署和后开发才兑现。选择题里问架构设计属于哪个阶段答案在设计阶段不会是需求分析阶段——需求阶段只产出需求模型架构模型是设计阶段的产出物。还有个容易踩的点需求分析阶段的模型是架构设计的输入不是架构设计本身。有些题目会把用例模型描述成架构模型的一部分来迷惑你用例是需求侧的东西。二、41 视图五个视角各画给谁看41 视图是 Kruchten 在 1995 年提出的教材第 1 章直接引用了它作为架构描述的标准做法。它说的是一份架构从五个角度看才说得完整。视图关注什么主要面向谁常用 UML 图逻辑视图系统对外的功能、业务概念与对象结构最终用户、业务方类图、对象图、状态图、顺序图开发视图代码的组织包、子系统、库、构件划分开发人员、项目经理包图、构件图进程视图运行时的并发、同步、通信、性能与吞吐系统集成人员活动图、顺序图、通信图、时序图物理视图软件装在哪台机器上、网络拓扑、节点间通信系统工程师、运维部署图场景1用典型用例把前四个视图串起来验证所有涉众用例图、活动图那个1是场景也叫用例视图。它特殊在不是第五个平行的视角而是用来验证前四个视图的工具拿一个典型业务流程跑一遍看逻辑视图里的对象、进程视图里的线程、物理视图里的节点能不能对上。对不上就说明架构描述有缺口。我一开始就把它当成第五个视图去背结果做题时遇到哪个视图用于验证其他视图的一致性直接选错。答案是场景。三、视图和图不是一回事对照表这是第 1 章和第 3 章 UML 最容易搅在一起的地方。视图是描述架构的角度UML 图是表达视图的工具两者不是一一对应的。UML 图主要服务于哪个视图会不会被别的视图借用类图、对象图逻辑视图开发视图偶尔会用包图、构件图开发视图部署阶段看构件部署位置顺序图、通信图进程视图逻辑视图描述对象交互时也用活动图进程视图场景描述业务流时常用状态图逻辑视图进程视图描述状态迁移时也会出现部署图物理视图基本专用用例图场景视图需求阶段也用注意阶段归属所以遇到某视图用什么图描述答案往往是一组图而不是一张图。反过来问顺序图描述哪个视图标准答案是进程视图但逻辑视图里也会用——碰到这种题判断依据是主要服务于谁选最贴近的那个。四、易混辨析两对长得最像的视图真正让我丢分的是这两对。它们名字差得远实际内容很容易张冠李戴。第一对逻辑视图 vs 开发视图维度逻辑视图开发视图回答的问题系统是什么、能做什么代码怎么摆、谁负责哪块基本单元类、对象、业务概念包、子系统、库、模块面向涉众用户、业务方开发人员、项目经理看不懂的后果不知道系统干嘛的不知道代码在哪、怎么分工一句话区分讲业务讲代码组织区分方法很土但有效逻辑视图里的东西业务方能看懂订单、账户、库存开发视图里的东西只有开发能看懂order-service 包、common-utils 库。题目里出现子系统划分“包结构”复用这类词八成在说开发视图。第二对进程视图 vs 物理视图维度进程视图物理视图回答的问题运行时谁在跑、怎么并发通信软件装在哪、机器怎么连基本单元进程、线程、消息队列、锁节点、服务器、网络链路关注质量属性性能、并发、吞吐、可伸缩性可用性、可靠性、部署成本典型图活动图、顺序图、时序图部署图一句话区分讲运行讲机器一个记忆锚点进程视图是软件的运行时物理视图是硬件的分布。题目里出现线程“并发”“同步”“死锁走进程视图出现服务器”“节点”“机房”网络拓扑走物理视图。五、这个点怎么考论文能不能用先说考频判断基于我做几遍历年练习题的印象不针对具体某一次考试综合知识稳定出现一年至少一次题型固定——给你一段描述问属于哪个视图或者问某视图面向谁。属于送分题但前提是你真分得清。案例分析很少单独考但 2019 年之后案例里出现过补充架构描述缺失的视图这类问法属于低频但一旦遇到就是送分。论文这是 41 视图真正值钱的地方。论文评分里描述你设计的架构是必写的段落很多人写不出来或者写成技术栈清单。论文里的用法我试过确实好用在架构设计那一节用四个视图分四小段铺开——逻辑视图写系统的功能划分与关键类开发视图写模块分层和团队分工进程视图写并发模型和异步消息物理视图写部署拓扑和容灾。四段下来 800~1000 字内容全是架构语言比写我们用了 Spring Cloud像样得多。再补一句场景视图在论文里也别浪费可以拿它写我用典型业务流程验证了四个视图的一致性这一句能顺带体现你做过架构评审阅卷老师会看。六、怎么记住我自己的口诀是十个字逻辑讲功能开发讲包进程讲并发物理讲机器场景把四个串起来。配一张速查表我听到这些词对应视图类、对象、业务概念、功能逻辑视图包、子系统、模块、复用、分层开发视图线程、进程、并发、同步、消息进程视图节点、服务器、部署、网络拓扑物理视图用例、典型流程、验证一致性场景视图1第 1 章到这里就收尾了。它的价值不在于记住多少概念而在于给你一个坐标系后面第 7 章讲架构风格其实是在讲逻辑视图和开发视图可以有哪些套路第 13 章层次式架构本质是开发视图的一种第 14 章云原生讲的又是物理视图和进程视图。下一篇进入第 2 章计算机系统基础知识从 CPU 结构、存储器层次和总线开始。这章知识点密集但考得不深我会重点标出哪些是真考点、哪些扫一眼就行。