From 4ad09b815376fca65130086370f386e7578ac94d Mon Sep 17 00:00:00 2001 From: ChoChoX Date: Thu, 11 Jun 2026 00:02:06 +0800 Subject: [PATCH] vault backup: 2026-06-11 00:02:06 --- 各章笔记/第01章-需求工程.md | 6 +- 各章笔记/第03章-用例图.md | 170 +++++++++++- 各章笔记/第04章-类图与对象图.md | 241 ++++++++++++++++- 各章笔记/第05章-顺序图与协作图.md | 168 +++++++++++- 各章笔记/第06章-状态图与活动图.md | 222 +++++++++++++++- 各章笔记/第07章-组件图与部署图.md | 288 ++++++++++++++++++++ 各章笔记/第08章-包图.md | 162 ++++++++++++ 期末复习指南.md | 2 +- 期末重要知识点速记.md | 420 ++++++++++++++++++++++++++++++ 9 files changed, 1658 insertions(+), 21 deletions(-) create mode 100644 期末重要知识点速记.md diff --git a/各章笔记/第01章-需求工程.md b/各章笔记/第01章-需求工程.md index 10560c5..daa805e 100644 --- a/各章笔记/第01章-需求工程.md +++ b/各章笔记/第01章-需求工程.md @@ -220,9 +220,9 @@ D. 业务需求 → 系统需求 → 用户需求 ## 📝 章末自测 **1. 填空题** -- 需求的三个层次从高到低依次是:( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ ) -- 优秀需求的七个特性中,"所有人读出来是同一个意思"指的是( ___ )( ___ )性 -- 结构化分析的三个模型是:功能模型(DFD)、( ___ )( ___ )、( ___ )( ___ ) +- 需求的三个层次从高到低依次是:( ___ )、( ____ )、( ___ ) +- 优秀需求的七个特性中,"所有人读出来是同一个意思"指的是( ___ )( ___ )性 +- 结构化分析的三个模型是:功能模型(DFD)、( ___ )、( ___ ) **2. 简答题** - 简述"用户需求说明书"和"软件需求规格说明书(SRS)"的区别。 diff --git a/各章笔记/第03章-用例图.md b/各章笔记/第03章-用例图.md index cb9c6b9..5bf0770 100644 --- a/各章笔记/第03章-用例图.md +++ b/各章笔记/第03章-用例图.md @@ -205,6 +205,170 @@ > - 如果**只做交易**(买卖基金)→ 基金管理系统是**外部系统**(参与者) > - 如果**交易+管理**(买卖+维护基金品种)→ 基金管理系统变成**系统内部功能** +![[Pasted image 20260610205411.png]] +![[Pasted image 20260610205443.png]] + +--- + +## 📌 附录:用例图常用画图符号速查 + +> 本节把用例图中所有画图符号和标识用字符画的形式汇总一遍,画UML图时看着照画就行。 + +### 1. 参与者(Actor)—— 两种表示法 + +**人形符号**(最常用): + +``` + 客户 + ○ + ╱│╲ + ╱ ╲ +``` + +**矩形符号**(协作图或在空间紧张时使用): + +``` + ┌──────────┐ + │ :客户 │ ← 冒号 + 类名 + └──────────┘ +``` + +### 2. 用例(Use Case)—— 椭圆 + +``` + ╭──────────╮ + ╱ 借书 ╲ + │ │ + ╲ ╱ + ╰──────────╯ +``` + +⚠️ **命名**:椭圆里写**动宾结构**的用例名,如"借书""还书""查询图书"。 + +### 3. 系统边界 —— 矩形 + +``` + ┌─────────── 图书管理系统 ───────────┐ + │ │ + │ ╭────────╮ │ + │ ╱ 借书 ╲ ← 用例在内部 │ + │ │ │ │ + │ ╲ ╱ │ + │ ╰────────╯ │ + │ │ + └─────────────────────────────────────┘ + + 读者 图书管理员 + ○ ○ ← 参与者在外部 + ╱│╲ ╱│╲ + ╱ ╲ ╱ ╲ +``` + +### 4. 参与者与用例的关联 —— 实线 + +``` + 读者 ─────────── 借书 + ○ (椭圆) + ╱│╲ + ╱ ╲ +``` + +### 5. 包含关系 <> —— 虚线箭头 + 文字标签 + +**方向**:基本用例 → 包含用例(箭头指向被包含的那个)。 + +``` + ╭──────────╮ ╭──────────╮ + ╱ 注册课程 ╲ ╱ 查询课程 ╲ +│ │ <> │ │ + ╲ ╱ ─ - - - - - ──→ ╲ ╱ + ╰──────────╯ (虚线 + 箭头) ╰──────────╯ + (基本用例) (被包含用例) +``` + +### 6. 扩展关系 <> —— 虚线箭头 + 文字标签 + +**方向**:扩展用例 → 基本用例(箭头指向基本用例,与包含**相反**)。 + +``` + ╭──────────╮ ╭──────────╮ + ╱ 礼品包装 ╲ ╱ 下单 ╲ +│ │ <> │ │ + ╲ ╱ ─ - - - - - ──→ ╲ ╱ + ╰──────────╯ (虚线 + 箭头) ╰──────────╯ + (扩展用例) (基本用例) +``` + +⚠️ **易错对比**:<> 和 <> 箭头方向**相反**,考试常考。 + +### 7. 用例之间的泛化关系 —— 实线 + 空心三角形 + +**方向**:子用例 → 父用例(子用例继承父用例的行为)。 + +``` + ╭──────────╮ ╭──────────╮ + ╱ 微信支付 ╲ ╱ 支付 ╲ +│ │ ─ ─ ─▷ │ │ + ╲ ╱ (空心三角) ╲ ╱ + ╰──────────╯ ╰──────────╯ + (子用例) (父用例) +``` + +### 8. 参与者之间的泛化关系 —— 实线 + 空心三角形 + +**方向**:特殊参与者 → 一般参与者(特殊继承普通的能力)。 + +``` + ╭─────╮ + │ 钻石会员 │ (特殊) + │ /│\ │ ─ ─ ─▷ 普通用户 + │ / │ \ │ (一般) + ╰───────╯ +``` + +### 9. 完整用例图示例 + +把上面所有符号拼在一起画出来的样子: + +``` + 读者 + ○ + ╱│╲ + ┌──── 图书管理系统 ──────────────────────┐ + │ │ + │ ╭──────╮ │ + │ ╱ 借书 ╲ ←──── <> ────╮ │ + ││ │ │ │ + │ ╲ ╱ │ │ + │ ╰──────╯ │ │ + │ ╭──────╮ │ │ + │ ╱ 还书 ╲ ←──── <> ────╮ │ + ││ │ │ │ + │ ╲ ╱ │ │ + │ ╰──────╯ │ │ + │ │ │ + │ ╭──────╮ │ │ + │ ╱ 缴纳 ╲ ←────────┘ │ │ + ││ 罚款 │ │ │ + │ ╲ ╱ │ │ + │ ╰──────╯ │ │ + │ ╭──────╮ ── <> ──→ │ │ + │ ╱ 查询 ╲ │ │ + ││ 图书 │ │ │ + │ ╲ ╱ │ │ + │ ╰──────╯ │ │ + │ │ │ + └──────────────────────────────────┘ │ + │ + 管理员 │ + ○ │ + ╱│╲ │ + ╱ ╲ │ + │ (借书/还书关联) +``` + +🔑 **一句话记忆口诀**:边界矩形圈住用例,参与者画在边界外;包含扩展都是虚线箭头,方向相反要分清;泛化用空心三角,子指向父别搞错。 + --- ## ✍️ 边学边练(三) @@ -227,9 +391,9 @@ ## 📝 章末自测 **1. 填空题** -- 参与者分三类:( ___ )( ___ )、外部设备、( ___ )( ___ ) -- 用例之间的关系有三种:( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ ) -- 在用例图中,用例画在系统边界的( ___ )( ___ )(里面/外面) +- 参与者分三类:( ______ )、外部设备、( _____ ) +- 用例之间的关系有三种:( ____ )、( _____ )、( ____ ) +- 在用例图中,用例画在系统边界的( ____ )(里面/外面) **2. 判断题**(对还是错?) - ( ) 一个参与者只能是一个人 diff --git a/各章笔记/第04章-类图与对象图.md b/各章笔记/第04章-类图与对象图.md index 85fc61b..153a107 100644 --- a/各章笔记/第04章-类图与对象图.md +++ b/各章笔记/第04章-类图与对象图.md @@ -185,16 +185,241 @@ 这是MVC模式的UML体现,期中考试经常考! -| 版型 | 职责 | 常见形式 | 对应MVC | -|------|------|----------|---------| -| **边界类** <> | 与外界交互 | 窗口、对话框、报表 | View | -| **控制类** <> | 协调业务逻辑 | 处理业务规则 | Controller | -| **实体类** <> | 持久化数据 | 数据库表对应的类 | Model | +| 版型 | 职责 | 常见形式 | 对应MVC | +| ---------------------- | ------ | --------- | ---------- | +| **边界类** `<>` | 与外界交互 | 窗口、对话框、报表 | View | +| **控制类** `<>` | 协调业务逻辑 | 处理业务规则 | Controller | +| **实体类** `<>` | 持久化数据 | 数据库表对应的类 | Model | 🔑 **协作关系**:边界类接收用户输入 → 控制类处理业务逻辑 → 实体类存取数据。 --- +## 📌 附录:类图常用画图符号速查 + +> 这一节把类图中所有的关系符号、接口、抽象类、版型、对象图等所有画图元素用字符画列出来,画类图时直接照搬即可。 + +### 1. 关联关系(Association)—— 实线(可带多重性) + +**普通关联**(双向带多重性): + +``` + ┌────────┐ 1 0..* ┌────────┐ + │ 老师 │ ────────────────── │ 学生 │ + └────────┘ └────────┘ +``` + +**自关联**(一个类关联到自己): + +``` + ┌────────┐ + │ 员工 │ + │ │ + │ 领导 │◀──┐ + └────────┘ │ + │ │ + └─────┘ +``` + +### 2. 聚合关系(Aggregation)—— 实线 + 空心菱形 ◇ + +> 部分可脱离整体独立存在。 + +``` + ◇ + ┌────────┐ ┌────────┐ + │ 班级 │ ───────────── │ 学生 │ + └────────┘ └────────┘ + (整体) (部分,可独立) + +💬 学校没了,学生还在 —— 所以是空心菱形 +``` + +### 3. 组合关系(Composition)—— 实线 + 实心菱形 ◆ + +> 部分不能脱离整体独立存在。 + +``` + ◆ + ┌────────┐ ┌────────┐ + │ 汽车 │ ───────────── │ 发动机 │ + └────────┘ └────────┘ + (整体) (部分,离不开整体) + +💬 汽车报废了,发动机也没意义了 —— 所以是实心菱形 +``` + +### 4. 依赖关系(Dependency)—— 虚线 + 开放箭头 + +``` + ┌────────┐ ┌────────┐ + │ 司机 │ ─ ─ ─ ─ ─ ─ ─⇨ │ 汽车 │ + └────────┘ └────────┘ + (使用者) (被使用者) + (虚线 + 开放箭头) +``` + +### 5. 泛化关系(Generalization)—— 实线 + 空心三角 + +**方向**:子类 → 父类(空心三角指向父类)。 + +``` + ▷ + ┌────────┐ ┌────────┐ + │ 狗 │ ───────────── │ 动物 │ + └────────┘ └────────┘ + (子类) (父类) +``` + +### 6. 实现关系(Realization)—— 虚线 + 空心三角 + +**方向**:实现类 → 接口(空心三角指向接口)。 + +``` + ▷ + ┌────────┐ ┌──────────────┐ + │ 鸟 │ ─ ─ ─ ─ ─ ─ ─ │<>│ + └────────┘ │ 飞行 │ + (实现类) └──────────────┘ + (接口) +``` + +### 7. 接口的两种画法 + +**普通矩形画法**(在类图中更常见): + +``` + ┌──────────────────┐ + │ <> │ ← 关键字标识 + │ 飞行 │ ← 接口名 + ├──────────────────┤ + │ +起飞(): void │ ← 只有声明,没有实现 + │ +降落(): void │ + └──────────────────┘ +``` + +**棒棒糖表示法**(简化版,常在组件图中使用): + +``` + ┌────────┐ ┌────────┐ + │ 鸟 │●─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ 飞行 │ (棒棒糖+连接线) + └────────┘ └────────┘ + (实现类) (接口) +``` + +### 8. 抽象类与抽象方法 + +> **画法**:抽象类**类名用斜体**、抽象方法**方法名用斜体**。在字符画里用 `<>` 标识或加文字说明。 + +``` + ┌────────────┐ + │ 动物 │ ← 实际画图时类名用斜体 + ├────────────┤ + │ │ + ├────────────┤ + │ 移动() │ ← 实际画图时方法名用斜体 + │ 叫() │ + └────────────┘ + + {abstract} ← 标注方式(实际画图用斜体) +``` + +### 9. 版型(Stereotype)的画法 + +**边界类**: + +``` + ┌────────────────┐ + │ <> │ ← 写在类名上方 + │ 登录页面 │ + ├────────────────┤ + │ -用户名:String │ + │ -密码:String │ + ├────────────────┤ + │ +提交():void │ + └────────────────┘ +``` + +**控制类**: + +``` + ┌────────────────┐ + │ <> │ + │ 订单处理 │ + ├────────────────┤ + │ │ + ├────────────────┤ + │ +处理订单() │ + │ +检查库存() │ + └────────────────┘ +``` + +**实体类**: + +``` + ┌────────────────┐ + │ <> │ + │ 订单 │ + ├────────────────┤ + │ -订单号:String│ + │ -金额:double │ + ├────────────────┤ + │ +保存() │ + │ +查询() │ + └────────────────┘ +``` + +### 10. 对象图的画法 + +> 对象名格式:`对象名:类名`(对象名和类名下加**下划线**),属性有具体值。 + +``` + ┌─────────────────┐ + │ 张三:员工 │ ← 对象名:类名,下划线 + ├─────────────────┤ + │ 员工号 = "E001" │ ← 属性=值 + │ 姓名 = "张三" │ + │ 年龄 = 28 │ + └─────────────────┘ +``` + +**对象图与类图对比**: + +``` + 类图(描述规则) 对象图(描述实例) + + ┌──────────┐ ┌────────────────┐ + │ 员工 │ │ 张三:员工 │ + ├──────────┤ ├────────────────┤ + │ -员工号 │ │ 员工号="E001" │ + │ -姓名 │ ──> │ 姓名="张三" │ + │ -年龄 │ │ 年龄=28 │ + ├──────────┤ └────────────────┘ + │ +查询() │ + └──────────┘ +``` + +### 11. 关联类的画法 + +> 关联类挂在关联线中间,用虚线连到关联线上。 + +``` + ┌────────┐ ┌────────┐ + │ 员工 │ ─ ─ ─ ─ ─ ─ ─ │ 公司 │ + └────────┘ │ └────────┘ + │ + ┌────────┐ + │ 合同 │ ← 关联类(虚线连到关联线上) + ├────────┤ + │ -工资 │ + │ -合同期│ + └────────┘ +``` + +🔑 **一句话记忆口诀**:实线实箭是关联,空心菱形是聚合,实心菱形是组合,虚线开放箭头是依赖;实线空三角是泛化(继承),虚线空三角是实现(接口)。 + +--- + ## ✍️ 边学边练(三) **题目**:在线购物系统中,"用户"通过"购物页面"下单,系统"订单处理"模块检查库存后,更新"订单"数据和"库存"数据。请指出各属于哪种版型。 @@ -225,9 +450,9 @@ ## 📝 章末自测 **1. 填空题** -- 聚合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能) -- 组合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能) -- 边界类、控制类、实体类分别对应MVC中的( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ ) +- 聚合关系中,整体不存在了,部分( ___ )存在。(能/不能) +- 组合关系中,整体不存在了,部分( ___ )存在。(能/不能) +- 边界类、控制类、实体类分别对应MVC中的( _____ )、( _____ )、( ___ ) **2. 判断题** - ( ) 依赖关系比关联关系更弱 diff --git a/各章笔记/第05章-顺序图与协作图.md b/各章笔记/第05章-顺序图与协作图.md index 5cb913b..a57f89f 100644 --- a/各章笔记/第05章-顺序图与协作图.md +++ b/各章笔记/第05章-顺序图与协作图.md @@ -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. 判断题** - ( ) 调用消息的返回消息必须画出来 diff --git a/各章笔记/第06章-状态图与活动图.md b/各章笔记/第06章-状态图与活动图.md index ce5d992..37c5a01 100644 --- a/各章笔记/第06章-状态图与活动图.md +++ b/各章笔记/第06章-状态图与活动图.md @@ -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. 判断题** - ( ) 状态图和活动图都可以描述多个对象的交互 diff --git a/各章笔记/第07章-组件图与部署图.md b/各章笔记/第07章-组件图与部署图.md index b9ff3f2..ce926c2 100644 --- a/各章笔记/第07章-组件图与部署图.md +++ b/各章笔记/第07章-组件图与部署图.md @@ -91,6 +91,294 @@ --- +## 📌 附录:组件图与部署图常用画图符号速查 + +> 这一节把组件图、部署图里所有的画图元素(组件、接口、结点、关系)用字符画列出来。 + +### 1. 组件(Component)—— 矩形 + 左侧两个小矩形 + +``` + ┌────┐ + ├────┤ ┌─────────────────┐ + └────┘ │ <> │ ← 字符画示意 + │ OrderService │ ← 实际画法(两个小矩形贴在 + └─────────────────┘ 组件图标的左上角) +``` + +更形象的字符画(标准画法的样子): + +``` + ┌────────────────────────┐ + │ ╔══════════════╗ │ + ╔═╧═╗║ OrderService ║ │ ← 左侧两个小方块 + ║ ║╚══════════════╝ │ 右侧大矩形是组件名 + ╚═══╝ │ + └────────────────────────┘ +``` + +简化字符画(更便于手写): + +``` + ┌──┐ + │ ├───── ┌────────────────┐ + └──┘ │ OrderService │ + └────────────────┘ +``` + +⚠️ **命名方式**: +- `OrderService.java` —— 包含扩展名的具体组件 +- `<>` + `OrderService` —— 用版型标识 + +### 2. 组件的两种画法 + +**带版型的标准画法**: + +``` + ┌──┐ + │ ├───── ┌────────────────────┐ + └──┘ │ <> │ + │ OrderService │ + └────────────────────┘ +``` + +**简化的文件/类表示法**(在组件图里很常见): + +``` + ┌──┐ + │ ├───── ┌────────────────────┐ + └──┘ │ OrderService.java│ ← 写上扩展名 + └────────────────────┘ +``` + +### 3. 接口(Interface)—— 棒棒糖 / 插座 + +**棒棒糖表示法**(提供方在提供接口时用): + +``` + ┌──────┐ + 客户端 │ 飞行 │ ← 圆圈 + 接口名 + ┌────┐ │ │ + │ 鸟 │──●────┘ ↑ │ ← ● 是棒棒糖圆圈 + └────┘ │ │ + └───┘ +``` + +**插座表示法**(需要方在实现接口时用): + +``` + ┌────┐ ┌──────┐ + │ 鸟 │ ─────────┤ 飞行 │ + └────┘ ◀──── └──────┘ + │ 半圆+连接线 │ + │ (socket) │ +``` + +简化字符画: + +``` + ┌────────┐ + │ 鸟 │ ●────── 飞行 (提供方:lollipop) + └────────┘ + + ┌────────┐ + │ 飞机 │ ◀──半圆──── 飞行 (需要方:socket) + └────────┘ +``` + +### 4. 组件之间的关系 + +**依赖关系**(最常见 —— 一个组件调用另一个组件): + +``` + ┌──┐ ┌──┐ + │ ├──────┐ │ │ + └──┘ │ └──┘ + │ ┌────────────────┐ + │ │ LoginService │ + │ └────────────────┘ + │ ┌────────────────┐ + ┌─────────┴─▶│ UserService │ + │ ┌────────────────┐ │ + └──│ LoginUI │ │ + └────────────────┘ │ + ┌──┐ │ + │ ├──┐ ┌────────────────┐ │ + └──┘ └─▶│ DataService │◀───┘ + └────────────────┘ + (虚线箭头表示依赖) +``` + +简化画法(虚线箭头): + +``` + ┌──────────────┐ + │ OrderUI │ + │ OrderCtrl │ ╌ ─ ─ ─ ─ ─▶ ┌──────────────┐ + └──────────────┘ (依赖) │ OrderService│ + └──────────────┘ +``` + +**实现关系**(组件实现接口): + +``` + ┌──────────────┐ ●──── 支付接口 + │ 支付组件 │ ──────────── / + └──────────────┘ 实现关系 +``` + +### 5. 结点(Node)—— 立方体 + +> 部署图的核心元素。立方体代表一台**物理设备**。 + +**字符画表现**(立方体用三视图): + +``` + ┌──────────────┐ + ╱│ ╱│ + ╱ │ ╱ │ + ┌──────────────┐ │ + │ │ │ │ + │ │ Web │ │ + │ │ Server │ │ + │ └───────────│──┘ + │ ╱ │ ╱ + │╱ │╱ + └──────────────┘ +``` + +**简化字符画**(考试/笔记常用): + +``` + ┌──────────────┐ + │ ┌────────┐ │ + │ │ Web │ │ ← 立方体的"上表面"(可选) + │ │ Server │ │ + │ └────────┘ │ + └──────────────┘ + + ┌──────────┐ + ╱│ Web ╱│ + ╱ │ Server ╱ │ +┌──────────┐ │ +│ ┌────┐ │ │ +│ │名称│ │ │ +│ └────┘ │ │ +└──────────┘ │ + │ │ ╱ + └────────┘ +``` + +最简洁的字符画(最推荐使用): + +``` + ╔═══════════════╗ + ║ <> ║ ← 设备结点 + ║ WebServer ║ + ╚═══════════════╝ +``` + +**处理机结点 vs 设备结点**(都用立方体,靠版型区分): + +``` + 处理机结点 设备结点 + + ╔═══════════════╗ ╔═══════════════╗ + ║ <> ║ ║ <> ║ + ║ WebServer ║ ║ Modem ║ + ╚═══════════════╝ ╚═══════════════╝ + (有CPU,可计算) (没有计算能力) +``` + +### 6. 结点内运行的组件 + +> 在结点立方体里"装"上组件,组件画在结点内部。 + +``` + ╔═══════════════════════════╗ + ║ <> ║ + ║ WebServer ║ + ║ ║ + ║ ┌──┐ ║ + ║ │ ├──── ┌────────────┐ ║ + ║ └──┘ │<>║ ║ + ║ │ WebApp.jar │ ║ + ║ └────────────┘ ║ + ║ ║ + ║ ┌──┐ ║ + ║ │ ├──── ┌────────────┐ ║ + ║ └──┘ │<>║ ║ + ║ │ DBDriver │ ║ + ║ └────────────┘ ║ + ╚═══════════════════════════╝ +``` + +简化版本: + +``` + ╔═══════════════╗ + ║ WebServer ║ + ║ ║ + ║ ┌──┐ ║ + ║ │ ├─ WebApp ║ ← 组件在结点里 + ║ └──┘ ║ + ╚═══════════════╝ +``` + +### 7. 结点之间的连接 + +> 部署图上的"线"表示物理通信路径。 + +``` + ╔═══════════╗ ╔═══════════╗ + ║ 客户端 ║ ║ 服务器 ║ + ║ (PC机) ║ ║ ║ + ╚═════╤═════╝ ╚═════╤═════╝ + │ │ + │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ + │ TCP/IP │ + │ │ +``` + +**多重连接**(同一对结点可能有多种连接): + +``` + ╔═══════════╗ ╔═══════════╗ + ║ 客户端 ║ ━━━━━━━TCP/IP ━━━━━━━━━ ║ Web服务器 ║ + ║ ║ ━━━━━━━ HTTPS ━━━━━━━━━ ║ ║ + ╚═══════════╝ ╚═══════════╝ +``` + +### 8. 完整部署图示例 + +``` + TCP/IP + ━━━━━━━━━━━━━━━━━━━━ + ╔══════════╗ ╔══════════════════╗ + ║<>║ ║ <> ║ + ║ 客户机 ║ ║ Web服务器 ║ + ║ ║ ║ ║ + ║ ┌──┐ ║ ║ ┌──┐ ║ + ║ │ ├─◀━━╫━━━━━━调用━━━━━━━━╫──┤ ├─ WebApp.jar║ + ║ └──┘ ║ ║ └──┘ ║ + ║ 浏览器 ║ ║ ║ + ╚══════════╝ ╚══════════════════╝ + │ + │ JDBC + │ + ╔══════════════════╗ + ║ <> ║ + ║ 数据库服务器 ║ + ║ ║ + ║ ┌──┐ ║ + ║ │ ├─ MySQL.db ║ + ║ └──┘ ║ + ╚══════════════════╝ +``` + +🔑 **一句话记忆口诀**:组件左上方两个小方块,接口是圆圈加棒棒糖;结点是立方体(靠版型区分处理机/设备),立方体里装组件,立方体之间是通信连接。 + +--- + ## ✍️ 边学边练 **题目**:某Web系统包括以下内容,请区分逻辑模型和物理模型。 diff --git a/各章笔记/第08章-包图.md b/各章笔记/第08章-包图.md index 360da69..9dbf9e8 100644 --- a/各章笔记/第08章-包图.md +++ b/各章笔记/第08章-包图.md @@ -48,6 +48,168 @@ > 子包继承父包中可见性为public和protected的元素。 +### 📌 包图各元素的画法速查 + +> 这一节把包图里所有的画图元素(包本身、依赖、泛化)用字符画列出来。 + +#### ① 包的两种画法 + +**标准文件夹画法**(最常用): + +``` + ┌──────────────┐ + │ UI层 │ ← 上方有"小标签"(像文件夹的舌头) + └──────────────┘ +``` + +字符画表示(小标签在左上角): + +``` + ┌────────────┐ + │┌─┐ │ + ││ │ │ + │└─┘─────────┤ + │ UI层 │ + │ │ + │ ┌─────────┐ │ + │ │ 登录页 │ │ ← 包内可以嵌套子包或类 + │ └─────────┘ │ + └─────────────┘ +``` + +**简化画法**(只用矩形): + +``` + ┌──────────────┐ + │ UI层 │ + │ ┌────────┐ │ + │ │ 登录页 │ │ + │ └────────┘ │ + │ ┌────────┐ │ + │ │ 主页面 │ │ + │ └────────┘ │ + └──────────────┘ +``` + +#### ② 包的嵌套 + +``` + ┌──────────────────────┐ + │ 电子商务系统 │ + │ ┌──────────┐ │ + │ │ 用户模块 │ │ + │ │ ┌──────┐ │ │ + │ │ │登录类│ │ │ + │ │ └──────┘ │ │ + │ │ ┌──────┐ │ │ + │ │ │注册类│ │ │ + │ │ └──────┘ │ │ + │ └──────────┘ │ + │ ┌──────────┐ │ + │ │ 订单模块 │ │ + │ └──────────┘ │ + └──────────────────────┘ +``` + +#### ③ 包的可见性符号 + +``` + ┌────────────────┐ + │ ┌─┐ │ + │ │+│ 公开类 │ ← + 公有:任何外部包都可用 + │ └─┘───────────┤ + │ ┌─┐ │ + │ │#│ 受保护类 │ ← # 受保护:只有子包可用 + │ └─┘───────────┤ + │ ┌─┐ │ + │ │-│ 私有类 │ ← - 私有:只有包内部可用 + │ └─┘───────────┤ + │ │ + └────────────────┘ +``` + +#### ④ 包之间的依赖关系 —— 虚线 + 开放箭头 + +> 一个包中的类**引用**另一个包中的类 → 包之间形成依赖。 + +``` + ┌──────────────┐ ┌──────────────┐ + │ UI层 │ │ 业务层 │ + │ │ │ │ + │ ┌────────┐ │ │ ┌────────┐ │ + │ │登录窗口 │ │ │ │登录服务 │ │ + │ └────────┘ │ │ └────────┘ │ + │ │ │ │ + └──────────────┘ └──────────────┘ + │ ▲ + └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ + 虚线 + 开放箭头 + (依赖方向:UI层 依赖 业务层) +``` + +⚠️ **依赖方向**:箭头从"使用者"指向"被使用者"(类似类图里的依赖)。 + +#### ⑤ 包之间的泛化关系 —— 实线 + 空心三角 + +> 子包继承父包的内容。子包继承父包中**public 和 protected** 的元素。 + +``` + ┌──────────────┐ ┌──────────────┐ + │ 业务层 │ │ 通用层 │ + │ (子包) │ ─ ─ ─ ─ ─ ─ ─ ▷ │ (父包) │ + │ │ 空心三角 │ │ + │ ┌────────┐ │ │ ┌────────┐ │ + │ │订单处理 │ │ │ │日志工具 │ │ + │ └────────┘ │ │ └────────┘ │ + │ ┌────────┐ │ │ ┌────────┐ │ + │ │支付处理 │ │ │ │通用工具 │ │ + │ └────────┘ │ │ └────────┘ │ + └──────────────┘ └──────────────┘ +``` + +⚠️ **泛化方向**:空心三角**指向父包**(与类图泛化一致)。 + +#### ⑥ 完整包图示例 + +``` + ┌────────────────┐ + │ 表现层 │ + │ ┌────────┐ │ + │ │登录页 │ │ + │ └────────┘ │ + │ ┌────────┐ │ + │ │主窗体 │ │ + │ └────────┘ │ + └───────┬────────┘ + │ 依赖 + ╌ ╌ ╌ ╌ ╌ ╌ ╌ + ▼ + ┌────────────────┐ ▷ ┌────────────────┐ + │ 业务层 │ ─ ─ ─ ─ ─ ─ ─ ─ ─│ 通用层 │ + │ │ 泛化 │ │ + │ ┌────────┐ │ │ ┌────────┐ │ + │ │登录管理 │ │ │ │日志工具 │ │ + │ └────────┘ │ │ └────────┘ │ + │ ┌────────┐ │ │ ┌────────┐ │ + │ │订单管理 │ │ │ │数据校验 │ │ + │ └────────┘ │ │ └────────┘ │ + └───────┬────────┘ └────────────────┘ + │ 依赖 + ╌ ╌ ╌ ╌ ╌ ╌ ╌ + ▼ + ┌────────────────┐ + │ 数据层 │ + │ ┌────────┐ │ + │ │用户DAO │ │ + │ └────────┘ │ + │ ┌────────┐ │ + │ │订单DAO │ │ + │ └────────┘ │ + └────────────────┘ +``` + +🔑 **一句话记忆口诀**:包用文件夹画,标签是包名;包间依赖是虚线开放箭头(指向被依赖),包间泛化是实线空心三角(指向父包);包可以嵌套,元素分+/-可见性。 + --- ## 💡 三、包的四大设计原则 diff --git a/期末复习指南.md b/期末复习指南.md index 0836c20..44f6497 100644 --- a/期末复习指南.md +++ b/期末复习指南.md @@ -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) ## 🎯 考试范围与重点 diff --git a/期末重要知识点速记.md b/期末重要知识点速记.md new file mode 100644 index 0000000..cbdf0c8 --- /dev/null +++ b/期末重要知识点速记.md @@ -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分) + +**考点**:给一幅用例图,分析: +- 参与者之间是什么关系?(泛化关系) +- 用例之间的关系(包含 `<>` / 扩展 `<>` / 泛化) +- 识别参与者类型、用例描述要素 + +### 第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标记 | 箭头方向 | 执行时机 | +|------|---------|----------|----------| +| **包含** `<>` | 虚线+箭头 | **基本 → 包含** | 必然执行 | +| **扩展** `<>` | 虚线+箭头 | **扩展 → 基本** | 条件触发时才执行 | +| **泛化** | 实线+空心三角 | **子 → 父** | 可单独执行 | + +> 记忆:包含箭头指向被包含的(基→含),扩展箭头指向被扩展的(扩→基) + +**参与者三类型**:人、外部系统、外部设备 + +**用例描述6要素**:用例名、参与者、前置条件、后置条件、主事件流、子事件流(备选流) + +> 📝 **重点**:三种关系的箭头方向和区别、用例描述要素 + +--- + +### 类图 ★★★★★(约23分,含大题) + +**六大关系速判口诀**: + +| 关系 | UML符号 | 口诀 | +|------|---------|------| +| **依赖** | 虚线箭头 `---->` | "方法参数用了你" | +| **关联** | 实线 `——` | "属性里放了你" | +| **聚合** | 空心菱形 `◇——` | "整体-部分,部分可独立存活" | +| **组合** | 实心菱形 `◆——` | "整体-部分,同生共死" | +| **泛化** | 空心三角 `——▷` | "一般-特殊 / 父-子继承" | +| **实现** | 虚线空心三角 `----▷` | "接口-实现类" | + +**多重性速记**:`1` 恰好1 | `0..1` 可选 | `*`/`0..*` 零到多个 | `1..*` 至少1个 + +**类三要素**:名称、属性、操作 | **可见性**:`+`public `-`private `#`protected + +**MVC版型**(分析类三类型): +- `<>` 边界类:与外部交互的界面 +- `<>` 控制类:业务逻辑处理 +- `<>` 实体类:持久化数据 + +**聚合 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 ---<>--→ B` +4. **画扩展**:条件触发 C 插入 A → `C ---<>--→ 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..*` 会读会标? +- [ ] 组件图/部署图仅出选填,不用练画图? + +--- + +> 📎 **相关笔记**:[[期末复习指南]] | [[课后习题汇编]]