软考高级系统架构师 ------ 复习资料
考试简介 :系统架构设计师(System Architect)属于全国计算机技术与软件专业技术资格(水平)考试高级科目。考试分为三科:综合知识 (选择题75分,45分及格)、案例分析 (问答题75分,45分及格)、论文(写作题75分,45分及格),一次通过三科方可获证。
目录
一、计算机系统基础
1.1 计算机体系结构
冯·诺依曼 vs 哈佛结构
| 特性 |
冯·诺依曼 |
哈佛 |
| 指令与数据 |
共享总线 |
独立总线 |
| 瓶颈 |
冯·诺依曼瓶颈 |
缓解 |
| 应用 |
通用计算机 |
DSP、MCU |
流水线技术
- 流水线周期:最长段执行时间
- 流水线执行时间:( T = T_1 + (n-1) \times \Delta t )(( \Delta t ) 为流水线周期)
- 加速比:( S = T_{串行} / T_{流水线} )
- 吞吐率:( TP = n / T )
- 数据冒险:RAW(读后写)、WAR(写后读)、WAW(写后写)
多级存储体系
CPU寄存器 → Cache(L1/L2/L3) → 主存(DRAM) → 外存(SSD/HDD)
↓ 速度最快 ↓ 次之 ↓ 较慢 ↓ 最慢
↓ 容量最小 ↓ 较小 ↓ 中等 ↓ 最大
- Cache 映射方式:直接映射、全相联、组相联
- Cache 写策略:写直达(Write Through)、写回(Write Back)
- 局部性原理:时间局部性、空间局部性
1.2 操作系统
进程管理
- 三态模型:就绪 → 运行 → 阻塞
- 五态模型:新建、就绪、运行、阻塞、终止
- PV 操作 (信号量):
- P(S):S = S - 1,若 S < 0 则阻塞
- V(S):S = S + 1,若 S ≤ 0 则唤醒
死锁
四个必要条件(缺一不可):
- 互斥条件
- 请求保持
- 不可剥夺
- 循环等待
死锁处理策略:预防(破坏四个条件之一)、避免(银行家算法)、检测与解除
内存管理
- 页式存储:逻辑地址 → 页号 + 页内偏移;通过页表映射到物理地址
- 段式存储:按逻辑段划分,段表存基址和段长
- 段页式:段内分页,兼顾逻辑和效率
- 页面置换算法:OPT(最优)、LRU(最近最少使用)、FIFO(先进先出)、CLOCK
1.3 文件系统
- 索引结构:直接索引、间接索引(一级/二级/三级)
- 空闲空间管理:位示图、空闲链表、成组链接法
- RAID:RAID0(条带)、RAID1(镜像)、RAID5(分布式奇偶校验)、RAID10
二、系统架构设计
2.1 架构风格
| 风格 |
特点 |
典型应用 |
| 管道-过滤器 |
数据流,组件间通过管道传递 |
Unix Shell、编译器 |
| 分层架构 |
每层提供接口给上层,n层只依赖n-1层 |
OSI、Spring MVC |
| C/S & B/S |
客户端-服务器 / 浏览器-服务器 |
企业应用 |
| 事件驱动 |
发布-订阅,异步解耦 |
GUI、消息中间件 |
| 微内核 |
核心功能在内核,扩展在外部服务 |
操作系统 |
| 微服务 |
小型独立服务,独立部署 |
云原生应用 |
| SOA |
面向服务,ESB总线 |
企业集成 |
| MVC |
Model-View-Controller |
Web框架 |
| REST |
资源导向,无状态 |
API设计 |
2.2 架构质量属性(重要 ★★★)
| 属性 |
定义 |
战术 |
| 可用性 |
系统正常运行时间比例 |
冗余、心跳检测、故障转移 |
| 性能 |
响应时间、吞吐量 |
缓存、并发、负载均衡 |
| 安全性 |
抵御攻击能力 |
认证、授权、加密、审计 |
| 可修改性 |
变更代价 |
抽象、接口隔离、依赖注入 |
| 可测试性 |
缺陷发现容易度 |
依赖注入、日志、桩/模拟 |
| 易用性 |
用户交互质量 |
界面一致性、容错、帮助 |
| 可靠性 |
规定条件下执行功能 |
冗余、事务、检查点 |
2.3 架构评估方法
ATAM(架构权衡分析法)
- 场景和需求收集:确定质量属性场景
- 架构描述:描述架构方案
- 属性模型建立:分析每个场景的响应
- 属性模型分析:识别敏感点、权衡点、风险点
- 报告:输出评估报告
SAAM(软件架构分析方法)
更轻量,通过场景评估架构对质量需求的满足程度。
关键概念:
- 敏感点:一个修改影响的一个或多个组件
- 权衡点:影响多个质量属性的点
- 风险点:架构中的潜在问题
- 非风险点:已验证的良好设计
2.4 架构模式
MVC 模式
用户输入 → Controller → 更新 Model → 通知 View → 用户看到
分层架构
表示层 → 业务逻辑层 → 数据访问层 → 数据库
微服务架构
特点:独立部署、技术异构、围绕业务能力、去中心化治理
挑战:分布式复杂性、数据一致性、服务发现、容错
事件驱动架构
两种拓扑:
- 中介拓扑:事件通过中央中介分发
- 代理拓扑:事件通过消息队列链式传递
2.5 设计模式(高频考点 ★★★)
创建型模式
| 模式 |
意图 |
场景 |
| 单例 |
全局唯一实例 |
配置管理、日志 |
| 工厂方法 |
子类决定实例化哪个类 |
框架扩展点 |
| 抽象工厂 |
创建相关对象族 |
跨平台UI |
| 建造者 |
分步构建复杂对象 |
StringBuilder |
| 原型 |
克隆对象 |
对象复制 |
结构型模式
| 模式 |
意图 |
场景 |
| 适配器 |
接口转换 |
旧系统集成 |
| 桥接 |
抽象与实现分离 |
跨平台开发 |
| 组合 |
树形结构统一处理 |
文件系统、UI组件树 |
| 装饰器 |
动态添加职责 |
Java IO流 |
| 外观 |
统一高层接口 |
复杂子系统的简化入口 |
| 享元 |
共享细粒度对象 |
字符处理、连接池 |
| 代理 |
控制对象访问 |
RMI、AOP |
行为型模式
| 模式 |
意图 |
场景 |
| 责任链 |
多个处理者依次处理 |
审批流、过滤器链 |
| 命令 |
请求封装为对象 |
撤销/重做、队列 |
| 解释器 |
解释语言文法 |
SQL解析、正则 |
| 迭代器 |
统一遍历方式 |
集合遍历 |
| 中介者 |
对象间松耦合交互 |
GUI组件通信 |
| 备忘录 |
快照与恢复 |
撤销操作 |
| 观察者 |
一对多依赖通知 |
事件监听、发布订阅 |
| 状态 |
状态驱动行为变化 |
订单状态、状态机 |
| 策略 |
算法族可切换 |
排序策略、支付方式 |
| 模板方法 |
定义算法骨架 |
框架基类 |
| 访问者 |
操作与结构分离 |
编译器AST |
三、软件工程
3.1 软件开发模型
| 模型 |
特点 |
适用场景 |
| 瀑布模型 |
阶段串行、文档驱动 |
需求明确稳定的项目 |
| V模型 |
测试与开发并行对应 |
质量要求高的项目 |
| 原型模型 |
快速构建原型、迭代 |
需求不明确 |
| 螺旋模型 |
风险驱动、迭代增量 |
大型高风险项目 |
| 增量模型 |
逐步构建、分批交付 |
中等规模项目 |
| RAD |
快速应用开发 |
时间紧迫 |
| 敏捷 |
迭代增量、拥抱变化 |
需求易变的项目 |
3.2 敏捷开发
Scrum
Sprint计划 → 每日站会(15min) → Sprint Review → Sprint Retro
2-4周 每天 评审 回顾
三个角色:Product Owner、Scrum Master、Development Team
XP(极限编程)
12个实践:计划游戏、小版本、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有权、持续集成、每周40小时、现场客户、编码标准
看板(Kanban)
可视化工作流,限制 WIP(进行中工作),度量周期时间
3.3 需求工程
需求层次
业务需求 → 用户需求 → 功能需求 + 非功能需求
(Why) (What) (How)
需求获取方法
- 访谈、问卷调查、头脑风暴
- 原型法、观察法、文档分析
- 联合需求计划(JRP)
需求分析
- 结构化分析:数据流图(DFD)、数据字典(DD)、E-R图
- 面向对象分析:用例图、类图、活动图、状态图
需求规格说明书(SRS)
应具备:无歧义、完整、可验证、一致、可修改、可跟踪
3.4 软件测试(高频 ★★★)
测试层级
单元测试 → 集成测试 → 系统测试 → 验收测试
↓ ↓ ↓ ↓
白盒为主 灰盒/黑盒 黑盒为主 用户参与
测试分类
| 维度 |
类型 |
| 是否执行代码 |
静态测试、动态测试 |
| 是否了解内部 |
白盒、黑盒、灰盒 |
| 测试目标 |
功能、性能、安全、兼容性、易用性 |
| 执行方式 |
手工、自动化 |
白盒测试
- 语句覆盖:每个语句至少执行一次(最弱)
- 判定覆盖:每个判定的真假分支至少一次
- 条件覆盖:每个条件的真假至少一次
- 判定-条件覆盖:判定 + 条件
- 条件组合覆盖:所有条件组合(较强)
- 路径覆盖:所有可能路径(最强,但可能不可行)
McCabe 圈复杂度:( V(G) = E - N + 2 = P + 1 )(P 为判定节点数)
黑盒测试
- 等价类划分:有效等价类、无效等价类
- 边界值分析:边界值、边界+1、边界-1
- 决策表:条件与动作的组合矩阵
- 因果图:输入条件的逻辑关系
- 正交试验法:多因素多水平的组合优化
性能测试
- 负载测试:预期负载下系统行为
- 压力测试:超出极限的负载
- 并发测试:多用户同时访问
- 稳定性测试:长时间运行
- 容量测试:最大数据处理能力
3.5 软件维护
| 类型 |
占比 |
说明 |
| 改正性 |
20% |
修复错误 |
| 适应性 |
25% |
适应环境变化 |
| 完善性 |
50% |
增加新功能 |
| 预防性 |
5% |
预防未来问题 |
3.6 软件质量模型(ISO/IEC 25010)
- 功能适用性:功能完备、正确、适当
- 性能效率:时间行为、资源利用、容量
- 兼容性:共存性、互操作性
- 易用性:可辨识、可学习、可操作、用户差错保护
- 可靠性:成熟性、可用性、容错、可恢复
- 安全性:保密性、完整性、不可抵赖性、可追溯性
- 可维护性:模块化、可复用、可分析、可修改
- 可移植性:适应性、可安装、可替换
四、项目管理
4.1 范围管理
WBS(工作分解结构):面向交付物的层次化分解,底层为工作包(8~80小时工作量)
4.2 时间管理
关键路径法(CPM)
- 关键路径:总时差为零的活动序列,决定项目最短工期
- 总时差 ( TF = LS - ES = LF - EF )
- 自由时差 ( FF = \min(ES_{后继}) - EF )
PERT(计划评审技术)
期望工期 ( T = \frac{O + 4M + P}{6} )(O:乐观、M:最可能、P:悲观)
标准差 ( \sigma = \frac{P - O}{6} )
4.3 成本管理
| 指标 |
公式 |
说明 |
| PV |
计划值 |
计划完成工作的预算 |
| EV |
挣值 |
实际完成工作的预算 |
| AC |
实际成本 |
实际花费 |
| SV |
EV - PV |
进度偏差(>0 超前) |
| CV |
EV - AC |
成本偏差(>0 节约) |
| SPI |
EV / PV |
进度绩效指数 |
| CPI |
EV / AC |
成本绩效指数 |
4.4 风险管理
风险应对策略:
- 规避:消除威胁
- 转移:转移给第三方(如保险)
- 减轻:降低概率或影响
- 接受:不采取措施(主动/被动)
4.5 配置管理
- 配置项(CI):受控的软件/硬件组件
- 基线:正式评审通过的配置项状态
- 变更控制流程:变更申请 → 变更评估 → 变更审批 → 变更实施 → 变更验证
五、信息安全
5.1 信息安全要素(CIA 三元组)
| 要素 |
含义 |
措施 |
| 机密性 |
信息不被泄露给非授权者 |
加密、访问控制 |
| 完整性 |
信息不被篡改 |
数字签名、Hash |
| 可用性 |
合法用户可正常访问 |
冗余、DDoS防护 |
5.2 加密算法
对称加密
| 算法 |
密钥长度 |
特点 |
| DES |
56 bit |
已淘汰 |
| 3DES |
168 bit |
安全但慢 |
| AES |
128/192/256 bit |
当前标准 |
| RC4 |
可变 |
流密码,已不安全 |
| SM4 |
128 bit |
中国国密标准 |
非对称加密
| 算法 |
原理 |
用途 |
| RSA |
大数分解 |
加密、签名、密钥交换 |
| ECC |
椭圆曲线 |
移动端优先(密钥短) |
| SM2 |
椭圆曲线 |
中国国密标准 |
对比:对称加密速度快(数据加密)、非对称加密速度慢(密钥交换、签名)
Hash 算法
| 算法 |
输出长度 |
安全性 |
| MD5 |
128 bit |
已破解,仅用于校验 |
| SHA-1 |
160 bit |
不安全 |
| SHA-256 |
256 bit |
安全 |
| SM3 |
256 bit |
中国国密标准 |
5.3 数字签名
- 签名过程:用私钥加密 Hash → 附加到原文
- 验证过程:用公钥解密签名 → 对比 Hash
5.4 网络安全
常见攻击
| 攻击 |
说明 |
防御 |
| SQL注入 |
恶意 SQL 拼接 |
参数化查询 |
| XSS(跨站脚本) |
注入恶意脚本 |
输出编码 |
| CSRF(跨站请求伪造) |
伪造用户请求 |
Token 验证 |
| DDoS |
分布式拒绝服务 |
流量清洗、限流 |
| 中间人 |
窃听/篡改通信 |
TLS/SSL |
防火墙类型
- 包过滤:基于 IP/端口规则(网络层)
- 状态检测:追踪连接状态(传输层)
- 应用代理:应用层代理转发(应用层)
- WAF:Web 应用防火墙
安全协议
| 协议 |
层级 |
功能 |
| IPSec |
网络层 |
VPN,AH+ESP |
| SSL/TLS |
传输层 |
HTTPS 基础 |
| SET |
应用层 |
电子交易安全 |
| Kerberos |
应用层 |
身份认证 |
5.5 等级保护
等保 2.0:一级(自主保护)→ 二级(指导保护)→ 三级(监督保护)→ 四级(强制保护)→ 五级(专控保护)
核心变化:从「被动防御」到「主动防御」;增加云计算、物联网、移动互联、工业控制等扩展要求。
六、网络与通信
6.1 OSI 七层模型 & TCP/IP
| OSI 层 |
功能 |
典型协议 |
TCP/IP 层 |
| 应用层 |
用户接口 |
HTTP、FTP、SMTP、DNS、SNMP |
应用层 |
| 表示层 |
数据格式 |
JPEG、ASCII、加密 |
(应用层) |
| 会话层 |
会话管理 |
RPC、SQL |
(应用层) |
| 传输层 |
端到端传输 |
TCP、UDP |
传输层 |
| 网络层 |
路由选择 |
IP、ICMP、OSPF、BGP |
网际层 |
| 数据链路层 |
帧传输 |
Ethernet、PPP、ARP |
网络接口层 |
| 物理层 |
比特流 |
RJ45、光纤 |
网络接口层 |
6.2 TCP vs UDP
| 特性 |
TCP |
UDP |
| 连接 |
面向连接 |
无连接 |
| 可靠性 |
可靠(确认重传) |
不可靠 |
| 顺序 |
有序 |
无序 |
| 流量控制 |
滑动窗口 |
无 |
| 拥塞控制 |
慢启动、拥塞避免 |
无 |
| 适用场景 |
文件传输、Web、邮件 |
视频直播、DNS、语音 |
TCP 三次握手:SYN → SYN-ACK → ACK
TCP 四次挥手:FIN → ACK → FIN → ACK
6.3 路由协议
| 协议 |
类型 |
算法 |
| RIP |
内部网关(IGP) |
距离向量 |
| OSPF |
内部网关(IGP) |
链路状态(Dijkstra) |
| BGP |
外部网关(EGP) |
路径向量 |
七、数据库系统
7.1 事务 ACID
| 特性 |
说明 |
实现 |
| 原子性 |
全做或全不做 |
Undo Log |
| 一致性 |
事务前后约束一致 |
应用层 + 约束 |
| 隔离性 |
并发事务不互相干扰 |
锁、MVCC |
| 持久性 |
提交后永久生效 |
Redo Log |
7.2 并发控制
封锁协议
- 一级封锁协议:写前加 X 锁,事务结束释放(防止丢失修改)
- 二级封锁协议:一级 + 读前加 S 锁,读完释放(防止脏读)
- 三级封锁协议:一级 + 读前加 S 锁,事务结束释放(防止不可重复读)
隔离级别
| 级别 |
脏读 |
不可重复读 |
幻读 |
| READ UNCOMMITTED |
✓ |
✓ |
✓ |
| READ COMMITTED |
✗ |
✓ |
✓ |
| REPEATABLE READ |
✗ |
✗ |
✓(MySQL 通过间隙锁解决) |
| SERIALIZABLE |
✗ |
✗ |
✗ |
7.3 数据库设计与范式
关系代数
- 并 ( \cup )、交 ( \cap )、差 ( - )、笛卡尔积 ( \times )
- 选择 ( \sigma_{条件}® )、投影 ( \pi_{属性列表}® )
- 连接 ( \bowtie ):( \theta )-连接、等值连接、自然连接、外连接
范式
| 范式 |
条件 |
反例 |
| 1NF |
属性不可再分 |
嵌套表 |
| 2NF |
1NF + 消除部分函数依赖 |
(学号,课程)→ 姓名 |
| 3NF |
2NF + 消除传递依赖 |
学号 → 系号 → 系主任 |
| BCNF |
3NF + 消除主属性对码的部分传递依赖 |
更严格的 3NF |
| 4NF |
BCNF + 消除非平凡多值依赖 |
--- |
7.4 分布式数据库
CAP 定理
三选二:
- 一致性(Consistency):所有节点同一时刻数据相同
- 可用性(Availability):每次请求都能获得非错响应
- 分区容错性(Partition Tolerance):网络分区时系统仍可运行
BASE 理论
- BA(Basically Available):基本可用
- S(Soft State):软状态(允许中间状态)
- E(Eventually Consistent):最终一致性
NoSQL 四大类型
| 类型 |
代表 |
特点 |
| 键值 |
Redis |
极快,简单查询 |
| 文档 |
MongoDB |
灵活schema,类JSON |
| 列族 |
HBase |
稀疏宽表,大数据 |
| 图 |
Neo4j |
关系查询,社交网络 |
八、法律法规与标准化
8.1 知识产权
- 著作权:自动获得,保护表达不保护思想,个人终身+50年,单位发表后50年
- 专利权:需申请,发明20年/实用新型10年/外观设计15年(自申请日起)
- 商标权:注册获得,有效期10年,可续展每次10年
- 商业秘密:通过保密措施保护,无期限限制
8.2 标准代号
| 标准 |
说明 |
| GB |
强制性国家标准 |
| GB/T |
推荐性国家标准 |
| ISO |
国际标准化组织 |
| IEEE |
电气电子工程师学会 |
| ANSI |
美国国家标准学会 |
8.3 企业信息化
- ERP:企业资源计划
- CRM:客户关系管理
- SCM:供应链管理
- BI:商业智能
- EAI:企业应用集成
- SOA:面向服务架构
九、论文写作
9.1 论文结构(约 2500~3000 字)
题目(摘要)
├── 项目背景(400字)
│ - 项目名称、规模、团队
│ - 个人角色与职责
│ - 项目投资与周期
├── 理论阐述(500字)
│ - 论文主题相关概念
│ - 技术选型理由
│ - 架构设计思路
├── 实践展开(1200字,核心)
│ - 具体问题描述
│ - 采用的解决方案
│ - 方案实施过程
│ - 遇到的困难与对策
├── 效果分析(300字)
│ - 方案效果(最好有数据)
│ - 不足与改进方向
└── 总结(200字)
- 经验教训
- 未来展望
9.2 常见论文主题
| 主题 |
关键点 |
| 微服务架构设计 |
服务拆分、服务治理、容错、监控 |
| 高可用系统设计 |
冗余、故障转移、限流降级、异地多活 |
| 企业应用集成 |
ESB、消息队列、API网关、数据集成 |
| 大数据处理架构 |
Lambda/Kappa、流批一体、数据湖 |
| 云原生架构 |
容器化、K8s、服务网格、DevOps |
| 系统性能优化 |
缓存策略、数据库优化、异步化、CDN |
| 安全性设计 |
纵深防御、零信任、数据加密、安全审计 |
| 遗留系统迁移 |
绞杀者模式、灰度迁移、双跑验证 |
9.3 论文评分要点
- 切题性(30%):是否紧扣题目要求
- 实践性(30%):是否有真实项目经验
- 系统性(20%):是否全面覆盖题目各个方面
- 深度(15%):是否有深入的技术细节
- 规范性(5%):格式、语言是否规范
扣分项:摘要超300字、理论空洞无实践、堆砌概念、人称混乱、字迹潦草
十、备考策略
10.1 时间分配建议
| 阶段 |
时间 |
任务 |
| 基础阶段 |
4周 |
通读教材,建立知识框架 |
| 强化阶段 |
3周 |
刷真题(近5年),攻克薄弱点 |
| 冲刺阶段 |
2周 |
案例分析专项 + 论文范文背诵 |
| 模考阶段 |
1周 |
全真模拟 + 查漏补缺 |
10.2 三科特点
| 科目 |
时间 |
题量 |
难度 |
策略 |
| 综合知识 |
150min |
75选择题 |
中等 |
知识点面广,多做真题 |
| 案例分析 |
90min |
3~5道简答题 |
较高 |
先看题再看材料,条理清晰 |
| 论文 |
120min |
1篇(2选1) |
最高 |
提前背框架,选熟悉主题 |
10.3 重点分值分布
- 系统架构设计:25~30分(最大权重)
- 软件工程:10~15分
- 项目管理:5~8分
- 信息安全:5~8分
- 计算机网络:5~8分
- 数据库:5~8分
- 法律法规:3~5分
10.4 推荐学习资源
- 教材:《系统架构设计师教程》(清华大学出版社)
- 真题:近5年真题反复做,总结高频考点
- 论文:背诵5~8篇不同主题的范文框架
- 工具:思维导图梳理知识点,错题本积累薄弱点
最后叮嘱:架构师考试重在「系统化思考」而非死记硬背。综合知识靠广度,案例分析靠深度,论文靠实践。备考时多问自己「为什么这样设计」「有没有更好的方案」,培养架构思维才是通过的关键。