5.8 KiB
5.8 KiB
期中考试复习
考试: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分)
使用边界类、控制类、实体类画出协作类图。
答案要点:
| 版型 | 类名 | 职责 |
|---|---|---|
| <> | RetrievePasswordBoundary | 找回密码界面,与用户交互 |
| <> | RetrievePasswordControl | 协调找回密码的业务逻辑 |
| <> | SMSInterface | 短信接口(外部) |
| <> | 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 | 活动图(带泳道) | ⭐⭐⭐ | ★★★★ |
🔑 考前必记要点
- 包含关系 vs 扩展关系:包含=必然,扩展=条件。箭头方向不同!
- 多重性:
10..10..*1..*的含义和标注位置 - 边界类/控制类/实体类:View/Controller/Model 对应关系
- 消息编号层级:
1.1.1表示嵌套调用深度 - 状态图:别忘了初始状态(实心圆)和终态(圆圈+实心圆)
- 活动图泳道:根据参与者来划分,每道一个责任区