Files
obsidian/软件需求分析/期中复习/期中复习指南.md

190 lines
5.8 KiB
Markdown
Raw Normal View History

2026-06-10 12:08:39 +08:00
# 期中考试复习
> **考试**2022-2023学年第1学期《软件需求分析与设计》期中考试
> **满分**100分 | 选择题30分 + 系统分析题70分
> **系统场景**:在线酒店订房系统
---
## 📋 试卷结构一览
| 题型 | 题量 | 分值 | 考点 |
|------|------|------|------|
| 选择题 | 15题 | 30分2分/题) | UML基本概念、关系类型、面向对象特性 |
| 系统分析题 | 7题 | 70分10分/题) | 7种UML图的实际绘制 |
---
## 🎯 七道大题逐题详解
### 第1题用例图10分
> 画出在线订房系统的用例图。
**答案要点**
**参与者3个**:客户、管理员、身份信息平台
**用例10个**
- 客户相关:找回密码、注册、身份认证、登录、查询房间、下订单、在线支付
- 管理员相关:登录、房间上线、修改房间信息、房间下线
**关键关系**
- **包含 `<<include>>`**:注册 → 身份认证;下订单 → 查询房间;在线支付 → 下订单
- **关联**:客户↔找回密码、注册、登录、查询房间、下订单;管理员↔登录、房间上线、修改、下线
- **身份认证 → 身份信息平台**(外部系统交互)
⚠️ **易错**:包含关系箭头从基本用例指向包含用例!
---
### 第2题"找回密码"用例描述10分
> 写出"找回密码"的完整用例描述。
**参考答案**
| 项目 | 内容 |
|------|------|
| **用例名** | 找回密码 |
| **参与者** | 客户 |
| **前置条件** | 客户已注册 |
| **基本流程** | ①输入手机号 → ②获取短信验证码 → ③输入验证码 → ④输入新密码(两次) → ⑤两次一致则密码修改成功 |
| **备选流程** | 若两次新密码不一致,提示重新输入 |
| **后置条件** | 密码修改成功,用户可用新密码登录 |
---
### 第3题实体类类图10分
> 画出系统的实体类类图,标注多重性。
**答案要点**
**实体类**:客户(Customer)、房间(Room)、订单(Order)、管理员(Admin)
**关系及多重性**
```
客户 1 ────── 0..* 订单 (一个客户可以有多个订单)
房间 1 ────── 0..* 订单 (一个房间可以被多次预订)
管理员 0..2 ── 0..* 订单 (管理员处理订单)
```
---
### 第4题"找回密码"的基于协作的类图10分
> 使用边界类、控制类、实体类画出协作类图。
**答案要点**
| 版型 | 类名 | 职责 |
|------|------|------|
| <<boundary>> | RetrievePasswordBoundary | 找回密码界面,与用户交互 |
| <<control>> | RetrievePasswordControl | 协调找回密码的业务逻辑 |
| <<interface>> | SMSInterface | 短信接口(外部) |
| <<entity>> | UserInfo | 用户信息(持久化) |
**依赖关系**
```
Boundary → Control → SMSInterface
→ UserInfo
```
---
### 第5题"找回密码"的顺序图10分
> 画出"找回密码"的顺序图,标注消息编号。
**答案要点**
**对象**:用户、:RetrievePasswordBoundary、:RetrievePasswordControl、:UserInfo、:SMSInterface
**消息序列(核心流程)**
```
1: 用户 → 边界类 : 找回密码()
1.1: 用户 → 边界类 : 输入手机号
1.1.1: 边界 → 控制 : 获取短信(手机号)
1.1.1.1: 控制 → SMS : 获取短信(手机号)
2: 用户 → 边界类 : 输入验证码
2.1: 边界 → 控制 : 验证(验证码)
2.1.1: 控制 → UserInfo : 验证(验证码)
3: 用户 → 边界类 : 输入(新密码1, 新密码2)
3.1: 边界 → 控制 : 验证一致性(p1, p2)
3.1.1: [一致] 控制 → UserInfo : 写入新密码
```
🔑 **编号规则**`1``1.1``1.1.1` 表示嵌套调用,`1.1.1` 必须在 `1.1` 完成之前完成。
---
### 第6题"订单"的状态图10分
> 画出实体类"订单"的状态图。
**答案要点**
```
初始 → 待支付 → 已支付 → 已入住 → 完成
↓ ↓
取消 失效
```
| 转移 | 触发事件 |
|------|----------|
| 初始 → 待支付 | 下单 |
| 待支付 → 取消 | 未支付 |
| 待支付 → 已支付 | 成功支付 |
| 已支付 → 失效 | 超时 |
| 已支付 → 已入住 | 入住 |
| 已入住 → 完成 | 退房 |
---
### 第7题"找回密码"的带泳道活动图10分
> 画出"找回密码"的带泳道活动图。
**答案要点**
**泳道5条**:用户 | 找回密码边界类 | 找回密码控制类 | 短信接口 | 用户信息
**活动流程**
```
用户:开始 → 找回密码 → 输入手机号
控制类 → 短信接口:获取短信验证码 → 返回验证码
用户:输入验证码 → 输入2次新密码
控制类:验证两次密码
├─ [不一致] → 结束
└─ [一致] → 用户信息:写入新密码 → 结束
```
---
## 📊 七道题的分值分布与重点
| 题号 | 考什么 | 难度 | 必会程度 |
|------|--------|------|----------|
| 1 | 用例图 | ⭐⭐ | ★★★★★ |
| 2 | 用例描述 | ⭐ | ★★★★★ |
| 3 | 类图(实体类) | ⭐⭐ | ★★★★★ |
| 4 | 协作类图MVC | ⭐⭐⭐ | ★★★★ |
| 5 | 顺序图(消息编号) | ⭐⭐⭐ | ★★★★ |
| 6 | 状态图 | ⭐⭐ | ★★★★★ |
| 7 | 活动图(带泳道) | ⭐⭐⭐ | ★★★★ |
---
## 🔑 考前必记要点
1. **包含关系 vs 扩展关系**:包含=必然,扩展=条件。箭头方向不同!
2. **多重性**`1` `0..1` `0..*` `1..*` 的含义和标注位置
3. **边界类/控制类/实体类**View/Controller/Model 对应关系
4. **消息编号层级**`1.1.1` 表示嵌套调用深度
5. **状态图**:别忘了初始状态(实心圆)和终态(圆圈+实心圆)
6. **活动图泳道**:根据参与者来划分,每道一个责任区