第一部分:软件工程基础
1.1 系统工程核心
- 系统特性:整体性、层次性、相关性、目的性、环境适应性、动态性
- 核心思想:整体最优而非局部最优
- 霍尔三维结构:逻辑维、时间维、知识维
- WSR 方法:懂物理、明事理、通人理
1.2 信息系统生命周期
五阶段:系统规划→系统分析→系统设计→系统实施→运行维护
1.3 软件开发模型(必考)
表格
| 模型 | 核心特点 | 适用场景 |
|---|---|---|
| 瀑布模型 | 线性顺序,文档驱动 | 需求明确稳定的项目 |
| 增量模型 | 分批交付,逐步完善 | 需求逐步明确的项目 |
| 螺旋模型 | 迭代 +风险分析 | 高风险、大型复杂项目 |
| 敏捷开发 | 迭代增量,快速响应变化 | 需求多变、快速交付 |
| 统一过程 (UP) | 用例驱动,架构为中心 | 大型企业级项目 |
1.4 需求工程
- 需求分类:功能需求、非功能需求、设计约束
- 需求获取:访谈、问卷、原型法、头脑风暴
- 需求分析模型:数据流图 (DFD)、实体关系图 (ERD)、状态图
- 需求验证:评审、原型验证、测试用例
1.5 软件设计原则
- SOLID 原则(必考):
- S单一职责:一个类只负责一个功能
- O开闭原则:对扩展开放,对修改关闭
- L里氏替换:子类可替换父类
- I接口隔离:客户端不依赖不需要的接口
- D依赖倒置:依赖抽象而非具体
- 通用原则:高内聚低耦合、信息隐藏、抽象化、关注点分离
第二部分:系统架构设计理论
2.1 软件架构基本概念
- 架构定义:系统的基本组织方式,包含组件、连接件、约束、质量属性
- 4+1 视图模型(必考):
- 逻辑视图:功能分解、模块、类、接口
- 开发视图:静态组织、分层、子系统
- 进程视图:并发同步、进程 / 线程、调度
- 物理视图:部署拓扑、硬件、网络
- 场景视图:用例驱动,串联其他视图(+1)
2.2 经典架构风格(重中之重)
数据流风格
- 管道 - 过滤器:Unix shell、编译器,组件独立,数据流式传输
- 批处理序列:传统数据处理,整体处理,批量输出
调用返回风格
- 主程序 - 子程序:结构化编程,单线程控制
- 面向对象:对象 + 消息传递,封装继承多态
- 分层架构:OSI 七层、TCP/IP,每层只与相邻层交互
独立组件风格
- 客户端 - 服务器:请求 - 响应模式,集中式服务
- 发布 - 订阅:事件驱动,松耦合,异步通信
虚拟机风格
- 解释器:规则引擎、虚拟机,跨平台执行
- 规则基系统:专家系统,基于规则推理
仓库风格
- 数据库:中央数据存储,各组件共享数据
- 黑板系统:多专家协作,问题逐步求解
第三部分:分布式系统架构
3.1 分布式基础理论
- CAP 定理(必考):一致性 (C)、可用性 (A)、分区容错性 (P),三者不可兼得,分布式系统必须选择 P
- BASE 理论:基本可用、软状态、最终一致性
- FLP 不可能定理:异步系统中不存在确定性共识算法
3.2 分布式一致性协议
- 2PC:准备阶段→提交阶段,强一致但可用性差,同步阻塞
- 3PC:CanCommit→PreCommit→DoCommit,解决 2PC 阻塞问题
- Paxos:基于多数派,角色:Proposer、Acceptor、Learner
- Raft:Paxos 简化版,子问题:领导选举、日志复制、安全性
3.3 分布式事务
- 刚性事务:ACID 特性,强一致性
- 柔性事务:BASE 特性,最终一致性
- 常见方案:
- TCC:Try-Confirm-Cancel,业务侵入性强
- SAGA:长事务,补偿逻辑复杂
- 本地消息表、消息队列事务
第四部分:系统质量属性与架构评估
4.1 核心质量属性
- 性能:响应时间、吞吐量、并发数
- 可用性:MTBF (平均无故障时间)、MTTR (平均恢复时间)
- 可靠性:容错、灾备、自动重试
- 可修改性:可维护性、可扩展性、可移植性
- 安全性:认证、授权、加密、审计
4.2 架构评估方法
- SAAM:软件架构分析方法,主要评估可修改性
- ATAM(必考):架构权衡分析方法,评估多个质量属性,识别风险点和权衡点
- CBAM:成本收益分析方法,在 ATAM 基础上加入经济因素
4.3 质量属性战术
可用性战术
- 错误检测:心跳机制、异常监控、Ping/Echo
- 错误恢复:主动冗余、被动冗余、回滚恢复
- 错误预防:事务机制、进程监控、资源预分配
性能战术
- 资源管理:引入并发、维持数据副本、增加资源
- 资源调度:优先级调度、公平调度、负载均衡
- 资源需求:减少计算量、优化算法、缓存数据
第五部分:新兴架构技术
5.1 微服务架构
- 核心思想:单一职责、独立部署、松耦合、技术异构
- 设计原则:康威定律、领域驱动设计 (DDD)
- 关键技术:
- 服务注册发现:Nacos、Eureka
- API 网关:Spring Cloud Gateway、Kong
- 配置中心:Nacos、Apollo
- 熔断降级:Sentinel、Hystrix
- 分布式追踪:SkyWalking、Zipkin
5.2 云原生架构
- 定义:基于云计算技术栈,面向云环境设计和运行的应用
- 核心原则:服务化、弹性、可观测、韧性、自动化
- 核心技术:
- 容器化:Docker
- 容器编排:Kubernetes
- 服务网格:Istio
- 不可变基础设施
5.3 Serverless 架构
- 核心思想:开发者只需关注业务逻辑,无需管理服务器
- 特点:事件驱动、按需执行、自动扩缩容、按使用付费
- 典型应用:函数计算 (FaaS)、后端即服务 (BaaS)
第六部分:数据库与存储技术
6.1 数据库基础
- 三级模式两级映像:外模式→模式→内模式,保证数据的逻辑独立性和物理独立性
- 关系数据库规范化:
- 1NF:属性不可再分
- 2NF:消除部分依赖
- 3NF:消除传递依赖
- BCNF:消除主属性对码的部分和传递依赖
6.2 数据库优化
- 索引优化:B + 树索引、哈希索引、覆盖索引,避免索引失效
- 查询优化:避免全表扫描,优化 SQL 语句,使用 EXPLAIN 分析
- 分库分表:水平分表、垂直分表、读写分离
- 缓存技术:Redis、Memcached,解决缓存穿透、击穿、雪崩问题
6.3 NoSQL 数据库
- 键值数据库:Redis、DynamoDB,适合缓存、会话存储
- 文档数据库:MongoDB,适合半结构化数据
- 列族数据库:HBase,适合大数据存储
- 图数据库:Neo4j,适合关系复杂的数据
第七部分:信息安全技术
7.1 安全设计原则
- 最小权限原则:只授予完成任务所需的最小权限
- 纵深防御原则:多层防护,避免单点失效
- 默认安全原则:默认配置应为最安全状态
- 安全隔离原则:将不同安全级别的系统和数据隔离
7.2 加密技术
- 对称加密:DES、3DES、AES,速度快,适合大量数据加密
- 非对称加密:RSA、ECC,速度慢,适合密钥交换和数字签名
- 哈希算法:MD5 (已不安全)、SHA-1、SHA-256,用于数据完整性验证
7.3 身份认证与授权
- 认证方式:用户名密码、短信验证码、生物识别、多因素认证
- 授权协议:OAuth 2.0、OpenID Connect、SAML
- 访问控制:
- DAC:自主访问控制
- MAC:强制访问控制
- RBAC:基于角色的访问控制
高频考点速记口诀
- CAP 定理:CAP 三选二,分区容错不可弃
- 4+1 视图:逻开进物场,用例来串联
- SOLID 原则:单一开闭里氏替,接口隔离依赖倒
- 云原生原则:服弹可韧所零架
- 信息系统生命周期:信生规分设实运
打印说明:本文档采用标准 A4 纸张,左右边距 2cm,上下边距 2.5cm,分两栏排版,字号 10 号,行间距 1.15 倍。重点内容已加粗,便于快速识别和背诵。