vault backup: 2026-06-11 00:02:06

This commit is contained in:
2026-06-11 00:02:06 +08:00
parent 23a3765f61
commit 4ad09b8153
9 changed files with 1658 additions and 21 deletions

View File

@@ -220,9 +220,9 @@ D. 业务需求 → 系统需求 → 用户需求
## 📝 章末自测
**1. 填空题**
- 需求的三个层次从高到低依次是:( ___ ___ )、( ___ ___ )、( ___ ___
- 需求的三个层次从高到低依次是:( ___ )、( ____ )、( ___
- 优秀需求的七个特性中,"所有人读出来是同一个意思"指的是( ___ ___ )性
- 结构化分析的三个模型是功能模型DFD ___ ___ )、( ___ ___
- 结构化分析的三个模型是功能模型DFD ___ )、( ___
**2. 简答题**
- 简述"用户需求说明书"和"软件需求规格说明书(SRS)"的区别。

View File

@@ -205,6 +205,170 @@
> - 如果**只做交易**(买卖基金)→ 基金管理系统是**外部系统**(参与者)
> - 如果**交易+管理**(买卖+维护基金品种)→ 基金管理系统变成**系统内部功能**
![[Pasted image 20260610205411.png]]
![[Pasted image 20260610205443.png]]
---
## 📌 附录:用例图常用画图符号速查
> 本节把用例图中所有画图符号和标识用字符画的形式汇总一遍画UML图时看着照画就行。
### 1. 参与者Actor—— 两种表示法
**人形符号**(最常用):
```
客户
╱│╲
```
**矩形符号**(协作图或在空间紧张时使用):
```
┌──────────┐
│ :客户 │ ← 冒号 + 类名
└──────────┘
```
### 2. 用例Use Case—— 椭圆
```
╭──────────╮
借书 ╲
│ │
╰──────────╯
```
⚠️ **命名**:椭圆里写**动宾结构**的用例名,如"借书""还书""查询图书"。
### 3. 系统边界 —— 矩形
```
┌─────────── 图书管理系统 ───────────┐
│ │
│ ╭────────╮ │
借书 ╲ ← 用例在内部 │
│ │ │ │
│ ╲
│ ╰────────╯ │
│ │
└─────────────────────────────────────┘
读者 图书管理员
○ ○ ← 参与者在外部
╱│╲ ╱│╲
```
### 4. 参与者与用例的关联 —— 实线
```
读者 ─────────── 借书
○ (椭圆)
╱│╲
```
### 5. 包含关系 <<include>> —— 虚线箭头 + 文字标签
**方向**:基本用例 → 包含用例(箭头指向被包含的那个)。
```
╭──────────╮ ╭──────────╮
注册课程 ╲ 查询课程 ╲
│ │ <<include>> │ │
─ - - - - - ──→ ╲
╰──────────╯ (虚线 + 箭头) ╰──────────╯
(基本用例) (被包含用例)
```
### 6. 扩展关系 <<extend>> —— 虚线箭头 + 文字标签
**方向**:扩展用例 → 基本用例(箭头指向基本用例,与包含**相反**)。
```
╭──────────╮ ╭──────────╮
礼品包装 ╲ 下单 ╲
│ │ <<extend>> │ │
─ - - - - - ──→ ╲
╰──────────╯ (虚线 + 箭头) ╰──────────╯
(扩展用例) (基本用例)
```
⚠️ **易错对比**<<include>> 和 <<extend>> 箭头方向**相反**,考试常考。
### 7. 用例之间的泛化关系 —— 实线 + 空心三角形
**方向**:子用例 → 父用例(子用例继承父用例的行为)。
```
╭──────────╮ ╭──────────╮
微信支付 ╲ 支付 ╲
│ │ ─ ─ ─▷ │ │
(空心三角) ╲
╰──────────╯ ╰──────────╯
(子用例) (父用例)
```
### 8. 参与者之间的泛化关系 —— 实线 + 空心三角形
**方向**:特殊参与者 → 一般参与者(特殊继承普通的能力)。
```
╭─────╮
│ 钻石会员 │ (特殊)
│ /│\ │ ─ ─ ─▷ 普通用户
│ / │ \ │ (一般)
╰───────╯
```
### 9. 完整用例图示例
把上面所有符号拼在一起画出来的样子:
```
读者
╱│╲
┌──── 图书管理系统 ──────────────────────┐
│ │
│ ╭──────╮ │
借书 ╲ ←──── <<include>> ────╮ │
││ │ │ │
│ ╲ │ │
│ ╰──────╯ │ │
│ ╭──────╮ │ │
还书 ╲ ←──── <<extend>> ────╮ │
││ │ │ │
│ ╲ │ │
│ ╰──────╯ │ │
│ │ │
│ ╭──────╮ │ │
缴纳 ╲ ←────────┘ │ │
││ 罚款 │ │ │
│ ╲ │ │
│ ╰──────╯ │ │
│ ╭──────╮ ── <<include>> ──→ │ │
查询 ╲ │ │
││ 图书 │ │ │
│ ╲ │ │
│ ╰──────╯ │ │
│ │ │
└──────────────────────────────────┘ │
管理员 │
○ │
╱│╲ │
╲ │
│ (借书/还书关联)
```
🔑 **一句话记忆口诀**:边界矩形圈住用例,参与者画在边界外;包含扩展都是虚线箭头,方向相反要分清;泛化用空心三角,子指向父别搞错。
---
## ✍️ 边学边练(三)
@@ -227,9 +391,9 @@
## 📝 章末自测
**1. 填空题**
- 参与者分三类:( ___ ___ )、外部设备、( ___ ___
- 用例之间的关系有三种:( ___ ___ )、( ___ ___ )、( ___ ___
- 在用例图中,用例画在系统边界的( ___ ___ )(里面/外面)
- 参与者分三类:( ______ )、外部设备、( _____
- 用例之间的关系有三种:( ____ )、( _____ )、( ____
- 在用例图中,用例画在系统边界的( ____ )(里面/外面)
**2. 判断题**(对还是错?)
- ( ) 一个参与者只能是一个人

View File

@@ -186,15 +186,240 @@
这是MVC模式的UML体现期中考试经常考
| 版型 | 职责 | 常见形式 | 对应MVC |
|------|------|----------|---------|
| **边界类** <<boundary>> | 与外界交互 | 窗口、对话框、报表 | View |
| **控制类** <<control>> | 协调业务逻辑 | 处理业务规则 | Controller |
| **实体类** <<entity>> | 持久化数据 | 数据库表对应的类 | Model |
| ---------------------- | ------ | --------- | ---------- |
| **边界类** `<<boundary>>` | 与外界交互 | 窗口、对话框、报表 | View |
| **控制类** `<<control>>` | 协调业务逻辑 | 处理业务规则 | Controller |
| **实体类** `<<entity>>` | 持久化数据 | 数据库表对应的类 | Model |
🔑 **协作关系**:边界类接收用户输入 → 控制类处理业务逻辑 → 实体类存取数据。
---
## 📌 附录:类图常用画图符号速查
> 这一节把类图中所有的关系符号、接口、抽象类、版型、对象图等所有画图元素用字符画列出来,画类图时直接照搬即可。
### 1. 关联关系Association—— 实线(可带多重性)
**普通关联**(双向带多重性):
```
┌────────┐ 1 0..* ┌────────┐
│ 老师 │ ────────────────── │ 学生 │
└────────┘ └────────┘
```
**自关联**(一个类关联到自己):
```
┌────────┐
│ 员工 │
│ │
│ 领导 │◀──┐
└────────┘ │
│ │
└─────┘
```
### 2. 聚合关系Aggregation—— 实线 + 空心菱形 ◇
> 部分可脱离整体独立存在。
```
┌────────┐ ┌────────┐
│ 班级 │ ───────────── │ 学生 │
└────────┘ └────────┘
(整体) (部分,可独立)
💬 学校没了,学生还在 —— 所以是空心菱形
```
### 3. 组合关系Composition—— 实线 + 实心菱形 ◆
> 部分不能脱离整体独立存在。
```
┌────────┐ ┌────────┐
│ 汽车 │ ───────────── │ 发动机 │
└────────┘ └────────┘
(整体) (部分,离不开整体)
💬 汽车报废了,发动机也没意义了 —— 所以是实心菱形
```
### 4. 依赖关系Dependency—— 虚线 + 开放箭头
```
┌────────┐ ┌────────┐
│ 司机 │ ─ ─ ─ ─ ─ ─ ─⇨ │ 汽车 │
└────────┘ └────────┘
(使用者) (被使用者)
(虚线 + 开放箭头)
```
### 5. 泛化关系Generalization—— 实线 + 空心三角
**方向**:子类 → 父类(空心三角指向父类)。
```
┌────────┐ ┌────────┐
│ 狗 │ ───────────── │ 动物 │
└────────┘ └────────┘
(子类) (父类)
```
### 6. 实现关系Realization—— 虚线 + 空心三角
**方向**:实现类 → 接口(空心三角指向接口)。
```
┌────────┐ ┌──────────────┐
│ 鸟 │ ─ ─ ─ ─ ─ ─ ─ │<<interface>>│
└────────┘ │ 飞行 │
(实现类) └──────────────┘
(接口)
```
### 7. 接口的两种画法
**普通矩形画法**(在类图中更常见):
```
┌──────────────────┐
│ <<interface>> │ ← 关键字标识
│ 飞行 │ ← 接口名
├──────────────────┤
│ +起飞(): void │ ← 只有声明,没有实现
│ +降落(): void │
└──────────────────┘
```
**棒棒糖表示法**(简化版,常在组件图中使用):
```
┌────────┐ ┌────────┐
│ 鸟 │●─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ 飞行 │ (棒棒糖+连接线)
└────────┘ └────────┘
(实现类) (接口)
```
### 8. 抽象类与抽象方法
> **画法**:抽象类**类名用斜体**、抽象方法**方法名用斜体**。在字符画里用 `<<abstract>>` 标识或加文字说明。
```
┌────────────┐
│ 动物 │ ← 实际画图时类名用斜体
├────────────┤
│ │
├────────────┤
│ 移动() │ ← 实际画图时方法名用斜体
│ 叫() │
└────────────┘
{abstract} ← 标注方式(实际画图用斜体)
```
### 9. 版型Stereotype的画法
**边界类**
```
┌────────────────┐
│ <<boundary>> │ ← 写在类名上方
│ 登录页面 │
├────────────────┤
│ -用户名:String │
│ -密码:String │
├────────────────┤
│ +提交():void │
└────────────────┘
```
**控制类**
```
┌────────────────┐
│ <<control>> │
│ 订单处理 │
├────────────────┤
│ │
├────────────────┤
│ +处理订单() │
│ +检查库存() │
└────────────────┘
```
**实体类**
```
┌────────────────┐
│ <<entity>> │
│ 订单 │
├────────────────┤
│ -订单号:String│
│ -金额:double │
├────────────────┤
│ +保存() │
│ +查询() │
└────────────────┘
```
### 10. 对象图的画法
> 对象名格式:`对象名:类名`(对象名和类名下加**下划线**),属性有具体值。
```
┌─────────────────┐
│ 张三:员工 │ ← 对象名:类名,下划线
├─────────────────┤
│ 员工号 = "E001" │ ← 属性=值
│ 姓名 = "张三" │
│ 年龄 = 28 │
└─────────────────┘
```
**对象图与类图对比**
```
类图(描述规则) 对象图(描述实例)
┌──────────┐ ┌────────────────┐
│ 员工 │ │ 张三:员工 │
├──────────┤ ├────────────────┤
│ -员工号 │ │ 员工号="E001" │
│ -姓名 │ ──> │ 姓名="张三" │
│ -年龄 │ │ 年龄=28 │
├──────────┤ └────────────────┘
│ +查询() │
└──────────┘
```
### 11. 关联类的画法
> 关联类挂在关联线中间,用虚线连到关联线上。
```
┌────────┐ ┌────────┐
│ 员工 │ ─ ─ ─ ─ ─ ─ ─ │ 公司 │
└────────┘ │ └────────┘
┌────────┐
│ 合同 │ ← 关联类(虚线连到关联线上)
├────────┤
│ -工资 │
│ -合同期│
└────────┘
```
🔑 **一句话记忆口诀**:实线实箭是关联,空心菱形是聚合,实心菱形是组合,虚线开放箭头是依赖;实线空三角是泛化(继承),虚线空三角是实现(接口)。
---
## ✍️ 边学边练(三)
**题目**:在线购物系统中,"用户"通过"购物页面"下单,系统"订单处理"模块检查库存后,更新"订单"数据和"库存"数据。请指出各属于哪种版型。
@@ -225,9 +450,9 @@
## 📝 章末自测
**1. 填空题**
- 聚合关系中,整体不存在了,部分( ___ ___ )存在。(能/不能)
- 组合关系中,整体不存在了,部分( ___ ___ )存在。(能/不能)
- 边界类、控制类、实体类分别对应MVC中的 ___ ___ )、( ___ ___ )、( ___ ___
- 聚合关系中,整体不存在了,部分( ___ )存在。(能/不能)
- 组合关系中,整体不存在了,部分( ___ )存在。(能/不能)
- 边界类、控制类、实体类分别对应MVC中的 _____ )、( _____ )、( ___
**2. 判断题**
- ( ) 依赖关系比关联关系更弱

View File

@@ -77,6 +77,168 @@
| **阻止消息** | 接收者不能立即接收就放弃 | 特殊标记 |
| **超时消息** | 等待指定时间,超时就放弃 | 特殊标记 |
### 📌 消息类型的画法速查
> 这一节把六种消息类型的**实际画法**用字符画的形式画出来,光看箭头符号记不住的话,照着画就行。
#### ① 调用消息(同步)—— 实线 + 实心三角箭头
```
┌───┐ ┌───┐
│ A │ ──────────────────▶│ B │ ← 实线 + 实心三角
└───┘ └───┘
同步等B做完再回来
```
#### ② 异步消息 —— 实线 + 开放箭头V形
```
┌───┐ ┌───┐
│ A │ ─────────────────⇨ │ B │ ← 实线 + 开放箭头
└───┘ └───┘
异步:发完就接着干自己的事
```
#### ③ 返回消息 —— 虚线 + 开放箭头
```
┌───┐ ┌───┐
│ A │ ◀─ ─ ─ ─ ─ ─ ─ ─ ─ │ B │ ← 虚线 + 开放箭头
└───┘ └───┘
返回值(可省略不画)
```
#### ④ 反身消息 —— 自己绕回来
```
┌───┐
│ A │ ───┐
└───┘ │
│ │
◀─────┘
(即"对象调用自己的方法"
```
#### ⑤ 阻止消息 —— 实线 + 叉 ✕
> 接收方当时忙,**直接放弃**这次调用。
```
┌───┐ ┌───┐
│ A │ ─────────────────╳ │ B │ ← 实线 + 叉
└───┘ └───┘
B没空A立刻放弃不等
```
#### ⑥ 超时消息 —— 实线 + 倒三角 ⏳
> 等待指定时间,**超时就放弃**。
```
┌───┐ ┌───┐
│ A │ ─────────────────⏳ │ B │ ← 实线 + 倒三角
└───┘ └───┘
等一段时间后超时
```
### 📌 完整顺序图示例
把所有消息类型都画在一张图里看效果:
```
客户 ATM界面 账户
┌───┐ ┌───┐ ┌───┐
│ │ │ │ │ │
╱│╲ │ ╱│╲ │ ╱│╲ │
╲ │ ╲ │ ╲ │
┌───┐ ┌───┐ ┌───┐
│ │ │ │ │ │
│ │ 1: 取款(500) │ │ │ │ ← ① 调用消息
│ ├──────────────▶│ │ │ │
│ │ │ │ 2: 查询余额() │ │ ← ① 调用消息
│ │ │ ├───────────────▶│ │
│ │ │ │ │ │
│ │ │ │ ◀─ 3: 余额 ─── │ │ ← ③ 返回消息
│ │ │ │ │ │
│ │ │ │ 4: 扣款(500) │ │ ← ① 调用消息
│ │ │ ├───────────────▶│ │
│ │ │ │ │ │
│ │ 5: 出钞 │ │ │ │ ← ② 异步消息
│ │◀─ ─ ─ ─ ─ ─ ─│ │ │ │
│ │ │ │ │ │
```
### 📌 组合片段Combined Fragment速查
> 当顺序图比较复杂时,可以用**框选区域**的方式来表达条件、循环、并行等逻辑。
```
┌────────────── alt: 余额判断 ──────────────┐
│ │
│ │ 条件A: │
│ │ 4.1: 扣款(amount) ──▶ │
│ │ │
├────────────────────────────────────────────┤
│ │
│ │ 条件B: │
│ │ 4.2: 显示"余额不足" ──▶ │
│ │
└────────────────────────────────────────────┘
```
常用组合片段关键字:
| 关键字 | 含义 | 用途 |
|--------|------|------|
| `alt` | 抉择(多选一) | 相当于 if-else |
| `opt` | 可选(满足才执行) | 相当于单分支 if |
| `loop` | 循环 | 相当于 for/while |
| `par` | 并行 | 多个事件流同时进行 |
| `neg` | 非法 | 描述不允许发生的场景 |
| `critical` | 关键 | 必须原子执行的区域 |
---
### 📌 协作图Communication Diagram的画法
> 协作图 = 顺序图的"空间版"——**没有生命线**,但消息必须**带完整序号**。
```
1: 输入金额
客户 ──────────────▶ ATM界面
○ │
╱│╲ │ 2: 查询余额
╲ ▼
账户
╱│╲
│ 3: 返回余额
◀───── 4.1*: 出钞 ─────┘
(出钞多次循环)
```
**协作图的关键特征**
- 对象之间的**连线**(关联)作为消息传递的路径
- 消息的**前缀序号**必须完整(`1`, `1.1`, `1.1.1`
- `{new}` 标签表示对象在交互中被创建
- `{destroy}` 标签表示对象在交互中被销毁
```
┌──────────┐ ┌──────────┐
│ :Order │ │ :Payment │
│{new} │ 1: 创建支付 │ │
└──────────┘ ────────────────▶ └──────────┘
│ {destroy}
(被销毁)
```
🔑 **一句话记忆口诀**实心三角是同步开放箭头是异步返回用虚线开放箭头反身消息自己绕alt/loop/par 框选区域,条件循环并行都能搞。
---
## 🔑 调用消息 vs 异步消息(必考!)
@@ -195,9 +357,9 @@
## 📝 章末自测
**1. 填空题**
- 顺序图的四个核心元素是:( ___ ___ )、( ___ ___ )、( ___ ___ )、( ___ ___
- 发送后等待返回的消息叫( ___ ___ )消息,发送后继续执行的消息叫( ___ ___ )消息
- 顺序图强调( ___ ___ )顺序,协作图强调( ___ ___ )关系
- 顺序图的四个核心元素是:( ____ )、( ____ )、( ____ )、( ___ _
- 发送后等待返回的消息叫( ____ )消息,发送后继续执行的消息叫( ____ )消息
- 顺序图强调( _____ )顺序,协作图强调( ____ )关系
**2. 判断题**
- ( ) 调用消息的返回消息必须画出来

View File

@@ -113,6 +113,222 @@
| **泳道** | 标明活动由谁负责 | 纵向分区 |
| **对象流** | 活动之间传递的对象 | 带箭头的虚线 |
### 📌 活动图各元素的画法速查
> 这一节把活动图中**所有画图元素**用字符画列出来,画活动图直接照搬即可。
#### ① 起点 —— 实心圆 ●
```
```
#### ② 终点 —— 圆圈加实心圆 ⊙(也称"牛眼"
```
```
#### ③ 活动Activity—— 圆角矩形
```
╭───────────╮
│ 登录验证 │ ← 文字描述这一步做什么
╰───────────╯
```
#### ④ 转移箭头 —— 实线 + 开放箭头
```
╭───────────╮
│ 活动 A │
╰─────┬─────╯
⇨ 实线 + 开放箭头(类似异步消息)
╭─────┴─────╮
│ 活动 B │
╰───────────╯
```
#### ⑤ 分支Decision—— 菱形 ◇ + 监护条件
```
╭───────────╮
│ 活动 A │
╰─────┬─────╯
◇ ← 菱形(决策点)
[是] ╲[否]
╭─────╮ ╭─────╮
│ 活动B │ │ 活动C │
╰─────╯ ╰─────╯
◇ ← 合并点(多个分支汇合)
╭─────┴─────╮
│ 活动 D │
╰───────────╯
```
#### ⑥ 分叉Fork/ 汇合Join—— 粗横线
> **分叉**:一条路径分成多条并发执行。
> **汇合**:多条并发路径汇合成一条。
```
╭───────────╮
│ 活动 A │
╰─────┬─────╯
━━━━━━━━━━ ← 粗横线(分叉点)
│ │
⇨ ⇨
╭─────╮ ╭─────╮
│活动B│ │活动C│ ← B和C并发执行
╰──┬──╯ ╰──┬──╯
⇨ ⇨
│ │
━━━━━━━━━━ ← 粗横线(汇合点)
╭─────┴─────╮
│ 活动 D │ ← B和C都完成后才继续
╰───────────╯
```
#### ⑦ 泳道Swimlane—— 纵向分区
> 标明每一步由**哪个对象/角色**负责。
```
┌──────────┬──────────┬──────────┐
│ 客户 │ 业务员 │ 系统 │
│ (泳道1) │ (泳道2) │ (泳道3) │
├──────────┼──────────┼──────────┤
│ │ │ │
│ ● │ │ │ ← 起点
│ ⇩ │ │ │
│ ╭───╮ │ │ │
│ │下单│ │ │ │ ← 客户下单
│ ╰─┬─╯ │ │ │
│ │ │ │ │
│ ⇨ │ │ │
│ ╭───╮ │ │
│ │接单│ │ │ ← 业务员接单
│ ╰─┬─╯ │ │
│ │ │ │
│ ⇨ │ │
│ ╭───╮ │
│ │处理│ │ ← 系统处理
│ ╰─┬─╯ │
│ │ │
└──────────┴──────────┴──────────┘
⊙ ← 终点
```
#### ⑧ 对象流Object Flow—— 虚线 + 箭头
> 表示活动之间**传递的对象**(数据)。
```
╭───────────╮ ┌──────────┐
│ 提交订单 │ ── ─ ─▶│ 订单 │ ← 虚线 + 箭头
╰───────────╯ └──────────┘
⇨ (对象流也指向下一个活动)
╭─────╮
│ 付款 │
╰─────╯
```
⚠️ **注意**:对象本身画成**矩形**(不是圆角矩形),虚线箭头表示"这个活动产生/使用了这个对象"。
#### ⑨ 完整活动图示例(不带泳道)
```
● 起点
╭─────────╮
│ 开始借书 │
╰────┬────╯
╭─────────╮
│ 扫描图书 │
╰────┬────╯
╭─────────╮
│ 扫描借书证│
╰────┬────╯
◇ 判断
[可借] ╲[不可借]
╭─────╮ ╭───────╮
│ 借出 │ │ 提示原因│
╰──┬──╯ ╰───┬───┯
⇩ ⇩ │ (汇合)
│ │ │
╰───◇ 汇合 ◇────╯
╭─────────╮
│ 结束 │
╰─────────╯
⊙ 终点
```
#### ⑩ 状态图元素的画法
> 状态图和活动图有些元素是**共用的**(起点/终点/转移箭头)。
**状态**:圆角矩形,**可带分区**(状态名 / 内部活动)
```
╭─────────────────────╮
│ 待机中 │ ← 第一行:状态名
├─────────────────────┤
│ entry / 初始化 │ ← 入口动作
│ do / 持续活动 │ ← 持续活动
│ exit / 清理 │ ← 出口动作
╰─────────────────────╯
```
**转移Transition**
```
╭──────────╮ 事件[条件]/动作 ╭──────────╮
│ 状态A │ ─────────────────▶ │ 状态B │
╰──────────╯ ╰──────────╯
格式:事件名[监护条件]/动作
例: 借出() / 可借数-1
```
**历史状态 H**:圆圈里写 H记录离开时的子状态
```
╭──────────╮
│ 复合状态 │
╰────┬─────╯
(H) ← 历史状态圆圈里写H
╭──────╮ ╱│╲
│ 子1 │◀─(H)─▶│ 子2 │ ← 回来时回到H记录的子状态
╰──────╯ ╰─────╯
```
🔑 **一句话记忆口诀**:实心圆是起点,牛眼是终点;圆角矩形是活动,菱形是分支;粗横线是分叉汇合,泳道是纵向分区,对象是普通矩形+虚线箭头。
---
### 🔑 状态 vs 活动(必考区别!)
| 对比 | 状态 | 活动 |
@@ -187,9 +403,9 @@
## 📝 章末自测
**1. 填空题**
- 状态图描述的是( ___ ___ )个对象的状态变化
- 四种事件类型是:调用事件、( ___ ___ )、( ___ ___ )、时间事件
- 活动图中的菱形表示( ___ ___ ),粗横线表示( ___ ___
- 状态图描述的是( ____ )个对象的状态变化
- 四种事件类型是:调用事件、( ____ )、( _____ )、时间事件
- 活动图中的菱形表示( ____ ),粗横线表示( ___
**2. 判断题**
- ( ) 状态图和活动图都可以描述多个对象的交互

View File

@@ -91,6 +91,294 @@
---
## 📌 附录:组件图与部署图常用画图符号速查
> 这一节把组件图、部署图里所有的画图元素(组件、接口、结点、关系)用字符画列出来。
### 1. 组件Component—— 矩形 + 左侧两个小矩形
```
┌────┐
├────┤ ┌─────────────────┐
└────┘ │ <<component>> │ ← 字符画示意
│ OrderService │ ← 实际画法(两个小矩形贴在
└─────────────────┘ 组件图标的左上角)
```
更形象的字符画(标准画法的样子):
```
┌────────────────────────┐
│ ╔══════════════╗ │
╔═╧═╗║ OrderService ║ │ ← 左侧两个小方块
║ ║╚══════════════╝ │ 右侧大矩形是组件名
╚═══╝ │
└────────────────────────┘
```
简化字符画(更便于手写):
```
┌──┐
│ ├───── ┌────────────────┐
└──┘ │ OrderService │
└────────────────┘
```
⚠️ **命名方式**
- `OrderService.java` —— 包含扩展名的具体组件
- `<<component>>` + `OrderService` —— 用版型标识
### 2. 组件的两种画法
**带版型的标准画法**
```
┌──┐
│ ├───── ┌────────────────────┐
└──┘ │ <<component>> │
│ OrderService │
└────────────────────┘
```
**简化的文件/类表示法**(在组件图里很常见):
```
┌──┐
│ ├───── ┌────────────────────┐
└──┘ │ OrderService.java│ ← 写上扩展名
└────────────────────┘
```
### 3. 接口Interface—— 棒棒糖 / 插座
**棒棒糖表示法**(提供方在提供接口时用):
```
┌──────┐
客户端 │ 飞行 │ ← 圆圈 + 接口名
┌────┐ │ │
│ 鸟 │──●────┘ ↑ │ ← ● 是棒棒糖圆圈
└────┘ │ │
└───┘
```
**插座表示法**(需要方在实现接口时用):
```
┌────┐ ┌──────┐
│ 鸟 │ ─────────┤ 飞行 │
└────┘ ◀──── └──────┘
│ 半圆+连接线 │
│ (socket) │
```
简化字符画:
```
┌────────┐
│ 鸟 │ ●────── 飞行 (提供方lollipop)
└────────┘
┌────────┐
│ 飞机 │ ◀──半圆──── 飞行 (需要方socket)
└────────┘
```
### 4. 组件之间的关系
**依赖关系**(最常见 —— 一个组件调用另一个组件):
```
┌──┐ ┌──┐
│ ├──────┐ │ │
└──┘ │ └──┘
│ ┌────────────────┐
│ │ LoginService │
│ └────────────────┘
│ ┌────────────────┐
┌─────────┴─▶│ UserService │
│ ┌────────────────┐ │
└──│ LoginUI │ │
└────────────────┘ │
┌──┐ │
│ ├──┐ ┌────────────────┐ │
└──┘ └─▶│ DataService │◀───┘
└────────────────┘
(虚线箭头表示依赖)
```
简化画法(虚线箭头):
```
┌──────────────┐
│ OrderUI │
│ OrderCtrl │ ╌ ─ ─ ─ ─ ─▶ ┌──────────────┐
└──────────────┘ (依赖) │ OrderService│
└──────────────┘
```
**实现关系**(组件实现接口):
```
┌──────────────┐ ●──── 支付接口
│ 支付组件 │ ──────────── /
└──────────────┘ 实现关系
```
### 5. 结点Node—— 立方体
> 部署图的核心元素。立方体代表一台**物理设备**。
**字符画表现**(立方体用三视图):
```
┌──────────────┐
╱│ ╱│
┌──────────────┐ │
│ │ │ │
│ │ Web │ │
│ │ Server │ │
│ └───────────│──┘
│╱ │╱
└──────────────┘
```
**简化字符画**(考试/笔记常用):
```
┌──────────────┐
│ ┌────────┐ │
│ │ Web │ │ ← 立方体的"上表面"(可选)
│ │ Server │ │
│ └────────┘ │
└──────────────┘
┌──────────┐
╱│ Web ╱│
│ Server
┌──────────┐ │
│ ┌────┐ │ │
│ │名称│ │ │
│ └────┘ │ │
└──────────┘ │
│ │
└────────┘
```
最简洁的字符画(最推荐使用):
```
╔═══════════════╗
║ <<device>> ║ ← 设备结点
║ WebServer ║
╚═══════════════╝
```
**处理机结点 vs 设备结点**(都用立方体,靠版型区分):
```
处理机结点 设备结点
╔═══════════════╗ ╔═══════════════╗
║ <<processor>> ║ ║ <<device>> ║
║ WebServer ║ ║ Modem ║
╚═══════════════╝ ╚═══════════════╝
(有CPU可计算) (没有计算能力)
```
### 6. 结点内运行的组件
> 在结点立方体里"装"上组件,组件画在结点内部。
```
╔═══════════════════════════╗
║ <<processor>> ║
║ WebServer ║
║ ║
║ ┌──┐ ║
║ │ ├──── ┌────────────┐ ║
║ └──┘ │<<component>>║ ║
║ │ WebApp.jar │ ║
║ └────────────┘ ║
║ ║
║ ┌──┐ ║
║ │ ├──── ┌────────────┐ ║
║ └──┘ │<<component>>║ ║
║ │ DBDriver │ ║
║ └────────────┘ ║
╚═══════════════════════════╝
```
简化版本:
```
╔═══════════════╗
║ WebServer ║
║ ║
║ ┌──┐ ║
║ │ ├─ WebApp ║ ← 组件在结点里
║ └──┘ ║
╚═══════════════╝
```
### 7. 结点之间的连接
> 部署图上的"线"表示物理通信路径。
```
╔═══════════╗ ╔═══════════╗
║ 客户端 ║ ║ 服务器 ║
║ (PC机) ║ ║ ║
╚═════╤═════╝ ╚═════╤═════╝
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ TCP/IP │
│ │
```
**多重连接**(同一对结点可能有多种连接):
```
╔═══════════╗ ╔═══════════╗
║ 客户端 ║ ━━━━━━━TCP/IP ━━━━━━━━━ ║ Web服务器 ║
║ ║ ━━━━━━━ HTTPS ━━━━━━━━━ ║ ║
╚═══════════╝ ╚═══════════╝
```
### 8. 完整部署图示例
```
TCP/IP
━━━━━━━━━━━━━━━━━━━━
╔══════════╗ ╔══════════════════╗
║<<device>>║ ║ <<processor>> ║
║ 客户机 ║ ║ Web服务器 ║
║ ║ ║ ║
║ ┌──┐ ║ ║ ┌──┐ ║
║ │ ├─◀━━╫━━━━━━调用━━━━━━━━╫──┤ ├─ WebApp.jar║
║ └──┘ ║ ║ └──┘ ║
║ 浏览器 ║ ║ ║
╚══════════╝ ╚══════════════════╝
│ JDBC
╔══════════════════╗
║ <<processor>> ║
║ 数据库服务器 ║
║ ║
║ ┌──┐ ║
║ │ ├─ MySQL.db ║
║ └──┘ ║
╚══════════════════╝
```
🔑 **一句话记忆口诀**:组件左上方两个小方块,接口是圆圈加棒棒糖;结点是立方体(靠版型区分处理机/设备),立方体里装组件,立方体之间是通信连接。
---
## ✍️ 边学边练
**题目**某Web系统包括以下内容请区分逻辑模型和物理模型。

View File

@@ -48,6 +48,168 @@
> 子包继承父包中可见性为public和protected的元素。
### 📌 包图各元素的画法速查
> 这一节把包图里所有的画图元素(包本身、依赖、泛化)用字符画列出来。
#### ① 包的两种画法
**标准文件夹画法**(最常用):
```
┌──────────────┐
│ UI层 │ ← 上方有"小标签"(像文件夹的舌头)
└──────────────┘
```
字符画表示(小标签在左上角):
```
┌────────────┐
│┌─┐ │
││ │ │
│└─┘─────────┤
│ UI层 │
│ │
│ ┌─────────┐ │
│ │ 登录页 │ │ ← 包内可以嵌套子包或类
│ └─────────┘ │
└─────────────┘
```
**简化画法**(只用矩形):
```
┌──────────────┐
│ UI层 │
│ ┌────────┐ │
│ │ 登录页 │ │
│ └────────┘ │
│ ┌────────┐ │
│ │ 主页面 │ │
│ └────────┘ │
└──────────────┘
```
#### ② 包的嵌套
```
┌──────────────────────┐
│ 电子商务系统 │
│ ┌──────────┐ │
│ │ 用户模块 │ │
│ │ ┌──────┐ │ │
│ │ │登录类│ │ │
│ │ └──────┘ │ │
│ │ ┌──────┐ │ │
│ │ │注册类│ │ │
│ │ └──────┘ │ │
│ └──────────┘ │
│ ┌──────────┐ │
│ │ 订单模块 │ │
│ └──────────┘ │
└──────────────────────┘
```
#### ③ 包的可见性符号
```
┌────────────────┐
│ ┌─┐ │
│ │+│ 公开类 │ ← + 公有:任何外部包都可用
│ └─┘───────────┤
│ ┌─┐ │
│ │#│ 受保护类 │ ← # 受保护:只有子包可用
│ └─┘───────────┤
│ ┌─┐ │
│ │-│ 私有类 │ ← - 私有:只有包内部可用
│ └─┘───────────┤
│ │
└────────────────┘
```
#### ④ 包之间的依赖关系 —— 虚线 + 开放箭头
> 一个包中的类**引用**另一个包中的类 → 包之间形成依赖。
```
┌──────────────┐ ┌──────────────┐
│ UI层 │ │ 业务层 │
│ │ │ │
│ ┌────────┐ │ │ ┌────────┐ │
│ │登录窗口 │ │ │ │登录服务 │ │
│ └────────┘ │ │ └────────┘ │
│ │ │ │
└──────────────┘ └──────────────┘
│ ▲
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
虚线 + 开放箭头
依赖方向UI层 依赖 业务层)
```
⚠️ **依赖方向**:箭头从"使用者"指向"被使用者"(类似类图里的依赖)。
#### ⑤ 包之间的泛化关系 —— 实线 + 空心三角
> 子包继承父包的内容。子包继承父包中**public 和 protected** 的元素。
```
┌──────────────┐ ┌──────────────┐
│ 业务层 │ │ 通用层 │
│ (子包) │ ─ ─ ─ ─ ─ ─ ─ ▷ │ (父包) │
│ │ 空心三角 │ │
│ ┌────────┐ │ │ ┌────────┐ │
│ │订单处理 │ │ │ │日志工具 │ │
│ └────────┘ │ │ └────────┘ │
│ ┌────────┐ │ │ ┌────────┐ │
│ │支付处理 │ │ │ │通用工具 │ │
│ └────────┘ │ │ └────────┘ │
└──────────────┘ └──────────────┘
```
⚠️ **泛化方向**:空心三角**指向父包**(与类图泛化一致)。
#### ⑥ 完整包图示例
```
┌────────────────┐
│ 表现层 │
│ ┌────────┐ │
│ │登录页 │ │
│ └────────┘ │
│ ┌────────┐ │
│ │主窗体 │ │
│ └────────┘ │
└───────┬────────┘
│ 依赖
╌ ╌ ╌ ╌ ╌ ╌ ╌
┌────────────────┐ ▷ ┌────────────────┐
│ 业务层 │ ─ ─ ─ ─ ─ ─ ─ ─ ─│ 通用层 │
│ │ 泛化 │ │
│ ┌────────┐ │ │ ┌────────┐ │
│ │登录管理 │ │ │ │日志工具 │ │
│ └────────┘ │ │ └────────┘ │
│ ┌────────┐ │ │ ┌────────┐ │
│ │订单管理 │ │ │ │数据校验 │ │
│ └────────┘ │ │ └────────┘ │
└───────┬────────┘ └────────────────┘
│ 依赖
╌ ╌ ╌ ╌ ╌ ╌ ╌
┌────────────────┐
│ 数据层 │
│ ┌────────┐ │
│ │用户DAO │ │
│ └────────┘ │
│ ┌────────┐ │
│ │订单DAO │ │
│ └────────┘ │
└────────────────┘
```
🔑 **一句话记忆口诀**:包用文件夹画,标签是包名;包间依赖是虚线开放箭头(指向被依赖),包间泛化是实线空心三角(指向父包);包可以嵌套,元素分+/-可见性。
---
## 💡 三、包的四大设计原则

View File

@@ -18,7 +18,7 @@
> 📎 **各章笔记链接**[第1章 需求工程](各章笔记/第01章-需求工程.md) | [第3章 用例图](各章笔记/第03章-用例图.md) | [第4章 类图](各章笔记/第04章-类图与对象图.md) | [第5章 顺序图与协作图](各章笔记/第05章-顺序图与协作图.md) | [第6章 状态图与活动图](各章笔记/第06章-状态图与活动图.md) | [第7章 组件图与部署图](各章笔记/第07章-组件图与部署图.md) | [第9章 数据建模](各章笔记/第09章-数据建模.md) | [第11章 RUP](各章笔记/第11章-RUP统一过程.md)
> 📎 **速查**[UML九图速查](速查手册/UML九图速查.md) | [设计原则与术语](速查手册/设计原则与术语速查.md) | [课后习题汇编](课后习题汇编.md)
> 📎 **速查**[期末速记(考前必看)](期末重要知识点速记.md) | [UML九图速查](速查手册/UML九图速查.md) | [设计原则与术语](速查手册/设计原则与术语速查.md) | [课后习题汇编](课后习题汇编.md)
## 🎯 考试范围与重点

View File

@@ -0,0 +1,420 @@
# 期末重要知识点速记
> **课程**:软件需求分析与设计 | **总分**选择30 + 填空15 + 解答25 + 案例30 = 100分
> **成绩构成**平时40% + 期末60%(平时作业和实验截止前还可补交)
---
## 🎯 一、试卷结构与分值分布
### 1.1 题型总览
| 题型 | 数量 | 分值 | 说明 |
|------|------|------|------|
| 选择题 | 15题 × 2分 | **30分** | 重点刷教材课后有答案的题目 |
| 填空题 | 15空 × 1分 | **15分** | 各章基本概念和理论知识 |
| 解答题 | 5题 × 5分 | **25分** | ⚠️ 只考读图分析,不考画图 |
| 案例大题 | 2~3题 | **30分** | ⚠️ 给出需求描述,动手画图 |
### 1.2 各章分值权重(按比例分配复习时间!)
| 章节 | 分值 | 权重 | 复习优先级 |
|------|------|------|------------|
| 需求管理 | **13分** | ★★★★ | 选择填空为主,含一道解答简答题 |
| 用例图 | **22分** | ★★★★★ | 读图分析 + 画图大题必考 |
| 类图 | **23分** | ★★★★★ | 读图分析 + 画图大题必考 |
| 顺序图与协作图 | **19分** | ★★★★★ | 读图分析 + 画图大题必考 |
| 状态图与活动图 | **14分** | ★★★★ | 读图分析 + 选考画图 |
| 组件图与部署图 | **7分** | ★★ | ⚠️ 仅出选择题和填空题 |
| RUP统一过程 | **2分** | ★ | ⚠️ 仅出1个选择或填空 |
---
## 📋 二、解答题 5 道详细拆解
### 第1题用例图分析5分
**考点**:给一幅用例图,分析:
- 参与者之间是什么关系?(泛化关系)
- 用例之间的关系(包含 `<<include>>` / 扩展 `<<extend>>` / 泛化)
- 识别参与者类型、用例描述要素
### 第2题类图分析5分
**考点**:给一幅类图,分析:
- 类之间的关系类型(依赖、关联、聚合、组合、泛化、实现)
- 识别类的类型(边界类/控制类/实体类)
- 多重性含义
### 第3题交互图分析5分
**考点**:给时序图(顺序图)或协作图,分析:
- 消息类型(同步调用/异步/返回/简单消息)
- 消息传递流程
- **可能要求:协作图 ↔ 时序图互转**
### 第4题活动图或状态图分析5分
**考点**:给活动图或状态图,分析流程/状态转移
### 第5题简答题5分—— 四选一,必考一道!
> ⚠️ 老师明确给了四道范围,现在就背!
#### Q1需求的层次有哪些并简述
**答案**
```
业务需求(最高层)
→ 用户需求(中间层)
→ 系统需求(底层)
├── 功能需求:系统必须提供的功能
├── 非功能需求:性能、可靠性、安全性等质量属性
└── 领域需求:特定行业领域的规则和约束
```
- **业务需求**:组织或客户的高层目标,回答"为什么要做这个系统"
- **用户需求**:用户使用系统要完成的任务,从用户视角描述
- **系统需求**:详细描述系统必须做什么,包括功能和非功能需求
#### Q2如何判定优秀需求的特性
**答案**7大特性
1. **完整性**:需求描述完整无遗漏
2. **正确性**:真实反映用户需要
3. **无歧义性**:不同人读理解一致
4. **可行性**:技术和资源上可实现
5. **有优先级**:明确需求的轻重缓急
6. **必要性**:是必须的,不是"锦上添花"
7. **可验证性**:能通过测试验证需求是否被满足
#### Q3需求发生变更时的管理流程
**答案**
```
提出变更请求 → 初步分析评估 → CCB变更控制委员会评审决策
→ 批准后更新需求文档 → 通知所有受影响的相关方
→ 调整项目计划和开发任务 → 执行变更 → 验证变更结果
```
**关键点**CCB 评审是核心环节,决定变更是否接受;变更后必须重新确认需求。
#### Q4需求管理应包含的内容
**答案**(三个核心模块):
| 模块 | 内容 |
|------|------|
| **需求确认** | 需求评审 → 获得承诺 → 建立需求基线 |
| **需求跟踪** | 建立 RTM需求跟踪矩阵正向跟踪需求→设计→代码→测试和逆向跟踪 |
| **需求变更控制** | 变更申请 → 变更审批 → 执行更改 → 重新确认 |
---
## 🔑 三、各章核心考点速记
### 需求管理 ★★★★★约13分
**需求三层金字塔**
```
业务需求(老板视角:为什么要做)
→ 用户需求(用户视角:能干什么)
→ 系统需求 = 功能需求 + 非功能需求 + 领域需求
```
| 概念 | 一句话 |
|------|--------|
| 业务需求 | 组织的高层目标 |
| 用户需求 | 用户使用系统完成的任务 |
| 功能需求 | 系统必须提供的功能 |
| 非功能需求 | 性能/可靠性/安全性等质量属性 |
| 领域需求 | 特定行业规则的约束 |
**需求工程 = 需求开发 + 需求管理**
- 开发:获取 → 分析 → 定义(规格说明)
- 管理:验证 → 跟踪 → 变更控制
**六大获取/验证技术**
1. 联合分析小组JAD
2. 用户访谈
3. 问卷调查
4. 观察工作流程
5. 原型法
6. 文档分析
> 📝 **填空重点**:需求三层 = 业务/用户/系统获取技术6种优秀需求7特性需求变更流程步骤
---
### 用例图 ★★★★★约22分含大题
**四要素**:参与者(火柴人) + 用例(椭圆) + 系统边界(方框) + 关联(连线)
**三种关系对比**(必考!):
| 关系 | UML标记 | 箭头方向 | 执行时机 |
|------|---------|----------|----------|
| **包含** `<<include>>` | 虚线+箭头 | **基本 → 包含** | 必然执行 |
| **扩展** `<<extend>>` | 虚线+箭头 | **扩展 → 基本** | 条件触发时才执行 |
| **泛化** | 实线+空心三角 | **子 → 父** | 可单独执行 |
> 记忆:包含箭头指向被包含的(基→含),扩展箭头指向被扩展的(扩→基)
**参与者三类型**:人、外部系统、外部设备
**用例描述6要素**:用例名、参与者、前置条件、后置条件、主事件流、子事件流(备选流)
> 📝 **重点**:三种关系的箭头方向和区别、用例描述要素
---
### 类图 ★★★★★约23分含大题
**六大关系速判口诀**
| 关系 | UML符号 | 口诀 |
|------|---------|------|
| **依赖** | 虚线箭头 `---->` | "方法参数用了你" |
| **关联** | 实线 `——` | "属性里放了你" |
| **聚合** | 空心菱形 `◇——` | "整体-部分,部分可独立存活" |
| **组合** | 实心菱形 `◆——` | "整体-部分,同生共死" |
| **泛化** | 空心三角 `——▷` | "一般-特殊 / 父-子继承" |
| **实现** | 虚线空心三角 `----▷` | "接口-实现类" |
**多重性速记**`1` 恰好1 | `0..1` 可选 | `*`/`0..*` 零到多个 | `1..*` 至少1个
**类三要素**:名称、属性、操作 | **可见性**`+`public `-`private `#`protected
**MVC版型**(分析类三类型):
- `<<boundary>>` 边界类:与外部交互的界面
- `<<control>>` 控制类:业务逻辑处理
- `<<entity>>` 实体类:持久化数据
**聚合 vs 组合**:聚合整体端多重性可为`*`;组合整体端多重性必须=`1`
> 📝 **选择高频**:类间关系判断、多重性含义、版型识别、关联 vs 依赖
---
### 顺序图与协作图 ★★★★★约19分含大题
**顺序图核心元素**:对象(矩形+下划线) + 生命线(虚线) + 控制焦点(矩形条) + 消息(箭头)
**四种消息类型**
| 类型 | 箭头 | 特点 |
|------|------|------|
| 调用消息(同步) | 实心箭头 → | 发送后等待返回 |
| 异步消息 | 开放箭头 → | 发送后不等待,继续执行 |
| 返回消息 | 虚线箭头 ⇢ | 返回值 |
| 简单消息 | 普通箭头 | 不区分同步/异步 |
**消息编号嵌套规则**`1 → 1.1 → 1.1.1`(子消息必须在父消息完成前完成)
**协作图 = 顺序图的另一种视角**
- 顺序图强调**时间顺序**(生命线+控制焦点)
- 协作图强调**空间关系**(对象间的链+消息序号)
- 两者可以互相转换
**⚠️ 画图大题画顺序图的硬性要求**
> 不能画得太简单!必须完整区分并画出:
> - **边界类**(界面层,接收用户输入)
> - **控制类**(业务逻辑层,协调处理)
> - **实体类**(数据层,数据存取)
>
> 三个层次的对象之间的详细交互都要体现!
**主动对象 vs 被动对象**:主动对象拥有进程/线程可主动发起消息;被动对象须被消息触发
> 📝 **重点**:四种消息类型区分、消息编号规则、顺序图与协作图的区别、三层次交互画法
---
### 状态图与活动图 ★★★★约14分
**状态图**(管**一个对象**的状态变化):
| 元素 | 符号 |
|------|------|
| 状态 | 圆角矩形(简单/复合/子状态) |
| 转移 | 箭头:`事件[条件]/动作` |
| 初始状态 | ● 实心圆 |
| 终态 | ⊙ 圆圈+实心圆 |
| 历史状态 | Hⓗ 圆圈+H |
| 并发 | 同步并发转移符号(粗线分叉) |
**四种事件类型**:调用事件、信号事件、变化事件、时间事件
**活动图**(管**多对象参与的流程**
| 元素 | 符号 | 用途 |
|------|------|------|
| 活动 | 圆角矩形 | 流程步骤 |
| 分支 | ◇ 菱形 | 条件选择(只走一条) |
| 分叉/汇合 | ≡ 粗横线 | 并发执行(多条同时走) |
| 泳道 | 纵向分区 | 按职责/参与者分组 |
| 对象流 | 虚线箭头 | 数据传输/传递 |
**⚠️ 核心区分**
- **状态图** → 一个对象的状态变化
- **活动图** → 多个对象参与的流程
- **分支** → 单路条件选一
- **分叉** → 多路并发
- 活动图的状态转移**不需要事件触发**,上一个活动完成自动进入下一个
> 📝 **选择高频**状态图vs活动图区分、分支vs分叉、泳道功能
---
### 组件图与部署图 ★★约7分仅选填
**组件图 = 代码层面**
- 三种组件:源代码组件、二进制代码组件、可执行代码组件
- 正向工程:类图→代码 | 逆向工程:代码→类图
**部署图 = 硬件层面**
- 结点3D立方体分两种处理器(有计算能力) / 设备(无计算能力)
- 结点可驻留组件实例
> 📝 **填空重点**组件3种类型两种物理图名称
---
### 包图 ★★(选择题)
**四大包设计原则**
| 缩写 | 原则 | 一句话 |
|------|------|--------|
| REP | 重用等价原则 | 一起复用的放一起 |
| CCP | 共同闭包原则 | 一起改的放一起 |
| CRP | 共同重用原则 | 不一起用的分开 |
| ADP | 非循环依赖原则 | 包间不能环状依赖 |
---
### RUP统一软件开发过程 ★约2分仅1个选填
**RUP三维特点**:用例驱动 + 以体系结构为中心 + 迭代和增量
**⚠️ 四阶段顺序(易错!)**
```
初始(Inception) → 细化(Elaboration) → 构造(Construction) → 移交(Transition)
```
> ❌ 不是"初始→构造→细化→移交"
**9个核心工作流** = 6过程 + 3支持
- 6过程业务建模、需求、分析与设计、实现、测试、部署
- 3支持配置管理、项目管理、环境
**六大最佳实践**:迭代增量开发、管理需求、基于构件架构、可视化建模、持续质量验证、控制变更
**RUP的4W**:角色(Who) + 活动(How) + 制品(What) + 工作流(When)
> 📝 **选择/填空**RUP三大特点、四阶段顺序、九个工作流、六大最佳实践
---
## ⚠️ 四、高频易错易混点
| 易混概念 | 区分 |
|----------|------|
| **包含 vs 扩展** | 包含箭头基→含(必然执行);扩展箭头扩→基(条件执行) |
| **聚合 vs 组合** | 聚合空心◇(部分可独立);组合实心◆(同生共死) |
| **关联 vs 依赖** | 关联=属性里放了;依赖=方法参数用了 |
| **泛化 vs 实现** | 泛化=父类-子类继承;实现=接口-实现类 |
| **调用消息 vs 异步消息** | 调用=同步等待返回;异步=发出后继续 |
| **状态图 vs 活动图** | 状态图=一个对象;活动图=多个对象 |
| **分支 vs 分叉** | 分支◇=单选一路;分叉≡=多路并发 |
| **功能需求 vs 非功能需求** | 功能=做什么;非功能=做多好 |
| **RUP四阶段顺序** | 初始→细化→构造→移交(别写反细化/构造!) |
| **顺序图 vs 协作图** | 顺序图强调时间;协作图强调空间 |
---
## 🛠️ 五、案例大题画图模板
### ⚠️ 不考的图
> 组件图、包图、部署图 — 案例大题明确不考!
### 1. 用例图(必考)
**4步法**
1. **找参与者**:从文字中找名词——人、外部系统、设备
2. **找用例**:动宾短语(用户能做的操作)
3. **画包含**A 必然触发 B → `A ---<<include>>--→ B`
4. **画扩展**:条件触发 C 插入 A → `C ---<<extend>>--→ A`
### 2. 类图(必考,尤其实体类图)
**4步法**
1. **提取实体类**:文字中的核心名词(客户、订单、商品...
2. **标注属性**:每个类的特征数据字段
3. **判断关系**:属性里放了=关联;整体部分=聚合/组合;父子=泛化
4. **标注多重性**`1` / `0..*` / `1..*`
### 3. 顺序图(必考,拉分关键!)
**⚠️ 老师特别要求:不能画得太简单!要体现三层次交互:**
```
┌─ 边界类层UI ─────────────────────────────┐
│ 用户 → 界面: 发起操作() │
│ → 界面 → 控制类: 处理请求() │
├─ 控制类层(业务逻辑) ─────────────────────────┤
│ → 控制类 → 实体类: 查询数据() │
│ ← 实体类 → 控制类: 返回数据 │
│ → 控制类 → 实体类: 保存结果() │
├─ 实体类层(数据) ─────────────────────────────┤
│ ← 控制类 → 界面: 返回处理结果 │
│ ← 界面 → 用户: 显示结果 │
└──────────────────────────────────────────────┘
```
**消息编号规则**`1 → 1.1 → 1.1.1 → 1.2 → 2`
### 4. 状态图(选考)
**要素**:初始● → 关键状态节点(圆角矩形) → 终态 ⊙
- 转移标注:`触发事件[条件]/动作`
- 有并发用同步并发转移符号
### 5. 活动图(选考,带泳道)
**要素**:开始● → 活动(圆角矩形) → 分支◇ → 分叉≡ → 汇合≡ → 结束◎
- 泳道按参与者/职责分列
---
## 🔢 六、关键数字速记(填空高频)
| 数字 | 对应内容 |
|------|----------|
| **3** | 需求三层、用例关系3种、类三要素、可见性3种、数据库设计3阶段、RUP三大特点、参与者3类型、组件3类型、3种分析类(边界/控制/实体) |
| **4** | 包设计4原则(REP/CCP/CRP/ADP)、RUP四阶段、事件4类型、消息4类型、RUP的4W |
| **6** | 六大获取技术、六大关系、六大最佳实践、用例描述6要素、9工作流=6过程+3支持 |
| **7** | 优秀需求7特性 |
| **9** | UML 9种图、RUP 9个工作流 |
| **N+3** | 9核心工作流 = 6过程 + 3支持 |
---
## 📝 七、考前30分钟自检
- [ ] 4道简答题能默写要点稳拿5分
- [ ] 需求三个层次:业务→用户→系统?
- [ ] 用例三种关系箭头方向不混?(包含=基→含,扩展=扩→基)
- [ ] 类图六大关系秒判?
- [ ] 聚合空心◇ vs 组合实心◆ 不混?
- [ ] 调用消息(同步/实心箭头) vs 异步消息(开放箭头) 能区分?
- [ ] 消息编号 1 → 1.1 → 1.1.1 嵌套规则?
- [ ] 状态图(单对象) vs 活动图(多对象/流程) 区分?
- [ ] 分支◇(单选) vs 分叉≡(并发) 不混?
- [ ] RUP四阶段顺序初始→细化→构造→移交
- [ ] 画顺序图能区分边界类/控制类/实体类三层?
- [ ] 多重性 `1` `0..1` `*` `1..*` 会读会标?
- [ ] 组件图/部署图仅出选填,不用练画图?
---
> 📎 **相关笔记**[[期末复习指南]] | [[课后习题汇编]]