本笔记基于考纲核心知识点整理,配合代码示例和记忆口诀,适合冲刺复习。

一、法律法规与标准化

1.1 著作权

类别 内容
不受保护 政府公文、法律条例、时事新闻
受保护 演讲稿、编写的图书、软件代码
归属时间 软件开发完成之日起自动产生
保护期限 50年(署名权、修改权、完整权永久保护)

著作权归属规则:

  • 谁开发归谁
  • 员工利用公司资源开发 → 归公司
  • 职务作品无合同 → 归企业法人
  • 改编作品 → 著作权归改编人

⚠️ 处理过程(算法逻辑)不属于软件著作权保护对象,只保护代码表达形式。

受时间限制的权利(50年): 发表权、发行权、展览权、复制权
永久保护的权利: 署名权、修改权、保护作品完整权

1.2 其他知识产权

  • 商标权:注册完成后才享有;保护对象为软件注册商标
  • 专利权:专利注册完成后才享有

二、软件工程

2.1 软件开发模型对比

模型 适用场景 核心特征
瀑布模型 需求明确固定 阶段严格顺序,不可逆
增量模型 需求部分明确,需快速交付核心 分批次交付模块
原型模型 需求模糊,用户难以描述 先做原型再开发目标软件
螺旋模型 大型复杂高风险项目 每轮增加风险评估环节
喷泉模型 面向对象开发 无严格阶段划分,阶段可交叉迭代
V模型 可靠性要求高 开发与测试一一对应
W模型 质量要求高 开发与测试同步进行
瀑布模型阶段:
需求分析 → 系统设计 → 详细设计 → 编码 → 测试 → 维护
(每个阶段完成后才进入下一阶段)

螺旋模型四象限:
① 制定计划  ② 风险分析
③ 实施工程  ④ 客户评估

2.2 敏捷开发方法对比

方法 核心理念 关键特征
XP(极限编程) 把传统开发做到极致精简 结对编程、测试先行、持续集成
SCRUM 短周期冲刺 三会议(站会/计划/回顾),需求按商业价值排序
水晶开发 以人为本 最轻量灵活,重团队协作,文档少
FDD 特性驱动 五步:建模→功能清单→规划→设计→实现
ASD 适应性开发 猜测→协作→复盘,三个非线性阶段
DSDM 动态系统开发 八条原则,聚焦业务价值按时交付
开放源码 全球协作 高并行排障,代码公开

SCRUM 三大会议: 每日站会、迭代计划会、复盘回顾会

2.3 基于 RUP 的软件过程

RUP = Rational Unified Process(统一软件开发过程)

四个阶段:
┌──────────┬──────────┬──────────┬──────────┐
│  初始阶段  │  细化阶段  │  构建阶段  │  移交阶段  │
│ 项目范围   │ 完善架构   │  开发实现  │ 测试交付   │
│ 业务模型   │          │          │ 确认       │
└──────────┴──────────┴──────────┴──────────┘

九个核心工作流:

  • 6个过程工作流:业务建模、需求、分析与设计、实现、测试、部署
  • 3个支持工作流:配置与变更管理、项目管理、环境

开发方式: 以用例驱动 + 以体系结构为中心 + 迭代增量

2.4 软件维护类型

类型 触发原因 示例
改正性维护 修复已知 Bug 修复闪退崩溃
适应性维护 外部环境变化 支持鸿蒙系统
完善性维护 新增用户需求 支持第三方登录
预防性维护 主动防止未来问题 限制登录频率防攻击

📊 工作量占比:完善性 > 适应性 > 改正性 > 预防性

2.5 能力成熟度模型(CMMI)

Level 1 初始级   → 全靠人,无流程,英雄救场
Level 2 可重复级 → 有基本流程,旧经验可复用
Level 3 已定义级 → 全组织统一标准化流程
Level 4 已管理级 → 量化管理,数据驱动决策
Level 5 优化级   → 持续改进,主动迭代升级

记忆口诀:初重定管优

2.6 逆向工程

信息抽象层次(从高到低):

层次 内容 类比
领域级 业务知识 设计思想
功能级 程序段功能 功能模块
结构级 结构图、调用图 系统框架
实现级 语法树、符号表、具体代码 源代码
  • 重构:在同一抽象层级转化描述形式
  • 设计恢复:从已有程序抽象出设计信息
  • 再工程:基于逆向成果产生新版本
  • 使用搜索和变换可导出:实现级结构级

2.7 面向服务架构(SOA)

SOA 四大核心技术:

WSDL  → 服务描述(这个服务能干什么,接口文档)
         Web Service Description Language

SOAP  → 服务通信(怎么打包发请求,XML信封)
         Simple Object Access Protocol

UDDI  → 服务注册与发现(去哪找这个服务)
         Universal Description, Discovery and Integration

BPEL  → 服务编排(把多个服务串成一个业务流程)
         Business Process Execution Language

类比记忆:

先去UDDI黄页找服务 → 看WSDL说明书了解接口 → 用SOAP信封发请求 → BPEL编排整套业务流程

ESB(企业服务总线): 由中间件技术实现、支撑SOA的基础架构,负责服务路由、协议转换、消息转换。

2.8 软件测试与开发阶段对应关系

需求分析  ←→  验收测试(用户验收)
概要设计  ←→  系统测试(系统集成)
详细设计  ←→  集成测试(模块集成)
编码阶段  ←→  单元测试(依据:详细设计)

2.9 净室软件工程

目标:零缺陷,基于函数理论和抽样理论

核心要素:形式化规约 → 盒结构设计 → 正确性验证 → 增量统计控制 → 统计测试可靠性

防错不改错,适合高可靠系统(航天、医疗)

2.10 构件(Component)

构件特性(重点区别于类/对象):

  • 不是实例单元,没有唯一标识
  • 没有外部可见状态(可利用容器管理)
  • 一个构件可包含多个类元素
  • 同一环境中只能有一个拷贝

构件分类方法:

  • 关键字分类法:树状层次结构
  • 刻面分类法:多维度描述(facet),最灵活
  • 超文本组织法:浏览器式搜索

构件三大性质: 独立可部署性、共享性、可组装性

架构失配:

构件失配   → 各种设施、模型不匹配
连接子失配  → 交互协议、数据格式、中间传输不匹配

三、系统分析与设计

3.1 UML 图谱

五大模型与对应图

模型 对应图
用例模型 用例图
静态结构模型 类图、对象图
行为动态模型 时序图、协作图、状态图、活动图
构件实现模型 构件图、部署图

UML 关系速查

关联关系  ─────►  普通认识关系(直线箭头)
依赖关系  - - -►  临时使用关系(虚线箭头)
泛化关系  ───▷   继承关系(空心三角)
聚合关系  ◇────  整体包含部分,部分可独立(空菱形)
组合关系  ◆────  生死绑定,部分不能独立(实菱形)

用例图关系

关系 说明 示例
包含(include) A 必须包含 B 登录 include 验证密码
扩展(extend) B 可选扩展 A 登录 被 extend 找回密码
泛化(generalize) 继承关系 微信支付/支付宝 generalize 统一支付

⚠️ 用例参与者之间的关系**只有继承(泛化)**一种,没有聚合。

3.2 设计模式

创建型模式

模式 意图 Java 示例
单例 Singleton 全局唯一实例 Spring Bean 默认单例
工厂方法 父类定义接口,子类决定实例化 BeanFactory
抽象工厂 创建一系列相关产品 跨DB方言切换
建造者 Builder 分步构建复杂对象 StringBuilder、Lombok @Builder
原型 Prototype 克隆已有对象 Object.clone()
// 建造者模式示例(Lombok @Builder)
@Builder
public class UserQuery {
    private String name;
    private Integer age;
    private String city;
}

// 使用
UserQuery query = UserQuery.builder()
    .name("张三")
    .age(25)
    .city("上海")
    .build();

// 单例模式(双重检查锁)
public class RedisClient {
    private volatile static RedisClient instance;

    private RedisClient() {}

    public static RedisClient getInstance() {
        if (instance == null) {
            synchronized (RedisClient.class) {
                if (instance == null) {
                    instance = new RedisClient();
                }
            }
        }
        return instance;
    }
}

结构型模式

模式 意图 Java 示例
适配器 Adapter 接口转换 InputStreamReader
装饰器 Decorator 动态添加功能 BufferedInputStream
代理 Proxy 控制访问 Spring AOP、MyBatis Mapper
外观 Facade 简化复杂子系统 SLF4J 日志门面
桥接 Bridge 抽象与实现分离 JDBC Driver
组合 Composite 树形结构统一处理 菜单树、文件目录
享元 Flyweight 共享大量相似对象 Integer 缓存池 -128~127
// 代理模式(Spring AOP 本质)
@Aspect
@Component
public class LogAspect {
    @Around("@annotation(Log)")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.currentTimeMillis();
        Object result = pjp.proceed();
        log.info("耗时: {}ms", System.currentTimeMillis() - start);
        return result;
    }
}

// 装饰器模式示例
InputStream is = new FileInputStream("data.txt");
InputStream bis = new BufferedInputStream(is);     // 添加缓冲功能
InputStream gis = new GZIPInputStream(bis);        // 添加解压功能

行为型模式

模式 意图 Java 示例
策略 Strategy 算法族可互换 Comparator、支付方式切换
观察者 Observer 事件通知 EventListener、Kafka Consumer
责任链 Chain 请求沿链传递 Spring Security Filter Chain
模板方法 定义算法骨架 AbstractListJdbcTemplate
命令 Command 请求封装为对象 撤销/重做、任务队列
状态 State 状态驱动行为变化 订单状态机
迭代器 Iterator 顺序遍历集合 Iterator<T>
访问者 Visitor 不修改类添加操作 AST 遍历、编译器
中介者 Mediator 集中对象交互 MQ、EventBus
备忘录 Memento 保存恢复状态 游戏存档、撤销操作
// 策略模式示例(支付方式)
public interface PayStrategy {
    void pay(BigDecimal amount);
}

@Component("alipay")
public class AliPayStrategy implements PayStrategy {
    public void pay(BigDecimal amount) { /* 支付宝支付逻辑 */ }
}

@Component("wechat")
public class WechatPayStrategy implements PayStrategy {
    public void pay(BigDecimal amount) { /* 微信支付逻辑 */ }
}

// 责任链模式(Spring Security 过滤链)
public class AuthFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest req,
            HttpServletResponse res, FilterChain chain)
            throws ServletException, IOException {
        // 前置处理
        verifyToken(req);
        // 传递给下一个过滤器
        chain.doFilter(req, res);
    }
}

3.3 面向对象设计七大原则

原则 核心 记忆
单一职责 SRP 一个类只负责一件事 一心不二用
开闭原则 OCP 对扩展开放,对修改封闭 加新功能不改老代码
里氏替换 LSP 子类可完全替换父类 子类不破坏父类契约
依赖倒置 DIP 依赖抽象而非具体实现 面向接口编程
接口隔离 ISP 多个专用接口优于一个通用接口 不强迫实现不需要的方法
合成复用原则 优先使用组合/聚合而非继承 组合优于继承
迪米特法则 LoD 只与直接朋友通信 最少知识原则

3.4 耦合与内聚(从低到高排序)

耦合(低→高):

非直接耦合 → 数据耦合 → 标记耦合 → 控制耦合 →
外部耦合 → 公共耦合 → 内容耦合

口诀:飞(非)鼠(数)标(标)恐(控)外(外)公(公)内(内)

内聚(低→高):

偶然内聚 → 逻辑内聚 → 时间内聚 → 过程内聚 →
通信内聚 → 顺序内聚 → 功能内聚

口诀:欧(偶)罗(逻)驶(时)过(过)通(通)顺(顺)宫(功)

设计目标:高内聚、低耦合

3.5 软件架构 4+1 视图

        场景视图(用例视图)
              ↑
    ┌─────────────────────┐
    │  逻辑视图  │  开发视图 │
    │ (功能/类图) │(代码分包) │
    ├────────────┼─────────┤
    │  处理视图  │  物理视图 │
    │(运行时进程) │(部署架构) │
    └─────────────────────┘
视图 关注点 使用图
场景视图 为谁做(需求验证) 用例图
逻辑视图 做什么(功能分解) 类图、对象图
开发视图 如何组织(代码结构) 包图、组件图
处理视图 什么时候做(并发运行) 时序图、活动图
物理视图 在哪做(硬件部署) 部署图

四、系统架构设计

4.1 架构风格总览(22种)

数据流风格

风格 特征 典型场景
批处理 成批处理,无人工干预,以整体传递数据 银行对账、数据ETL
管道-过滤器 数据流式传输,每个过滤器独立处理 Unix管道、编译器
# 管道-过滤器 Unix 典型示例
cat access.log | grep "ERROR" | awk '{print $4}' | sort | uniq -c
#   数据源       过滤器1        过滤器2          过滤器3    过滤器4

调用返回风格

风格 特征
主程序/子程序 栈式调用,层层返回
面向对象 封装属性和方法
层次化架构 按抽象级别分层,上层调用下层

独立构件风格(事件/消息)

风格 特征 示例
事件驱动(隐式调用) 发布事件,订阅者响应 Spring Event、Kafka
进程通信 OS提供IPC机制 管道、共享内存、消息队列

虚拟机风格

风格 特征 示例
解释器 动态解析执行,灵活但效率低 JVM、Python解释器
规则/专家系统 规则集+推理引擎 Drools规则引擎

仓库风格(以数据为中心)

风格 特征
数据库系统 中央数据库作为核心
黑板风格 共享工作内存,适合语音识别、AI推理
超文本系统 HTML+URL的网络结构

闭环控制风格

过程控制风格:传感器采集→控制器计算→执行器响应,注意闭环特征。

传感器(Sensor) → 控制器(Controller) → 执行器(Actuator)
      ↑__________________反馈______________________|

4.2 质量属性与架构评估

六大质量属性

运行期质量属性:

属性 关注点 度量方式 常见战术
性能 响应时间、吞吐量 TPS、RT 缓存、异步、负载均衡
可用性 出事后多久恢复 MTTR 主动冗余、心跳检测、选举
可靠性 多久不出故障 MTBF、MTTF 冗余、降级、熔断
安全性 抗攻击能力 漏洞数 认证授权、加密、审计
MTTR  = Mean Time To Repair(平均修复时间)→ 越小越好
MTTF  = Mean Time To Failure(平均失效前时间)→ 越大越好
MTBF  = Mean Time Between Failure(平均无故障时间)→ 越大越好
MTBF  = MTTF + MTTR

开发期质量属性: 可维护性、可扩展性、可测试性、可重用性、可移植性、可修改性、互操作性

可用性战术

故障检测:心跳(Heartbeat)、Ping-Echo、异常监控
故障恢复:主动冗余(热备)、被动冗余(冷备)、选举(Raft/Paxos)
故障预防:事务、进程监控、预测模型

可修改性战术

  • 中间件解耦
  • 接口与实现分离
  • 抽象
  • 信息隐藏

⚠️ 可变性不是可修改性考虑的内容

4.3 架构评估方法

方法 全称 特点
ATAM Architecture Tradeoff Analysis Method 架构权衡分析,开发前评估质量属性折中,最常用
SAAM Software Architecture Analysis Method 基础场景分析,关注非功能需求变化
SASAM 静态评估方法
SAABNet 动态分析方法

ATAM 关注四大质量属性:性能、安全性、可用性、可修改性

质量属性六要素(场景描述模板):

刺激源(谁触发)→ 刺激(发生什么)→ 环境(什么状态下)
→ 制品(影响哪部分)→ 响应(系统怎么做)→ 响应度量(达标标准)

架构评估三个概念:

  • 架构风险:潜在问题的架构决策所带来的隐患
  • 敏感点:为实现某质量属性,构件所具有的特性
  • 权衡点:影响多个质量属性的特性(多个属性的敏感点)

4.4 ABSD(基于架构的软件开发)

驱动因素: 商业需求 + 质量属性 + 功能需求

开发过程: 需求 → 设计 → 文档化 → 复审 → 实现 → 演化

顶层概念架构分解为概念子系统,最终产生软件构件和类

4.5 DSSA(特定领域软件架构)

三类角色:

  • 领域分析者 → 产生领域模型
  • 领域设计者 → 开发DSSA,获得架构
  • 领域实现者 → DSSA到具体实现

三个参考: 参考模型 + 参考需求 + 参考架构

4.6 大数据架构:Lambda vs Kappa

对比维度 Lambda 架构 Kappa 架构
链路 批处理 + 实时双链路 仅实时单链路
计算引擎 Spark(批) + Flink/Storm(流) 仅 Flink/Kafka Streams
数据存储 HDFS(批) + HBase/Redis(实时) Kafka + ClickHouse/Doris
口径一致性 难保证,双链路可能不一致 天然一致
维护成本 高(维护两套代码)
数据延迟 批处理延迟高 近实时
适用场景 超大批量、强精准、传统数仓 实时大屏、风控、实时数仓
Lambda 架构:
原始数据 → ┬─ 批处理层(Spark/MapReduce) → 批次视图  ─┐
           │                                          ├→ 查询层(Hive/Impala)
           └─ 速度层(Flink/Spark Streaming) → 实时视图 ┘

Kappa 架构:
原始数据 → Kafka(消息队列) → Flink(流计算) → ClickHouse/Doris(查询)

4.7 微服务架构 vs 单体架构

维度 单体架构 微服务架构
代码结构 一个代码库 多个独立服务仓库
数据库 共享一个DB 每服务独立DB
部署发布 整体重新部署 独立部署,互不影响
扩容 整体扩容 按需对单个服务扩容
技术栈 统一 可异构
调用方式 本地方法调用 HTTP/RPC跨网络调用
容错性 一个模块崩溃影响全局 服务隔离,故障不蔓延
适用 小型项目快速上线 大型复杂、高并发系统

Spring Cloud 微服务技术栈:

注册中心:Nacos / Eureka
配置中心:Nacos / Apollo
网关:    Spring Cloud Gateway
服务调用:OpenFeign
熔断限流:Sentinel / Resilience4j
消息队列:Kafka / RabbitMQ
分布式事务:Seata

4.8 云计算服务模型

SaaS(Software as a Service)    → 最上层,直接用软件
PaaS(Platform as a Service)    → 中间层,提供开发平台
IaaS(Infrastructure as a Service)→ 最底层,提供硬件资源

五、数据库系统

5.1 范式

范式 要求 解决问题
1NF 每列原子化,不可再分 列拆分
2NF 满足1NF + 消除部分函数依赖 非主属性完全依赖主键
3NF 满足2NF + 消除传递依赖 A→B→C 改为 A→B, A→C
BCNF 满足3NF + 每个决定因素都是候选键 更严格的3NF
4NF 满足BCNF + 消除多值依赖 多值依赖
部分函数依赖示例(违反2NF):
主键:(学号, 课程号)
问题:学生姓名 只依赖 学号(部分依赖)
解决:拆表 → 学生表(学号,姓名) + 选课表(学号,课程号,成绩)

传递依赖示例(违反3NF):
学号 → 系名 → 系主任(传递依赖)
解决:拆表 → 学生表(学号,系名) + 系表(系名,系主任)

5.2 关系代数

操作 符号 说明
笛卡尔积 × 硬凑,行数相乘
自然连接 按同名列连接,消除重复列
投影 π 保留哪些列(SELECT 列)
选择 σ 过滤哪些行(WHERE 条件)
两表合并去重
A中有但B中没有的
两表共有的

5.3 Armstrong 公理系统

三大基本公理:

  • 自反律:若 Y⊆X,则 X→Y
  • 增广律:若 X→Y,则 XZ→YZ
  • 传递律:若 X→Y,Y→Z,则 X→Z

三大常用推论:

  • 合并规则:X→Y, X→Z ⟹ X→YZ
  • 分解规则:X→YZ ⟹ X→Y, X→Z
  • 伪传递规则:X→Y, WY→Z ⟹ WX→Z

5.4 分布式数据库

四种透明性(从高到低):

分片透明   → 不知道数据如何分片(最高层透明)
复制透明   → 不知道数据被复制到哪些节点
位置透明   → 不知道数据在哪个节点
逻辑透明   → 不知道底层数据模型(最低层透明)

两阶段提交(2PC):

Phase 1(准备/表决阶段):
  协调者 → 所有参与者:"准备好了吗?"
  参与者 → 协调者:"Yes/No"

Phase 2(执行/提交阶段):
  全Yes → 协调者 → 所有参与者:"COMMIT"
  有No  → 协调者 → 所有参与者:"ROLLBACK"

分布式数据库概念模式层次:

全局外模式(顾客视角)
    ↓
全局概念模式(总部总账)
    ↓
分片模式(拆账规则)
    ↓
分布模式(分片存放位置)

5.5 数据库三级模式结构

外模式(用户视图/View)    ← 用户看到的数据视图
模式(概念模式/表结构)    ← 全局逻辑结构
内模式(物理存储/索引)    ← 数据的存储方式

5.6 数据仓库特点

与普通数据库的区别:

  • 面向主题(而非面向事务)
  • 集成性(多源数据整合)
  • 非易失性(只增不改,历史数据)
  • 时变性(记录时间快照)

六、操作系统

6.1 进程管理

进程三态模型:

就绪态 ──(调度/分配CPU)──→ 运行态
  ↑                          │
  └──(时间片到/高优先级抢占)──┘
       ↑                ↓
       └──(I/O完成)── 阻塞/等待态 ──(I/O请求)──┘

PCB(进程控制块)组织方式:

  • 顺序方式(线性表)
  • 链接方式(链表)
  • 索引方式(索引表)
  • 哈希方式

进程 vs 线程:

  • 进程:资源分配和管理的最小单位
  • 线程:进程的基本执行单元(CPU调度的最小单位)

6.2 死锁

四个必要条件(必须同时满足才死锁):

条件 说明 能否破坏
互斥 资源同时只能一个进程使用 ❌ 不可破坏(资源本质)
请求与保持 持有资源的同时请求新资源 ✅ 可破坏(一次性申请所有)
不可剥夺 资源不能被强制取走 ✅ 可破坏(允许抢占)
循环等待 进程形成环状等待链 ✅ 可破坏(资源编号排序)

银行家算法: 预判分配后系统是否还处于安全状态,如果不安全则拒绝分配。

6.3 磁盘调度

物理寻址三要素:
磁头号(盘面)→ 柱面号(磁道)→ 扇区号(位置)

访问时间 = 寻道时间 + 旋转延迟 + 数据传输时间

常见磁盘调度算法:
FCFS(先来先服务)   → 公平但效率低
SSTF(最短寻道时间) → 可能饿死外圈磁道
SCAN(扫描/电梯)   → 来回扫描,更均匀
C-SCAN(循环扫描)  → 单向扫描,更公平

6.4 嵌入式系统

实时操作系统(RTOS)特点:

  • 任务调度器:抢占式调度
  • 强实时调度算法:Rate Monotonic Scheduling(RMS)
    • 任务周期越短 → 优先级越高

低功耗设计策略:

  • 编译优化技术
  • 软硬协同设计
  • 算法优化(减少计算量)

七、信息安全

7.1 加密算法

对称加密

算法 密钥长度 特点
DES 56 位 已不安全
3DES 112 位(56×2) DES的增强版
AES 128/192/256 位 当前标准,安全高效

非对称加密

RSA 原理:
公钥加密 → 私钥解密(实现数据加密传输)
私钥签名 → 公钥验证(实现数字签名)

完整的数字签名流程:
发送方:原文 → Hash → 消息摘要 → 用私钥加密 → 数字签名
接收方:收到(原文+数字签名) → 用公钥解密签名得摘要1
                             → 对原文Hash得摘要2
                             → 摘要1==摘要2 则验证通过

消息摘要的作用:防止篡改
对摘要加密的作用:防止抵赖(数字签名)

7.2 第三方认证

协议 特点 适用
Kerberos 对称密钥加密,KDC分发密钥,时间戳防重放 企业内网/局域网
PKI/CA 公钥基础设施,CA颁发数字证书 互联网HTTPS

Kerberos 防重放攻击的机制:时间戳

7.3 常见网络攻击

攻击类型 原理
SYN Flooding 利用TCP三次握手,伪造源IP发大量SYN,耗尽半连接资源
Ping of Death 发送超大ICMP包导致缓冲区溢出
Teardrop 发送重叠偏移的分片包导致崩溃
Land 源IP=目的IP的SYN包,导致死循环
业务流分析 监听流量分析通信模式(即使加密也危险)

7.4 信息安全五个等级

Level 1  用户自主保护级
Level 2  系统审计保护级
Level 3  安全标记保护级
Level 4  结构化保护级
Level 5  访问验证保护级(最高)

7.5 灾难恢复最高级别

  • 零数据丢失(RPO=0)
  • 自动系统故障切换(RTO≈0)

八、项目管理

8.1 项目时间管理

PERT 期望时间公式:

$$T_e = \frac{T_{optimistic} + 4 \times T_{mostLikely} + T_{pessimistic}}{6}$$

甘特图 vs PERT图:

  • 甘特图:展示任务时间安排和进度,直观但不显示依赖关系
  • PERT图:展示任务依赖和关键路径,可计算最早/最晚完成时间

8.2 WBS(工作分解结构)

项目
├── 阶段1
│   ├── 工作包1.1
│   └── 工作包1.2
├── 阶段2
│   ├── 工作包2.1
│   └── 工作包2.2
└── 阶段3

活动定义使用工具:WBS

8.3 配置管理

配置项的三种状态:

草稿 → 正式发布 → 正在修改

配置管理四大活动:

  • 版本控制
  • 变更管理
  • 配置状态管理
  • 访问控制与安全控制

8.4 需求管理

变更控制委员会:CCB(Change Control Board)

需求变更管理流程:

1. 问题分析和变更描述
2. 变更分析和成本计算
3. 变更实现

需求管理三大基本活动:

  1. 变更控制
  2. 版本控制
  3. 需求跟踪

附录:高频考点速记

核心口诀汇总

CMMI 五级:初重定管优(初始、可重复、已定义、已管理、优化)

耦合低→高:飞鼠标恐外公内
  (非直接、数据、标记、控制、外部、公共、内容)

内聚低→高:欧罗驶过通顺宫
  (偶然、逻辑、时间、过程、通信、顺序、功能)

范式口诀:
  1NF=原子,2NF=完全依赖,3NF=无传递,4NF=无多值

架构风格选择指南

需求特征 推荐架构风格
数据流处理、编译器 管道-过滤器
大数据批处理 批处理风格
事件通知、解耦 事件驱动
分层系统、MVC 分层架构
脚本解析、规则引擎 解释器/规则系统
黑板(AI推理、语音识别) 黑板风格
网页系统 B/S、REST
企业系统集成 SOA/ESB
云原生弹性 微服务
嵌入式控制 闭环控制/过程控制

Java 后端关联考点

考点 Java 实现
单例模式 Spring Bean(scope=singleton)
工厂模式 BeanFactory、ApplicationContext
代理模式 Spring AOP(JDK动态代理/CGLIB)
观察者模式 Spring ApplicationEvent
责任链模式 Spring Security FilterChain
策略模式 Comparator、支付策略
模板方法 JdbcTemplate、RestTemplate
SOA/ESB Spring Integration、Apache Camel
微服务 Spring Cloud Alibaba
消息队列 Kafka(事件驱动架构)
缓存 Redis(仓库风格的中央数据存储)