vault backup: 2026-06-11 00:02:06
This commit is contained in:
@@ -220,9 +220,9 @@ D. 业务需求 → 系统需求 → 用户需求
|
|||||||
## 📝 章末自测
|
## 📝 章末自测
|
||||||
|
|
||||||
**1. 填空题**
|
**1. 填空题**
|
||||||
- 需求的三个层次从高到低依次是:( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )
|
- 需求的三个层次从高到低依次是:( ___ )、( ____ )、( ___ )
|
||||||
- 优秀需求的七个特性中,"所有人读出来是同一个意思"指的是( ___ )( ___ )性
|
- 优秀需求的七个特性中,"所有人读出来是同一个意思"指的是( ___ )( ___ )性
|
||||||
- 结构化分析的三个模型是:功能模型(DFD)、( ___ )( ___ )、( ___ )( ___ )
|
- 结构化分析的三个模型是:功能模型(DFD)、( ___ )、( ___ )
|
||||||
|
|
||||||
**2. 简答题**
|
**2. 简答题**
|
||||||
- 简述"用户需求说明书"和"软件需求规格说明书(SRS)"的区别。
|
- 简述"用户需求说明书"和"软件需求规格说明书(SRS)"的区别。
|
||||||
|
|||||||
170
各章笔记/第03章-用例图.md
170
各章笔记/第03章-用例图.md
@@ -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. 填空题**
|
**1. 填空题**
|
||||||
- 参与者分三类:( ___ )( ___ )、外部设备、( ___ )( ___ )
|
- 参与者分三类:( ______ )、外部设备、( _____ )
|
||||||
- 用例之间的关系有三种:( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )
|
- 用例之间的关系有三种:( ____ )、( _____ )、( ____ )
|
||||||
- 在用例图中,用例画在系统边界的( ___ )( ___ )(里面/外面)
|
- 在用例图中,用例画在系统边界的( ____ )(里面/外面)
|
||||||
|
|
||||||
**2. 判断题**(对还是错?)
|
**2. 判断题**(对还是错?)
|
||||||
- ( ) 一个参与者只能是一个人
|
- ( ) 一个参与者只能是一个人
|
||||||
|
|||||||
@@ -185,16 +185,241 @@
|
|||||||
|
|
||||||
这是MVC模式的UML体现,期中考试经常考!
|
这是MVC模式的UML体现,期中考试经常考!
|
||||||
|
|
||||||
| 版型 | 职责 | 常见形式 | 对应MVC |
|
| 版型 | 职责 | 常见形式 | 对应MVC |
|
||||||
|------|------|----------|---------|
|
| ---------------------- | ------ | --------- | ---------- |
|
||||||
| **边界类** <<boundary>> | 与外界交互 | 窗口、对话框、报表 | View |
|
| **边界类** `<<boundary>>` | 与外界交互 | 窗口、对话框、报表 | View |
|
||||||
| **控制类** <<control>> | 协调业务逻辑 | 处理业务规则 | Controller |
|
| **控制类** `<<control>>` | 协调业务逻辑 | 处理业务规则 | Controller |
|
||||||
| **实体类** <<entity>> | 持久化数据 | 数据库表对应的类 | Model |
|
| **实体类** `<<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. 填空题**
|
**1. 填空题**
|
||||||
- 聚合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能)
|
- 聚合关系中,整体不存在了,部分( ___ )存在。(能/不能)
|
||||||
- 组合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能)
|
- 组合关系中,整体不存在了,部分( ___ )存在。(能/不能)
|
||||||
- 边界类、控制类、实体类分别对应MVC中的( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )
|
- 边界类、控制类、实体类分别对应MVC中的( _____ )、( _____ )、( ___ )
|
||||||
|
|
||||||
**2. 判断题**
|
**2. 判断题**
|
||||||
- ( ) 依赖关系比关联关系更弱
|
- ( ) 依赖关系比关联关系更弱
|
||||||
|
|||||||
@@ -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 异步消息(必考!)
|
## 🔑 调用消息 vs 异步消息(必考!)
|
||||||
@@ -195,9 +357,9 @@
|
|||||||
## 📝 章末自测
|
## 📝 章末自测
|
||||||
|
|
||||||
**1. 填空题**
|
**1. 填空题**
|
||||||
- 顺序图的四个核心元素是:( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )
|
- 顺序图的四个核心元素是:( ____ )、( ____ )、( ____ )、( ___ _ )
|
||||||
- 发送后等待返回的消息叫( ___ )( ___ )消息,发送后继续执行的消息叫( ___ )( ___ )消息
|
- 发送后等待返回的消息叫( ____ )消息,发送后继续执行的消息叫( ____ )消息
|
||||||
- 顺序图强调( ___ )( ___ )顺序,协作图强调( ___ )( ___ )关系
|
- 顺序图强调( _____ )顺序,协作图强调( ____ )关系
|
||||||
|
|
||||||
**2. 判断题**
|
**2. 判断题**
|
||||||
- ( ) 调用消息的返回消息必须画出来
|
- ( ) 调用消息的返回消息必须画出来
|
||||||
|
|||||||
@@ -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 活动(必考区别!)
|
### 🔑 状态 vs 活动(必考区别!)
|
||||||
|
|
||||||
| 对比 | 状态 | 活动 |
|
| 对比 | 状态 | 活动 |
|
||||||
@@ -187,9 +403,9 @@
|
|||||||
## 📝 章末自测
|
## 📝 章末自测
|
||||||
|
|
||||||
**1. 填空题**
|
**1. 填空题**
|
||||||
- 状态图描述的是( ___ )( ___ )个对象的状态变化
|
- 状态图描述的是( ____ )个对象的状态变化
|
||||||
- 四种事件类型是:调用事件、( ___ )( ___ )、( ___ )( ___ )、时间事件
|
- 四种事件类型是:调用事件、( ____ )、( _____ )、时间事件
|
||||||
- 活动图中的菱形表示( ___ )( ___ ),粗横线表示( ___ )( ___ )
|
- 活动图中的菱形表示( ____ ),粗横线表示( ___ )
|
||||||
|
|
||||||
**2. 判断题**
|
**2. 判断题**
|
||||||
- ( ) 状态图和活动图都可以描述多个对象的交互
|
- ( ) 状态图和活动图都可以描述多个对象的交互
|
||||||
|
|||||||
@@ -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系统包括以下内容,请区分逻辑模型和物理模型。
|
**题目**:某Web系统包括以下内容,请区分逻辑模型和物理模型。
|
||||||
|
|||||||
162
各章笔记/第08章-包图.md
162
各章笔记/第08章-包图.md
@@ -48,6 +48,168 @@
|
|||||||
|
|
||||||
> 子包继承父包中可见性为public和protected的元素。
|
> 子包继承父包中可见性为public和protected的元素。
|
||||||
|
|
||||||
|
### 📌 包图各元素的画法速查
|
||||||
|
|
||||||
|
> 这一节把包图里所有的画图元素(包本身、依赖、泛化)用字符画列出来。
|
||||||
|
|
||||||
|
#### ① 包的两种画法
|
||||||
|
|
||||||
|
**标准文件夹画法**(最常用):
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────┐
|
||||||
|
│ UI层 │ ← 上方有"小标签"(像文件夹的舌头)
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
字符画表示(小标签在左上角):
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────────┐
|
||||||
|
│┌─┐ │
|
||||||
|
││ │ │
|
||||||
|
│└─┘─────────┤
|
||||||
|
│ UI层 │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────┐ │
|
||||||
|
│ │ 登录页 │ │ ← 包内可以嵌套子包或类
|
||||||
|
│ └─────────┘ │
|
||||||
|
└─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
**简化画法**(只用矩形):
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────┐
|
||||||
|
│ UI层 │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │ 登录页 │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │ 主页面 │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ② 包的嵌套
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────────────┐
|
||||||
|
│ 电子商务系统 │
|
||||||
|
│ ┌──────────┐ │
|
||||||
|
│ │ 用户模块 │ │
|
||||||
|
│ │ ┌──────┐ │ │
|
||||||
|
│ │ │登录类│ │ │
|
||||||
|
│ │ └──────┘ │ │
|
||||||
|
│ │ ┌──────┐ │ │
|
||||||
|
│ │ │注册类│ │ │
|
||||||
|
│ │ └──────┘ │ │
|
||||||
|
│ └──────────┘ │
|
||||||
|
│ ┌──────────┐ │
|
||||||
|
│ │ 订单模块 │ │
|
||||||
|
│ └──────────┘ │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ③ 包的可见性符号
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────────────┐
|
||||||
|
│ ┌─┐ │
|
||||||
|
│ │+│ 公开类 │ ← + 公有:任何外部包都可用
|
||||||
|
│ └─┘───────────┤
|
||||||
|
│ ┌─┐ │
|
||||||
|
│ │#│ 受保护类 │ ← # 受保护:只有子包可用
|
||||||
|
│ └─┘───────────┤
|
||||||
|
│ ┌─┐ │
|
||||||
|
│ │-│ 私有类 │ ← - 私有:只有包内部可用
|
||||||
|
│ └─┘───────────┤
|
||||||
|
│ │
|
||||||
|
└────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ④ 包之间的依赖关系 —— 虚线 + 开放箭头
|
||||||
|
|
||||||
|
> 一个包中的类**引用**另一个包中的类 → 包之间形成依赖。
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────┐ ┌──────────────┐
|
||||||
|
│ UI层 │ │ 业务层 │
|
||||||
|
│ │ │ │
|
||||||
|
│ ┌────────┐ │ │ ┌────────┐ │
|
||||||
|
│ │登录窗口 │ │ │ │登录服务 │ │
|
||||||
|
│ └────────┘ │ │ └────────┘ │
|
||||||
|
│ │ │ │
|
||||||
|
└──────────────┘ └──────────────┘
|
||||||
|
│ ▲
|
||||||
|
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
|
||||||
|
虚线 + 开放箭头
|
||||||
|
(依赖方向:UI层 依赖 业务层)
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ **依赖方向**:箭头从"使用者"指向"被使用者"(类似类图里的依赖)。
|
||||||
|
|
||||||
|
#### ⑤ 包之间的泛化关系 —— 实线 + 空心三角
|
||||||
|
|
||||||
|
> 子包继承父包的内容。子包继承父包中**public 和 protected** 的元素。
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────┐ ┌──────────────┐
|
||||||
|
│ 业务层 │ │ 通用层 │
|
||||||
|
│ (子包) │ ─ ─ ─ ─ ─ ─ ─ ▷ │ (父包) │
|
||||||
|
│ │ 空心三角 │ │
|
||||||
|
│ ┌────────┐ │ │ ┌────────┐ │
|
||||||
|
│ │订单处理 │ │ │ │日志工具 │ │
|
||||||
|
│ └────────┘ │ │ └────────┘ │
|
||||||
|
│ ┌────────┐ │ │ ┌────────┐ │
|
||||||
|
│ │支付处理 │ │ │ │通用工具 │ │
|
||||||
|
│ └────────┘ │ │ └────────┘ │
|
||||||
|
└──────────────┘ └──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ **泛化方向**:空心三角**指向父包**(与类图泛化一致)。
|
||||||
|
|
||||||
|
#### ⑥ 完整包图示例
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────────────┐
|
||||||
|
│ 表现层 │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │登录页 │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │主窗体 │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
└───────┬────────┘
|
||||||
|
│ 依赖
|
||||||
|
╌ ╌ ╌ ╌ ╌ ╌ ╌
|
||||||
|
▼
|
||||||
|
┌────────────────┐ ▷ ┌────────────────┐
|
||||||
|
│ 业务层 │ ─ ─ ─ ─ ─ ─ ─ ─ ─│ 通用层 │
|
||||||
|
│ │ 泛化 │ │
|
||||||
|
│ ┌────────┐ │ │ ┌────────┐ │
|
||||||
|
│ │登录管理 │ │ │ │日志工具 │ │
|
||||||
|
│ └────────┘ │ │ └────────┘ │
|
||||||
|
│ ┌────────┐ │ │ ┌────────┐ │
|
||||||
|
│ │订单管理 │ │ │ │数据校验 │ │
|
||||||
|
│ └────────┘ │ │ └────────┘ │
|
||||||
|
└───────┬────────┘ └────────────────┘
|
||||||
|
│ 依赖
|
||||||
|
╌ ╌ ╌ ╌ ╌ ╌ ╌
|
||||||
|
▼
|
||||||
|
┌────────────────┐
|
||||||
|
│ 数据层 │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │用户DAO │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
│ ┌────────┐ │
|
||||||
|
│ │订单DAO │ │
|
||||||
|
│ └────────┘ │
|
||||||
|
└────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
🔑 **一句话记忆口诀**:包用文件夹画,标签是包名;包间依赖是虚线开放箭头(指向被依赖),包间泛化是实线空心三角(指向父包);包可以嵌套,元素分+/-可见性。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 💡 三、包的四大设计原则
|
## 💡 三、包的四大设计原则
|
||||||
|
|||||||
@@ -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)
|
> 📎 **各章笔记链接**:[第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)
|
||||||
|
|
||||||
## 🎯 考试范围与重点
|
## 🎯 考试范围与重点
|
||||||
|
|
||||||
|
|||||||
420
期末重要知识点速记.md
Normal file
420
期末重要知识点速记.md
Normal 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..*` 会读会标?
|
||||||
|
- [ ] 组件图/部署图仅出选填,不用练画图?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> 📎 **相关笔记**:[[期末复习指南]] | [[课后习题汇编]]
|
||||||
Reference in New Issue
Block a user