用例建模 - 绘制用例图
一、 简答题
1. 用例的概念
用例,或使用案例、用况,是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。用例一般是由软件开发者和最终用户共同创作的。
2. 用例和场景的关系?什么是主场景或 happy path?
场景,或用例场景指用户实际应用场景的过程,通过各种动作组合起来,是实例化的用例,从一个用例可以实例化出多个用例场景。 简单讲,用例就是对全部用例场景的抽象,用例场景就是从用例中实例化出来的一组活动。
主场景对应于主要系统交互,通常是“成功”场景,最常用、最直接地实现用户目标的场景。
Happy path是一个没有异常或错误条件的默认场景。它让执行成果的能继续运行到最后,从而生成积极的响应。
3. 用例有哪些形式?
摘要:简洁的一段式概要,通常用于主场景。在早期需求分析过程中,为快速了解主题和范围,通常花费少量时间编写。
非正式:非正式的段落格式,用几个段落覆盖不同的场景。
详述:详细编写所有步骤和各种变化,同时具有补充部分,如前置条件和成功保证。确定并以摘要形式编写大量用例后,在第一次需求讨论中,详细地编写其中少量的具有重要架构意义和高价值的用例。
4. 对于复杂业务,为什么编制完整用例非常难?
复杂业务编制完整用例非常难的原因有:
- 由于业务复杂、需求多且杂,用例下的场景会非常多且复杂。
- 随着时间更迭,开发过程中需求会发生变化,用例场景不仅会越来越多,并且也会相应产生变化。
- 很难完整地考虑到所有的场景情况,并且有些业务难以使用用例抽象描述出来。
- 用例间的关系在多个用例之间是很复杂的,有些用例关系难以理清。
5. 什么是用例图?
用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
6. 用例图的基本符号与元素?
-
参与者(Actor):一个小人,表示一个系统用户,也就是与应用程序进行交互的用户、组织或者外部系统。
-
用例(Use Case):一个圆框,表示对系统提供的功能、服务的一种用例描述。
-
包含关系:虚线箭头加上《include》标志,箭头方向指向被包含者。表示用例可以简单地包含其他用例所具有的行为,并把它所包含的用例行为作为自身行为的一部分。
-
拓展、延伸关系:虚线箭头加上《extends》,箭头方向指向基础用例。表示在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,相当于为基础用例提供一个附加功能。
-
泛化关系:实线空心三角箭头,箭头方向指向父用例。表示一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
-
关联关系:一条直实线。表示参与者与用例之间的关系。
7. 用例图的画法与步骤
- 绘制系统边界,并标记系统名称
- 确定参与者信息,包括
- 主要参与者(primary actor):具有用户目标,并通过使用 SuD 的服务完成。
- 协作参与者(supporting actor):为 SuD 提供服务。
- 幕后参与者(offstage actor):在用例行为中具有影响或利益,但不是主要或协助参与者。
- 确定参与者之间的关系(如是否为泛化关系)
- 根据需求识别和编制用例
- 确认用例间关系,如 includes 与 extends
- 确认用例与参与者的关系,包括关联关系
- 确定外部接口,在用例的事件流中发现其他系统支持,并将其标注出来放在系统框的右边
8. 用例图给利益相关人与开发者的价值有哪些?
- 使利益相关人更直观地了解系统的功能与用户交互情况,以确保其需求得到满足
- 用例图使得利益相关人提出需求变更时,可以更方便地修改系统设计,使得整个系统的实现过程变得更灵活
- 用例图使得开发者得以与设计者更好地交换信息,让开发者更明确地获取需求,以便开发活动的进行
- 用例图可以贯穿整个开发过程,对开发者的开发与测试工作进行指导,对于整个过程的其它工作流也会起到指导作用
二、建模练习题
2.1选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如订旅馆(携程、去哪儿等)、订电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
- 尽可能识别外部系统和服务
携程酒店:
猫眼电影:
2. 2回答下列问题:
1. 为什么相似系统的用例图是相似的?
答:因为相似系统的参与者、用例、边界以及他们之间关系都是相似的,也无流程也是相似的,而用例图基本由这些因素决定,因此他们最终得到的用例图也是相似的。
2. 如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
答:创新业务与技术可以用特殊标记标志出来。在相似用例进行对比,展现、突出创新业务和技术。
3. 如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
答:创新思路可以在用例图中用醒目的颜色标注,这样可以帮助开发者快速定位该创新点,并查看其在整个系统中的位置。如果该创新点位于主用例上则很重要,反之则重要性有所下降。
4. 请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
ID | Name | imp | EST | How to demo | Notes |
---|---|---|---|---|---|
1 | 搜索酒店 | 30 | 10 | 1.输入目的地、入住时间等信息根据GPS获取匹配附近酒店列 2.输入酒店名字,精确定位匹配同名酒店列表 | 智能排序酒店列表,用户可自行选择酒店 |
2 | 观察 | 15 | 2 | 选择入住房间类型、入住人数、入住时间等信息,核对房间价格和时间等信息后确认订房账单 | 确认机制避免误选 |
3 | 登录 | 20 | 5 | 使用第三方微信账号登陆携程 | 一次登陆页面记忆保存,对接第三方登陆接口 |
4 | 支付 | 25 | 8 | 使用第三方支付微信支付支付账单 | 对接第三方支付接口 |
5. 根据任务4,参考 使用用例点估算软件成本,给出项目用例点的估算
用例 | 事务 | 计算 | 原因 |
---|---|---|---|
搜索酒店 | 4 | 4 | 提供酒店房间数量、房间类型等信息,并及时更新 |
观察 | 7 | 40 | 对结果按用户需求进行排序 |
登录 | 4 | 7 | 用户输入相关信息,创建订单 |
支付 | 3 | 25 | 用户支付费用,需要调用相关API |