全部文章

软考高级系统架构设计师:我的 12 周备考路线

把备考拆成综合知识、案例分析、论文三条独立战线。这是一份具体到每周做什么的计划表,以及几个容易忽略的扣分点。

12 分钟 · 2710 字

我给自己排了一条大约三个月、每天两小时的备考路线,目标是系统架构设计师。写下这篇,是因为我找资料时最想找的就是这种「具体到每周做什么」的记录——大部分经验帖停留在「多刷真题」,看完还是不知道今天晚上该干什么。

先声明一句:具体科目设置、题型、分值与合格标准请以当年的考试大纲和官方公告为准,下面的安排基于公开信息和我自己的计划。

这篇会随备考推进持续更新:执行情况、踩到的坑和每科复盘都会补进来。

一、先搞清楚这三科分别考什么

系统架构设计师是软考高级,通常一天之内考完三科(近年为机考)。三科彼此独立,任何一科不合格都拿不到证书——所以备考策略只有一条:不能有短板。

科目形式我认为的难点备考重心
综合知识选择题覆盖面极广,含非技术题广撒网 + 错题本,追求稳定不追求满分
案例分析简答/填空知道答案但写不到得分点答题结构 + 术语使用
论文命题写作时间压力大,素材准备不足提前备好可复用的项目素材

综合知识相对好过,论文最容易翻车,因为它同时考知识储备、结构能力和打字速度。所以我的计划里给论文留了最长的时间。

二、三个月的节奏:把「学」和「练」分开

我的原则是:前期只学不练,后期只练不学。 混着来的结果是两边都不扎实。

  • 第 1—2 周:通读官方教程,建立地图。 不求记住,只求知道有哪几章。这个阶段最大的作用是消除「未知的恐惧」。
  • 第 3—7 周:专题突破。 每两天一个专题:质量属性、架构风格、ATAM、设计模式、系统设计、数据库、安全、新技术。产出是一页手写提纲,用自己的话写。
  • 第 8—10 周:真题为主。 每周一套综合知识 + 一套案例,掐时间做;论文每周写一篇完整稿。
  • 第 11—12 周:模拟与补漏。 完整模考至少两次,重点补错题本里反复出现的那几类题。

每天两小时怎么分?我的方案是「1 小时输入 + 1 小时输出」:

周次重点周末产出
1教程通读(上)章节脑图
2教程通读(下)薄弱章节清单
3质量属性 + 架构风格一页提纲 + 场景写法
4ATAM + 设计模式一页提纲 + 对照表
5系统设计(高可用、缓存、分库分表)一页提纲
6数据库、安全、性能一页提纲
7新技术与补充错题本第一版
8真题(综合 + 案例)案例答题模板
9真题 + 论文第 1 篇完整论文稿
10真题 + 论文第 2—3 篇完整论文稿
11全真模拟 ×1补漏清单
12模拟 + 素材背诵论文素材卡

这张表贴在显示器边上,完成一天打一个勾。它的价值不在于精确,而在于每天早上不用重新决定学什么。

三、综合知识:错题本比刷题量重要

综合知识覆盖面很宽:架构、网络、数据库、数学、法律与标准化,还有管理类内容。全覆盖是不现实的。

我的做法是:

  1. 按章节刷真题,不按套卷刷。 集中刷同一个知识点的题,才能看出命题角度。
  2. 只记错题,不记笔记。 每道错题抄下题干核心 + 正确选项 + 一句话原因。
  3. 每周回顾一次错题本。 用脚本按知识点统计错题分布,找出高频盲区:
# wrong_book.py —— 把错题按知识点聚合成复习队列
import json
from collections import Counter
from pathlib import Path

records = json.loads(Path("wrong_book.json").read_text(encoding="utf-8"))
# 每条形如 {"topic": "质量属性", "question": "...", "miss_count": 2}
by_topic = Counter(r["topic"] for r in records)

for topic, count in by_topic.most_common():
    weak = [r for r in records if r["topic"] == topic and r.get("miss_count", 1) >= 2]
    print(f"{topic:<14} 错题 {count:>2} 道 | 重复出错 {len(weak):>2} 道")
质量属性         错题 11 道 | 重复出错  4 道
系统设计         错题  7 道 | 重复出错  3 道

重复出错的那几道才是真正的敌人。 只错一次的题多半是没见过;错两次以上,说明理解方式有问题,得回去重读那一段。

四、案例分析:这是一道有结构的题

案例题最大的问题是「写了一大段,得分很低」。翻了真题答案后,我总结出三条:

  1. 先定性,再展开。 第一句给出明确结论或术语,例如「该方案采用了分层架构风格,并在可用性上使用了冗余与心跳检测战术」,再分点解释。
  2. 按点作答,一点一行。 阅卷按点给分,写成一大段散文,找不到关键词就没了。
  3. 把题目里的关键词翻译成术语。 题目说「一台机器坏了另一台顶上」,你要写「采用双机热备(主备)方式,通过心跳检测实现故障转移」,而不是重复题目的白话。

案例题常见问法就那么几类:分析架构风格及优缺点、指出方案问题并说明理由、说明如何提高某个质量属性、容量与性能估算。每一类都有相对固定的骨架,练三套真题就能摸出来。

五、论文:不是临场发挥,是提前交付

论文是我投入产出比最高的一科,因为它几乎完全可以在考前准备好。

第一件事是建素材库。 我挑了一个深度参与过的真实项目,围绕它准备四五个角度的版本:可用性、性能、可修改性、安全性、架构评估。同一个项目,换不同的质量属性主线来叙述,这是应对命题不确定性的关键。

第二件事是练打字。 机考之后是录入,时间压力一样大。计划考前写满五篇,前两篇不掐时间,先把结构跑顺:

摘要(约 300 字):项目背景 + 我的角色 + 技术栈 + 一句结果
正文(约 2000 字,四段)
  一、项目背景与挑战(200 字)
  二、架构方案与技术选型(600 字,含 2—3 个具体决策)
  三、方案如何满足题目要求(800 字,得分主体,紧扣关键词)
  四、实施效果与遗留问题(300 字,要有量化对比)
结尾(约 100 字):总结 + 反思

第三件事是避开扣分点。 我复盘自己的练习稿和看过的范文,扣分主要集中在:

  • 摘要没有信息量,写成「本文论述了……」的空转开头。
  • 没有我的角色。论文考的是「你作为架构师做了什么」,通篇「我们团队」会显得你没有参与决策。
  • 只有技术罗列,没有取舍。写了用 Redis,却没说为什么不用本地缓存、接受了多大的不一致窗口。
  • 数据和结果缺失、跑题漏答。要么全程没有量化指标,要么三个小问只答了两个。
  • 字数不足或严重超标。考前要按真实输入框练到心里有数。

六、最容易被忽视的一点:主动使用架构师的语言

综合知识靠记忆就能解决,但案例和论文考的是「架构师的语言」。同一件事,用口语写和用术语写,得分完全不同——评分标准就是按术语设定关键词的。

举个例子。真实项目里我们会说「服务挂了会自动切到备用节点,大概几秒」。答题时应该写成:

该系统采用主备冗余战术,通过心跳机制检测主节点故障(检测周期 1s,连续 3 次失败判定为故障),故障转移时间控制在 5s 以内,满足可用性场景中「响应度量:年不可用时间小于 5 分钟」的要求。

信息量是一样的,但后者包含了战术、机制、响应度量三个得分点。

所以我在每个专题里都强制做一件事:用质量属性、架构风格、ATAM 这些术语把真实场景重新描述一遍。 一开始很别扭,写了七八个场景之后就顺了——它其实就是把直觉翻译成更严谨的表述。

这套语言在真实的技术评审里也确实有用。当我说「这里是个权衡点:引入本地缓存提升了性能,但降低了可修改性」,讨论立刻就能收敛到具体取舍上。考试要求的表达方式并不脱离工程,它只是把工程里那些模糊的经验说清楚了。

七、资料:少而精

我用到的资料只有三类:

  1. 官方教程。唯一的权威范围界定。至少通读一遍。
  2. 历年真题。综合知识和案例的真题价值最高,重复考点的比例不低。
  3. 自己写的一页提纲。最后两周只复习自己写的东西,因为那是我消化过的版本。

不需要买一堆模拟题。真题做三遍比自己出的模拟题做三十套有用。

小结

把这条路线压缩成四句话:

  1. 前期建地图,中期打专题,后期只做真题。
  2. 综合知识靠错题本,案例靠答题结构,论文靠提前备好的素材库。
  3. 主动使用架构术语——这既是得分方式,也是值得带走的能力。
  4. 每天两小时、坚持十二周,比考前两周每天十小时靠谱得多。

最后:节奏表可以按自己的基础缩放,具体题型与分值仍以当年考试大纲为准。等考完我会回来补一份执行偏差记录——计划表最容易骗人的地方,就是它看起来总是能完成。

本文由 Kyne 撰写,采用 CC BY-NC-SA 4.0 许可,转载请注明出处。