一、简答题
1. 用例的概念
用例是描述参与者使用一个系统支持一个目标相关的成功和失败场景的集合。
- 是文本而非图
- 用例建模主要是写文本的行为,而非画图
- 用例与面向对象毫不相关
- 用例是经典OOA/D的关键需求输入
- 功能性或者行为性的需求表现系统要做的事情。
2.用例和场景的关系?什么是主场景或 happy path?
场景
- 场景是参与者与系统之间具体的行动和交互(会话)序列,也称为用例实例。
- 它是关于使用系统的一个具体故事,或者是贯穿用例的一条路径。
主场景或happy path
- 主场景相当于主要的系统交互,即成功场景
3.用例有哪些形式?
- Brief(high level)
- 一段简介,通常是主要的成功场景
- 在早期的需求分析中,获得对于主体和范围的快速认识
- Casual(简便格式)
- 非正式的段落形式,使用多个段落包含多个场景
- Fully
- 所有的步骤和变化都详细写明,有支持的部分,比如前提和成功场景的保证
4.对于复杂业务,为什么编制完整用例非常难?
- 对于复杂的业务,很难将所有的目标、故事、使用场景遵循一定的顺序列举出来。如果场景不够全面,那么用例的完整性就难以保障。
- 此外,用例建模虽然给出了一套可操作的步骤,但是具体如何操作以及如何书写依赖于用例的书写者。因而用例本身并不能够控制自身的完整性。
5. 什么是用例图
用例图(User Case)由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图同时也是参与者(外部用户)所能观察到的系统功能的模型图。用例图是系统的蓝图
6. 用例图的基本符号与元素
- 椭圆:表示每个用例
- 矩形框:表示整个系统
- 小人:表示参与者(actor)
- 箭头:各用例之间的关系,如include和extend,Inheritance
7.用例图的画法和步骤
- 创建新的用例图
- 绘制用例图
- 绘制“子系统”边界
- 重命名“子系统”
- 绘制参与者(放在所有系统边界之外)
- 重命名参与者
- 绘制用例
- 使用参与者自身能够理解的名称重命名用例,不要使用与代码有关的名称
- 从主要的事务开始,直到后面较小的交互为止
- 将每个用例放入支持它的系统或主要子系统(忽略只与用户有关的外观或组件)
- 可以在系统边界外绘制用例,表明系统不支持该用例
- 将参与者与用例相连
- 使用“包括”、“扩展”和“泛化”关系结构化用例
- 绘制“子系统”边界
8.用例图给利益相关人与开发者的价值有哪些?
- 利益相关人:提供了系统使用和行为的摘要视图,保证系统能够按照用户的需求进行设计,使得系统能够注重其参与者的用户体验。
- 开发者:更明确客户的需求,使得开发者能够更好理解客户需求,明确系统的范围以及其提供功能的情况、与外部系统之间的关系,便于开发者进行系统的实现。
二、建模练习题(用例模型)
选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
- 尽可能识别外部系统和服务
选择猫眼和淘票票提供的购买电影票服务。
猫眼:
淘票票:
然后,回答下列问题:
为什么相似系统的用例图是相似的?
答:因为用例图由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。如果系统是相似的,在相似的最终目标下,系统的参与者、用例、边界以及它们之间的关系构成也是相似的,最终画出来的用例图是相似的
如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
答:通过在用例图中使用与其他用例不同的颜色进行标记的方法,能够使得开发者快速定位到该用例图中的创新点。对比相似系统可以得出创新思路提供了哪些更优质的服务。
请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
ID | name | Imp | Est | How to demo | Notes |
---|---|---|---|---|---|
1 | 旅馆查询 | 30 | 4 | 通过GPS或者用户自行选择位置,利用地图或者列表信息进行一定范围内酒店信息查询 | 通过GPS的API进行用户位置的定位 |
2 | 旅馆选择 | 80 | 8 | 用户可以利用酒店的房间数、房间大小、酒店评价等信息进行酒店的选定 | 注意酒店信息的实时更新,特别是房间数量的实时更新 |
3 | 房间预定 | 80 | 8 | 选定酒店后需要进行房间的预定,用户输入入住者的身份证号码、是否需要保险、手机号码等必要信息后创建订单 | 需要进行用户身份信息的核验,避免通过虚假信息预定房间 |
4 | 订单管理 | 70 | 6 | 用户在创建订单后可以对订单信息进行修改,比如取消订单,修改入住天数以及添加备注等 | 特价房间不能取消订单,只能提示用户通过保险公司理赔 |
5 | 费用支付 | 60 | 3 | 特价房间不能取消订单,只能提示用户通过保险公司理赔 | 可以通过微信、支付宝、银联进行订单支付 |
6 | 账户管理 | 40 | 4 | 用户进行头像、昵称、身份信息、预留手机等个人信息的修改 | 需要核验昵称或图片是否含有非法信息 |
- 根据任务4,参考 使用用例点估算软件成本,给出项目用例点的估算
用例 | 事物 | 计算 | 原因 | UC权重 |
---|---|---|---|---|
旅馆查询 | 3 | 3 | 利用已知的酒店信息进行排序,或者用户输入关键词进行模糊查询 | 简单 |
旅馆选择 | 6 | 5 | 提供酒店客房数量、客房类型、是否含有早餐等信息,需要及时更新客房信息 | 平均 |
房间预定 | 3 | 2 | 进行用户信息录入,创建订单 | 简单 |
订单管理 | 5 | 3 | 用户修改订单信息或取消订单 | 简单 |
费用支付 | 1 | 1 | 用户支付订单费用,调用API即可 | 简单 |
账户管理 | 4 | 1 | 用户修改个人信息 | 简单 |