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

5.8 KiB
Raw Permalink Blame History

期中考试复习

考试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 : 写入新密码

🔑 编号规则11.11.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. 活动图泳道:根据参与者来划分,每道一个责任区