Files
obsidian/软件需求分析/期末重要知识点速记.md

421 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 期末重要知识点速记
> **课程**:软件需求分析与设计 | **总分**选择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..*` 会读会标?
- [ ] 组件图/部署图仅出选填,不用练画图?
---
> 📎 **相关笔记**[[期末复习指南]] | [[课后习题汇编]]