Files
obsidian/期末重要知识点速记.md

421 lines
16 KiB
Markdown
Raw Normal View History

2026-06-11 00:02:06 +08:00
# 期末重要知识点速记
> **课程**:软件需求分析与设计 | **总分**选择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..*` 会读会标?
- [ ] 组件图/部署图仅出选填,不用练画图?
---
> 📎 **相关笔记**[[期末复习指南]] | [[课后习题汇编]]